{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: EDITMFO867)}}
====== EDITMFO867 ======
(George Source)
**Macros used:** [[george:macro:ACROSS|ACROSS]], [[george:macro:BXU|BXU]], [[george:macro:CLOSE|CLOSE]], [[george:macro:DOWN|DOWN]], [[george:macro:EDERR|EDERR]], [[george:macro:FILEMOVE|FILEMOVE]], [[george:macro:FNORM|FNORM]], [[george:macro:FREECORE|FREECORE]], [[george:macro:MENDAREA|MENDAREA]], [[george:macro:MHUNT|MHUNT]], [[george:macro:MHUNTW|MHUNTW]], [[george:macro:NAMETOP|NAMETOP]], [[george:macro:PARFNAME|PARFNAME]], [[george:macro:PHOTO|PHOTO]], [[george:macro:REPALLER|REPALLER]], [[george:macro:SEG|SEG]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SETUPCORE|SETUPCORE]], [[george:macro:TESTMOVE|TESTMOVE]], [[george:macro:TESTREP2|TESTREP2]], [[george:macro:TESTRPN2|TESTRPN2]], [[george:macro:USEROPEN|USEROPEN]], [[george:macro:VFREE|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