{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: EDITET7)}}
====== EDITET7 ======
(George Source)
**Macros used:** [[george:macro:ALASHUNT|ALASHUNT]], [[george:macro:BACKSPACE|BACKSPACE]], [[george:macro:BRKINOFF|BRKINOFF]], [[george:macro:BXE|BXE]], [[george:macro:BXGE|BXGE]], [[george:macro:BXU|BXU]], [[george:macro:CLOSE|CLOSE]], [[george:macro:DOWN|DOWN]], [[george:macro:EDERR|EDERR]], [[george:macro:FILEMOVE|FILEMOVE]], [[george:macro:GEOERR|GEOERR]], [[george:macro:IET|IET]], [[george:macro:IETS|IETS]], [[george:macro:MENDAREA|MENDAREA]], [[george:macro:MHUNTW|MHUNTW]], [[george:macro:PHOTO|PHOTO]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SUBREC|SUBREC]], [[george:macro:TESTBRKIN|TESTBRKIN]], [[george:macro:TESTMOVE|TESTMOVE]], [[george:macro:UP|UP]], [[george:macro:UPPLUS|UPPLUS]]
22FL #LIS K0EDITET>K0ALLGEO>0
22^= #SEG EDITET7 [DICK RUSBRIDGE
23DW 8HEDITET
23YG #
24D6 # THIS SEGMENT ENCODES .
24XQ #
25CB # ENTRY POINT TABLE
25X2 #
26BL SEGENTRY K1EDITET,N1EDITET [ANALYSE FROM NEXT CHAR.-
26W= SEGENTRY K2EDITET,N2EDITET [ANALYSE FROM CURRENT CHAR.
27*W SEGENTRY K3EDITET,N3EDITET [PART 0 INSTRUCTION
27TG SEGENTRY K4EDITET,N4EDITET [CLEARS BREAK-IN (FROM EDITOR)
28*6 SEGENTRY K5EDITET,N5EDITET [BODY OF POPUP IN EDITOR (X)
28SQ SEGENTRY K6EDITET,N8EDITET [BODY OF PULLUP IN EDITOR (Z)
29#B SEGENTRY K7EDITET,N7EDITET [BODY OF UMOP IN EDITOR (U)
29S2 #
2=?L O30 #30
2=R= O31 #31
2?=W O34 #34
2?QG #
2#=6 #
2#PQ # XCLSE CLOSES THE FILE ON TOP OF THIS ACTIVITIES FILE STACK
2*9B #
2*P2 XCLSE SBX 6 1
2B8L CLOSE
2BN= ADS 1 6
2C7W EXIT 6 0
2CMG #
2D76 #
2DLQ # RLIF RELOCATES THE INSTRUCTION BLOCK
2F6B #
2FL2 RLIF LDX 5 IEIM(2) [GET PHOTO
2FTS ... LDX 3 IEIA(2)
2G5L TESTMOVE 5,RL1 [J IF NOT MOVED
2GK= MHUNTW 3,FILE,FRB [ELSE REDUNDANT
2H4W PHOTO 5
2HJG STO 3 IEIA(2) [STORE NEW WHERE
2J46 STO 5 IEIM(2) [AND WHEN
2JHQ RL1 EXIT 6 0
2K3B #
2KH2 # NCH IS THE NEXT CHARACTER FROM EDITING FILE ROUTINE. THE REQUIRED
2L2L # CHARACTER IS PUT INTO X7 AND EXIT IS TO CALL+2. AN ATTEMPT TO READ
2LG= # OFF THE BLOCK CAUSES EXIT TO CALL+1. A SUBSEQUENT CALL WILL CAUSE
2L^W # GEOERR EDITET. ADDRESS OF LAST CHARACTER IS LEFT IN X0.
2MFG #
2M^6 NCH LDX 3 IEIP(2) [ADDRESS OF NEXT CHARACTER
2NDQ BZE 3 NCH3 [J IF OFF END LAST TIME
2NYB STO 3 0 [GET CHARACTER ADDRESS OF END OF
2PD2 SLC 0 2 [BLOCK AND PERFORM ARITHMETIC
2PXL SBX 0 IEIH(2) [TO DETERMINE IF WE ARE ABOUT TO RUN
2QC= BPZ 0 NCH2 [OFF THE END OF THE BLOCK
2QWW NCH1 SMO IEIA(2) [MODIFY BY ADDRESS OF BLOCK
2RBG LDCH 7 0(3) [LOAD CHARACTER INTO X7
2RW6 LDX 0 3 [LEAVE ADDRESS IN X0
2S*Q BCHX 3 £ [INCREMENT ADDRESS
2STB STO 3 IEIP(2) [STORE ADDRESS OF NEXT CHARACTER
2T*2 EXIT 6 1 [AND RETURN TO CALL+2
2TSL NCH2 STOZ IEIP(2) [CLEAR POINTER FOR NEXT TIME
2W#= STO 3 0 [OLD CHARACTER ADDRESS
2WRW EXIT 6 0 [AND RETURN TO CALL+1
2X?G NCH3 GEOERR 1,EDITET
2XR6 #
2Y=Q NCHX CALL 6 NCH [NEXT CHARACTER WITH A SYNTAX
2YQB BRN SE4 [ERROR IF OFF END
2^=2 EXIT 5 0
2^PL #
329= # CODE FOR DEALING WITH SYNTAX ERRORS.
32NW # ENTRIES ARE -
338G # SE1 SCAN, STARTING AT NEXT CHARACTER
33N6 # SE2 SCAN, STARTING AT THIS CHARACTER
347Q # SE3 SCAN ENDED AT CURRENT CHARACTER
34MB # SE4 SCAN ENDED AT LAST CHARACTER
3572 #
35LL #
366= SE1 CALL 5 NCHX [GET ANOTHER CHARACTER
36KW SE2 BXE 7 O31(1),SE3 [J IF *31
375G BXU 7 O34(1),SE1 [LOOP NOT *34
37K6 SE4 STO 0 IEIP(2)
384Q SE3
38JB DOWN EDITER,3 ['SYNTAX ERROR : OH!'
3942 NER UP
39HL #
3=3= TLU STO 7 3 [TABLE LOOK-UP
3=GW SRC 3 2 [CONVERT TO CHARACTER ADDRESSS
3?2G ... SMO 6
3?G6 ... OBEY 0
3?^Q LDCH 3 0(3) [ACCESS TABLE
3#FB ADS 1 3 [DATUMISE RESULT
3#^2 EXIT 6 1 [AND FINISH
3*DL #
3*Y= #
3BCW # MULTIFLICATION ROUTINE. STOPS AT FIRST NON-DECIMAL CHARACTER.
3BXG #
3CC6 MULT STO 6 AWORK3(2) [STORE LINK
3CWQ LDN 4 0 [AND SET RESULT
3DBB LDN 5 0 [TO ZERO.
3DW2 BRN MM4 [FIRST CHARACTER IN X7
3F*L MM1 EDERR NUTL ['NUMBER TOO LARGE'
3FT= BRN SE2 ['SYNTAX ERROR: NNNNNNNN'
3G#W MM2 STO 0 IEIP(2) [STEP BACK CH PTR
3GSG BNZ 4 MM1 [J IF TOO LARGE
3H#6 LDX 6 AWORK3(2) [GET LINK
3HRQ STO 5 IEBF(2) [STORE RESULT
3J?B EXIT 6 0 [AND FINISH
3JR2 MM3 CALL 6 NCH [NEXT CHARACTER
3K=L BRN MM2 [J IF END
3KQ= MM4 CDB 4 7 [CONVERT
3L9W BCS MM2 [J IF END
3LPG BVSR MM1 [J IF HUGE
3M96 BRN MM3 [CARRY ON
3MNQ #
3N8B # THIS SUBROUTINE ANALYSES , THE SYNTAX OF WHICH MAY BE
3NN2 # FOUND IN THE USER SPECIFICATION. ENTRIES ARE:
3P7L #
3PM= # 1 TERM - ANALYSE FROM THE NEXT CHARACTER.
3Q6W # 2 TERI - ANALYSE FROM CURRENT CHARACTER IN X7.
3QLG #
3R66 # ENTRY CONDITIONS:
3RKQ #
3S5B # X3 = ADDRESS OF 5-WORD OUTPUT AREA
3SK2 # X5 = CURRENT OLD FILE RECORD NUMBER
3T4L # X4 = CURRENT OLD FILE CHARACTER NUMBER
3TJ= #
3W3W # OUTPUT FORMAT:
3WHG #
3X36 # [X3]+0 0.0 E
3XGQ # 1.0 CONTEXT FORWARDS
3Y2B # 1.2 CONTEXT BACKWARDS
3YG2 # 2.0 ABSOLUTE FORWARDS
3Y^L # 2.2 ABSOLUTE BACKWARDS
3^F= # [X3]+1 ABSOLUTE RECORD NUMBER / CHARACTER COUNT
3^YW # B0=1 CONTAINS
42DG # B1=1 SPACES
42Y6 # B2=1 G INSTRUCTION
43CQ # [X3]+2 ZERO / CHARACTER ADDRESS
43XB # [X3]+3 SIGNED CHARACTER NUMBER / SIGNED CHARACTER COUNT
4478 ...# [X3]+4 ZERO / CHARACTER ADDRESS
44C2 ...# B2=1 IF .E
44LS ...# B3=1 IF .S
44WL #
45B= #
45TW # IEL2 IS AN ADDITIVE CONTEXT COUNTER. VALUES ARE:
46*G #
46T6 # 1 #
47#Q # 2 - FIRST TIME
47SB # 4 C
48#2 # 10 STRING FIRST TIME
48RL # 20 NUMBER FIRST TIME
49?= # 40 RECORD COMPLETE
49QW # 100 - SECOND TIME
4==G # 200 NUMBER SECOND TIME
4=Q6 # 400 STRING SECOND TIME
4?9Q # 1000 E SECOND TIME
4?PB # 2000 S
4#92 # 4000 G
4#B8 ...# 10000 S SECOND TIME (.S)
4#HB ...# 20000 #SECOND TIME (.#)
4#NL #
4*8= # THIS ROUTINE STORES THE INPUT PARAMETERS
4*MW # AND INITIALISES THE OUTPUT AREA.
4B7G #
4BM6 TESP ADS 2 3 [ADDRESS OF O/P
4C6Q STO 3 IEL3(2) [AND IN FX2
4CLB STOC 4 IEL4(2) [CHARACTER NUMBER
4D62 STOZ IEL2(2) [INITIALISE CONTEXT
4DKL STO 0 AWRK1(2) [STORE LINK
4F5= LDN 4 5 [SIZE OF O/P
4FJW STOC 5 IEL5(2) [RECORD NUMBER
4G4G TES1 STOZ 0(3) [ZEROISE OUTPUT
4GJ6 BUX 3 £
4H3Q BCT 4 TES1
4HHB CALL 6 RLIF [GET INSTRUCTION BLOCK
4J32 LDX 0 AWRK1(2)
4JGL TES2 EXIT 0 0
4K2= #
4KFW # THIS ROUTINE CHECKS THE BITS IN X5 AGAINST THE PARAMETER.
4K^G # IF ILLEGAL BITS ARE SET A SYNTAX ERROR IS REPORTED.
4LF6 #
4LYQ TESX ANDX 5 0(3)
4MDB BNZ 5 SE2
4MY2 EXIT 3 1
4NCL #
4NX= TT [ EXECUTION FANOUT TABLE
4PBW #REP #20
4PWG 0
4QB6 #
4QTQ # THE MAIN LOGIC OF THE ROUTINE STARTS HERE.
4R*B #
4RT2 N2EDITET
4S#L TERI CALL 0 TESP [STORE PARAMETERS
4SS= BRN TER1
4T?W TERP ORS 5 IEL2(2) [INCREMENT CONTEXT COUNTER
4TRG BRN TER0
4W?6 TERR BRN SE2 [SYNTAX ERROR
4WQQ N1EDITET
4X=B TERM CALL 0 TESP [STORE PARAMETERS
4XQ2 TER0 IETS #20,TER0-TERR,TT [SPACE IS IGNORED
4Y9L IET ],$
4YP= CALL 6 NCH [GET A CHARACTER
4^8W BRN TENL [J IF FINISHED
4^NG TER1 CALL 6 TLU [LOOK UP
5286 ADN 3 TT(1) [TABLE AT TT
52MQ LDX 5 IEL2(2) [LOAD CONTEXT
537B EXIT 3 TERR [AND FANOUT
53M2 #
546L TENL LDX 5 IEL2(2) [LOAD CONTEXT AT END
54L= TEND IETS ),TEND-TERR [END OF ANALYSIS
555W IET *,#34 [ ) , *
55KG STO 0 IEIP(2) [BACKSPACE
5656 BRN TER12 [J TO FINAL CHECK
56JQ #
574B IETS E,0?-TERR [E (END OF RECORD/FILE)
57J2 BZE 5 TIDYE [J IF ONLY ARG TO FINISH
583L CALL 3 TESX [CHECK THAT ONLY
586Q ...#UNS EDCHAR
589W ... #31700 [ HAS BEEN ANALYSED
58*2 ...#UNS EDCHAR
58D6 ...#SKI
58H= #1700 [ HAS BEEN ANALYSED
592W LDN 5 #1000 [SET SWITCH
59GG BRN TERP [AND REPEAT
5=26 #
5=FQ IETS #23,0?-TERR [# (ABSOLUTE NUMBER)
5=H^ ...#UNS EDCHAR
5=L8 ...(
5=NC ... LDN 3 #40
5=QL ... ANDX 3 IEL2(2) [RECORD COMPLETE?
5=ST ... BNZ 3 TER1A [J IF SO
5=X4 ...)
5=^B BNZ 5 SE2 [J IF NOT FIRST CHARACTER
5?F2 LDN 5 1 [SET SWITCH
5?YL BRN TERP [AND REPEAT
5#D= #
5#XW IETS -,0?-TERR [- (GO BACKWARDS)
5*66 ...
5*#B ... LDN 3 #40
5*GL ... ANDX 3 IEL2(2) [RECORD PART COMPLETE?
5*NW ... BZE 3 TER2 [JIF NOT
5*X6 CALL 3 TESX [CHECK ON SECOND TIME
5B2= ...#UNS EDCHAR
5B5B ... #31700
5B8G ...#UNS EDCHAR
5B?L ...#SKI
5BBQ #1700
5BWB ... LDN 5 #100 [SET SWITCH
5CB2 BRN TERP [AND CONTINUE
5CKS ...TER2
5CTL ... BNZ 5 SE2 [ERROR IF ANYTHING BOFORE MINUS
5D5D ... LDN 5 2 [SET FIRST TIME MINUS
5D*= BRN TERP [AND CONTINUE
5DSW #
5F#G IETS C,0?-TERR [C (CONTAINING)
5FS6 CALL 3 TESX [CHECK CONTEXT
5FX= ...#UNS EDCHAR
5G2B ... #37775
5G5G ...#UNS EDCHAR
5G8L ...#SKI
5G?Q #7775 [ONLY MINUS IS ALLOWED
5GRB LDN 5 4 [SET SWITCH
5H?2 BRN TERP [AND CONTINUE
5HQL #
5J== IETS S,0?-TERR [S (SPACES)
5J#F ...#UNS EDCHAR
5JBN ...(
5JDX ... LDN 3 #40
5JH6 ... ANDX 3 IEL2(2) [RECORD COMPLETE?
5JK* ... BNZ 3 TER2A [J IF SO
5JMJ ...)
5JPW CALL 3 TESX [CHECK CONTEXT
5JT2 ...#UNS EDCHAR
5JY6 ... #37775
5K3= ...#UNS EDCHAR
5K6B ...#SKI
5K9G #7775 [ONLY MINUS ALLOWED
5KP6 LDN 5 #2000
5L8Q BRN TERP
5LNB #
5N7= IETS G,0?-TERR [G (GEDIT)
5NLW CALL 3 TESX [CHECK CONTEXT
5NQ2 ...#UNS EDCHAR
5NT6 ... #37775
5NY= ...#UNS EDCHAR
5P3B ...#SKI
5P6G #7775 [ONLY MINUS ALLOWED
5PL6 LDN 5 #4000
5Q5Q BRN TERP
5R52 #
5RJL IETS .,0?-TERR [. (START OF )
5S4= CALL 3 TESX [CHECK CONTEXT
5S7B ...#UNS EDCHAR
5S=G ... #31740
5S*L ...#UNS EDCHAR
5SDQ ...#SKI
5SHW ... #1740 [ NOT ALLOWED
5T3G LDN 5 #30 [CHECK IF
5TH6 ANDX 5 IEL2(2) [IS NULL
5W2Q BNZ 5 TER9 [J IF NOT
5WGB LDN 5 #60 [ELSE SIMULATE
5X22 BRN TERP [RELATIVE ZERO
5XFL TER9 LDN 5 #40 [SET SWITCH
5X^= BRN TERP [AND CONTINUE
5YDW #
5YYG IETS 0,0?-TERR [NUMBER
5^D6 IET 1,2,3,4,5,6,7,8,9
5^XQ BRN NUMBER
62CB #
62X2 IETS :,0?-TERR [
63BL IET ;,<,=,>,?,!,",£,%,&,',+,/
63W= ANDN 5 #40 [CHECK CONTEXT
64*W BZE 5 TER4 [J IF FIRST TIME
64TG LDN 5 #1200 [ILLEGEL CONTEXTS
65*6 BRN TER5 [CHECK
65SQ TER4 LDN 5 #31 [ILLEGAL CONTEXTS
66#B TER5 ANDX 5 IEL2(2) [CHECK
66S2 BNZ 5 SE2 [J IF ERROR
67?L LDX 1 IEIP(2) [START ADDRESS
67R= STO 7 5 [FIRST CHARACTER
68=W NGN 4 1 [SET COUNT
68QG TER6 CALL 6 NCH [GET A CHARACTER
69=6 BRN SE3 [ERROR IF OFF END
69PQ ADN 4 1 [COUNT IT AND
6=9B BXE 5 7,TER8 [J IF TERMINAL QUOTE
6=P2 BXU 7 IEVS(2),TER6 [LOOP IF NOT V.S.
6?8L LDX 3 0 [ELSE REPLACE THE
6?N= LDN 7 #20 [V.S. CHARACTER IN
6#7W SMO IEIA(2) [THE BUFFER BY A
6#MG DCH 7 0(3) [SPACE THEN LOOP
6*76 BRN TER6 [AS BEFORE
6*LQ TER8 LDN 6 #2000
6B6B BZE 4 TER11 [SKIP IF NULL STRING
6BL2 ANDX 6 IEL2(2) [CHECK CONTEXT
6C5L BZE 6 TER11 [J IF NOT S
6CK= LDN 5 #20
6D4W TER10 SMO IEIA(2) [RE-SCAN THE
6DJG LDCH 6 0(1) [FOR LEADING SPACES
6F46 BXU 6 5,TER11 [TRUNCATING THEM
6FHQ BCHX 1 £ [LOOP UNTIL FIRST NON-SPACE
6G3B BCT 4 TER10 [CHAR OR END OF
6GH2 TER11 LDN 5 #10 [FIRST TIME CONTEXT
6H2L LDN 0 #40 [FIRST TIME SWITCH
6HG= LDX 3 IEL3(2) [ADD OF O/P
6H^W ANDX 0 IEL2(2) [CHECK
6JFG BZE 0 TER7 [J IF FIRST TIME
6J^6 LDN 5 #400 [SECOND TIME CONTEXT
6KDQ ADN 3 2 [SECOND TIME O/P
6KYB TER7 STO 1 2(3) [STORE ADDRESS
6LD2 STO 4 1(3) [STORE COUNT
6LXL LDX 1 FX1 [RE-SET
6MC= BRN TERP [AND CONTINUE
6MCW ...#UNS EDCHAR
6MDG ...(
6MF6 ...#
6MFQ ...# TEST FOR .#
6MGB ...TER1A
6MH2 ... CALL 3 TESX [CHECK ONLY RECORD GAS
6MHL ... #31700 [BEEN ANALYSED
6MJ= ... LDN 5 #4000
6MJW ... SLL 5 2 [#20000 FOR .#
6MKG ... BRN TERP
6ML6 ...#
6MLQ ...# TEST FOR .S
6MMB ...TER2A
6MN2 ... CALL 3 TESX [CHECK ONLY RECORD HAS
6MNL ... #31600
6MP= ... LDN 5 1
6MPW ... LDX 3 IEL3(2) [ADDR OF OUTPUT
6MQG ... STO 5 3(3) [LENGTH OF .S CHAR = 1
6MR6 ... LDN 5 #4000
6MRQ ... SLL 5 1
6MSB ... BRN TERP [#10000 FOR .S
6MT2 ...#
6MTL ...)
6MWW NUMBER
6NBG CALL 6 MULT [CONVERSION OF NUMBER
6NW6 LDN 0 #40 [THEN CHECK CONTEXT
6P*Q LDX 5 IEL2(2) [ IF FIRST TIME DONE
6PTB ANDX 0 IEL2(2) [JUMP TO TER3
6Q*2 LDX 6 IEBF(2) [LOAD RESULT
6QSL BNZ 0 TER3
6R#= CALL 3 TESX [CHECK CONTEXT
6RCB ...#UNS EDCHAR
6RGG ... #37774
6RKL ...#UNS EDCHAR
6RNQ ...#SKI
6RRW #7774 [FOR FIRST TIME
6S?G LDX 3 IEL3(2) [ADD OF O/P
6SR6 LDN 5 #20 [SET SWITCH
6T=Q STO 6 1(3) [STORE RESULT
6TQB BRN TERP [AND CONTINUE
6W=2 TER3 CALL 3 TESX [SECOND TIME NUMBER
6W*6 ...#UNS EDCHAR
6WD= ... #11600
6WHB ...#UNS EDCHAR
6WLG ...#SKI
6WPL #1600 [CHECK CONTEXT
6X9= LDX 3 IEL3(2) [ADD OF O/P
6XNW LDN 5 #200 [SET SWITCH
6Y8G STO 6 3(3) [STORE RESULT
6YN6 BRN TERP [AND CONTINUE
6^7Q #
7272 TER12 ANDN 5 #6004 [IF NOT C OR S OR G
73KW BZE 5 TIDY [J TO DECANT O/P
745G LDN 3 #10 [IF NO STRING FOLLOWED C OR S
74K6 ANDX 3 IEL2(2) [ITS AN ERROR
754Q BZE 3 SE2 [J IF STRING ABSENT
75JB #
7642 #
76HL # AT THIS POINT WE HAVE SOME VALUES IN THE OUTPUT AREA AND THE
773= # CONTEXT BITS IN IEL2 SO WE HAVE TO PROCESS THE OUTPUT AREA.
77GW #
782G TIDY LDX 0 IEL2(2) [CONTEXT COUNTER
78=# ... BZE 0 SE2 [J IF NO CONTEXT BITS SET
78G6 LDX 3 IEL3(2) [O/P AREA
78^Q LDX 4 1(3) [RECORD / CH CNT
79FB LDX 5 3(3) [CHAR / CH CNT
79^2 LDX 6 4(3) [Z / CH INDEX
7=DL LDN 7 0 [INITIALISE
7=Y= SRC 0 2 [SHIFT TO *2
7?CW BPZ 0 TD1 [J NOT - FIRST TIME
7?XG LDCT 7 #400 [MEANS GO BACKWARDS
7#C6 TD1 ORN 7 1 [TENTATIVELY CONTEXT
7#WQ SRC 0 3 [SHIFT TO *20
7*BB BPZ 0 TD2 [J NOT NUMBER FIRST TIME
7*W2 ADN 7 1 [ADD FOR ABSOLUTE
7B*L BPZ 7 TD21 [J NOT BACKWARDS
7BT= NGX 4 4 [INVERT SIGN
7C#W TD21 SLC 0 1 [SHIFT TO *10
7CSG BRN TD20 [SKIP NEXT BIT
7D#6 TD2 SLC 0 1 [SHIFT TO *10
7DRQ BNG 0 TD20 [J IF CONTEXT
7F?B ADN 7 1 [NUMBER BY DEFAULT
7FR2 TD20 SLC 0 1 [SHIFT TO *4
7G=L BPZ 0 TD30 [J NOT CONTAINING
7GQ= SLL 4 1 [ELSE SET B0
7H9W ADN 4 1
7HPG SRC 4 1
7J96 TD30 SRC 0 8
7K8B BPZ 0 TD40 [J NOT SPACES
7LM= SLL 4 2
7M6W ADN 4 1 [ELSE SET BIT1
7MLG SRC 4 2
7P5B TD40 SRC 0 1
7PK2 BPZ 0 TD3 [J IF NOT G
7Q4L SLL 4 3
7QJ= ADN 4 1 [ELSE SET BIT 2
7R3W SRC 4 3
7RHG TD3 SLC 0 6
7TG2 BNG 0 TD4 [J IF PRESENT
7T^L SRC 0 2 [SHIFT TO *200
7WF= BRN TD7 [CHECK ON
7WYW TD4 SRC 0 1 [SHIFT TO *100
7XDG BPZ 0 TD5 [J NO - SECOND TIME
7XY6 NGX 5 5 [INVERT COUNT / SIGN
7YCQ TD5 SRC 0 3 [SHIFT TO *1000
7YXB BPZ 0 TD6 [J NOT E SECOND TIME
7^2G ...#UNS EDCHAR
7^5L ... LDCT 6 #100 [SET E(2ND)
7^8Q ...#UNS EDCHAR
7^?W ...#SKI
7^C2 LDCT 6 #177 [SUBSTITUTE LARGE ADDRESS
7^D? ...#UNS EDCHAR
7^FJ ...(
7^GT ...TD6
7^J6 ... SRC 0 3 [*10000
7^KC ... BPZ 0 TD6A [J IF NOT S(2ND)
7^LN ... LDCT 6 #040 [SET .S
7^M^ ...TD6A
7^P= ... SLC 0 5 [*200
7^QH ...)
7^RS ...#UNS EDCHAR
7^T5 ...#SKI
7^WL TD6 SLC 0 2 [SHIFT TO *200
82B= TD7 BPZ 0 TD10 [J NOT NUMBER SECOND TIME
82TW SLC 0 7 [SHIFT TO *1
83*G BNG 0 TD12 [J IF #
83T6 TD8 BNZ 4 TD9 [J IF WILL CHANGE
83XP ...#UNS EDCHAR
842# ...(
844X ... SLC 0 11 [*20000
847G ... BNG 0 TD8A [J IF #(2ND)
84=5 ...)
84#Q ADX 5 IEL4(2) [CONVERT TO ABSOLUTE
84C* ...#UNS EDCHAR
84FY ...(
84JH ...TD8A
84M6 ... SRC 0 11 [*1
84PP ...)
84SB TD9 BPZ 0 TD11 [J NOT #
85#2 ADX 4 IEL5(2) [CONVERT TO ABSOLUTE
85RL BRN TD11 [SKIP, ALREADY SHIFTED
86?= TD10 SLC 0 7 [SHIFT TO *1
86QW TD11 BNG 0 TD12 [J IF #
87=G SRC 0 3 [SHIFT TO *10
87Q6 BNG 0 TD12-1
889Q ADX 4 IEL5(2) [CONVERT TO ABSOLUTE
88PB SLC 0 3 [SHIFT TO *1
8992 TD12 BPZ 0 TD13 [J NOT #
89NL ADX 4 IENO(2) [ADJUST FOR NEW ORIGIN
8=8= NGX 0 IEL5(2) [ELSE WE HAVE TO
8=MW ADXC 0 4 [CHECK THAT THE
8?7G LDN 0 0 [DESTINATION, IF
8?M6 SRC 0 1 [BEFORE CURRENT POSITION
8#6Q ORX 7 0 [CAUSES REVERSE READ
8#LB TD13 STO 4 1(3) [STORE
8*62 STO 5 3(3) [STORE
8*KL STO 6 4(3) [STORE CH ADDRESS
8B5= STO 7 0(3) [STORE EXECUTION SWITCH
8BJW TIDYE UPPLUS 1 [FINISH IN GOOD ORDER
8C4G #
8CJ6 N3EDITET
8D3Q CALL 6 RLIF
8DHB CALL 6 NCH [GET CHARACTER FOLLOWING O
8F32 CALL 0 NCH3 [GEOERR IF NOT THERE
8FGL CALL 6 MULT [EVALUATE NUMBER
8G2= LDX 7 IEOR(2)
8GFW SBX 7 IEBF(2)
8G^G STO 7 ACOM1(2) [SAVE NEW ORIGIN
8HF6 UPPLUS 1
8HYQ #
8JDB #
8JY2 N4EDITET
8KCL BRKINOFF XITER [CLEAR B-I / J IF DISASTER
8KX= UPPLUS 1
8L5G ...XITER
8L?Q ... TESTBRKIN XITERUP [TO CLEAR BREAKIN BIT ONLY
8LG2 ...XITERUP
8LN= ... UP
8LWG #
8MB6 #
8MTQ N5EDITET
8N*B LDX 7 IEFS(2) [NO OF EDITING FILES
8NT2 SBN 7 1
8P#L LDX 4 IEFT(2) [TYPES OF FILES
8PS= BZE 7 POP2 [J IF LAST FILE IN STACK
8Q?W BNG 4 POP1 [J IF J/S - MUSTNT CLOSE
8QRG LDX 1 IEON(2) [GET OUR FILE IN TOP OF
8R?6 FILEMOVE 1(1),0 [THE GEORGE FILE STACK
8RQQ CALL 6 XCLSE [CLOSE IT
8S=B POP1 SLL 4 1 [SHIFT TO NEW FILE
8SQ2 STO 7 IEFS(2) [STORE NEW VALUES
8T9L STO 4 IEFT(2) [FOR STACK
8TP= UPPLUS 2 [EXIT IN GOOD ORDER
8TXG ...POP2 LDCT 7 #100 [CLEAR INSERT INSTRUCTION BIT IF SET
8W5Q ... ORS 7 IESW(2)
8W#2 ... ERS 7 IESW(2)
8WG= ... BNG 4 POP3 [J IF J/S EXHAUSTED
8WNG EDERR IEYE ["IVE EXHAUSTED YOUR EDITING FL"
8WTN ... LDX 1 IEON(2)
8X2W ... BACKSPACE 1(1) [SET TO READ EOF AGAIN
8X86 UP
8XMQ POP3 LDX 0 CONTEXT(2)
8Y7B ANDN 0 #10
8YM2 BNZ 0 POP4 [J IF MOP
8^6L EDERR IEYJ ["IVE EXHAUSTED YOUR JOB SOURCE"
8^L= BACKSPACE -2
925W ALASHUNT 3,6 [CONSIDERATION FOR
92KG SUBREC 3,6 [COMMAND PROCESSOR
9356 UP
93JQ POP4 EDERR TNFC ["THERE IS NO FILE TO CLOSE"
944B UPPLUS 1
94J2 #
953L #
95H= N8EDITET
962W LDX 7 IEON(2) [NO OF OLD FILES
96GG SBN 7 1
9726 BZE 7 PLP1 [J IF NONE TO CLOSE
97FQ STO 7 IEON(2) [STORE NEW VALUE
97^B FILEMOVE 1,0 [GET THE FILE ON
98F2 CALL 6 XCLSE [TOP AND CLOSE
98YL LDN 6 IEOW(2) [AT THIS POINT WE
99D= LDN 7 IEOR(2) [HAVE TO SHUFFLE
99XW MOVE 6 20 [THE FINGERS DOWN
9=CG LDCT 0 #4
9=X6 ORS 0 IESW(2) [CLEAR EOF BIT
9?BQ ERS 0 IESW(2)
9?WB LDX 6 IEOR(2) [WE ALSO HAVE TO
9#B2 STO 6 IEOY(2) [FIDDLE AROUND A
9#TL STO 6 IEOZ(2) [BIT IN CASE USER
9**= LDX 6 IEOC(2) [TRIES TO F THE
9*SW STO 6 IEOY+1(2) [X INSTRUCTION
9B#G STO 6 IEOZ+1(2)
9BS6 LDX 6 IENR(2)
9C?Q STO 6 IENY(2) [UNFORTUNATELY MOVE
9CRB STO 6 IENZ(2) [CANNOT BE USED
9D?2 LDX 6 IENC(2)
9DQL STO 6 IENY+1(2)
9F== STO 6 IENZ+1(2)
9FPW UPPLUS 1 [EXIT OK
9G9G PLP1 EDERR TNFC ["THERE IS NO FILE TO CLOSE"
9GP6 UP
9H8Q #
9HNB #
9J82 N7EDITET
9JML LDX 5 IEFS(2) [NO OF FILES OPEN
9K7= LDX 4 IEFT(2) [TYPES OF FILES
9KLW BXGE 5 O30(1),UM2 [J IF STACK FULL
9L6G ORN 4 1 [SET B0
9LL6 ADN 5 1 [INCREMENT BY 1 FILE
9M5Q SRC 4 1
9MKB STO 5 IEFS(2) [STORE NEW
9N52 STO 4 IEFT(2) [VALUES
9NJL UM1 UPPLUS 1 [EXIT OK
9P4= UM2 EDERR EFSF ["EDIT FILE STACK FULL"
9PHW BNG 4 UM1 [CARRY ON IF MOP
9Q3G UP
9QH6 #
9R2Q MENDAREA 100,K100EDITET
9RGB #END
^^^^ ...15160445001100000000