(George Source)
Macros used: ACROSS, BXU, CLOSE, DOWN, EDERR, FILEMOVE, FNORM, FREECORE, MENDAREA, MHUNT, MHUNTW, NAMETOP, PARFNAME, PHOTO, REPALLER, SEG, SEGENTRY, SETUPCORE, TESTMOVE, TESTREP2, TESTRPN2, USEROPEN, VFREE
22FL #LIS K0EDITMFO>K0ALLGEO>0 22LS ... SEG EDITMFO,867,COMM,,G571 22S2 ...[ 22^8 ...[ (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1982 236B ...[ THIS EXCLUDES CODE UNDER #SKI G571 23?J ...[ 23DQ ...#OPT G571 = 0 23KY ...#SKI G571&1 23R6 ...# WITH UGUG EDIT M571 (IMPROVED EDIT AMORPHOUS FILE) 23YG # 24D6 # ENTRY POINT TABLE 24XQ # 25CB SEGENTRY K1EDITMFO,N1EDITMFO 25X2 SEGENTRY K2EDITMFO,N2EDITMFO 26BL # 26W= TYPE #65202020 27*W #55202020 27TG # 28*6 # THIS SEGMENT PERFORMS MISCELANEOUS FILE OPENING OPERATIONS FOR 28SQ # THE INTEGRAL EDITOR. 29#B # 29S2 # K1EDITMFO OPENS FILES FOR U INSRTUCTION, 2=?L # K2EDITMFO OPENS FILES FOR M INSTRUCTION. 2=R= # 2?=W # EXITS ARE - 2?QG # 2#=6 # K12EDITOR - ERROR IN DIRECTIVE (REPORTED) 2#PQ # K8EDITOR - BREAK-IN DURING USEROPEN (STACK PUSHED DOWN) 2*9B # K3EDITOR - OPEN WAS OK. 2*P2 # 2B8L # 2BN= N1EDITMFO 2C7W # 2CMG LDX 6 IEON(2) 2D76 LDX 7 IEFS(2) 2DLQ ADN 6 1 2F6B STOZ AWORK1(2) [SET UP MARKERS 2FL2 STO 6 AWORK4(2) 2G5L STOZ AWORK2(2) 2GK= SBN 7 #30 2H4W BNG 7 U1 [J IF OK ELSE 2HJG EDERR EFSF ["TOO MANY EDITING FILES" 2J46 ACROSS EDITOR,14 [FINISH 2JHQ # 2K3B N2EDITMFO 2KH2 # 2L2L LDX 7 IEON(2) 2LG= LDN 6 1 2L^W STO 6 AWORK1(2) [SET UP MARKERS 2MFG STO 6 AWORK4(2) 2M^6 STOZ AWORK2(2) 2NDQ SBN 7 #13 2NYB BNG 7 U1 [J IF OK 2PD2 EDERR TMIF ['TOO MANY INPUT FILES' 2PXL ACROSS EDITOR,14 [FINISH 2QC= U1 LDX 5 IEIM(2) [GET PHOTO COUNT 2QWW TESTMOVE 5,U2 [J IF BLOCK STILL THERE 2RBG MHUNTW 3,FILE,FRB [ELSE FIND BLOCK AGAIN 2RW6 PHOTO 5 [GET NEW PHOTO 2S*Q STO 3 IEIA(2) [STORE ADDRESS 2STB STO 5 IEIM(2) [STORE PHOTO 2T*2 U2 LDX 3 IEIP(2) [START ADDRESS OF STRING 2TSL NGN 5 1 [SET CHARACTER COUNT 2W#= LDN 4 0 [SET PARANTHESIS COUNT 2WRW U3 ADN 5 1 [INCREMENT CHARACTER COUNT 2X?G STO 3 0 2XR6 SMO IEIA(2) [MODIFY BY BLOCK ADDRESS 2Y=Q LDCH 7 0(3) [AND LOAD CHARACTER 2YQB BCHX 3 £ [INCREMENT CHARACTER ADDRESS 2^=2 # [PERFORM ARITHMETIC TO DETERMINE 2^PL SLC 0 2 [THE RELATIONSHIP BETWEEN 329= SBX 0 IEIH(2) [THIS CHARACTER AND THE END 32NW BPZ 0 U70 [J IF PAST END 338G SBN 7 #30 [TEST FOR *30 33N6 BNZ 7 U4 [J IF NOT *30 347Q ADN 4 1 [INCREMENT COUNT 34MB BRN U3 [AND CARRY ON 3572 U4 SBN 7 1 [TEST FOR *31 35LL BNZ 7 U5 [J IF NOT *31 366= BZE 4 U7 [J IF NOT *31 MATCHED 36KW SBN 4 1 [DECREMENT COUNT 375G BRN U3 [AND CARRY ON 37K6 U5 SBN 7 1 [TEST FOR *32 384Q BNZ 7 U6 [J IF NOT *32 38JB BZE 4 U7 [J FOR *32 INSIDE PARENTHESES 3942 BRN U3 [ELSE CARRY ON 39HL U6 SBN 7 2 [TEST FOR *34 3=3= BNZ 7 U3 [CARRY ON IF NOT *34 3=GW BNZ 4 U3 [CARRY ON IF *34 INSIDE PARENTHESES 3?2G U7 BNZ 5 U10 [J IF ARGUEMENT NOT NULL 3?G6 # SHOULDN'T EVER GET INTO THIS CODE 3?^Q LDX 5 AWORK1(1) [J IF 'M' INSTRUCTION 3#FB BNZ 5 U21 3#^2 LDN 7 1 [BUT NEVER MIND (NO ARGUEMENT) 3*DL LDX 5 IEFT(2) [GET FILE TYPES 3*Y= ORS 7 5 [SET B0 OF [IEFT] TO 3BCW SRC 5 1 [INDICATE MOP OR J/S 3BXG U8 ADS 7 IEFS(2) [PUSH DOWN STACK 3CC6 STO 5 IEFT(2) [STORE NEW VALUES 3CWQ U9 STOZ IEIP(2) [ABANDON INSTRUCTION BLOCK 3DBB ACROSS EDITOR,1 [FINISH 3DW2 U70 BZE 5 U7 [SOMETHING WRONG 3F*L U10 LDX 4 5 [REMEMBER CHARACTER COUNT 3FT= LDX 6 IEIP(2) [GET STRING START ADDRESS 3G#W SLC 3 2 [BACKSPACE THE 3GSG SBN 3 1 [POINTER 3H#6 SRC 3 2 3HRQ STO 3 IEIP(2) [AND STORE IN IEIP 3J?B ADN 5 #13 [ADJUST FOR HEADERS 3JR2 PHOTO 7 [SNAP 3K=L SRL 5 2 [CONVERT TO WORDS 3KQ= SETUPCORE 5,1,FILE,FNAME [GET BLOCK FOR USEROPEN 3L9W TESTMOVE 7,U11 [J NOT MOVED 3LPG MHUNTW 3,FILE,FRB 3M96 PHOTO 7 [NEW SNAP 3MNQ STO 3 IEIA(2) [STORE ADDRESS 3N8B STO 7 IEIM(2) [AND PHOTO. 3NN2 U11 STO 4 ANUM(1) [STORE NUMBER OF CHARACTERS 3P7L LDN 7 APARA(1) [START ADDRESS IN OUTPUT BLOCK 3PM= ADX 6 IEIA(2) [ADD IN BLOCK MODIFIER 3Q6W LDX 3 4 [NUMBER OF CHARACTERS 3QLG MVCH 6 0(3) [MOVE ACROSS 3R66 LDN 7 1 3RKQ STOZ JPARNUM(1) 3S5B ADS 7 ATYPE(1) [NUMBER ONR 3SK2 STO 1 3 [STORE BLOCK ADDRESS 3T4L PHOTO 6 [PHOTO COUNT 3T94 3T*G PARFNAME 3TFY FNORM 64+3 3TLB TESTREP2 OK,U111,ADJUNCTS,U111 3TQS BRN U20 3TX= U111 3W3W TESTMOVE 6,U17 [J IF NOT MOVED 3WHG MHUNT 3,FILE,FNAME [ELSE FIND BLOCK 3X36 U17 NAMETOP 3,CPB,CUNI [RENAME IT IN CASE OF ERROR 3XGQ USEROPEN U12,READ,NOERREP,LEAVE [AND OPEN FILE 3Y2B TESTRPN2 OK,U13 [J IF OPEN FAILED 3YG2 MHUNTW 1,FILE,ENT [FIND THE FILE/ENT 3Y^L LDX 7 ETM(1) [BLOCK AND EXTRACT 3^F= STO 7 AWORK2(2) [FILE TYPE AND SSTORE 3^YW FREECORE 1 [BECAUSE IT'S FINISHED WITH 42DG LDX 1 AWORK4(2) [GET REQUIRED POSITION 42Y6 FILEMOVE 0,0(1) [SHUFFLE FILE/FPUSH BLOCK 43CQ CALL 6 VFREE [FREE ALL BLOCKS 43XB LDX 0 AWORK1(2) [FIND OUT WHAT WE ARE DOING 44C2 LDX 7 AWORK2(2) [CHECK FILE TYPE 44WL BNZ 0 U14 [J IF M INSTRUCTION 45B= BPZ 7 UTP [ERROR IF USED FILE AMORPHOUS 45TW SLC 7 8 [IS IT TP? 46*G BNG 7 UTP [ERROR IF SO. 46C9 ...#SKI G571&1$1 46DY ...( 46GN SRC 7 8 46MW BXU 7 IEOT(2),UTP [ERROR IF TYPE DIFFERS FROM OLDFILE 46QG ...) 46T6 LDX 5 IEFT(2) [FILE TYPE WORD 47#Q LDN 7 1 [SHUFFLE THE EDITOR'S FILE 47SB SRL 5 1 [STACK PUTTING A REAL FILE 48#2 BRN U8 [ON THE TOP AND EXIT TO K1EDITOR 48RL U12 CALL 6 VFREE [BREAK-IN; FREE BLOCKS 49?= STOZ IEIP(2) [ABANDON INPUT RECORD 49QW U120 ACROSS EDITOR,8 [FINISH 4==G VFREE SBX 6 1 [RELATIVISE LINK 4=Q6 VFREE CPB,CUNI [FREE WHAT WAS THE FILE/FNAME BLOCK 4?9Q VFREE FILE,FABSNB [FREE ANY FABSNB LIETING AROUND 4?FJ VFREE FILE,ADJUNCTS 4?PB LDX 1 FX1 [RESET X1 4#92 ADS 1 6 [DATUMISE LINK 4#NL EXIT 6 0 [AND EXIT 4*8= U13 LDX 1 AWORK1(2) [ERROR SO GET 4*MW SMO FX1 [TYPE OF INSTRUCTION 4B7G ... LDX 7 TYPE(1) [WE ARE DOING 4BM6 MHUNTW 3,CLB [FIND THE LINE BUFFER BLOCK 4C6Q STO 7 CLBFIR(3) [AND OVERWRITE THE INSTRUCTION 4CLB MHUNT 3,CPB,CUNI [WITH U/M. FIND THE CPB/CUNI 4D62 LDN 7 1 [AND SET THE PARAMETER 4DKL STO 7 JPARNUM(3) [NUMBER TO ONE 4F5= REPALLER 4FJW U18 CALL 6 VFREE [FREE BLOCKS 4G4G ACROSS EDITOR,12 [FINISH 4GJ6 U14 MHUNT 3,EDIT,FRB [GET FRB FROM PREVIOUS FILE 4H3Q BNG 3 U140 4HHB FREECORE 3 [AND FREE IT 4J32 U140 LDX 6 IEOC(2) [SAVE IEOC 4JGL LDCT 5 4 4K2= ORS 5 IESW(2) [CLEAR EOF 4KFW ERS 5 IESW(2) 4K^G STOZ IEOA(2) [FORCE VIRGIN READ 4LF6 DOWN EDITPT,10 [READ FIRST RECORD 4LYQ BRN U15 [J IF BREAK-IN 4MDB LDX 3 ACOM3(2) 4MY2 BZE 3 U80 [J IF READ OK 4NCL EDERR IPMT ["INPUT FILE EMPTY" 4NX= U15 LDX 1 AWORK4(2) 4PBW FILEMOVE 0(1),0 [GET ON TOP 4PWG CLOSE [AND CLOSE 4QB6 LDX 3 IEOA(2) 4QTQ LDX 5 IEOM(2) 4R*B TESTMOVE 5,U141 4RT2 MHUNTW 3,EDIT,FRB [GET RID OF SPURIOUS 4S#L U141 FREECORE 3 [NULL BLOCK 4SS= STO 6 IEOC(2) [RESET IEOC 4T?W DOWN EDITPT,11 [RE-READ REQUIRED RECORD 4TRG LDCT 0 #2 4W?6 ANDX 0 IESW(2) [WAS THIS AFTER BREAK-IN? 4WQQ BNZ 0 U142 [J IF SO 4X=B ACROSS EDITOR,12 4XQ2 U142 ERS 0 IESW(2) [CLEAR B7 4Y9L BRN U120 4Y=P ...#SKI G571&1 4Y?S ...( 4Y#X ...U80 TXU 7 IEOT(2) [ OK IF M MATCHES OLD 4YB2 ... BCC U81 4YC5 ... LDXC 0 IEOT(2) [ OTHERWISE, FAIL 4YD8 ... BCS UMTD [ UNLESS OLD WAS AMORPHOUS 4YF? ... BZE 7 U81 [ AND MERGEFILE AMORPHOUS 4YGB ... ANDX 7 BITS22LS 4YHF ... TXU 0 7 [ OR SAME AS NEWFILE 4YJJ ... BCS UMTD 4YKM ...U81 4YLQ ...) 4YMT ...#SKI G571&1$1 4YP= U80 BXU 7 IEOT(2),UMTD [J IF OLDFILE TYPE DIFFERS 4^8W LDCT 7 #60 4^NG STO 6 IEOC(2) [SAVE IEOC 5286 ANDX 7 IESW(2) [DO W-CHECK 52MQ SLL 7 3 537B BPZ 7 U82 [W NOT BEING USED 53M2 SLL 7 1 546L BNG 7 U82 [W USED BUT ALREADY LISTED 54L= DOWN EDWRITE,10 [SETS UP AND O/PS REC LISTING 555W U82 LDN 7 1 [M INSTRUCTION SO 55KG ADS 7 IEON(2) [INPUT FILE 5656 LDX 5 IEON(2) [TYPE STACK 56JQ SBN 5 1 [DOWN THE POINTERS 574B STO 5 3 [THIS ALLOWS US TO 57J2 SLL 3 1 [REMEMBER WHERE WE 583L ADN 3 IEOR-2(2) [FILE. A MOVE INSTRUCTION 58H= U16 LDX 6 0(3) [CANNOT BE USED HERE 592W LDX 7 1(3) [(WORK IT OUT) 59GG STO 6 2(3) [ONCE THAT IS DONE 5=26 STO 7 3(3) [ALL THAT IS LEFT 5=FQ SBN 3 2 [IS TO CLEAR THE 5=^B BCT 5 U16 [RECORD AND CHARACTER 5?F2 STOZ IEOR(2) [COUNTERS FOR THE FILE WE 5?YL STOZ IEOC(2) [HAVE JUST OPENED. 5#D= STOZ IEOY(2) [CLEAR 'LAST TIME. POINTERS. 5#XW STOZ IEOY+1(2) 5*CG STOZ IEOZ(2) [HAVE TO FIDDLE AROUND A 5*X6 STOZ IEOZ+1(2) [BIT IN CASE USER TRIES 5BBQ STOZ IENO(2) [M SIMULATES O# 5BWB LDX 6 IENR(2) [TO FORGET THE M INSTRUCTION 5CB2 STO 6 IENY(2) 5CTL STO 6 IENZ(2) 5D*= LDX 6 IENC(2) 5DSW STO 6 IENY+1(2) 5F#G STO 6 IENZ+1(2) 5FS6 ACROSS EDITOR,3 5G?Q U20 TESTRPN2 NOFILE,U21 5GRB MHUNT 3,FILE,FNAME [NON-EXISTANT WORKFILE 5H?2 NAMETOP 3,CPB,CUNI 5HQL BRN U13 5J== U21 DOWN EDITER,3 5JPW VFREE FILE,FNAME [FREE 5K9G VFREE FILE,FABSNB [BLOCKS 5KP6 ACROSS EDITOR,14 [AND FINISH 5L8Q UTP EDERR TPEF [TP-LIKE EDITING FILES FORBIDDEN 5LNB UTQ LDX 3 AWORK4(2) [SHUFFLE FILE STACK 5M82 FILEMOVE 0(3),0 [TO AS YOU WERE 5MML CLOSE [THE OFFENDING FILE 5N7= ACROSS EDITOR,12 ['EXECUTION ERROR' IF NOT MOP 5NLW UMTD EDERR MODT [MERGING AN O/F OF DIFFERENT TYPE 5P6G BRN U15 5PL6 MENDAREA 100,K100EDITMFO 5Q5Q #END ^^^^ ...62226477000200000000