10 22FL #LIS K0EDITPT>K0ALLGEO>0 11 22LS ... SEG EDITPT,867,COMM,,G571 4 22S2 ...[ 15 22_8 ...[ (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1982 13 236B ...[ THIS EXCLUDES CODE UNDER #SKI G571 4 23?J ...[ 7 23DQ ...#OPT G571 = 0 6 23KY ...#SKI G571&1 16 23R6 ...# WITH UGUG EDIT M571 (IMPROVED EDIT AMORPHOUS FILE) 4 23YG # 16 24D6 # THIS SEGMENT EXECUTES THE P AND T INSTRUCTIONS 4 24XQ # 17 25CB # ENTRY POINTS - FOR GEORGE MODULARITY 4 25X2 # 9 26BL SEGENTRY K1EDITPT,OH 16 26W= SEGENTRY K2EDITPT,N2EDITPT [E INSTRUCTION 16 27*W SEGENTRY K3EDITPT,N3EDITPT [A INSTRUCTION 16 27TG SEGENTRY K4EDITPT,N4EDITPT [B INSTRUCTION 16 28*6 SEGENTRY K5EDITPT,N5EDITPT [R INSTRUCTION 16 28SQ SEGENTRY K7EDITPT,N7EDITPT [T INSTRUCTION 16 29#B SEGENTRY K8EDITPT,N8EDITPT [P INSTRUCTION 9 29S2 SEGENTRY K9EDITPT,OH 19 2=?L SEGENTRY K10EDITPT,N10EDITPT [READ 1ST RECORD OF OLDFILE 18 2=R= SEGENTRY K11EDITPT,N11EDITPT [PART OF X INSTRUCTION 18 2?34 SEGENTRY K12EDITPT,N12EDITPT [ARE WE ON A TERMINATOR? 4 2?=W # 15 2?QG # THIS SEGMENT READS THE OLDFILE 4 2#=6 # 4 2#PQ # 13 2*9B # RLOF RELOCATES THE OLD FILE BLOCK 4 2*P2 # 16 2B8L RLOF LDX 5 IEOM(2) [GET BLOCK PHOTO 9 2BN= LDX 3 IEOA(2) 16 2C7W TESTMOVE 5,RO1 [J IF STILL THERE 16 2CMG MHUNTW 3,EDIT,FRB [ELSE FIND IT 16 2D76 PHOTO 5 [GET NEW PHOTO 15 2DLQ STO 5 IEOM(2) [AND STORE 16 2F6B STO 3 IEOA(2) [STORE ADDRESS 14 2FL2 RO1 EXIT 6 0 [AND EXIT 4 2G5L # 13 2GK= # RLNF RELOCATES THE NEW FILE BLOCK 4 2H4W # 16 2HJG RLNF LDX 5 IENM(2) [GET BLOCK PHOTO 9 2J46 LDX 3 IENA(2) 16 2JHQ TESTMOVE 5,RN1 [J IF STILL THERE 16 2K3B MHUNTW 3,FILE,FAPB [ELSE FIND IT 16 2KH2 PHOTO 5 [GET NEW PHOTO 15 2L2L STO 5 IENM(2) [AND STORE 16 2LG= STO 3 IENA(2) [STORE ADDRESS 14 2L_W RN1 EXIT 6 0 [AND EXIT 4 2MFG # 14 2M_6 # NER IS ENTERED FOLLOWING A CATASTROPHE 4 2NDQ # 9 2NYB NER ACROSS EDITOR,12 4 2PD2 # 13 2PXL # RDBI IS IF BREAK-IN DURING READ 4 2QC= # 19 2QWW RDBI LDCT 7 #2 [TEST IF BREAK-IN OCCURRED 19 2RBG ANDX 7 IESW(2) [WHILST READING RECORD FOR 18 2RW6 BZE 7 RDB0 [SEGMENT EDIT,J IF NOT 8 2S3# LDCT 7 #002 9 2S8G ERS 7 IESW(2) 17 2S*Q UP [ELSE ABANDON EDIT 9 2STB RDB0 ACROSS EDITOR,8 4 2T*2 # 17 2TSL # WRITE IS THE ROUTINE WHICH WRITES TO THE NEW FILE 4 2W#= # 7 2WRW WRITE SBX 6 1 9 2X?G STO 6 AWORK2(2) 6 2XR6 #SKI JDIAG1 4 2Y=Q ( 8 2YQB LDN 6 #4 9 2_=2 ANDX 6 IESW(2) 16 2_PL BZE 6 NEGG [J IF NOT GEDIT 8 329= CALL 6 RLOF 8 32NW CALL 6 RLNF 9 338G SMO IEOA(2) 8 33N6 LDX 6 A1+3 19 347Q STO 6 A1+3(3) [PASS ACROSS SECOND KEY WORD 4 34MB NEGG 4 3572 ) 18 35LL DOWN EDWRITE,1 [WRITE RECORD TO NEW FILE 16 366= BRN WRQ [J IF FILE FULL 16 36KW BRN RDB0 [J IF BREAK-IN 9 375G LDX 6 AWORK2(2) 7 37K6 ADS 1 6 7 384Q EXIT 6 0 15 38JB WRQ ACROSS EDITOR,9 [ABANDON EDIT 4 3942 # 18 39HL # READ IS THE ROUTINE WHICH GETS THE NEXT RECORD FROM 17 3=3= # THE OLD FILE. WRITTEN SO THAT IF V IS SET ON ENTRY 18 3=GW # THEN READING WILL BE DONE BACKWARDS. THE ROUTINE ALSO 18 3?2G # UPDATES THE RECORD COUNTER(IEOR). AWORK4 AND X3 WILL 9 3?G6 # BE SET AS FOLLOWS: 4 3?_Q # 9 3#FB # 0 READ WAS OK 12 3#_2 # 1 READING OFF END OF FILE 14 3*DL # 2 READING OFF BEGINNING OF FILE 4 3*Y= # 16 3BCW READ SBS 1 6 [RELATIVISE LINK 15 3BXG STO 6 AWORK1(2) [AND STORE 9 3CC6 STOZ IEOC(2) 17 3CWQ LDCT 3 #20 [CLEAR THE 'W LISTED' 14 3DBB ORS 3 IESW(2) [SWITCH 9 3DW2 ERS 3 IESW(2) 18 3F*L STOZ AWORK4(2) [TENTATIVELY MARK AS OK 9 3FT= LDX 3 IEOA(2) 17 3G#W BZE 3 RD41 [J FOR VIRGIN READ 8 3GSG LDCT 7 #4 9 3H#6 ANDX 7 IESW(2) 9 3HRQ LDX 6 IEWT(2) 17 3J?B BZE 7 RD10 [J IF NOT END OF FILE 18 3JR2 BPZ 6 RD70 [J IF EOF AND FORWARDS 16 3K=L RD10 BNG 6 RD80 [J IF BACKWARDS 7 3KQ= LDN 7 1 17 3L9W ADS 7 IEOR(2) [UPDATE RECORD COUNT 21 3LC4 FIXTRA ESP2 [****EDITOR SPECIAL FOR PLESSEY**** 6 3LJ= NULL 18 3LPG HUNTW 3,EDIT,FRB [SEE IF THERE IS AN FRB 16 3M96 BNG 3 RD40 [J TO READ IF NOT 13 3MNQ PHOTO 4 [SNAP 17 3N8B STO 4 IEOM(2) [STORE WHEN AND WHERE 9 3NN2 STO 3 IEOA(2) 17 3P7L LDX 7 ALOGLEN(3) [GET LENGTH OF FRB 7 3PM= STEP 1 17 3Q6W STO 3 AWORK3(2) [SAVE PTR TO RECORD 16 3QLG BZE 3 RD60 [J IF END OF FILE 17 3R66 LDEX 4 0(3) [GET LENGTH OF RECORD 6 3R?# ...#SKI G571&1 18 3RDG ... ADN 4 1 [ + 1 IN CASE AMORPHOUS 17 3RKQ BXGE 7 4,RD20 [J IF FRB BIG ENOUGH 16 3S5B RD15 CALL 6 RLOF [GET FRB POINTER 9 3SK2 LDX 3 IEOA(2) 6 3SQ8 ...#SKI G571&1 4 3SXB ...RD16 17 3T4L ALTLEN 3,4 [ALTER SIZE OF FRB 10 3TJ= MHUNTW 3,EDIT,FRB 16 3W3W STO 3 IEOA(2) [SET NEW ADDRESS 7 3WHG PHOTO 0 16 3X36 STO 0 IEOM(2) [SET NEW PHOTO 18 3XGQ STEPAGAIN 1 [GET FURB POINTER BACK 14 3Y2B STO 3 AWORK3(2) [AND SAVE 8 3YG2 BRN RD30 7 3Y_L RD20 LDX 0 4 17 3_F= SLL 0 1 [2XREQUIRED LENGTH 17 3_YW BXGE 0 7,RD30 [J IF FRB NOT MASSIVE 8 42DG SBN 7 33 17 42Y6 BNG 7 RD30 [NOT WORTH ALTERING 7 43CQ LDX 0 4 17 43XB SBN 0 32 [ELSE ADJUST LENGTH 17 44C2 BPZ 0 RD15 [TO THE GREATER OF 32 18 44WL LDN 4 32 [AND THE REQUIRED LENGTH 8 45B= BRN RD15 17 45TW RD30 CALL 6 RLOF [GET FRB POINTER BACK 9 46*G RD31 LDX 6 IEOA(2) 8 46T6 ADN 6 A1 9 47#Q LDX 5 AWORK3(2) 6 47*J ...#SKI G571&1 4 47BB ...( 20 47C8 ... SBN 4 1 [ RESET LENGTH - NON-AMORPHOUS 9 47D2 ... LDXC 0 IEOT(2) 8 47DS ... IF CC 15 47FL ... THEN [ AMORPHOUS 8 47GD ... SMO 5 19 47H= ... LDX 4 0 [ OLD X4 SOMETIMES TOO BIG 9 47J4 ... LDN 0 #41 8 47JW ... ADN 4 1 17 47KN ... STO 4 A1(3) [ 1 WORD LONGER 20 47LG ... STO 0 A1+1(3) [ SUPPLY A '2ND RED TAPE WORD' 8 47M# ... ADN 6 2 18 47N6 ... SBN 4 2 [ SIZE OF RECORD BODY 8 47NY ... ADN 5 1 9 47PQ ... BZE 4 RD32 5 47QJ ... FI 4 47RB ...) 7 47SB SMO 4 17 48#2 MOVE 5 0 [MOVE DATA INTO FRB 9 48RL LDX 3 IEOA(2) 6 48YS ...#SKI G571&1 4 4962 ...RD32 8 49?= LDEX 6 A1(3) 8 49QW BRN RD50 7 4==G RD40 LDN 7 1 17 4=Q6 ADS 7 IEOR(2) [UPDATE RECORD COUNT 16 4?9Q RD41 READ 1 [READ A RECORD 16 4?PB RD42 MHUNTW 3,FILE,FRB [FIND FILE/FRB 17 4#92 NAME 3,EDIT,FRB [AND RENAME EDIT/FRB 13 4#NL PHOTO 5 [SNAP 17 4*8= STO 5 IEOM(2) [STORE WHEN AND WHERE 9 4*MW STO 3 IEOA(2) 8 4B7G LDEX 6 A1(3) 16 4BM6 BZE 6 RD60 [J IF END OF FILE 6 4BNT ...#SKI G571&1 4 4BQJ ...( 10 4BS? ... LDXC 0 IEOT(2) 21 4BW2 ... BCS RD50 [ EDIT/FRB IS O.K. UNLESS AMORPHOUS 21 4BXP ... LDN 4 1 [ IN WHICH CASE IT NEEDS TO BE 20 4B_D ... ADX 4 6 [ LENGTHENED AND REFORMATTED 9 4C37 ... BRN RD16 4 4C4W ...) 19 4C6Q RD50 LDX 7 A1+1(3) [GET SECOND WORD OF HEADER 16 4CLB ANDX 7 CACT [CLEAR BITS 2-23 18 4D62 SBN 6 3 [ADJUST FOR RECORD HEADER 18 4DKL BNZ 7 RD51 [J IF NOT WORD BOUNDARY 18 4F5= ADN 6 1 [ADJUST FOR WORD BOUNDARY 16 4FJW RD51 SLL 67 2 [CONVERT TO CHARS 6 4G4G #SKI JDIAG1 4 4GJ6 ( 8 4H3Q LDN 4 #4 9 4HHB ANDX 4 IESW(2) 16 4J32 BZE 4 NOTG [J IF NOT GEDIT 19 4JGL SBN 6 8 [DON'T COUNT SPECIAL WORDS 8 4K2= BPZ 6 NOTG 17 4KFW ADN 6 4 [MAYBE A BLANK RECORD 8 4K_G LDX 5 ACES 19 4LF6 STO 5 A1+3(3) [REINSTATE SECOND KEY WORD 7 4LYQ LDN 5 1 20 4MDB ADS 5 A1(3) [INCREMENT RECORD HEADER COUNT 4 4MY2 NOTG 4 4NCL ) 9 4NX= STO 6 IEOH(2) 15 4PBW BNG 6 RD83 [J IF RUBBISH 8 4PWG RD52 LDCT 0 #4 18 4QB6 ORS 0 IESW(2) [CLEAR END OF FILE BIT 9 4QTQ ERS 0 IESW(2) 19 4R*B TESTBRKIN RDBI [TEST B-I FOR OK READ ONLY 6 4RT2 #SKI JDIAG1 4 4S#L ( 16 4SS= BZE 4 NAYG [J IF NOT GEDIT 9 4T?W LDX 4 A1+2(3) 20 4TRG STOZ A1+2(3) [NULL SEQUENCE WORD AS DEFAULT 17 4W?6 STO 4 IESD(2) [SAVE SEQUENCE WORD 4 4WQQ NAYG 4 4X=B ) 18 4XQ2 LDX 3 AWORK4(2) [LOAD OUTPUT INDICATOR 4 4Y9L RDX 14 4YP= LDX 6 AWORK1(2) [GET LINK 7 4_8W ADX 6 1 13 4_NG EXIT 6 0 [EXIT 8 5286 RD60 LDCT 4 #4 15 52MQ ORS 4 IESW(2) [SET EOF BIT 9 537B STOZ IEOH(2) 8 53M2 BRN RDX 7 546L RD70 LDN 3 1 16 54L= STO 3 AWORK4(2) [SET EOF ANSWER 8 555W BRN RDX 9 55KG RD80 LDX 7 IEOR(2) 17 5656 BNZ 7 RD81 [J IF NOT ON RECORD 0 7 56JQ LDN 3 2 16 574B STO 3 AWORK4(2) [SET BOF ANSWER 8 57J2 BRN RDX 10 583L RD81 HUNTW 3,EDIT,FRB 8 58H= BNG 3 RD82 15 592W FREECORE 3 [FREE ANY FRB 15 59GG RD82 READBACK 1 [BSP+BSP+READ 7 5=26 LDN 7 1 17 5=FQ SBS 7 IEOR(2) [UPDATE RECORD COUNT 21 5=LY FIXTRA ESP3 [****EDITOR SPECIAL FOR PLESSEY**** 6 5=S6 NULL 8 5=_B BRN RD42 9 5?F2 RD83 STOZ IEOH(2) 8 5?YL BRN RD52 4 5#D= # 17 5#XW # SIZE IS THE ROUTINE WHICH CHECKS IF THE FILE/FAPB 18 5*CG # IS BIG ENOUGH. IT SHOULD BE CALLED WITH X4 = REQUIRED 17 5*X6 # VALUE OF IENC. THE ROUTINE WILL ADJUST THE FAPB 9 5BBQ # SIZE IF REQUIRED 4 5BWB # 7 5CB2 SIZE SBS 1 0 18 5CTL STO 0 AWORK1(2) [STORE RELATIVISED LINK 16 5D*= CALL 6 RLNF [RELOCATE BLOCK 15 5DSW LDX 3 IENA(2) [GET ADDRESS 16 5F#G LDX 5 ALOGLEN(3) [LENGTH OF BLOCK 7 5FS6 LDX 6 4 8 5G?Q ADN 6 20 16 5GRB SRL 6 2 [LENGTH REQUIRED 18 5H?2 BXGE 5 6,SIZE1 [J IF BLOCK BIG ENOUGH 16 5HQL SIZE0 ALTLEN 3,6 [STRETCH BLOCK 15 5J== MHUNTW 3,FILE,FAPB [FIND BLOCK 16 5JPW STO 3 IENA(2) [STORE ADDRESS 16 5K9G PHOTO 5 [GET NEW PHOTO 15 5KP6 STO 5 IENM(2) [AND STORE 14 5L8Q SIZEX LDX 0 AWORK1(2) [GET LINK 7 5LNB ADX 0 1 14 5M82 EXIT 0 0 [AND EXIT 7 5MML SIZE1 SLL 6 1 18 5N7= BXGE 6 5,SIZEX [J IF FAPB NOT MASSIVE 7 5NLW SRL 6 1 8 5P6G SBN 5 33 17 5PL6 BNG 5 SIZEX [NOT WORTH ALTERING 7 5Q5Q LDX 0 6 18 5QKB SBN 0 32 [ELSE ADJUST LENGTH TO 18 5R52 BPZ 0 SIZE0 [THE GREATER OF 32 AND 17 5RJL LDN 6 32 [THE REQUIRED LENGTH 8 5S4= BRN SIZE0 4 5SHW # 10 5T3G # CHARACTER MOVE ROUTINE 4 5TH6 # 8 5W2Q MVCH BZE 3 MVC1 8 5WGB MVCH 6 0(3) 7 5X22 SBN 3 1 7 5XFL SRL 3 9 7 5X_= SLL 3 9 8 5YDW BRN MVCH 7 5YYG MVC1 EXIT 0 0 4 5_D6 # 13 5_XQ # MOVE COPIES THE FRB TO THE FAPB 4 62CB # 7 62X2 MOVE SBS 1 0 15 63BL STO 0 AWORK4(2) [SAVE LINK 9 63W= LDX 4 IEOH(2) 19 64*W STO 4 IENC(2) [SET N/F CHARACTER POINTER 17 64TG CALL 0 SIZE [CHECK SIZE OF FAPB 16 65*6 CALL 6 RLOF [RELOCATE BLOCKS 8 65SQ CALL 6 RLNF 9 66#B LDX 3 IEOA(2) 6 66S2 #SKI JDIAG1 4 67?L ( 8 67R= LDN 0 #4 9 68=W ANDX 0 IESW(2) 16 68QG BZE 0 NONG [J IF NOT GEDIT 9 69=6 LDX 0 IEON(2) 7 69PQ SBN 0 1 17 69WY BZE 0 NOM [J IF NOT MERGEFILE 8 6=46 LDN 0 #20 9 6=9# ANDX 0 IESW(2) 17 6=BG BZE 0 NONG [NOT 'D' MODE GEDIT 8 6=HN LDCT 0 #400 17 6=NW ORS 0 A1+3(3) [SET SECOND KEY WORD 8 6=W4 BRN NONG 9 6?3= NOM LDX 0 IESD(2) 18 6?8L STO 0 A1+2(3) [RESTORE SEQUENCE WORD 4 6?N= NONG 4 6#7W ) 16 6#MG LDX 7 IENA(2) [SET UP ROINTERS 8 6*76 LDN 6 A1(3) 8 6*LQ ADN 7 A1 18 6B6B LDEX 3 A1(3) [LENGTH OF BLOCK (WORKS) 15 6BL2 MOVE 6 0(3) [MOVE DATA 14 6C5L LDX 0 AWORK4(2) [GET LINK 7 6CK= ADS 1 0 13 6D4W EXIT 0 0 [EXIT 4 6DJG # 17 6F46 # RROR COPIES THE REMAINDER OF A RECORD TO THE FAPB 4 6FHQ # 8 6G3B RROR LDCT 7 #200 9 6GH2 ANDX 7 IEWT(2) 18 6H2L BZE 7 RREX [EXIT IF P INSTRUCTION 7 6HG= SBS 1 6 9 6H_W STO 6 AWORK4(2) 9 6JFG LDX 4 IEOH(2) 9 6J_6 SBX 4 IEOC(2) 18 6K6# BPZ 4 RR15 [J IF NOT OFF END OF LINE 16 6K?G LDX 4 IEOH(2) [RESET TO END OF LINE 9 6KDN STO 4 IEOC(2) 7 6KKW LDN 4 0 4 6KR4 RR15 9 6KYB ADX 4 IENC(2) 18 6LD2 STO 4 AWORK3(2) [SAVE DESTINATION POINT 16 6LXL BXL 4 IENH(2),RR10 [J IF LENGTH OK 15 6MC= LDX 4 IENH(2) [ELSE ADJUST 17 6MWW RR10 CALL 0 SIZE [CHECK SIZE OF FAPB 9 6NBG SBX 4 IENC(2) 8 6NW6 CALL 6 RLOF 16 6P*Q CALL 6 RLNF [RELOCATE BLOCKS 19 6PTB LDX 3 4 [NO OF CHARS TO TRANSCRIBE 9 6Q*2 LDX 6 IEOC(2) 9 6QSL LDX 7 IENC(2) 19 6R#= ADS 3 IEOC(2) [UPDATE CHARACTER POINTERS 9 6RRW ADS 3 IENC(2) 7 6S?G SRC 6 2 7 6SR6 SRC 7 2 2 6T=Q 19 6TQB BNZ 7 RR20 [J IF RED TAPE NOT REQUIRED 7 6W=2 #SKI JDIAG1<1$1 4 6WPL ( 7 6X9= ADN 3 8 7 6XNW NGN 6 2 7 6Y8G NGN 7 2 8 6YN6 RR20 ADN 6 A1+2 8 6_7Q ADN 7 A1+2 4 6_MB ) 6 7272 #SKI JDIAG1 4 72LL ( 9 736= LDX 0 IEOG(2) 8 73KW SBN 0 A1 7 745G SLL 0 2 8 754Q LDN 4 #4 9 75JB ANDX 4 IESW(2) 16 7642 BZE 4 NOG [J IF NOT GEDIT 9 76HL LDX 4 IEON(2) 7 773= SBN 4 1 17 777Y BZE 4 NAYM [J IF NOT MERGEFILE 8 77#L LDN 4 #20 9 77F# ANDX 4 IESW(2) 18 77L2 BZE 4 NOG [J IF NOT 'D' MODE GEDIT 8 77QN LDCT 4 #400 9 77XB SMO IEOA(2) 17 7844 ORS 4 A1+3 [SET SECOND KEY WORD 8 788Q BRN NOG 9 78*D NAYM LDX 4 IESD(2) 9 78G6 SMO IEOA(2) 18 78_Q STO 4 A1+2 [RESTORE SEQUENCE WORD 4 79?G NOG 17 79K= LDX 4 IEOA(2) [OLD FILE BLOCK ADDR 17 79X2 LDX 5 IENA(2) [NEW FILE BLOCK ADDR 16 7=8Q ADN 4 A1 [AND INCREMENT TO 14 7=GG ADN 5 A1 [RED TAPE 17 7=S= SMO 0 [LENGTH OF RED TAPE 19 7?62 MVCH 4 0 [COPY OVER FROM OLD TO NEW 9 7?CW RR20 ADX 6 IEOG(2) 9 7?XG ADX 7 IENG(2) 4 7#C6 ) 18 7#WQ ADX 6 IEOA(2) [GET ABSOLUTE ADDRESSES 9 7*BB ADX 7 IENA(2) 8 7*W2 CALL 0 MVCH 9 7B*L LDX 7 IENC(2) 19 7BT= BXE 7 AWORK3(2),RR30 [J IF RECORD NOT TRUNCATED 8 7C#W EDCOM YRTL 16 7CSG RR30 CALL 6 WRITE [WRITE BLOCK AWAY 14 7D#6 LDX 6 AWORK4(2) [GET LINK 7 7DRQ ADS 1 6 13 7F?B RREX EXIT 6 0 [EXIT 4 7FR2 # 4 7G=L # 15 7GQ= # TARGREC CHECKS IF WE ARE ON THE CORRECT 10 7H9W # EXIT CALL+1 = YES 10 7HPG # CALL+2 = NO 4 7J96 # 5 7JNQ TARGREC 7 7K8B SBS 1 6 15 7KN2 STO 6 AWORK1(2) [SAVE LINK 9 7L7L LDX 3 IEWT(2) 7 7LM= SLL 3 2 15 7M6W SRL 3 2 [CLEAR B0,B1 16 7MLG BZE 3 TREC3 [J IF END OF FILE 7 7N66 SBN 3 1 15 7NKQ BZE 3 TREC4 [J IF CONTEXT 16 7P5B LDX 7 IEOR(2) [ELSE RECORD NO 16 7PK2 SBX 7 IEWT+1(2) [CHECK IF THERE 14 7Q4L BNZ 7 TREC2 [J IF NOT 15 7QJ= TREC1 LDX 6 AWORK1(2) [FOUND EXIT 7 7R3W ADS 1 6 7 7RHG EXIT 6 0 16 7S36 TREC2 LDX 6 AWORK1(2) [NOT FOUND EXIT 7 7SGQ ADS 1 6 7 7T2B EXIT 6 1 16 7TG2 TREC3 LDX 7 AWORK4(2) [GET READ OUTPUT 15 7T_L SBN 7 1 [INDICATOR 17 7WF= BZE 7 TREC1 [J IF AT END OF FILE 16 7WYW BRN TREC2 [ELSE NOT FOUND 16 7XDG TREC4 LDN 6 IEWT [SET DATA POINTER 17 7XY6 DOWN EDITEX,1 [DO CONTEXT SEARCH 15 7YCQ BRN TREC2 [NOT FOUND 14 7YXB BRN TREC1 [FOUND 4 7_C2 # 4 7_WL # 18 82B= # TERMS CHECKS FOR TERMINATORS, SETTING IESY AND IECC IF 8 82TW # ONE IS FOUND 4 83*G # 17 83T6 TERMS STOZ IESY(2) [INITIALISE INDICATOR 9 84#Q LDXC 3 IESP(2) 17 84SB BCC TERMX [J IF NO TERMINATORS 7 85#2 SBS 1 6 15 85RL STO 6 AWORK1(2) [SAVE LINK 17 86?= STOZ ACOM1(2) [FUTURE VALUE OF IECC 9 86QW LDX 6 IEWT(2) 16 87=G BNG 6 TM1 [J IF BACKWARDS 9 87Q6 LDX 7 IEOH(2) 18 889Q STO 7 ACOM1(2) [ELSE RESET FOR FORWARDS 17 88PB TM1 STOZ ACOM2(2) [FUTURE VALUE OF IESY 8 8992 BRN TM3 17 89NL TM2 LDX 3 ACOM3(2) [GET STACK POINTER 6 89RQ #UNS EDLOOP 17 89WW TM3 SBN 3 9 [PTR TO NEXT ENTRY 6 8=22 #UNS EDLOOP 4 8=56 #SKI 17 8=8= TM3 SBN 3 7 [PTR TO NEXT ENTRY 14 8=MW BNG 3 TM20 [J IF END 15 8?7G STO 3 ACOM3(2) [ELSE SAVE 7 8?M6 ADX 3 2 17 8#6Q LDXC 7 IESTACK(3) [IS THIS A CONDITION 14 8#LB BCC TM2 [J IF NOT 19 8#N_ LDXC 7 IESTACK+2(3) [**TYPE FOR FAN OUT AT TM5 16 8#RJ BCS / [**CLEAR C IF SET 16 8#W7 LDX 6 IEWT(2) [**AND NOW SEE 16 8#YQ SBN 6 #7777 [*****COMMENTS 17 8*3* BZE 6 TM5 [*************AT K12 9 8*62 LDX 6 IEWT(2) 16 8*KL BNG 6 TM4 [J IF BACKWARDS 20 8B5= LDXC 7 IESTACK+2(3) [SEE IF TERMINATOR IS FORWARDS 14 8BJW BCS TM2 [J IF NOT 8 8C4G BRN TM5 20 8CJ6 TM4 LDXC 7 IESTACK+2(3) [SEE IF TERMINATOR IS BACKWARDS 14 8D3Q BCC TM2 [J IF NOT 16 8DHB TM5 ADX 7 1 [FANOUT ON TYPE 16 8F32 EXIT 7 / [OF TERMINATOR 15 8FGL BRN TMEND [J FOR END 16 8G2= BRN TMTXT [J FOR CONTEXT 16 8GFW LDX 7 IESTACK+3(3) [ELSE RECORD NO 18 8G_G SBX 7 IEOR(2) [CHECK IF REQUIRED RECORD 14 8HF6 BNZ 7 TM2 [J IF NOT 8 8HYQ BRN TM10 15 8JDB TMEND LDCT 7 #4 [END OF FILE 9 8JY2 ANDX 7 IESW(2) 16 8KCL BZE 7 TM2 [J IF NOT THERE 8 8KX= BRN TM10 17 8LBW TMTXT LDN 6 IESTACK+2(3) [SET DATA POINTER 7 8LWG SBX 6 2 17 8MB6 DOWN EDITEX,1 [CONTEXT - DO CHECK 8 8MTQ BRN TM2 9 8N*B TM10 LDX 3 ACOM3(2) 7 8NT2 ADX 3 2 10 8P#L LDX 0 IESTACK+6(3) 18 8PS= BZE 0 TM11 [J IF SEARCH BY NUMBER 10 8Q?W LDN 6 IESTACK+2(3) 7 8QRG SBX 6 2 17 8R?6 DOWN EDITEX,2 [DO CONTEXT SEARCH 9 8RQQ TM11 LDX 3 ACOM3(2) 7 8S=B ADX 3 2 15 8SQ2 LDX 0 IESTACK+5(3) [GET CHAR NO 16 8T9L BPZ 0 TM12 [J IF REASONABLE 15 8TP= LDN 0 0 [ELSE ADJUST 10 8W8W TM12 BXL 0 IEOH(2),TM13 9 8WNG LDX 0 IEOH(2) 9 8X86 TM13 LDX 6 IEWT(2) 16 8XMQ BNG 6 TM14 [J IF BACKWARDS 17 8Y7B BXL 0 ACOM1(2),TM15 [J IF THIS TERMINATOR 18 8YM2 BXE 0 ACOM1(2),TM15 [OVERRIDES PREVIOUS ONES 8 8_6L BRN TM2 15 8_L= TM14 BXL 0 ACOM1(2),TM2 [DISREGARD 19 925W TM15 STO 0 ACOM1(2) [THIS TERMINATOR OVERRIDES 17 92KG LDCT 7 #400 [ANY PREVIOUS ONES SO 17 9356 ORX 7 ACOM3(2) [ADJUST THE DETAILS 9 93JQ STO 7 ACOM2(2) 8 944B BRN TM2 16 94J2 TM20 LDX 7 ACOM2(2) [FINISHED SO SET 15 953L STO 7 IESY(2) [IESY,IECC 9 95H= LDX 7 ACOM1(2) 9 962W STO 7 IECC(2) 6 963G #UNS EDLOOP 4 9646 ( 20 964Q LDXC 3 IESY(2) [J IF TERMINATOR DOES NOT STOP 16 965B BCC TM22 [ON THIS RECORD 21 9662 LDX 7 IECC(2) [J IF CURRENT CHARACTER NOT STOPPING 15 966L BXU 7 IEOC(2),TM22 [CHARACTER 20 967= LDXC 7 IESP(2) [POINTER TO NEXT FREE STACK ENTRY 9 967W ANDX 7 BITS22LS 9 968G ANDX 3 BITS22LS 9 9696 STO 3 ACOM3(2) 18 969Q BXE 7 ACOM3(2),TM22 [SHOULD NOT BE POSSIBLE 9 96=B LDX 6 BITS22LS 9 96?2 TM21 LDX 3 ACOM3(2) 7 96?L ADS 2 3 20 96#= STO 6 IESTACK+7(3) [RE-INITIALISE TWO EXTRA WORDS IN 20 96#W STOZ IESTACK+8(3) [STACK ENTRY FOR THIS TERMINATOR 21 96*G LDN 3 9 [& ANY NESTED TERMINATORS UP TO IESP 9 96B6 ADS 3 ACOM3(2) 10 96BQ BXU 7 ACOM3(2),TM21 14 96CB TM22 LDX 6 AWORK1(2) [GET LINK 4 96D2 ) 6 96DL #UNS EDLOOP 4 96F= #SKI 14 96GG LDX 6 AWORK1(2) [GET LINK 7 9726 ADS 1 6 13 97FQ TERMX EXIT 6 0 [EXIT 4 97_B #PAG 4 98F2 # 16 98YL # THE FOLLOWING ROUTINES ACTUALLY DO THE EDITING 4 99D= # 12 99XW # FIRST THE TRANSCRIBE ROUTINE 4 9=CG # 5 9=X6 N7EDITPT 4 9?BQ # 17 9?WB LDCT 0 #200 [SET A BIT TO SAY WE 16 9#B2 ORS 0 IEWT(2) [ARE TRANSCRIBING 9 9#TL LDX 7 IEWT(2) 17 9**= BPZ 7 N8EDITPT [CONTINUE IF FORWARDS 19 9*SW EDERR BTNA [CANT TRANSCRIBE BACKWARDS 8 9B#G BRN NER 4 9BS6 # 12 9C?Q # NOW THE POSITION/TRANSCRIBE 4 9CRB # 5 9D?2 N8EDITPT 4 9DQL # 17 9F2D BVCR / [ENSURE V IS CLEAR 18 9F== LDXC 7 IESP(2) [SEE IF ANY TERMINATORS 18 9FPW BCS PTSLOW [J TO SLOW METHOD IF SO 8 9G9G LDCT 0 #200 17 9GP6 ADN 0 1 [USE THE FAST METHOD 15 9H8Q ANDX 0 IEWT(2) [IF PE OR PN 8 9HNB BZE 0 PFAST 5 9J82 PTSLOW 18 9JML STOZ AWORK4(2) [DON'T TRIGGER EOF YET 19 9K7= CALL 6 TERMS [CHECK IF TERMINATOR STOPS 17 9KLW LDXC 7 IESY(2) [US ON THIS RECORD 14 9L6G BCC PTS10 [J IF NOT 18 9LL6 CALL 6 TARGREC [SEE IF ON TARGET RECORD 14 9M5Q BRN PTS80 [J IF SO 20 9MKB LDX 3 IECC(2) [ELSE SET TARGET CHAR TO WHERE 17 9N52 BRN PTS81 [TERMINATOR STOPS US 17 9NJL PTS10 STOZ AWORK4(2) [DONT TRIGGER EOF YET 18 9P4= CALL 6 TARGREC [SEE IF ON TARGET RECORD 14 9PHW BRN PTS80 [J IF SO 8 9Q3G LDCT 7 #4 9 9QH6 ANDX 7 IESW(2) 16 9R2Q BZE 7 PTS20 [J IF NOT AT EOF 9 9RGB LDXC 7 IEWT(2) 16 9S22 BCC PTS30 [J IF FORWARDS 18 9SFL PTS20 CALL 6 RROR [WRITE RESIDUE OF RECORD 5 9S_= PTS30 16 9TDW CALL 6 READ [READ NEXT RECORD 17 9TYG CALL 6 TERMS [CHECK TERMINATORS 9 9WD6 LDXC 7 IESY(2) 17 9WXQ BCC PTS40 [J IF NOT FOUND ONE 18 9XCB CALL 6 TARGREC [SEE IF ON TARGET RECORD 14 9XX2 BRN PTS80 [J IF SO 17 9YBL LDX 3 IECC(2) [ADJUST TARGET RECORD 8 9YW= BRN PTS81 18 9_*W PTS40 CALL 6 TARGREC [SEE IF ON TARGET RECORD 14 9_TG BRN PTS80 [J IF SO 9 =2*6 LDX 7 AWORK4(2) 16 =2SQ BZE 7 PTS60 [J IF READ WAS OK 7 =3#B SBN 7 1 16 =3S2 BNZ 7 PTS50 [J IF NOT OFF END 18 =4?L PTS45 EDERR YROE [YOUVE RUN OFF THE END 8 =4R= BRN NER 7 =5=W PTS55 LDN 7 1 17 =5QG STO 7 AWORK4(2) [MARK AS END OF FILE 18 =6=6 CALL 6 TERMS [CHECK FOR E TERMINATOR 9 =6PQ LDXC 7 IESY(2) 15 =79B BCC PTS45 [J IF NOT ONE 20 =7P2 LDX 3 IECC(2) [OTHERWISE PICK UP STOPPING CHAR 16 =88L BRN PTS8A [J RECORD FOUND 19 =8N= PTS50 EDERR YROB [YOUVE RUN OFF THE BEGINNING 8 =97W BRN NER 8 =9MG PTS60 LDCT 7 #4 9 ==76 ANDX 7 IESW(2) 16 ==LQ BZE 7 PTS70 [J IF NOT AT EOF 9 =?6B LDXC 7 IEWT(2) 16 =?L2 BCC PTS30 [J IF FORWARDS 8 =#5L PTS70 LDCT 6 #200 9 =#K= ANDX 6 IEWT(2) 14 =*4W BZE 6 PTS30 [J IF P 17 =*JG CALL 0 MOVE [MOVE DATA TO FAPB 8 =B46 CALL 6 WRITE 8 =BHQ BRN PTS30 9 =C3B PFAST LDXC 0 IEWT(2) 21 =C5_ FIXTRA ESP4 [****EDITOR SPECIAL FOR PLESSEY**** 8 =C8J BRN SP4 16 =C?7 BCS / [CLEAR 'C' IF SET 9 =C*Q LDX 5 IEOR(2) 4 =CD* SP4 15 =CH2 BNZ 0 PFS10 [J IF NUMBER 8 =D2L LDCT 7 #4 9 =DG= ANDX 7 IESW(2) 15 =D_W BNZ 7 PTS94 [J IF AT EOF 14 =FFG LDN 3 4095 [A BIG NO 13 =F_6 PFS0 VSKIP 1,0(3) [SKIP 16 =GDQ TESTREP2 ENDFILE,PFS1 [J IF HIT EOF 8 =GYB LDN 3 4095 16 =HD2 ADS 3 IEOR(2) [ELSE UPDATE IEOR 8 =HXL BRN PFS0 8 =JC= PFS1 LDN 4 4095 7 =JWW SBX 4 3 15 =KBG ADS 4 IEOR(2) [UPDATE IEOR 21 =KF5 FIXTRA ESP5 [****EDITOR SPECIAL FOR PLESSEY**** 8 =KHN BRN SP5 9 =KL? SBX 5 IEOR(2) 9 =KNW SBS 5 IEOS(2) 4 =KRF SP5 9 =KW6 STOZ IEOC(2) 20 =L*Q STOZ IEOH(2) [CLEAR CURRENT CHAR. COUNT (OF) 8 =LTB LDCT 7 #4 15 =M*2 ORS 7 IESW(2) [SET EOF BIT 8 =MSL BRN PTS94 9 =N#= PFS10 LDXC 0 IEWT(2) 16 =NRW BCS PFS20 [J IF BACKWARDS 8 =P?G LDCT 7 #4 9 =PR6 ANDX 7 IESW(2) 16 =Q=Q BZE 7 PFS11 [J IF NOT AT EOF 9 =QQB LDX 6 IEWT+1(2) 18 =R=2 SBX 6 IEOR(2) [SEE IF ON TARGET RECORD 15 =RPL BNZ 6 PTS45 [YROF IF NOT 16 =S9= BRN PTS80 [ELSE CARRY ON 9 =SNW PFS11 LDX 4 IEWT+1(2) 9 =T8G SBX 4 IEOR(2) 17 =TN6 BZE 4 PTS80 [J IF ALREADY THERE 7 =W7Q SBN 4 1 8 =WMB BZE 4 PFS12 19 =X72 LDX 6 4 [X6=NO. RECORDS STILL LEFT 8 =XLL PFSL LDN 3 4095 7 =Y6= SBX 6 3 15 =YKW BPZ 6 PFSV [J IF > 4095 7 =_5G ADX 3 6 19 =_K6 LDN 6 0 [NONE LEFT AFTER NEXT SKIP 16 ?24Q PFSV VSKIP 1,0(3) [SKIP GIVEN NO. 17 ?2JB TESTRPN2 ENDFILE,PSF12 [J IF NOT HIT EOF 18 ?342 SBX 4 3 [E0F SO - WHAT VSKIP LEFT 17 ?3HL PSF11 SBX 4 6 [- NO. LEFT UNDONE 9 ?43= ADS 4 IEOR(2) 21 ?48D FIXTRA ESP6 [****EDITOR SPECIAL FOR PLESSEY**** 6 ?4*L NULL 9 ?4GW STOZ IEOC(2) 20 ?52G STOZ IEOH(2) [CLEAR CURRENT CHAR. COUNT (OF) 15 ?5G6 LDCT 7 #4 [SET EOF BIT 9 ?5_Q ORS 7 IESW(2) 13 ?6FB BRN PTS45 [YROF 8 ?6_2 PSF12 BZE 3 PSF11 17 ?7DL BNZ 6 PFSL [J IF MORE TO SKIP 9 ?7Y= PFS12 ADS 4 IEOR(2) 21 ?85D FIXTRA ESP7 [****EDITOR SPECIAL FOR PLESSEY**** 6 ?8=L NULL 17 ?8CW CALL 6 READ [READ REQUIRED RECORD 9 ?8XG LDX 7 IEOR(2) 9 ?9C6 SBX 7 IEWT+1(2) 8 ?9WQ BZE 7 PTS80 9 ?=BB OH GEOERR 1,EDITPT 9 ?=W2 PFS20 LDX 7 IEOR(2) 18 ??*L SBX 7 IEWT+1(2) [NO OF RECORDS TO GO BACK 17 ??T= BZE 7 PTS80 [J IF ALREADY THERE 8 ?##W LDCT 6 #4 16 ?#SG ORS 6 IESW(2) [CLEAR EOF BIT 9 ?*#6 ERS 6 IESW(2) 18 ?*RQ LDN 6 20 [USE DMB'S ALGORITHM TO 19 ?B?B MPY 7 6 [DETERMINE MOST ECONOMICAL 17 ?BR2 BNZ 7 PREW [METHOD - REWIND IF 15 ?C=L NGX 0 0 [Y<20(X-Y) 15 ?CQ= ADX 0 IEWT+1(2) [X = CURRENT 16 ?D9W BNG 0 PREW [Y = DESTINATION 16 ?DPG PBSP NGX 6 IEWT+1(2) [ALSO REWIND IF 15 ?F96 BPZ 6 PREW [Y<0 OR Y=0 9 ?FNQ LDX 7 IEOR(2) 13 ?G8B ADX 7 6 [X-Y 18 ?GN2 SBN 7 1 [NO OF BACKSPACES TO DO 15 ?H7L BZE 7 PBSP2 [J IF NONE 16 ?HM= SBS 7 IEOR(2) [UPDATE RECORD NO 21 ?HSD FIXTRA ESP8 [****EDITOR SPECIAL FOR PLESSEY**** 6 ?H_L NULL 16 ?J6W PBSP1 BACKSPACE 1 [DO LOOP OF BSP 8 ?JLG BCT 7 PBSP1 16 ?K66 PBSP2 CALL 6 READ [READ BACKWARDS 8 ?KKQ BRN PTS80 16 ?L5B PREW NGN 7 1 [SET REC NO = -1 9 ?LK2 STO 7 IEOR(2) 15 ?M4L REWIND 1 [REWIND FILE 8 ?MJ= LDCT 4 #400 16 ?N3W ERS 4 IEWT(2) [FORCE FORWARDS 9 ?NHG LDX 4 IEWT+1(2) 16 ?P36 BZE 4 PREW2 [NO NEED TO SKIP 17 ?PGQ BPZ 4 PREW1 [J IF NORMAL TO SKIP 19 ?Q2B CALL 6 READ [ELSE ERROR OCCURRED SO READ 18 ?QG2 BRN PTS50 [FIRST RECORD AND COMMENT 8 ?Q_L PREW1 LDN 3 4095 7 ?RF= SBX 4 3 15 ?RYW BPZ 4 PREW0 [J IF > 4095 7 ?SDG ADX 3 4 19 ?SY6 LDN 4 0 [NONE LEFT AFTER NEXT SKIP 9 ?TCQ PREW0 SKIP 1,0(3) 17 ?TXB BNZ 4 PREW1 [LOOP IF MORE TO SKIP 9 ?WC2 LDX 7 IEWT+1(2) 16 ?WWL ADS 7 IEOR(2) [UPDATE RECORD NO 21 ?X3S FIXTRA ESP9 [****EDITOR SPECIAL FOR PLESSEY**** 6 ?X92 NULL 17 ?XB= PREW2 CALL 6 READ [READ REQUIRED RECORD 9 ?XTW PTS80 LDX 0 IEWT+4(2) 18 ?Y*G BZE 0 PTS82 [J IF SEARCH BY NUMBER 8 ?YT6 LDCT 7 #4 15 ?_#Q ANDX 7 IESW(2) [CHECK IF EOF 15 ?_SB BZE 7 PST80 [OK IF NOT 9 #2#2 LDXC 7 IEWT(2) 17 #2RL BCS PST84 [CHNF IF BACKWARDS 18 #3?= BRN PTS55 [POSSIBLY YROE FORWARDS 17 #3QW PST80 LDN 6 IEWT [SET DATA POINTER 17 #4=G DOWN EDITEX,2 [DO CONTEXT SEARCH 16 #4Q6 PTS82 LDX 3 IEWT+3(2) [GET CHAR NUMBER 8 #59Q PTS81 LDCT 7 #4 9 #5PB ANDX 7 IESW(2) 15 #692 BZE 7 PTS8A [J IF NOT EOF 18 #6NL BNG 3 PTS8A [J IF TARGET CHAR -VE 17 #78= BNZ 3 PTS55 [TARGET CHAR NOT ZERO 8 #7MW PTS8A LDCT 7 #60 17 #87G ANDX 7 IESW(2) [CHECK FOR W FACILITY 7 #8M6 SLL 7 3 16 #96Q BPZ 7 PTS8B [W NOT BEING USED 7 #9LB SLL 7 1 18 #=62 BNG 7 PTS8B [RECORD ALREADY LISTED 16 #=KL DOWN EDWRITE,10 [LIST THE RECORD 18 #?5= PTS8B LDXC 7 IESY(2) [J IF NO REPETITION STOPS 16 #?JW BCC PTS84 [ON THIS RECORD 9 ##4G LDX 7 IECC(2) 9 ##J6 LDXC 0 IEWT(2) 16 #*3Q BCS PTS83 [J IF BACKWARDS 9 #*HB BXL 3 7,PTS84 18 #B32 LDX 3 7 [ADJUST STOPPING POINT 16 #BGL BRN PTS84 [TO TAKE ACCOUNT 16 #C2= PTS83 BXGE 3 7,PTS84 [OF TERMINATOR 7 #CFW LDX 3 7 18 #C_G PTS84 BPZ 3 PTS85 [J IF CHAR NO REASONABLE 18 #DF6 PST84 EDCOM CHNF [^CHARACTER NOT FOUND^ 18 #DYQ LDN 3 0 [SET TO REASONABLE VALUE 8 #FDB PTS85 LDCT 7 #200 9 #FY2 ANDX 7 IEWT(2) 17 #GCL BZE 7 PTS91 [J IF P INSTRUCTION 18 #GX= STO 3 AWORK3(2) [SAVE DESTINATION POINT 7 #HBW LDX 4 3 19 #HWG SBX 4 IEOC(2) [NO OF CHARS TO TRANSCRIBE 16 #J8X BNG 4 PTS92 [J IF NEGATIVE 20 #JH# BZE 4 PTS92 [J IF NOE (DONT WANT RED TAPE) 18 #JTQ ADX 4 IENC(2) [WHAT IENC WOULD BECOME 16 #K*B BXL 4 IENH(2),PTS86 [J IF LENGTH OK 15 #KT2 LDX 4 IENH(2) [ELSE ADJUST 17 #L#L PTS86 CALL 0 SIZE [CHECK SIZE OF FAPB 19 #LS= SBX 4 IENC(2) [NO OF CHARS TO TRANSCRIBE 18 #M?W STOZ AWORK4(2) [NO OF SPACES REQUIRED 9 #MRG LDX 3 IEOH(2) 19 #N?6 SBX 3 IEOC(2) [NO OF CHARS LEFT IN RECORD 8 #NQQ BPZ 3 PTS87 17 #P=B LDN 3 0 [NEGATIVE MEANS NONE 17 #PQ2 PTS87 BXGE 3 4,PTS88 [SPACES NOT REQUIRED 7 #Q9L SBX 4 3 15 #QP= STO 4 AWORK4(2) [NO OF SPACES 8 #R8W BRN PTS89 19 #RNG PTS88 LDX 3 4 [NO OF CHARS TO TRANSCRIBE 9 #S86 PTS89 STO 3 AWORK1(2) 16 #SMQ CALL 6 RLOF [RELOCATE BLOCKS 8 #T7B CALL 6 RLNF 9 #TM2 LDX 3 AWORK1(2) 9 #W6L LDX 6 IEOC(2) 9 #WL= LDX 7 IENC(2) 17 #X5W ADS 3 IEOC(2) [UPDATE CHAR POINTERS 9 #XKG ADS 3 IENC(2) 7 #Y56 SRC 6 2 7 #YJQ SRC 7 2 2 #_4B 19 #_J2 BNZ 7 PTS90 [J IF RED TAPE NOT REQUIRED 7 *23L #SKI JDIAG1<1$1 4 *2H= ( 15 *32W ADN 3 8 [ELSE ADJUST 7 *3GG NGN 6 2 7 *426 NGN 7 2 8 *4FQ PTS90 ADN 6 A1+2 8 *4_B ADN 7 A1+2 4 *5F2 ) 6 *5YL #SKI JDIAG1 4 *6D= ( 9 *6T3 LDX 0 IEOG(2) 8 *79S SBN 0 A1 7 *7LK SLL 0 2 2 *83B 17 *8D7 LDX 4 IEOA(2) [OLD FILE BLOCK ADDR 17 *8SY LDX 5 IENA(2) [NEW FILE BLOCK ADDR 16 *99P ADN 4 A1 [AND INCREMENT TO 14 *9LG ADN 5 A1 [RED TAPE 17 *=3? SMO 0 [LENGTH OF RED TAPE 19 *=D4 MVCH 4 0 [COPY OVER FROM OLD TO NEW 9 *=SW PTS90 ADX 6 IEOG(2) 9 *?#G ADX 7 IENG(2) 4 *?S6 ) 18 *#?Q ADX 6 IEOA(2) [GET ABSOLUTE ADDRESSES 9 *#RB ADX 7 IENA(2) 14 **?2 CALL 0 MVCH [AT LAST 18 **QL LDX 3 AWORK4(2) [NO OF SPACES REQUIRED 8 *B== BZE 3 PST90 9 *BPW ADS 3 IEOC(2) 16 *C9G ADS 3 IENC(2) [UPDATE POINTERS 8 *CP6 LDN 5 #20 7 *D8Q LDX 6 7 7 *DNB LDX 3 7 15 *F82 DCH 5 0(3) [DUMP A SPACE 7 *FML BCHX 7 / 9 *G7= LDX 3 AWORK4(2) 7 *GLW SBN 3 1 16 *H6G CALL 0 MVCH [MOVE THE SPACES 17 *HL6 PST90 LDX 7 IEOC(2) [SEE IF WE TRUNCATED 14 *J5Q BXE 7 AWORK3(2),PTS92 [J IF NOT 16 *JKB EDCOM YRTL [CHOP CHOP CHOP 8 *K52 BRN NER 14 *KJL PTS91 STO 3 IEOC(2) [SET IEOC 19 *P_= PTS92 LDXC 7 IESY(2) [HAS A TERMINATOR STOPPED US 14 *QDW BCC PTS94 [J IF NOT 20 *QYG LDX 6 IEOC(2) [HAVE WE REACHED STOPPING POINT 14 *RD6 BXU 6 IECC(2),PTS94 [J IF NOT 5 *RMY PTS92A 17 *RXQ BZE 7 PTS93 [J IF STACK NOW CLEAR 8 *SCB LDCT 6 #400 17 *SX2 ORX 7 6 [KEEP B0 OF IESP SET 18 *TBL PTS93 STO 7 IESP(2) [RESET STACK TO PULLED 14 *TW= SMO 7 [UP VALUE 10 *W*W LDX 6 IESTACK+1(2) 17 *WTG STO 6 IEIP(2) [SKIP PAST TERMINATOR 17 *X*6 STOZ IESY(2) [ZEROISE STORAGE WORD 18 *XSQ PTS94 ACROSS EDITOR,3 [WIND TO NEXT INSTRUCTION 4 *Y#B # 4 *YS2 # 17 *_?L # THIS ROUTINE COPIES THE REST OF THE OLD FILE STACK 4 *_R= # 5 B2=W N2EDITPT 8 B2QG LDCT 5 #4 16 B3=6 ANDX 5 IESW(2) [CHECK IF AT EOF 14 B3PQ BZE 5 ZE1 [J IF NOT 19 B49B LDX 5 IENC(2) [TEST IF ANYTHING TO WRITE 14 B4P2 BZE 5 ZE3 [J IF NOT 18 B58L ZE1 STOZ IESP(2) [DONT ALLOW REPETITION 8 B5N= LDCT 4 #400 18 B67W LDCT 0 #600 [SET BIT SAYING WE ARE 15 B6MG ORS 0 IEWT(2) [TRANSCRIBING 17 B776 ERS 4 IEWT(2) [FORCE READ FROWARDS 8 B7LQ CALL 6 RROR 4 B86B ZE2 16 B8L2 CALL 6 READ [READ NEXT RECORD 8 B95L LDCT 7 #4 9 B9K= ANDX 7 IESW(2) 14 B=4W BNZ 7 ZE3 [J IF EOF 8 B=JG CALL 0 MOVE 8 B?46 CALL 6 WRITE 8 B?HQ BRN ZE2 9 B#3B ZE3 LDX 5 IEON(2) 7 B#H2 SBN 5 2 18 B*2L BNG 5 ZE4 [J IF LAST OLDFILE COPIED 9 B*G= DOWN EDITOR,5 18 B*_W DOWN EDITPT,11 [SIMULATE X INSTRUCTION 15 BBFG BRN N2EDITPT [DO NEXT FILE 14 BB_6 ZE4 ACROSS EDITOR,9 [FINISHED 4 BCDQ # 4 BCYB # 13 BDD2 # CODE FOR A,B AND R INSTRUCTIONS 4 BDXL # 7 BFC= TABR SBS 1 6 15 BFWW STO 6 AWORK2(2) [STORE LINK 17 BGBG CALL 6 TERMS [CHECK TERMINATORS 16 BGW6 LDX 1 AWORK2(2) [GET PAIR ADDRESS 14 BH*Q ADX 1 FX1 [DATUMISE 16 BHTB ACROSSVAR 0(1) [J TO INSTRUCTION 4 BJ*2 # 16 BJSL N3EDITPT [A INSTRUCTION 4 BK#= # 8 BKRW CALL 6 TABR 9 BL?G PAIR EDITEX,4 4 BLR6 # 16 BM=Q N4EDITPT [B INSTRUCTION 4 BMQB # 8 BN=2 CALL 6 TABR 9 BNPL PAIR EDITEX,5 4 BP9= # 16 BPNW N5EDITPT [R INSTRUCTION 4 BQ8G # 8 BQN6 CALL 6 TABR 9 BR7Q PAIR EDITEX,7 4 BRMB # 4 BS72 # 20 BSLL N10EDITPT [READ FIRST RECORD OF OLD FILE 15 BT6= LDCT 0 #2 [SET B7 IN 16 BTKW ORS 0 IESW(2) [CASE OF BREAK-IN 16 BW5G STOZ IEWT(2) [FORCE FORWARDS 15 BWK6 CALL 6 READ [READ RECORD 15 BX4Q LDCT 0 #2 [CLEAR MARKER 16 BXJB ORS 0 IESW(2) [FROM SWITCH WORD 9 BY42 ERS 0 IESW(2) 8 BYHL LDCT 7 #4 9 B_3= ANDX 7 IESW(2) 7 B_GW LDN 3 0 16 C22G BZE 7 UP [J IF EOF NOT SET 7 C2G6 LDN 3 1 15 C2_Q UP STO 3 ACOM3(2) [SET ACOM3 7 C3FB UPPLUS 1 4 C3_2 # 4 C4DL # 18 C4Y= N11EDITPT [PART OF X INSTRUCTION 4 C5CW # 20 C5XG HUNTW 3,EDIT,FRB [FIND FRB OF FILE JUST CLOSED 16 C6C6 BNG 3 U1 [J IF NOT THERE 14 C6WQ FREECORE 3 [FREE IT 18 C7BB U1 READAGAIN 1 [REREAD REQUIRED RECORD 8 C7W2 LDN 6 U2 14 C8*L STO 6 AWORK1(2) [SET EXIT 15 C8T= BRN RD42 [INITIALISE 14 C9#W U2 UP [RETURN 4 C9SG # 4 C9T6 # 4 C9TQ # 4 C9WB # 17 C9X2 # THIS ROUTINE IS CALLED TO TEST IF ANY TERMINATOR 17 C9XL # HAS BEEN REACHED BEFORE EXECUTING ANY INSTRUCTION 15 C9Y= # IF WE ARE NOT ON ANY TERMINATOR GO BACK 18 C9YW # OTHERWISE PULL UP STACK AND WIND TO NEXT INSTRUCTION 4 C9_G # 17 C=26 # IEWT IS SET TO #7777 TO SIGNIFY THAT WE MAY STOP 14 C=2Q # ON A FORWARDS OR BACKWARDS TERMINATOR 4 C=3B # 4 C=42 # 6 C=4L N12EDITPT 8 C=5= LDN 7 #7777 14 C=5W STO 7 IEWT(2) [AS ABOVE 21 C=6G CALL 6 TERMS [TEST IF THIS TERMINATOR STOPS US .. 17 C=76 LDXC 7 IESY(2) [ON THIS RECORD .. 19 C=7Q BCC U2 [J TO 'UP' IF NOT THIS RECORD 21 C=8B LDX 6 IECC(2) [IF STOPPING CHAR IS NOT CURRENT .. 17 C=92 BXU 6 IEOC(2),U2 [CHAR THEN J TO 'UP' 10 C=9L TRACE 6,IESTOPCH 16 C=== FREELINK [NOT GOING UP NOW 18 C==W BRN PTS92A [J TO PULL UP STACK ETC 11 C=#6 MENDAREA 1023-0?<150,K100EDITPT 4 C=RQ #END 8 ____ ...67643253000200000000