{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: EDITOR867)}}
====== EDITOR867 ======
(George Source)
**Macros used:** [[george:macro:ACROSS|ACROSS]], [[george:macro:ACROSSVAR|ACROSSVAR]], [[george:macro:ADDREC|ADDREC]], [[george:macro:ALASHUNT|ALASHUNT]], [[george:macro:APCHANGE|APCHANGE]], [[george:macro:BXE|BXE]], [[george:macro:BXL|BXL]], [[george:macro:BXU|BXU]], [[george:macro:COOR2|COOR2]], [[george:macro:DOWN|DOWN]], [[george:macro:EDCOMERR|EDCOMERR]], [[george:macro:EDERR|EDERR]], [[george:macro:FJOCA|FJOCA]], [[george:macro:FREECORE|FREECORE]], [[george:macro:GEOERR|GEOERR]], [[george:macro:HUNTW|HUNTW]], [[george:macro:ICT|ICT]], [[george:macro:IET|IET]], [[george:macro:IETS|IETS]], [[george:macro:LETOPRUN|LETOPRUN]], [[george:macro:MENDAREA|MENDAREA]], [[george:macro:MHUNTW|MHUNTW]], [[george:macro:MONOUT|MONOUT]], [[george:macro:OUTMONX|OUTMONX]], [[george:macro:OUTPARAM|OUTPARAM]], [[george:macro:OUTPARAX|OUTPARAX]], [[george:macro:PAIR|PAIR]], [[george:macro:PHOTO|PHOTO]], [[george:macro:PREP|PREP]], [[george:macro:READ|READ]], [[george:macro:READY|READY]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:TESTBRKIN|TESTBRKIN]], [[george:macro:TESTHKN|TESTHKN]], [[george:macro:TESTMOVE|TESTMOVE]], [[george:macro:TRACE|TRACE]], [[george:macro:UP|UP]], [[george:macro:UPDATEJT|UPDATEJT]]
22FL #LIS K0EDITOR>K0ALLGEO>0
22^= ...#SEG EDITOR865 [DICK RUSBRIDGE
2394 ...# (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1982.
23DW #
23YG # GEORGE 3 AND 4 INTEGRAL EDITOR.
24D6 # -------------------------------
24XQ #
254Y ...#UNS G400
25=6 ...# THIS CHAPTER IS MODIFIED FOR G3PLUS-IH MK2
25CB 8HEDITOR
25X2 # THIS IS THE FAMED INTEGRAL EDITOR; BEGAT SO ELOQUENTLY BY THE
26BL # REDOUBTABLE GEOFF NEWELL WITH A LITTLE HELP FROM HIS FRIENDS IN
26W= # UKSO; TEMPERED SO SWEETLY BY THE SEXY SALLY REES; SUBJECTED TO
27*W # AN INORDINATE DESIGN GESTATION AND FINALLY CODED SO FEARFULLY
27TG # BY YOURS TRULY IN THE FLEETING MOMENTS OF QUIET AMIDST THE TURMOIL
28*6 # OF COSMOPOLITAN GEORGE THREE DEVELOPMENT BRANCH OF B.P.D.
28SQ #
29#B #
29S2 # THE EDITOR'S CODE STARTS HERE.
2=?L # ------------------------------
2=R= #
2?=W # ENTRY POINT BRANCH TABLE
2?QG #
2#=6 SEGENTRY K1EDITOR,N1EDITOR [DEALT WITH BY EDITAR
2#PQ SEGENTRY K2EDITOR,N2EDITOR [SHUTDOWN WITH CLOSEABANDON
2*9B SEGENTRY K3EDITOR,N3EDITOR [END OF INSTRUCTION
2*P2 SEGENTRY K4EDITOR,OH
2B8L SEGENTRY K5EDITOR,N5EDITOR [PULLUP OF O/F STACK
2BN= SEGENTRY K7EDITOR,N7EDITOR [ABANDON EDIT
2C7W SEGENTRY K8EDITOR,N8EDITOR [DEALS WITH BREAK-IN
2CMG SEGENTRY K9EDITOR,N9EDITOR [CLOSES FILES AND ENDS EDIT
2D76 SEGENTRY K10EDITOR,N10EDITOR [EXECUTES INSTRUCTION
2DLQ SEGENTRY K11EDITOR,N11EDITOR [E INSTRUCTION
2F6B SEGENTRY K12EDITOR,N12EDITOR ['EXECUTION ERROR..... '
2FL2 SEGENTRY K13EDITOR,OH
2G5L SEGENTRY K14EDITOR,N14EDITOR [CHECK IF MOP AFTER ERROR
2GK= #
2H4W #
2HJG # USEFUL CONSTANTS.
2J46 #
2JHQ O20 #20 [SPACE
2K3B O30 #30 [LEFT PARENTHESIS
2KH2 O31 #31 [RIGHT PARENTHESIS
2L2L O32 #32 [ASTERISK
2LG= O34 #34 [COMMA
2L^W O23 #23 [OCTAL
2MFG O8 #10 [EIGHT
2M^6 MNUM #32657713 [A MAGIC NUMBER
2NDQ THOU +1000
2NYB #
2PD2 #
2PXL N8EDITOR [ENTRY POINT FOR BREAK-IN DURING
2PYS ...#UNS G400
2Q22 ...(
2Q38 ... TESTHKN XDSK1 [J IF NOT IN HOOK
2Q4B ... CALL 6 MOPTEXT
2Q5J ... BRN XDSK2 [FILE
2Q6Q ... BRN XDSK1 [JOB SOURCE
2Q7Y ... BRN XDSK1 [MOP
2Q96 ...XDSK2 LDCT 0 #2
2Q=# ... ORS 0 IESW(2) [NOTE BKIN
2Q?G ... BRN N2EDITOR [CLOSEABANDON
2Q#N ...XDSK1
2Q*W ...)
2QC= # [AN EDITING INSTRUCTION
2QWW ... ACROSS EDITORA,8
2^=2 #
2^PL # XBKOF CLEARS BREAK-IN. IF IT WASN'T BREAK-IN BUT SOMETHING
329= # MORE SERIOUS IT CAUSES AN AUTOMATIC 'E' WITH APPROPRIATE MESSAGES.
32NW #
338G XBKOF SBX 6 1
33N6 DOWN EDITET,4 [SAVES EDITOR'S SPACE
347Q BRN XITER [J NOT BREAK-IN
34?M ...
34CJ ...#UNS EDPOINTER
34HF ... MONOUT ISEDBRK
34MB ADS 1 6
3572 EXIT 6 0
35LL #
366= # THE ACTION FOR JT EXCEEDED OR JOB ABANDONNED
36KW #
375G XITER ACROSS EDWRITE,11 [SAVES EDITOR'S SPACE
37K6 #
384Q # ABANDON ENTRY POINT
38JB #
3942 N7EDITOR
39HL ...XBK1 EDCOMERR EDAB ['EDIT ABANDONED'
3=3= N2EDITOR
3=GW ... ACROSS EDITORA,2
3?^Q #
3#FB # SHUTDOWN CLOSES ALL FILES AND RETURNS TO THE COMMAND PROCESSOR.
3#^2 #
3*DL N9EDITOR
3*Y= ... ACROSS EDITORA,9
3L?4 ...#
3L#= ...# XJOBTIME UPDATES JOB TIME IN JOB BLOCK,AND LEAVES
3L*D ...# X3 : POINTER TO JOB BLOCK
3LBL ...# X6 & X7 : JOB TIME
3LCS ...#
3LF2 ...XJOBTIME
3LG8 ... FJOCA 3,2
3LHB ... UPDATEJT ,3
3LJJ ... LDX 6 HTIMEJ(3)
3LKQ ... LDX 7 HTIMEJ+1(3)
3LLY ... EXIT 4 0
3LN6 ...#
3LPG #
3M96 # POPUP PULLS UP THE EDITING FILE STACK. IF THIS EXHAUSTS
3MNQ # THE STACK AN ERROR IS REPORTED, OTHERWISE THE ROUTINE
3N8B # EXITS IN GOOD ORDER.
3NN2 #
3P7L POPUP SBS 1 6 [RELATIVE LINK
3PM= DOWN EDITET,5 [SAVES EDITOR'S SPACE
3Q6W BRN XEND [EXHAUSTED J/S OR FILE
3QLG BRN NER [NO FILE TO CLOSE
3R66 ADS 1 6 [ELSE EXIT IN
3RKQ EXIT 6 0 [GOOD ORDER
3S5B #
3SK2 #
3T4L # PULLUP PULLS UP THE FILE STACK FOR END OF OLD FILE. ERROR IF
3TJ= # THERE IS NO FILE TO CLOSE.
3W3W #
3WHG PULLUP
3X36 #
3XGQ SBX 6 1 [RELATIVE LINK
3Y2B DOWN EDITET,6 [SAVES EDITOR'S SPACE
3YG2 BRN NER [NO FILE TO CLOSE
3Y^L ADX 6 1 [OK SO
3^F= EXIT 6 0 [CARRY ON
3^YW #
42DG # UMOP PUSHES DOWN THE FILE STACK TO ENTER THE MOP CONSOLE ON THE
42Y6 # TOP OF THE STACK. IF THE STACK IS ALREADY FULL AN ERROR OCCURS.
43CQ #
43XB UMOP SBX 6 1
44C2 DOWN EDITET,7 [SAVES EDITOR'S SPACE
44WL BRN XEND [STACK FULL
45B= ADX 6 1 [OK SO
45TW EXIT 6 0 [CARRY ON
46*G #PAG
46T6 #
47#Q # SREBMUN CONVERTS BINARY TO UP TO SEVEN DECIMAL DIGITS. THE NUMBER
47SB # TO BE CONVERTED IS IN X6 AND X1 CONTAINS THE ADDRESS OF THE FIRST
48#2 # CHARACTER OF THE OUTPUT STRING. ON EXIT X1 CONTAINS THE ADDRESS OF
48RL # THE NEXT CHARACTER.
49?= #
49QW SREBMUN
4==G #
4=Q6 LDN 4 0 [CLEAR RESULT
4?9Q LDN 7 7 [MAX COUNT IS 7
4?PB LDX 5 6
4#92 SMO FX1 [MULTIPLY BY
4#NL MPY 5 MNUM [THE MAGIC MUNBER
4*8= MODE 0 [99.9% REDUNDANT
4*MW SRE1 SBN 7 1 [DECREMENT COUNT
4B7G CBD 5 4 [CONVERT TO CHARACTER
4BM6 BNZ 4 SRE4 [J TO IGNORE IF LEADING ZERO
4C6Q BNZ 7 SRE1 [J TO START OUTPUT
4CLB BRN SRE4 [DEPOSIT ONE ZERO ANYWAY
4D62 SRE3 SBN 7 1 [DECREMENT COUNT
4DKL CBD 5 4 [CONVERT TO CHARACTER
4F5= SRE4 DCH 4 0(1) [STORE CHARACTER
4FJW BCHX 1 £ [INCREMENT POINTER
4G4G BNZ 7 SRE3 [LOOP UNTIL FINISHED
4GJ6 EXIT 0 0
4H3Q #
4HHB # MOPTEXT DETERMINES THE SOURCE OF THE EDITING INSTRUCTIONS. EXITS
4J32 # TO CALL+1 FOR OFFLINE FILE; CALL+2 FOR ONLINE JOB SOURCE AND
4JGL # CALL+3 FOR ONLINE MOP TERMINAL.(WILL EVENTUALLY NEED TO BE ALTER-
4K2= # ED TO DIFFERENTIATE MOP TELETYPE FROM MOP AVDU).
4KFW #
4K^G MOPTEXT
4LF6 #
4LYQ LDXC 0 IEFT(2) [SET FILE STACK
4MDB BCC MTX [J IF REAL FILE ON TOP
4MY2 LDX 0 CONTEXT(2) [GET CONTEXT WORD
4NCL SRC 0 4 [SHIFT TO BIT 20
4NX= LDXC 0 0 [SEE IF IT IS SET
4PBW ADNC 6 1 [CLEAR CARRY AND OVERFLOW
4PWG MTX EXIT 6 0 [EXIT AS APPROPRIATE
66S2 #
67?L #PAG
67R= #
68=W # NCH IS THE NEXT CHARACTER FROM EDITING FILE ROUTINE. THE REQUIRED
68QG # CHARACTER IS PUT INTO X7 AND EXIT IS TO CALL+2. AN ATTEMPT TO READ
69=6 # OFF THE BLOCK CAUSES EXIT TO CALL+1. A SUBSEQUENT CALL WILL CAUSE
69PQ # THE NEXT BLOCK TO BE READ. ADDRESS OF LAST CHARACTER IS LEFT IN X0
6=9B #
6=P2 NCH LDX 3 IEIP(2) [ADDRESS OF NEXT CHARACTER
6?8L BZE 3 NCH3 [J IF OFF END LAST TIME
6?N= STO 3 0 [GET CHARACTER ADDRESS OF END OF
6#7W SLC 0 2 [BLOCK AND PERFORM ARITHMETIC
6#MG SBX 0 IEIH(2) [TO DETERMINE IF WE ARE ABOUT TO RUN
6*76 BPZ 0 NCH2 [OFF THE END OF THE BLOCK
6*LQ NCH1 SMO IEIA(2) [MODIFY BY ADDRESS OF BLOCK
6B6B LDCH 7 0(3) [LOAD CHARACTER INTO X7
6BL2 LDX 0 3 [LEAVE ADDRESS IN X0
6C5L BCHX 3 £ [INCREMENT ADDRESS
6CK= STO 3 IEIP(2) [STORE ADDRESS OF NEXT CHARACTER
6D4W EXIT 6 1 [AND RETURN TO CALL+2
6DJG NCH2 STOZ IEIP(2) [CLEAR POINTER FOR NEXT TIME
6F46 STO 3 0 [OLD CHARACTER ADDRESS
6FHQ EXIT 6 0 [AND RETURN TO CALL+1
6G3B NCH3 SBX 6 1 [RELATIVISE LINK
6GH2 STO 6 IEL1(2) [AND STORE
6H2L STOZ IESP(2) [CLEAR STACK AND
6HG= STOZ IEPC(2) [PARENTHESIS COUNT
6H^W HUNTW 3,FILE,FRB
6JFG BNG 3 NCH4 [FREE ANY OLD BLOCK
6J^6 FREECORE 3
6K3* ...
6K5J ...#UNS EDPOINTER
6K7R ...NCH4
6K=2 ...#UNS EDPOINTER
6K#9 ...#SKI
6KBD ...(
6KDQ NCH4 CALL 6 MOPTEXT [FANOUT ON CONTEXT
6KYB BRN NCH24 [OFFLINE FILE
6LD2 BRN NCH26 [JOB SOURCE
6LK8 ...
6LQB ...)
6LXL LDX 1 IESW(2) [ELSE MOP CONSOLE
6MC= SLL 1 2
6MWW BNG 1 NCH7 [J IF IN INSERT MODE
6NBG LDN 1 IEBF(2) [BUFFER ADDRESS IN CPAT
6NW6 LDX 6 IEOR(2) [GET RECORD NUMBER
6P*Q SBX 6 IENO(2) [ADJUST FOR NEW ORIGIN
6PTB BPZ 6 NCH5 [J IF RESULT IS POSITIVE
6Q*2 LDN 7 #35 [LOAD -
6QSL NGX 6 6 [NEGATE
6R#= DCH 7 0(1) [DUMP - IN BUFFER
6RRW BCHX 1 £ [AND UPDATE POINTER
6S?G NCH5 CALL 0 SREBMUN [CONVERT RECORD NUMBER
6SR6 LDN 7 #36 [FULL STOP
6T=Q LDX 6 IEOC(2) [CHARACTER POINTER
6TQB DCH 7 0(1) [INSERT FULL STOP
6W=2 BCHX 1 £ [IN BUFFER
6WPL CALL 0 SREBMUN [CONVERT CHARACTER NUMBER
6X9= SBN 1 IEBF(2) [WORK OUT NUMBER OF CHARACTERS
6XNW SLC 1 2 [THAT HAVE BEEN CONVERTED
6XPT ...
6XQS ...#UNS EDPOINTER
6XRR ...(
6XSQ ...NCH5A
6XTP ... STO 1 AWORK3(2) [MESSAGE LENGTH
6XWN ...NCH6
6XXM ... OUTPARAM AWORK3(2),IEBF [ OR
6XYL ...NCH6A
6X^K ... CALL 6 MOPTEXT [FAN OUT ON CONTEXT
6Y2J ... BRN NCH24 [OFFLINE FILE
6Y3H ... BRN NCH26 [JOB SOURCE
6Y4G ... [ELSE MOP CONSOLE
6Y5F ...)
6Y6D ...#UNS EDPOINTER
6Y7C ...#SKI
6Y8G NCH6 OUTPARAM 1,IEBF [OUTPUT OR
6YN6 BRN NCH8
6^7Q NCH7 LDX 1 IEL3(2) [GET I CHARACTER
6^MB DCH 1 IEBF(2) [INSERT IN BUFFER
7272 LDN 1 1 [COUNT OF 1
727G ...
7282 ... STOZ IESP(2) [STOPS USER ATTEMPTING TO
728G ... STOZ IESTACK(2) [DO 'I/ONE LINE
7292 ... STOZ IESTACK+1(2) [ANOTHER LINE/*THING' ,ET AL
729K ...
72#8 ...#UNS EDPOINTER
72BR ... BRN NCH5A
72FB ...#UNS EDPOINTER
72H^ ...#SKI
72LL BRN NCH6 [J TO SET IT UP
736= NCH8 READY NCH28 [WAIT FOR INPUT / J IF BROKEN IN
73KW TESTBRKIN NCH28 [TESTS FOR ABANDON ACTUALLY
73PR ...
73TN ...#UNS EDPOINTER
73^K ... OUTPARAM AWORK3(2),IEBF
745G MHUNTW 3,FILE,FRB [FIND NEW INSTRUCTION RECORD
74K6 LDEX 4 A1(3) [LENGTH
754Q #
75JB NCH10 LDX 5 A1+1(3) [2ND RED TAPE WORD
7642 ANDX 5 CACT [&LEAR BITS 2-23
76HL SBN 4 2 [ADJUST LENGTH FOR HEADER
773= BZE 5 NCH12 [J IF INTEGRAL NO. OF WORDS
77GW SBN 4 1 [ELSE ADJUST FOR LAST WORD
782G NCH12 ORS 5 4 [CONJUGATE INTO CHARACTER ADDRESS
78G6 SLC 4 2 [CONVERT TO CHARACTER COUNT
78^Q #SKI JDIAG1
79FB LDX 6 IEIG(2) [START ADDRESS
79^2 #SKI JDIAG1<1$1
7=DL LDN 6 A1+2 [START ADDRESS
7=Y= STO 6 IEIP(2) [STORE IN INSTRUCTION POINTER
7?CW STO 3 IEIA(2) [STORE BLOCK ADDRESS
7?XG BNZ 4 NCH14 [J IF NOT ZERO LENGTH TRANSFER
7#C6 SLC 6 2 [CONVERT TO COUNT
7#WQ STOZ IEIP(2) [RE-READ NEXT TIME
7*BB STO 6 IEIH(2) [END AND START ADDRESSES THE SAME
7*W2 BRN NCH20
7B*L NCH14 ADX 3 6 [ADD IN START ADDRESS
7BT= LDX 1 3 [AT THIS POINT WE HAVE TO
7C#W LDX 0 1 [LOP OFF ALL THE TRAILING
7CSG NCH16 LDCH 7 0(1) [SPACES SO GET EACH CHARACTER
7D#6 SBN 7 #20 [AND IF NOT A SPACE REMEMBER
7DRQ BCHX 1 £ [THE ADDRESS. NOTE WE HAVE
7F?B BZE 7 NCH18 [PRESET X0 SO THAT AN ENTIRE
7FR2 STO 1 0 [RECORD OF SPACES TURNS OUT TO
7G=L NCH18 BCT 4 NCH16 [BE NULL. AT END OF RECORD WE
7GQ= SBX 0 IEIA(2) [HAVE A CHARACTER MODIFIER FOR THE
7H9W LDX 1 FX1 [NEXT CHARACTER AFTER THE END.
7H*2 ...
7HD6 ... BXU 0 IEIG(2),NCH19 [J IF NOT ALL SPACES
7HH= ... STOZ IEIP(2) [SET ZERO CHAR COUNT
7HLB ...NCH19
7HPG SLC 0 2 [CONVERT TO COUNT
7J96 STO 0 IEIH(2) [STORE THE END ADDRESS
7JNQ #
7K8B NCH20 PHOTO 5 [GET PHOTO OF
7KN2 LDN 0 IENZ(2) [BLOCK AND STORE
7L7L STO 5 IEIM(2) [AT THIS POINT WE
7LM= LDX 6 IESW(2) [CHECK SWITCH WORD
7M6W SLL 6 2 [TO SEE IF IN I INSTRUCTION
7MLG BNG 6 NCH22 [J IF SO
7N66 LDN 7 IENY(2) [OTHERWISE WE UPDATE
7NKQ LDN 6 IENR(2) [THE FINGERS IN FILES:
7P5B MOVE 7 4 [THE MEMORIES NECESSARY
7PK2 MOVE 6 4 [FOR THE FORGET INSTRUCTION
7Q4L LDN 6 3 [FOR THE SAME REASON
7QJ= ANDX 6 IESW(2) [WE HAVE TO
7R3W ERS 6 IESW(2) [SHIFT LEFT
7RHG ANDN 6 1 [THE F BITS,
7S36 SLL 6 1 [BITS 22 AND 23,
7SGQ ORS 6 IESW(2) [IN THE SWITCH WORD
7T2B #
7TG2 NCH22 LDX 3 IEIP(2)
7TJK ...
7TM8 ...#UNS EDPOINTER
7TPR ... BZE 3 NCH23
7TSB ...#UNS EDPOINTER
7TW^ ...#SKI
7T^L BZE 3 NCHEX [J IF NULL BLOCK
7WF= LDN 5 #1000 [COMMANDS CATEGORY
7WYW LDX 4 IEIP(2) [SET UP
7XDG SLC 4 2 [CURRENT
7XY6 NGX 4 4 [EDITING
7YCQ ADX 4 IEIH(2) [RECORD
7YF7 ...
7YGJ ...#UNS EDPOINTER
7YH^ ...(
7YKB ... OUTPARAX 4,IEIP(2),FILE,FRB
7YLR ...NCH23
7YN8 ... MONOUT ISEDRDY [N.M_ COMMAND ETC
7YPK ... BZE 3 NCHEX [J IF NULL BLOCK
7YR2 ...)
7YSC ...#UNS EDPOINTER
7YTS ...#SKI
7YXB OUTMONX 4,IEIP(2),5,FILE,FRB
7^C2 CALL 6 RLIF [GET INSTRUCTION BLOCK
7^WL CALL 0 OH
82B= LDX 3 IEIP(2) [RESET X3
82TW LDX 6 IEL1(2) [GET LINK
83*G ADX 6 1
83T6 BRN NCH1 [J TO LOAD CHAR
84#Q #
84SB NCHEX LDX 6 IEL1(2) [GET LINK
85#2 ADX 6 1 [AND DATUMISE
85RL LDN 0 0 [SET CHAR POSITION NEGATIVE
86?= EXIT 6 0 [EXIT END OF RECORD
86QW #
87=G NCH24 LDX 3 IEON(2) [IEON GIVES APPROPRIATE OLD FILE
87Q6 NCH25 READ 1(3) [READ A RECORD
889Q MHUNTW 3,FILE,FRB [GET THE BLOCK
88PB LDEX 4 A1(3)
8992 BNZ 4 NCH10 [J NOT END OF FILE
89NL FREECORE 3 [FREE NULL BLOCK
8=8= CALL 6 POPUP [POP UP STACK
8==T ...
8=*D ...#UNS EDPOINTER
8=D3 ... BRN NCH6A [DO IT ALL AGAIN
8=GL ...#UNS EDPOINTER
8=K9 ...#SKI
8=MW BRN NCH4 [DO IT ALL AGAIN
8?7G #
8?M6 NCH26 ALASHUNT 3,6
8#6Q ADDREC 3,6 [KEEP COMMAND PROCESSOR HAPPY
8#LB NGN 3 3 [ONLINE FILE IS -2
8*62 BRN NCH25
8*KL #
8*M3 ...
8*ND ...#UNS EDPOINTER
8*PT ...(
8*R= ...NCH28
8*SM ... OUTPARAM AWORK3(2),IEBF
8*W4 ... MONOUT ISEDRDY [N.M_ COMMAND ETC
8*XF ... CALL 6 XBKOF
8*YW ...)
8B2? ...#UNS EDPOINTER
8B3N ...#SKI
8B5= NCH28 CALL 6 XBKOF [CLEAR THE BREAK-IN
8BJW CALL 6 UMOP [PUSH DOWN STACK
8BMF ...
8BQ4 ...#UNS EDPOINTER
8BSM ... BRN NCH6 [DO IT ALL AGAIN
8BX= ...#UNS EDPOINTER
8B^T ...#SKI
8C4G BRN NCH4 [DO IT ALL AGAIN
8CJ6 #
8D3Q #
8DHB #
8F32 NCHX [NEXT CHARACTER WITH A SYNTAX
8FGL #
8G2= CALL 6 NCH
8GFW BRN SE4 [ERROR IF OFF END
8G^G EXIT 5 0
8HF6 #
8HYQ # RLIF RELOCATES THE INSTRUCTION BLOCK.
8JDB #
8JY2 RLIF LDX 5 IEIM(2) [GET PHOTO COUNT
8K7S LDX 3 IEIA(2)
8KCL TESTMOVE 5,RL1 [J IF BLOCK IS STILL THERE
8KX= HUNTW 3,FILE,FRB [OTHERWISE FIND IT
8LBW BNG 3 RL2 [J IF LOST
8LWG PHOTO 5 [GET NEW PHOTO COUNT
8MB6 STO 3 IEIA(2) [STORE NEW POINTER
8MTQ STO 5 IEIM(2) [STORE NEW PHOTO COUNT
8N*B RL1 EXIT 6 1 [EXIT TO CALL+2
8NT2 RL2 STOZ IEIP(2) [FORCE A RE-READ
8P#L EXIT 6 0 [EXIT TO CALL+1
8WNG #
8X86 #
8XMQ # NEXT CHECKS THE NEXT NON-SPACE CHARACTER
8Y7B # IF NOT COMMA OR RT PARENTHESIS --->SE1
8YM2 #
8^6L NEXT LDX 5 IEIP(2)
8^L= NX1 CALL 6 NCH [GET NEXT CHAR
925W BRN NX2 [J IF OFF END
92KG BXE 7 O20(1),NX1 [J IF SPACE
9356 BXE 7 O34(1),NX2
93JQ BXE 7 O31(1),NX2
944B BRN SE1
94J2 NX2 STO 5 IEIP(2) [BACKSPACE
953L EXIT 4 0
95H= #
962W #
96GG # CODE FOR DEALING WITH SYNTAX ERRORS.
9726 # ENTRIES ARE -
97FQ # SE1 SCAN, STARTING AT NEXT CHARACTER
97^B # SE2 SCAN, STARTING AT THIS CHARACTER
98F2 # SE3 SCAN ENDED AT CURRENT CHARACTER
98YL # SE4 SCAN ENDED AT LAST CHARACTER
99D= #
99XW #
9=CG SE1 CALL 5 NCHX [GET ANOTHER CHARACTER
9=X6 SE2 BXE 7 O31(1),SE3 [J IF *34
9?BQ BXU 7 O34(1),SE1 [LOOP NOT *31
9?WB SE4 STO 0 IEIP(2)
9#B2 SE3
9#TL DOWN EDITER,3 ['SYNTAX ERROR : OH!'
9**= #
9*SW #
9B#G N14EDITOR
9BS6 NER CALL 6 MOPTEXT [CHECK CONTEXT
9C?Q BRN XEND [ABORT IF EITHER OFFLINE
9CRB BRN XEND [OR NOT MOP ONLINE
9D?2 STOZ IEIP(2) [IF MOP FORCE A RE-READ
9DQL BRN PREPARSE
9F== XERR DOWN EDITER,4 ['EXECUTION ERROR: OH'
9FPW BRN XEND
9G9G N12EDITOR
9GP6 CALL 6 MOPTEXT
9H8Q BRN XERR
9HNB BRN XERR
9J82 STOZ IEIP(2)
9JML BRN PREPARSE
9K7= #
9KLW TLU STO 7 3 [TABLE LOOK-UP
9L6G SRC 3 2 [CONVERT TO CHARACTER ADDRESSS
9LL6 ... SMO 6
9M5Q ... OBEY 0
9MKB LDCH 3 0(3) [ACCESS TABLE
9N52 ADS 1 3 [DATUMISE RESULT
9NJL EXIT 6 1 [AND FINISH
9P4= #
9PHW VDXEQ SBX 6 1 [DOES V,D INSTRNS
9Q3G STO 6 AWRK1(2) [STORE LINK
9QH6 VD0 CALL 6 NCH
9R2Q BRN NOV [NO PARAMETER
9RGB BXE 7 O20(1),VD0
9S22 BXE 7 O34(1),NOV
9SFL BXE 7 O31(1),NOV
9S^= VDX LDX 6 AWRK1(2)
9TDW ADX 6 1 [RECLAIM LINK AND DATUMISE
9TYG EXIT 6 0
9WD6 NOV LDCT 7 #777 [SET TOP BITS OF DS OR VS
9WXQ STO 0 IEIP(2)
9XCB BRN VDX [J TO EXIT
9XX2 #
9YBL VI CALL 6 VDXEQ [DO V
9YW= STO 7 IEVS(2) [SET V.S
9^*W BRN WINDT
9^TG #
=2*6 XDI CALL 6 VDXEQ [DO D
=2SQ STO 7 IEDS(2) [SET D.S
=3#B BRN WINDT
=3S2 #
=4?L PARL LDX 4 IESP(2) [LEFT PARENTHESIS
=4#M ...#UNS ICT
=4*N ...(
=4BP ... LDXC 6 IESP(2) [J IF NOT CONDIT. REPETITION
=4CQ ... BCC PARL1
=4DR ... LDCT 6 1 [J IF ACTIVITY PRIORITY REDUCED
=4FS ... ANDX 6 IESW(2) [ALREADY
=4GT ... BNZ 6 PARL1
=4HW ... LDCT 6 1 [CHANGE PRIORITY TO LOWEST VALUE
=4JX ... ORS 6 IESW(2) [& SET SWITCH
=4KY ... APCHANGE DOWN
=4L^ ... CALL 6 RLIF [FIND INSTRUCTION BLOCK
=4N2 ... CALL 0 OH [ERROR IF LOST
=4P3 ...PARL1
=4Q4 ...)
=4R= SLC 4 1 [RECURESE BY PUSHING
=4WB ...#UNS EDLOOP
=4^G ... ADN 4 18 [ADD 9 TO STACK POINTER BUT LEAVE B0
=54L ...#UNS EDLOOP
=57Q ...#SKI
=5=W ADN 4 14
=5QG SRC 4 1 [B0 OF POINTER
=6=6 STO 4 IESP(2) [THEN CARRY ON
=6PQ BRN PREPARSE
=79B #SKI JDIAG1
=7P2 (
=88L #
=8N= # ROUTINE TO DO THE FINAL SYNTAX ANALYSIS ON
=97W # THE 'TG' AND 'PG' INSTRUCTIONS
=9MG # EXITS CALL+1 SYNTAX ERROR
==76 # CALL+2 SYNTAX OK
==LQ #
=?6B PGTG
=?=? ... LDX 4 IEWT(2)
=?B8 ... ANDN 4 #1
=?G5 ... BZE 4 TATA [J IF NOT CONTEXT
=?L2 LDCT 4 #100
=#5L ANDX 4 IEWT+1(2)
=#K= BZE 4 TATA [NOT 'TG OR 'PG'
=*4W LDN 4 #4
=*JG ANDX 4 IESW(2)
=B46 BZE 4 (6) [NOT 'GEDIT'
=BHQ LDX 4 IESP(2)
=C3B BNZ 4 (6) [J IF NESTED
=CH2 LDX 4 IEWT+1(2)
=D2L ANDX 4 BSB18 [#00777777
=DG= SBN 4 4
=D^W BNZ 4 (6) [NOT FOUR CHAR STRING
=FFG TATA EXIT 6 1 [OK
=F^6 )
=GDQ #
=GYB # THIS ROUTINE CHECKS ON THE JOBTIME. IF EXCEEDED AND NOT
=HD2 # MOP THEN EDIT IS ABANDONED. FOR MOP MORE TIME IS GIVEN.
=JC= #
=JWW ...TIME
=KBG ... CALL 4 XJOBTIME
=MSL TXL 7 ATIMEJ+1(3) [TEST FOR TIME UP
=N#= TXL 6 ATIMEJ(3)
=NRW BCS TIMEX [J IF NOT TIME UP
=P?G LDX 6 CONTEXT(2)
=PR6 SRC 6 4
=Q=Q BPZ 6 XITER [FINISH IF NOT MOP JOB
=QQB SBX 5 1
=R=2 STO 5 AWORK1(2) [SAVE LINK
=RPL LDX 6 JOBTIME
=S9= MPY 6 THOU(1) [MILLISECS
=SNW ADSC 7 ATIMEJ+1(3) [INCREASE USERS JOBTIME
=T8G ADS 6 ATIMEJ(3)
=TN6 MONOUT JOBTEX [COMMENT ON FACT
=W7Q LDX 5 AWORK1(2) [RESTORE LINK
=WMB ADX 5 1
=X72 TIMEX EXIT 5 0
=XLL #PAG
=Y6= #
=YKW # TRANSLATE IS THE ROUTINE WHICH ACTUALLY CAUSES THE INSTRUCTIONS TO
=^K6 # COMPLICATED BY THE FACT THAT BRACKETS ARE ALLOWED. THIS ROUTINE
?24Q # ONLY TAKES VALUES OUT OF THE STACK WHICH ARE LEFT THERE BY THE
?2JB # ROUTINE PREPARSE. THE THREE INSTRUCTIONS FOR LEFT PARENTHESIS ARE
?342 # THE ONES WHICH DO THE RECURSION.
?3HL #
?43= T3 [INSTRUCTION EXECUTION FANOUT
?4GW #REP #20
?52G 0
?5G6 N10EDITOR
?5^Q TRANSLATE [THIS IS IT !
?6FB #
?6P8 ... TESTBRKIN N8EDITOR
?78S ...TRANS
?7DL CALL 5 TIME [CHECK ON JOB TIME
?7Y= CALL 6 RLIF [GET INSTRUCTION BLOCK
?8CW CALL 0 OH [ERROR IF LOST
?8XG LDX 6 IEPS(2) [RESET THE CURRENT POINTER
?9C6 STO 6 IEIP(2) [TO WHERE PERPARSE STARTED
?9WQ LDCT 6 #100 [CLEAR
?=BB ORS 6 IESW(2) [I
?=W2 ERS 6 IESW(2) [SWITCH
??*L #
??T= TR1 CALL 6 NCH [GET CHARACTER
?##W BRN PREPARSE [IF END START AGAIN
?#D2 ...# BEFORE EXECUTING ANY INSTRUCTION TEST IF
?#H6 ...# WE ARE ON A TERMINATOR. THE ROUTINE
?#L= ...# WILL ONLY RETURN IF WE ARE NOT
?#PB ... DOWN EDITPT,12
?#Q7 ...# REHUNT EDIT FILE
?#QY ... CALL 6 RLIF
?#RP ... CALL 0 OH
?#SG TRACE 7,IENSTRUK
?*#6 CALL 6 TLU [LOOK UP THE
?*RQ ADN 3 T3(1) [TABLE AT T3
?B?B EXIT 3 TR0 [AND FANOUT
?BR2 #
?C=L UINS PAIR EDITMFO,1
?CQ= MINS PAIR EDITMFO,2
?D9W UMIN ACROSSVAR 0(1)
?DPG #
?F96 MMMM CALL 4 STNP [LOCATE FIRST CHARACTER
?FNQ STO 0 IEIP(2) [ADDRESS OF 1ST CHARACTER
?G8B LDN 1 MINS(1) [J TO OPEN FILE
?GN2 BRN UMIN
?H7L #
?HM= ...OOOO ACROSS EDITORA,3 [O INSTRUCTION
?J6W ...XHHH ACROSS EDITORA,4 [H INSTRUCTION
?JLG ...NLSW ACROSS EDITORA,5 [N,L & W INSTRUCTIONS
?K66 ...XI ACROSS EDITORA,6 [I INSTRUCTION
#8M6 OH GEOERR 1,EDIT
#96Q #
#9LB XECUTE [THIS EOES X INSTRN
#=62 CALL 6 PULLUP [PULLUP INPUT STACK
#=KL DOWN EDITPT,11
#?5= STOZ IENO(2) [X SIMULATES O#
#?8B ... LDX 7 IESW(2) [CHECK FOR W FACILITY
#??G ... SLL 7 3
#?BL ... BPZ 7 WINDT [J IF W NOT BEING USED
#?FQ ... DOWN EDWRITE,10 [LIST THE RECORD
#?JW BRN WINDT [CARRY ON
##4G TR0 CALL 0 OH
##J6 #
#*3Q SHIFT CALL 5 NCHX [DELTA SHIFT
#*HB BXE 7 O31(1),TR1 [IGNORE IF
#B32 BXU 7 O32(1),OH [J NOT
#BGL STOZ IEIP(2) [IMPLEMENT IT
#C2= #
#CFW IETS #34,0?-TR0,T3 [COMMA: TO BE IGNORED
#C^G #
#DF6 BRN PREPARSE
#DYQ #
#FDB IETS #20,0?-TR0,T3
#FY2 IET ],$
#GCL BRN TR1
#GX= #
#HBW IETS ^,0?-TR0 [DELTA SHIFT
#HWG BRN SHIFT [LOOK AT IT
#JB6 #
#JTQ IETS V,0?-TR0 [V INSTRUCTION
#K*B BRN VI [EXECUTE
#KT2 #
#L#L IETS D,0?-TR0 [D INSTRUCTION
#LS= BRN XDI [EXECUTE
#M?W #
#MRG IETS L,0?-TR0 [L INSTRUCTION
#N?6 ... LDCT 4 #400 [L-SWITCH BIT
#NQQ BRN NLSW
#P=B #
#PQ2 IETS N,0?-TR0 [N INSTRUCTION
#Q9L ... LDCT 4 #200 [N-SWITCH BIT
#QP= BRN NLSW
#R8W #
#RNG IETS W,0?-TR0 [W INSTRUCTION
#S86 ... LDCT 4 #40 [W SWITCH BIT
#SMQ BRN NLSW
#T7B #
#TM2 IETS Z,0?-TR0 [Z INSTRUCTION
#W6L CALL 6 POPUP [POPUP INSTRUCTION STACK
#WL= BRN WINDT [CARRY ON
#X5W #
#XKG IETS X,0?-TR0 [X INSTRUCTION
#Y56 BRN XECUTE [J TO DO X
#YJQ #
#^4B #
#^J2 IETS F,0?-TR0 [F INSTRUCTION
*23L DOWN EDWRITE,9 [EXECUTE IT
*2H= BRN WINDT
*32W #
*3GG IETS A,0?-TR0 [A INSTRUCTION
*426 CALL 6 SPDS [EVALUATE OPERAND
*4FQ ACROSS EDITPT,3 [EXECUTE INSTRUCTION
*4^B #
*5F2 IETS B,0?-TR0 [B INSTRUCTION
*5YL CALL 6 SPDS [EVALUTE OPERAND
*6D= ACROSS EDITPT,4 [EXECUTE INSTRUCTION
*6XW #
*7CG IETS R,0?-TR0 [R INSTRUCTION
*7X6 CALL 6 SPDS [EVALUATE OPERAND
*8BQ ACROSS EDITPT,5 [EXECUTE INSTRUCTION
*8WB #
*9B2 IETS T,0?-TR0 [T INSTRUCTION
*9TL CALL 6 SPTR [SET PARAMETERS
*=*= CALL 6 TERM [EVALUATE
*=SW #SKI JDIAG1
*?#G (
*?S6 CALL 6 PGTG [CHECK 'TG'
*#?Q BRN SE3
*#RB )
**?2 TR4 ACROSS EDITPT,7 [EXECUTE INSTRUCTION
**QL #
*B== IETS P,0?-TR0 [P INSTRUCTION
*BPW CALL 6 SPTR [SET PARAMETERS
*C9G CALL 6 TERM [EVALUATE
*CP6 #SKI JDIAG1
*D8Q (
*DNB CALL 6 PGTG [CHECK 'PG'
*F82 BRN SE3
*FML )
*G7= ACROSS EDITPT,8 [EXECUTE INSTRUCTION
*GLW #
*H6G IETS #23,0?-TR0 [IMPLICIT T INSTRUCTION
*HL6 IET -,0,1,2,3,4,5,6,7,8,9,.
*J5Q CALL 6 SPTR [SET PARAMETERS
*JKB LDN 6 TR4(1) [EXECUTES INSTRUCTION
*K52 BRN TERI [EVALUATES
*KJL #
*L4= IETS M,0?-TR0 [M INSTRUCTION
*LHW BRN MMMM
*M3G #
*MH6 IETS O,0?-TR0 [O INSTRUCTION
*N2Q BRN OOOO
*NGB #
*P22 IETS H,0?-TR0 [H INSTRUCTION
*PFL BRN XHHH
*P^= #
*QDW IETS E,0?-TR0 [E INSTRUCTION
*QYG N11EDITOR
*RD6 XEND ACROSS EDITPT,2 [COPY FILE AND FINISH
*RXQ #
*SCB IETS Q,0?-TR0 [Q INSTRUCTION
*SX2 BRN XBK1 [ABANDON
*TBL #
*TW= IETS #30,0?-TR0 [LEFT PARENTHESIS
*W*W BRN PARL [RECURSE
*WTG #
*X*6 IETS #31,0?-TR0 [RIGHT PARENTHESIS
*XSQ BRN WIN1
*Y#B #
*YS2 IETS I,0?-TR0 [I INSTRUCTION
*^?L CALL 4 STNP [FIND
*^R= BRN XI [AND INSERT STRING
B2=W #
B2QG TR2 IETS U,0?-TR0 [U INSTRUCTION
B3=6 CALL 6 NCH [NEXT CHARACTER
B3PQ BRN TR3 [J NO OPERAND
B49B BXE 7 O20(1),TR2 [IGNORE SPACE
B4P2 BXE 7 O34(1),TR3 [J NO OPERAND
B58L BXE 7 O31(1),TR3 [J NO OPERAND
B5N= STO 0 IEIP(2) [RESET CHARACTER
B67W LDN 1 UINS(1) [POSITION AND
B6MG BRN UMIN [J TO OPEN FILE
B776 TR3 STO 0 IEIP(2) [RESET CHARACTER POSITION
B7LQ CALL 6 UMOP [PUSH DOWN INSTRUCTION STACK
B86B #
B8L2 # INSTRUCTION EXECUTED
B95L #
B9K= N3EDITOR
B=4W ...WINDT
B=JG CALL 6 RLIF [FIND BLOCK
B?46 CALL 0 OH [ERROR IF LOST
B?HQ WIN0 CALL 6 NCH [ANOTHER CHARACTER
B#3B BRN WIN5 [END, CHECK STACK
B#H2 BXE 7 O20(1),WIN0 [LOOP IF SPACE
B*2L BXE 7 O34(1),PREPARSE [*34 ENDS
B*G= BXE 7 O31(1),WIN1 [*31, CHECK STACK
B*^W BXE 7 O32(1),WIN00 [J IF #32,ELSE ERROR
BBFG STO 0 IEPS(2)
BB^6 BRN SE3
BCDQ WIN00 SMO IESP(2) [GET THE CURRENT
BCYB LDX 4 IESTACK+1(2) [REPEAT ENTRY
BDD2 BZE 4 SE3 [(ERROR IF ALREADY ZERO)
BDXL SBN 4 1 [AND DECREMENT
BFC= BZE 4 WIN4 [J IF FINISHED
BFWW SMO IESP(2) [ELSE LEAVE NEW
BGBG STO 4 IESTACK+1(2) [VALUE
BGW6 COOR2 [WAIT
BJ*2 ... BRN TRANS [REPEAT
BJSL WIN1
BK#= LDX 3 IESP(2)
BKRW ANDX 3 BITS22LS
BL?G BZE 3 SE4 [SYNTAX ERROR SINCE STACK UNDERFLOWS
BLR6 ADS 2 3 [ELSE GET CURRENT STACK MODIFIER
BLW= ...#UNS EDLOOP
BL^B ... LDXC 5 IESTACK-9(3) [GET STACK ENTRY
BM4G ...#UNS EDLOOP
BM7L ...#SKI
BM=Q LDXC 5 IESTACK-7(3) [GET STACK ENTRY
BM?K ...#UNS ICT
BM#D ...(
BM*? ... BCC WIN1A [J IF NOT CONDIT. REPETITION
BMB6 ... LDCT 4 1 [J IF ACTIVITY PRIORITY REDUCED
BMB^ ... ANDX 4 IESW(2) [ALREADY
BMCS ... BNZ 4 WIN2
BMDM ... LDCT 4 1 [CHANGE PRIORITY TO LOWEST VALUE &
BMFG ... ORS 4 IESW(2) [SET SWITCH
BMG* ... APCHANGE DOWN
BMH8 ... CALL 6 RLIF [FIND INSTRUCTION BLOCK
BMJ3 ... CALL 0 OH [ERROR IF LOST
BMJ9 ... LDX 3 IESP(2) [RELOAD X3 OVERWRITTEN BY RLIF
BMJC ... ANDX 3 BITS22LS
BMJK ... ADS 2 3
BMKP ... BRN WIN2
BMLJ ...WIN1A
BMMC ...)
BMN= ...#UNS ICT
BMP5 ...#SKI
BMQB BCS WIN2 [J IF
BMTG ...#UNS EDLOOP
BMYL ... LDX 4 IESTACK-8(3) [GET COUNTER
BN3Q ...#UNS EDLOOP
BN6W ...#SKI
BN=2 LDX 4 IESTACK-6(3) [GET COUNTER
BNPL SBN 4 1
BP9= BZE 4 WIN3 [J IF ENOUGH
BP#B ...#UNS EDLOOP
BPCG ... STO 4 IESTACK-8(3) [AND RESET
BPGL ...#UNS EDLOOP
BPKQ ...#SKI
BPNW STO 4 IESTACK-6(3) [AND RESET
BPPS ...#UNS EDLOOP
BPQQ ...(
BPRN ... BRN WIN2B [J IF NOT CONDITIONAL REPETITION
BPSL ...WIN2 LDX 5 IEOR(2) [LOAD CURRENT OLDFILE RECORD NO
BPTJ ... LDX 6 IEOC(2) [LOAD CURRENT OLDFILE CHARACTER NO
BPWG ... TXU 5 IESTACK-2(3) [J IF DIFFERENT POSITION IN OLDFILE
BPXD ... TXU 6 IESTACK-1(3) [FROM LAST PASS THRU REPEATED INSTNS
BPYB ... BCS WIN2A
BP^# ... LDX 6 IESTACK-9(3) [SET IEPS TO POINT TO (
BQ2= ... ANDX 6 BITS22LS
BQ38 ... SBN 6 1
BQ46 ... SRC 6 2
BQ54 ... STO 6 IEPS(2)
BQ62 ... LDX 6 IESTACK-8(3) [SET IEIP TO POINT AFTER TERMINATOR
BQ6Y ... STO 6 IEIP(2) [TO OUTPUT IN FULL INCORRECT REPETITI
BQ7W ... [INSTRUCTIONS
BQ8S ... EDERR INCL [REPORT ERROR-INSTRUCTION NOT
BQ9Q ... DOWN EDITER,4 [COMPLETED,WOULD CAUSE EDITOR TO LOOP
BQ=N ... STOZ IESP(2) [CLEAR STACK
BQ?L ... BRN NER [ABORT UNLESS MOP ONLINE EDIT
BQ#J ...WIN2A STO 5 IESTACK-2(3)
BQ*G ... STO 6 IESTACK-1(3)
BQBD ... LDXC 5 IESTACK-9(3) [RELOAD X5
BQCB ...WIN2B SRC 5 2
BQD# ...)
BQF= ...#UNS EDLOOP
BQG8 ...#SKI
BQH6 ...(
BQJ4 ... BRN WIN2B
BQK2 ...WIN2 LDXC 5 IESTACK-7(3) [RELOAD X5,MAYBE OVERWRITTEN BY RLIF
BQKY ...WIN2B SRC 5 2
BQLW ...)
BQN6 STO 5 IEIP(2) [ADDRESS AND
BQPH ... SEGENTRY K60EDITOR
BQQY ... BRN RP10
BQS* ...# [TO USE MILL.
BQTQ ... LDX 6 ACTCHCH(2) [CALL LETOPRUN IF NO. OF CHAPTER
BQX7 ... SBX 6 IERP(2) [CHANGES SINCE PREVIOUS LETOPRUN
BQYJ ... BXL 6 EDRPCHCH,RP10 [NOT LESS THAN N(NIS EDITRP PARAM.).
BQ^^ ... LETOPRUN [LET ANOTHER ACTIVITY OR PROGRAM
BR3B ... LDX 6 ACTCHCH(2) [USE MILL
BR4R ... STO 6 IERP(2) [STORE NO. OF CHAPTER CHANGES
BR5= ... BRN PREP [FIND INSTRUCTION BLOCK & CARRY ON
BR68 ...RP10
BR6^ ... SEGENTRY K61EDITOR
BR7Q BRN PREPARSE [CARRY ON
BRMB WIN3 LDX 4 IESP(2) [PULL UP STACK
BS72 SLC 4 1 [IF THIS LEAVES
BS=6 ...#UNS EDLOOP
BS*= ... SBN 4 18 [THE POINTER NEGATIVE
BSDB ...#UNS EDLOOP
BSHG ...#SKI
BSLL SBN 4 14 [THE POINTER NEGATIVE
BT6= BPZ 4 WIN30 [WE HAVE REACHED THE END
BT7D ...#UNS ICT
BT8L ...(
BT9S ... LDCT 6 1 [J IF ACTIVITY PRIORITY HAS NOT BEEN
BT?2 ... ANDX 6 IESW(2) [CHANGED TO LOWEST VALUE
BT#8 ... BZE 6 WIN3A
BT*B ... LDCT 6 1 [RESET ACTIVITY PRIORITY OF CPAT
BTBJ ... ERS 6 IESW(2) [& UNSET SWITCH
BTCQ ... APCHANGE UP
BTDY ... CALL 6 RLIF [FIND INSTRUCTION BLOCK
BTG6 ... CALL 0 OH [ERROR IF LOST
BTH# ...WIN3A
BTJG ...)
BTKW STOZ IESP(2) [SO WE SHOULD
BW5G BRN WIN4 [CLEAR POINTER
BWK6 WIN30 SRC 4 1 [ELSE STORE
BX4Q STO 4 IESP(2) [NEW VALUE
BXJB WIN4 CALL 6 NCH [END OF THE INSTRUCTION
BY42 BRN PREPARSE [J FOR END
BYHL BXE 7 O34(1),PREPARSE [*34 IS END
B^3= BXU 7 O31(1),WIN4 [LOOP IF NOT *31 EITHER
B^GW BRN WIN1 [*31 SO REPEAT
C22G WIN5 LDXC 7 IESP(2) [CHECK STACK
C2G6 BZE 7 PREPARSE [J IF OK
C2^Q CALL 0 OH [ELSE ERROR
C3FB #
C3^2 STNP CALL 6 NCH [SKIP TO FORST NON-SPACE CHARATCER
C4DL BRN SE4 [ERROR IF OFF END
C4Y= BXE 7 O20(1),STNP [LOOP IF NOT *20
C5CW EXIT 4 0 [ELSE EXIT
CW#Q #
CWSB # THIS ROUTINE SETS THE PARAMETERS FOR TRANSLATE TO CALL TERM
CX#2 #
CXRL SPTR LDN 3 IEWT [ADDRESS OF O/P
CY?= LDX 4 IEOC(2) [CURRENT CHARACTER NUMBER
CYQW LDX 5 IEOR(2) [CURRENT RECORDNUMBER
C^=G EXIT 6 0
C^Q6 #
D29Q # THE ROUTINES TERM AND TERI ARE IN SEGMENT EDITET.
D2PB #
D392 TERM SBX 6 1 [RELATIVISE LINK
D3NL DOWN EDITET,1 [EVALUATE FROM NEXT CHARACTER
D48= BRN NER [J IF SYNTAX ERROR
D4MW ADS 1 6 [DATUMISE LINK
D57G EXIT 6 0 [AND RETURN
D5M6 #
D66Q TERI SBX 6 1 [RELATIVISE LINK
D6LB DOWN EDITET,2 [EVALUATE FROM THIS CHARACTER
D762 BRN NER [J IF SYNTAX ERROR
D7KL ADS 1 6 [DATUMISE LINK
D85= EXIT 6 0 [AND RETURN
D8JW #
D94G # THIS ROUTINE EVALUATES THE OPERAND FOR THE A,B AND R INSTRUCTIONS
D9J6 # OUTPUT IS IN IEWT AS FOLLOWS:
D=3Q #
D=HB # IEWT+1 ADDRESS OF FIRST CHARACTER IN FIRST STRING
D?32 # IEWT+2 LENGTH OF FIRST STRING
D?GL # IEWT+3 ADDRESS OF FIRST CHARACTER IN SECOND STRING
D#2= # IEWT+4 LENGTH OF SECOND STRING
D#FW #
D#^G # NOTE THAT NULL STRINGS ARE ALLOWED HERE.
D*F6 #
D*YQ SPDS STO 6 IEL1(2) [STORE LINK
DBDB CALL 4 STNP [FIND FIRST NON-SPACE CHARACTER
DBY2 STO 7 5 [REMEMBER IT
DC7S STOZ IEWT(2) [IN CASE LAST INST. WAS'P-'
DCCL LDN 1 IEWT+1(2) [ADDRESS OF O/P
DCX= SPD1 STO 3 0(1) [STORE STRING ADDRESS
DDBW NGN 4 1 [CUNNING COUNT SET
DDWG SPD2 CALL 6 NCH [GET NEXT CHARACTER
DFB6 CALL 0 OH [ERROR IF END OF BLOCK
DFTQ ADN 4 1 [COUNT CHARACTER
DG*B BXE 7 5,SPD3 [J IF TERMINAL QUOTE
DGT2 BXU 7 IEVS(2),SPD2 [LOOP IF NOT V.S.
DH#L LDX 3 0 [ELSE REPLACE THE
DHS= LDN 7 #20 [V.S. CHARACTER IN
DJ?W SMO IEIA(2) [THE BUFFER BY A
DJRG DCH 7 0(3) [SPACE THEN LOOP
DK?6 BRN SPD2 [AS BEFORE
DKQQ SPD3 STO 4 1(1) [STORE LENGTH
DL=B ADN 1 2 [INCREMENT ADDRESS
DLQ2 BVCI SPD1 [FLOP
DM9L LDX 6 IEL1(2) [