(George Source)
Macros used: ACROSS, ACROSSVAR, ALTLEN, ALTLENG, BXE, BXGE, BXU, CATMASK, CLOSE, COMBRKIN, COMERRX, CPHOOK, CUBSCHEC, DOWN, ENDREC, FILECOUNT, FREECORE, GETCLB, GETCPB, HLSINFRT, HUNTW, MASK, MENDAREA, MFREEW, MHUNTW, MONOUT, NAME, OPEN, OUTEXES, OUTPAR, RESTART, SEG, SEGENTRY, TRACE, V, VFREEW, XYZ
228Y ... SEG ALASB,,CENT(COMMAND PROCESSOR),,G277,G400 22CW ...[ 22LS ...[ (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1982 22TQ ...[ THIS EXCLUDES CODE UNDER #SKI G277 234N ...[ 23?L ...#OPT G277 = 0 23GJ ...#SKI G277&1 23PG ...# WITH UGUG EDIT M277 (ONLY MONOUT COMMANDS IF NECESSARY) 23RS ...#UNS G400 23W6 ...# THIS CHAPTER IS MODIFIED FOR G3PLUS-IH MK2 23YG [ THE ENTRY POINTS 24D6 [ THESE ENTRY POINTS MUST BE KEPT FIXED WITHIN THE SEGMENT 24XQ SEGENTRY K1ALASB,QENTRY1 [ FROM ALAS 25CB SEGENTRY K2ALASB,QENTRY2 [ FROM VERBCLAS, MACRALAS 25X2 SEGENTRY K3ALASB,QENTRY3 [ FROM ALAS (ERROR CASE) 26BL SEGENTRY K4ALASB,QENTRY4 [ FROM ALAS (ERROR CASE) 26W= SEGENTRY K5ALASB,QENTRY5 [ FROM OBEY 27*W SEGENTRY K90ALASB,QENTRY90 [ FROM FULSTART 27H4 #SKI JWPHASE4 27N= SEGENTRY K21ALASB,QENTRY21 27TG [ 28*6 [ 28SQ [ THIS SEGMENT IS ENTERED FROM SEGMENT ALAS.IT EXTRACTS THE 29#B [ VERB FROM THE CLB AND HANDS IT TO THE SEGMENTS VERBCLAS AND 29S2 [ MACRALAS FOR CLASSIFICATION.IT THEN ANALYSES AND STORES 2=?L [ EACH PARAMETER OF THE CURRENT COMMAND IN THE CPB/CALAS BLOCK 2=R= [ THE CURRENT COMMAND IS THEN ENTERED 2=YD ...#SKI G277&1 2?5L ...UA69Z CATMASK CM 2?=W VINC +INCVERB 2?QG VTL +INVERB 2#=6 VJONG +JONG 2#PQ VMDF +HLMDF 2*9B VERB 4HVERB 2*P2 VSTOP +HSTOP 2B8L VJMAXPAR +JMAXPAR 2BN= MXCHMESS +JMAXCHARS 2C7W MASK #17777777 2D76 PARA 4HPARA 2DLQ MARA 4HM(00 2F6B SPACE #20 2FL2 VERBLEN +12 2G5L TSTART #30303030 2GK= TSTOP #31313131 2H4W PA #41 2H#N PM #55 2HJG PZ #73 2J46 THESISL #30 2JHQ THESISR #31 2K3B QUOTES #22 2KH2 SEPARATOR #34 2L2L THASH #23 2LG= TEN +10 2L^W ONE +1 2MFG TWO +2 2M^6 PARF 2NDQ #HAL APARAFIR,1 2NYB [ 2P9Q PCOM [THIS COMMAND CAN HAVE A LONG FIRST 2PH6 4HIF [ PARAMETER 2PSG PCOMA [THESE COMMANDS CAN HAVE ANY KIND OF 2Q5W 4HWE [ PARAMETER LONG 2QC= 4HRO 2QRB PCOMB [THESE COMMANDS CAN HAVE A 'PARAM (' 2R7G 4HEN [ PARAMETER LONG 2RHN 4HRM 2RNW 4HLE 2RW6 4HOB 2S*Q 4HJB 2STB 4HRJ 2T58 4HMR 2T*2 PCOMC 2TSL [ 2W#= PUNT MHUNTW 2,CPB,CALAS [ THE FIND S/R FOR ALTLENG 2WRW EXIT 1 0 2X?G [ ROUTINE FOR STORING CHARACTERS IN THE PARAMETER BLOCK 2XR6 [ ON ENTRY, EITHER X5=1 AND X6 CONTAINS NEXT CHAR TO BE STORED IN 2Y=Q [ THE CPB/CALAS BLOCK, OR X5=0 IN WHICH CASE THE END OF THE PARAM 2YQB [ HAS BEEN REACHED. 2^=2 STOREPB 2^PL LDX 4 APTNECHA(2) [LOAD POS. OF NEXT CHAR IN BLOCK 329= SLC 4 2 32NW ADX 4 5 [ADD NO OF CHARS TO BE TRANSFERRED 338G ADN 4 3 [ROUND UP 33N6 SRL 4 2 347Q SBN 4 A1 [SUBTRACT RED TAPE 34MB [ X4 NOW CONTAINS THE LOGICAL LENGTH OF THE BLOCK WHEN THE PRESENT 3572 [ CHARACTERS HAVE BEEN STORED 35LL BNZ 5 P8 [J IF WE ARE NOT TERMINATING A PARAM 366= ADN 4 1 [ADD 1 TO REQUIRED AMOUNT OF CORE 36KW P8 LDX 3 ALOGLEN(2) [DO WE HAVE ENOUGH CORE 375G BXGE 3 4,POT [ JUMP IF YES 37K6 ADN 3 AVELINE [ADD AVELINE TO AVAILABLE CORE 384Q LDX 7 2 [POINTER TO EXTEND BLOCK IN X7. 38JB SBX 0 FX1 3942 SMO FX2 39HL STO 0 EXT+1 3=3= ALTLENG 7,3,PUNT [INCREASE BLOCK SIZE 3=GW MHUNTW 2,CPB,CALAS [FIND PB 3?2G SMO FX2 3?G6 LDX 0 EXT+1 3?^Q ADX 0 FX1 3#FB POT BZE 5 P9 [BRANCH IF WE HAVE TO TERMINATE PARAM 3#^2 LDX 3 APTNECHA(2) [LOAD PTR TO NEXT CHAR 3*DL SMO 2 [ STORE CHAR IN X6 IN THE CPB/CALAS 3*Y= DCH 6 0(3) [ BLOCK AND UPDATE THE POINTER 3BCW BCHX 3 £ [ APTNECHA 3BXG STO 3 APTNECHA(2) 3CC6 SMO APTBEPAR(2) 3CWQ LDX 4 0(2) 3DBB ANDN 4 #7777 3DW2 SBN 4 511 [ IS PARAMETER 'LONG' I.E. AT LEAST 3F*L BNG 4 POKAY [ 512 CHARACTERS LONG 3FT= SMO FX2 [ IS A 'LONG' PARAMETER KNOWN TO BE 3G#W LDX 3 AWORK2 [ ACCEPTABLE IN THIS CASE? 3GSG BZE 3 POKAY [ JUMP IF YES 3H4# BXE 3 PCOM(1),PSET [ WITH IF,LONG 1ST PARAM IS OK 3H#6 LDX 4 APARANUM(2) [ IS THIS THE FIRST PARAMETER? J IF 3HRQ BZE 4 PERR [ YES. FIRST PARAMS CANNOT BE LONG 3J?B LDN 4 PCOMB-PCOMA [ IS THIS A COMMAND WHICH CAN HAVE 3JR2 PLOP1 SMO 4 [ ANY KIND OF PARAMETER LONG? 3K=L BXE 3 PCOMA-1(1),PSET [ IF SO, JUMP TO SET 'ACCEPTABLE' 3KQ= BCT 4 PLOP1 3L9W LDN 4 PCOMC-PCOMB [ IS THIS A COMMAND WHICH CAN HAVE 3LPG PLOP2 SMO 4 [ A 'PARAM(' PARAMETER LONG? 3M96 BXE 3 PCOMB-1(1),PTES [ IF SO, JUMP TO TEST IF THIS PARAM 3MNQ BCT 4 PLOP2 [ IS A 'PARAM(' PARAMETER 3N8B PERR STOZ APTNECHA(2) 3NN2 LDX 2 FPTR(2) 3P7L LDX 7 VJONG(1) 3PM= BRN PCLO 3Q6W PTES 3QLG SMO APTBEPAR(2) [ DOES PARAM BEGIN 'PARAM('? 3R66 LDX 4 1(2) [ LOAD FIRST WORD OF THE PARAMETER 3RKQ BXU 4 PARA(1),PERR [ IS IT 'PARA'? IF NO, JUMP 3RWC LDX 3 APTBEPAR(2) 3S74 ADN 3 2(2) [POINT TO NEXT CHARACTER AFTER 'PARA' 3SCP LDCH 4 0(3) [LOAD CHARACTER 3SNB BXU 4 PM(1),PERR [J IF NOT 'M' 3S^3 PSPC BCHX 3 £ 3T9N LDCH 4 0(3) [LOAD NEXT CHARACTER 3TG* BXE 4 SPACE(1),PSPC [J IF SPACE 3TR2 BXU 4 THESISL(1),PERR [J IF NOT '(' 3W3W PSET SMO FX2 [ SET THE 'THIS LONG PARAMETER IS 3WHG STOZ AWORK2 [ ACCEPTABLE' MARKER 3X36 POKAY 3XGQ SMO APTBEPAR(2) 3Y2B ADS 5 0(2) [ADD NO OF CHARACTERS TO BE TRANSFERE 3YG2 EXIT 0 0 3Y^L [ THIS SECTION TERMINATES A PARAMETER AND UPDATES THE POINTER TO 3^F= [ THE NEXT AVAILABLE CHARACTER AND TO THE START OF THE LATEST 3^YW [ PARAMETER 42DG P9 ADN 4 A1-1 [UPDATE X4 TO POINT TO NXT CLEAR WD 42Y6 SMO 4 43CQ STO 5 0(2) [STORE ZERO 43XB ADN 4 1 [SET PTR TO START OF NEXT PARAM 44C2 STO 4 APTNECHA(2) [STORE PTR TO NEXT AVAILABLE CHAR 44WL LDN 4 1 45B= ADS 4 APARANUM(2) 45TW LDX 4 APARANUM(2) [GET COUNT OF PARAMETERS SO FAR 46*G ERN 4 #31 46T6 BZE 4 PMAX [J IF 25 PARAMETERS STORED 47#Q SMO FX2 47SB LDX 3 AWORK1 47XG BZE 3 STO1 482L SLL 3 12 485Q ORN 3 #2020 488W STO1 48#2 SMO FX2 48RL STO 3 AWORK2 [ RESET THE 'ACCEPTABLE' MARKER 49?= EXIT 0 0 49QW [ 4==G [ ERROR EXIT 4=Q6 PMAX STOZ APTNECHA(2) 4?9Q LDX 2 FPTR(2) 4?PB LDX 7 VJMAXPAR(1) 4?WJ PCLO 4#3Q MHUNTW 3,CPB,CALAS 4#8Y NGN 0 1 4#B6 STO 0 APARAFIR(3) 4#H# LDX 3 FX2 4#NL LDX 6 AWORK1(3) 4*8= BNZ 6 VORTEX [ WAS THE COMMAND A MACRO? 4*MW CLOSE [ IF YES, CLOSE THE MACRO FILE 4B7G BRN VORTEX 4BM6 [ 4C6Q #SKI APL 4CLB ( 4D62 PL 4HPL 4DKL XPL 12HPRINTLAST 4F5= REPLY VFREEW ADATA,CREPLY 4FJW MHUNTW 3,GMON,AOUT 4G4G NAME 3,ADATA,CREPLY 4GJ6 EXIT 4 0 4H3Q ) 4HHB [ 4J32 QENTRY1 4JGL LDN 7 0 4JJJ ...#SKI G277&1 4JLG ...( 4JND ... LDX 0 AMFMSK(2) 4JQB ... ORX 0 AMXMSK(2) 4JS# ... ANDX 0 UA69Z(1) 4JW= ... BZE 0 Q90 [ CM NOT TRACED OR REPORTED 4JY8 ...) 4K2= QENTRY3 4KFW VERTMAC 4K^G MHUNTW 2,CLB 4LF6 VERT 4LYQ OUTEXES ANUMCHA(2),CLBFIR,CLB 4MDB QENTRY4 4MY2 OUTPAR TIMENOW [ O/P TIME 4NCL MONOUT ACOMJT 4NX= BNZ 7 VORTEX 4P4D #SKI JWPHASE4 4P9L BRN Q90 4PBW QENTRY90 [FOR RETURN FROM FULSTART IF JOB... 4PWG # [...WAS UNSAVED UNDER DIFFERENT GEORGE 4P^5 #SKI JWPHASE4 4Q3N ( 4Q6? HLSINFRT Q90,FSTART 4Q8W Q90 4QB6 STOZ EXT(2) 4QTQ STOZ AWORK1(2) 4R*B LDX 4 ACES [LOAD SPACES 4RT2 STO 4 AWORK2(2) 4S#L STO 4 AWORK3(2) 4SS= STO 4 AWORK4(2) 4T?W LDN 4 CLBFIR 4TRG MHUNTW 2,CLB [FIND LINE BUFFER 4W?6 LDX 5 ANUMCHA(2) [LOAD NO. OF CHARS TO ANALYSE 4WQQ P16 LDX 3 2 [LOAD X3 WITH POINTER TO LB 4X=B ADX 3 4 [ADD POINTER WITHIN BLOCK 4XQ2 LDCH 6 0(3) [LOAD NEXT CHAR 4Y9L BCHX 4 £ [UPDATE POINTER 4YP= TXU 6 SPACE(1) 4^8W BCS R1 [J IF NOT SPACE 4^NG BCT 5 P16 [J IF LINE INCOMPLETE 5286 BRN RESTART 52MQ R1 TXU 6 THASH(1) 537B BCC RESTART [J IF # 53M2 R2 TXL 6 TEN(1) 546L BCC R3 [J IF NOT A NUMBER 54L= LDX 3 BPTR(2) [PTR TO /CALAS 555W LDX 6 CPBFSD(3) 55KG BPZ 6 R5 [J IF SOURCE OF COM. IS A MACRO 5656 LDX 7 VMDF(1) 56JQ BRN VORTEX 574B R6 LDX 3 2 57J2 ADX 3 4 583L BCHX 4 £ 58H= LDCH 6 0(3) [LOAD NEXT CHAR 592W TXU 6 SPACE(1) 59GG BCC R7 [J IF SPACE 5=26 R5 BCT 5 R6 5=FQ BRN RESTART 5=^B R7 BCT 5 R16 5?F2 RESTART 5?YL LDN 7 1 5#D= MHUNTW 2,CLB 5#XW STOZ CLBPTNECHA(2) 5*CG BRN VORTEX 5*X6 R16 LDX 3 2 5BBQ ADX 3 4 5BWB LDCH 6 0(3) 5CB2 BCHX 4 £ 5CTL R3 LDX 3 FX2 5D*= LDX 7 AWORK1(3) 5DSW TXU 6 SPACE(1) 5F#G BCC P13 [J IF SPACE 5FS6 BZE 7 P14 [J IF FIRST VERB CHAR 5G?Q TXL 7 VERBLEN(1) 5GRB BCC VTOLONG [J IF VERB TOO LONG 5H?2 P18 LDN 0 1 5HQL ADS 0 AWORK1(3) [UPDATE COUNT OF VERB CHARS 5J== SRC 7 2 5JPW ADX 3 7 5K9G DCH 6 AWORK2(3) [DEPOSIT CHAR IN AWORK AREA 5KF# LDX 3 FX2 5KP6 LDX 7 AWORK1(3) [GET COUNT OF VERB CHARS 5L8Q P19 BCT 5 R16 5LNB BZE 7 RESTART 5M82 ADN 5 1 5MML P15 STO 5 APARANUM(2) [STORE NO OF REMAINING CHARS 5N7= SMO FX2 5NLW STO 4 EXT+2 5P6G #SKI APL 5PL6 ( 5Q5Q LDX 3 FX2 5QKB LDX 4 AWORK2(3) 5R52 TXU 4 PL(1) 5RJL BCC XFRE 5S4= LDX 5 AWORK3(3) 5SHW LDX 6 AWORK4(3) 5T3G TXU 4 XPL(1) 5TH6 TXU 5 XPL+1(1) 5W2Q TXU 6 XPL+2(1) 5WGB BCC XFRE 5X22 [ IF NOT PRINTLAST COMMAND SET UP ADATA/CREPLY BLOCK 5XFL CALL 4 REPLY 5X^= BRN XCAON 5YDW XFRE MFREEW GMON,AOUT 5YYG XCAON 5^D6 ) 5^XQ NGN 0 2 62CB SMO FX2 62X2 ANDS 0 EXT+9 [UNSET B23 - ANALYSIS FINISHED 63BL LDX 2 BPTR(2) 63W= LDX 4 CPBFSD(2) 648M LDX 2 FX2 64H4 BPZ 4 V [J IF SOURCE OF COMMAND IS MACRO 64TG SLL 4 1 65*6 BNG 4 OPEN [J IF WJDF NAME 65SQ SLL 4 1 66#B BPZ 4 V 67?L LDCT 4 #040 67R= ANDX 4 EXT+3(2) [ISOLATE B3 685M BZE 4 OPEN [J IF RUNJOB FILE OPEN 68D4 #SKI JWPHASE4 68K= STOZ EXT+3(2) 68QG ACROSS MACRALAS,1 69=6 [ ENTRY TO VERBCLAS TO CLASSIFY THE VERB 69PQ V 69WY #UNS CUBSCHEC 6=46 DOWN CUBSCHEC,1 [DIAGNOSTIC TO CHECK ONLINE BS COUNT 6=57 ...#UNS G400 6=68 ...( 6=79 ... HUNTW 2,IUSER,G400BLK [LOOK FOR EXIT OB BLK 6=8= ... BNG 2 XDSK1 [J NOT PRESENT 6=9? ... LDX 0 A1(2) 6==# ... SBN 0 1 6=?* ... BNZ 0 XDSK1 [OR NOT EXIT 6=#B ... FREECORE 2 6=*C ...) 6=BJ #SKI JWPHASE4 6=HQ STOZ EXT+3(2) 6=P2 LDCH 4 AWORK2(2) [GET 1ST CHAR 6?8L SBN 4 #56 6?N= BPZ 4 V1 [J IF N -> Z INC 6#7W ACROSS VERBCLAS,1 6#MG V1 ACROSS VCLASTWO,1 6#PD ...#UNS G400 6#RB ...( 6#T# ...XDSK1 6#X= ... SMO FX2 6#^8 ... STOZ EXT+3 6*36 ... ACROSS COMHOOK,1 6*54 ...) 6*76 OPEN 6B6B LDX 4 GSIGN 6BL2 ANDX 4 EXT+3(2) [ISOLATE B0 OF EXT+3 -SET IF CARD F. 6C5L BPZ 4 RJSHIFT [J IF SHIFT FILE 6CK= ORS 4 EXT+9(2) [DENOTES GRAPHIC FILE 6D4W BRN RJX [J IF GRAPHIC FILE 6DJG RJSHIFT 6F46 LDX 4 GSIGN 6FHQ ORS 4 EXT+9(2) 6G3B ERS 4 EXT+9(2) [DENOTES SHIFT FILE 6GH2 RJX 6H2L STOZ AWORK1(2) [SET MARKER TO INDICATE FILENAME 6HG= [ THE ENTRY FROM VERBCLAS AND MACRALAS 6HH? #SKI JWPHASE4 6HJ# ( 6HK* LDN 4 0 6HLB BRN Q2STO 6HMC QENTRY21 6HND HLSINFRT QEN21,FSTART 6HPF QEN21 6HQG QENTRY2 6HRH LDX 4 EXT+3(2) 6HSJ STO 4 AWORK1(2) 6HTK LDX 0 EXT+4(2) 6HWL STO 0 AWORK3(2) 6HXM #SKI JWPHASE4<1$1 6HYN ( 6H^W QENTRY2 6JFG LDX 4 AWORK1(2) [ X1 HOLDS ZERO FOR MACRO, AND 6JJL BZE 4 Q2STO 6JL8 ) 6JMQ SLL 4 12 6JQW ORN 4 #2020 6JW2 Q2STO 6J^6 STO 4 AWORK2(2) [ SHORT FORM OF COMM FOR BI COMMANDS 6KDQ STOZ EXT+3(2) [ZEROISE BRACKET INDICATOR WORD 6KYB MHUNTW 2,CPB,CALAS [FIND PB 6LD2 LDN 4 APARAFIR+1 [SET PARAMETER 6LXL STO 4 APTNECHA(2) [BLOCK WORDS 6MC= STOZ APARAFIR(2) [FOR BEGINNING 6MWW LDN 4 APARAFIR [OF LINE 6NBG STO 4 APTBEPAR(2) 6NW6 STOZ APARANUM(2) [ 6P*Q BRN P34 6PTB P13 BZE 7 P19 6Q*2 BRN P15 6QSL P14 TXL 6 PA(1) 6R#= BCS VDELCH 6RRW TXL 6 PZ(1) 6S?G BCS P18 6SR6 VDELCH 6T=Q LDX 3 BPTR(2) [PTR. TO /CALAS 6TQB LDX 7 CPBFSD(3) 6W=2 BNG 7 VERBINC [J IF NOT A MACROS FILE 6WPL SBN 5 4 6X9= BNG 5 VERBINC [J IF NOT ENOUGH CHARS FOR DELIM. 6XNW LDN 7 1 6Y8G ANDX 7 CPBPROGLEV(3) [ISOLATE DELIMITER BIT 6YN6 LDX 4 CLBFIR(2) [GET 1ST 4 CHARS OF LINE 6^7Q BNZ 7 TDELIM [J IF DELIM. BIT SET 6^MB TXU 4 CPBSTART(3) 7272 BCC STARF [J IF STARTER FOUND 72LL TXU 4 CPBSTOP(3) 736= BCS VERBINC [J IF NOT A STOPPER 73KW LDX 7 VSTOP(1) [LOAD ERROR MESSAGE IDENTIFIER 745G LDX 4 ACES 74K6 STO 4 CLBFIR+1(2) [TO TERMINATE STOPPER 754Q BRN VP [TO REPORT THE ERROR 75JB TDELIM 7642 TXU 4 CPBSTOP(3) 76HL BCS VERBINC [J IF NOT STOPPER 773= LDN 7 2 77GW ORS 7 CPBPROGLEV(3) 782G ERS 7 CPBPROGLEV(3) [UNSET 2ND DELIM BIT 78G6 STARF LDN 7 1 78^Q ERS 7 CPBPROGLEV(3) [SET/UNSET DELIM BIT 79FB STOZ CLBPTNECHA(2) 79^2 BRN XYZ 7=DL [ LOADS THE IDENTIFIER CORRESPONDING TO THE 'VERB FORMAT ERROR' 7=Y= [ ERROR MESSAGE 7?CW VERBINC 7?XG LDX 7 VINC(1) 7#C6 BRN VORTEX 7#WQ [ LOADS THE IDENTIFIER CORRESPONDING TO THE 'VERB TOO LONG' 7*BB [ ERROR MESSAGE 7*W2 VTOLONG 7B*L LDX 7 VTL(1) 7BT= BRN VORTEX 7C#W [ THIS SECTION SETS UP A NEW COMMAND PROCESSOR LEVEL WHEN THE 7CSG [ COMMAND JUST ANALYSED WAS A MACRO 7D#6 MAC 7DRQ LDN 4 1 7F?B ADS 4 CPLEV(3) [GO DOWN A COMMAND PROCESSOR LEVEL 7FR2 LDX 4 CPLEV(3) [NEW COMMAND PROCESSOR LEVEL 7G=L GETCLB 3 7GQ= GETCPB 3 7H9W STO 4 CPBCPLEV(3) 7HPG LDX 0 GSIGN 7J96 ANDX 0 EXT+9(2) 7JNQ STO 0 CPBPROGLEV(3) 7JTY ...#UNS G400 7K36 ... CPHOOK 3 7K8B FILECOUNT 6 [NO OF FILES OPEN 7KN2 STO 6 CPBFSD(3) 7L7L LDX 5 AMFMSK(2) [ SET NEW TRACING 7LM= STO 5 CMFMSK(3) [ LEVEL IN CPAT 7LN* #UNS CMXMSK 7LPD ( 7LQH STOZ CMXMSK(3) 7LRL SEGENTRY K70ALASB 7LSP BRN XK71 [MENDED TO NULL IF REPORTNEST ON 7LTS LDN 5 #10 7LWX ANDX 5 CONTEXT(2) 7LY2 BZE 5 XK71 [BR IF NOT MOP 7L^5 LDX 5 AMXMSK(2) 7M28 STO 5 CMXMSK(3) [SET REPORTING LEVEL 7M3? XK71 7M4B SEGENTRY K71ALASB 7M5F ) 7M6W LDX 5 TSTART(1) 7MLG STO 5 CPBSTART(3) [STORE STARTER 7N66 LDX 5 TSTOP(1) 7NKQ STO 5 CPBSTOP(3) [STORE STOPPER 7P5B LDX 3 FPTR(3) 7PK2 STO 4 CPBCPLEV(3) 7Q4L STO 6 CPBFSD(3) 7QJ= ENDREC 7R3W P60 STO 5 APARANUM(3) [ROUTINE TO EXTRACT 7RHG SMO FX2 [NEXT CHARACTER TO BE 7S36 LDX 4 EXT+2 [ANALYSED FROM THE 7SGQ ADX 3 4 [LINE BUFFER 7T2B LDCH 6 0(3) [ 7TG2 BCHX 4 £ [ 7T^L SMO FX2 7WF= STO 4 EXT+2 7WYW TXU 6 SPACE(1) 7XDG BCC PRY [J IF SPACE 7XY6 SMO FX2 7YCQ LDX 4 EXT+3 [LOAD BRACKET COUNT 7YXB LDX 5 4 [ISOLATE INDICATOR 7^C2 SRL 5 22 7^WL ANDX 4 MASK(1) 82B= BNZ 4 P21 [J IF UNDER BRACKETS ETC. 82TW LDN 5 0 [INDICATOR = NEW LINE 83*G R70 TXU 6 SEPARATOR(1) 83T6 BCC P23 [J IF COMMA 84#Q TXU 6 THESISL(1) 84SB BCC P25 [J IF PARENTHESIS 85#2 TXU 6 QUOTES(1) 85RL BCC PQUOT [J IF QUOTES 86?= P26 SLL 5 22 86QW ORX 4 5 87=G P27 SMO FX2 87Q6 STO 4 EXT+3 [STORE COUNT 889Q P29 LDX 0 APTNECHA(2) [LD PTR TO NEXT NON SPACE CHAR 88PB BCHX 0 £ [INCREASE BY 1 POSITION 8992 SMO FX2 89NL STO 0 EXT 8=8= PSPIG LDN 5 1 8=MW CALL 0 STOREPB [STORE CHARACTER IN PARAMETER BLOCK 8?7G P34 LDX 3 FPTR(2) 8?M6 LDX 5 APARANUM(3) 8#6Q BCT 5 P60 8#LB SMO FX2 8*62 LDX 0 EXT 8*KL BZE 0 P33 8B5= STO 0 APTNECHA(2) [STORE BACK IN PB 8BJW SBX 0 APTBEPAR(2) 8C4G SLC 0 2 8CJ6 SBN 0 4 8D3Q SMO APTBEPAR(2) 8DHB STO 0 0(2) 8F32 BRN P33 8FGL P23 LDN 5 3 [MARK AS SEPARATOR 8G2= SLL 5 22 [SHIFT TO TOP END OF WORD 8GFW ORX 4 5 [ORX INTO X5 8G^G SMO FX2 8HF6 STO 4 EXT+3 [STORE IN ACTIVITY BLOCK 8HYQ SMO FX2 8JDB LDX 0 EXT 8JY2 BZE 0 XN [J IF MARKER NOT SET 8KCL STO 0 APTNECHA(2) 8KX= SBX 0 APTBEPAR(2) 8LBW SLC 0 2 8LWG SBN 0 4 8MB6 SMO APTBEPAR(2) 8MTQ STO 0 0(2) 8N*B SMO FX2 8NT2 STOZ EXT 8P#L XN LDN 5 0 8PS= CALL 0 STOREPB 8Q?W SMO APTBEPAR(2) [ UPDATE 8QRG LDX 5 0(2) [ APTBEPAR IN /CALAS 8R?6 ADN 5 7 [ TO POINT TO 8RQQ SRL 5 2 [ NEXT PARAMETER 8S=B ADS 5 APTBEPAR(2) [ TYPE/COUNT WORD 8SQ2 BRN P34 8T9L P21 BZE 5 P28 [J IF UNDER PARENTHESIS 8TP= PQ TXU 6 QUOTES(1) 8W8W BCS P29 [J IF NOT QUOTE 8WNG SBN 4 1 8X86 BRN P27 8XMQ P30 SBN 4 1 [SUBTRACT 1 FROM BRACKET COUNT 8Y7B BNZ 4 P26 [BRANCH IF COUNT NOT ZERO 8YM2 BRN P27 8^6L P28 TXU 6 THESISL(1) 8^L= BCC P25 [J IF LHP 925W TXU 6 THESISR(1) 92KG BCC P30 [J IF RHP 9356 BRN P27 93JQ PQUOT LDN 5 2 944B P25 ADN 4 1 [ADD 1 TO BRACKET COUNT 94J2 BRN P26 953L PRY SMO FX2 95H= LDX 0 EXT 962W BNZ 0 PSPIG 96GG BRN P34 9726 [ THIS SECTION ADJUSTS THE LENGTH OF THE 97FQ [ PARAMETER BLOCK BEFORE ENTERING THE COMMAND 97^B P33 LDX 2 FPTR(2) 98F2 LDX 6 CLBPTNECHA(2) 98YL ERS 6 CLBPTNECHA(2) [CLEAR WORD 9C?Q P40 LDX 2 BPTR(2) [LOAD POINTER TO PARAMETER BLOCK 9CRB LDX 4 APTNECHA(2) 9D?2 ERN 4 APARAFIR+1 9DQL BZE 4 P100 9F== LDN 5 0 9FPW CALL 0 STOREPB [TERMINATE PARAMETER 9G9G SMO APTBEPAR(2) [ UPDATE APTBEPAR 9GP6 LDX 5 0(2) [ TO POINT TO 9H8Q ADN 5 7 [ NEXT PARAMETER 9HNB SRL 5 2 [ TYPE/COUNT WORD 9J82 ADS 5 APTBEPAR(2) 9JML P100 STOZ APTNECHA(2) 9K7= NGN 5 1 9KLW LDX 6 APTBEPAR(2) 9L6G SMO 6 9LL6 STO 5 0(2) [MARK LAST PARAMETER IN BLOCK 9M5Q BZE 4 P101 [J IF NO PARAMETERS 9MKB DOWN ANALYSEA,3 [ TO ANALYSE PARAMETERS 9N52 MHUNTW 2,CPB,CALAS 9NJL P101 9P4= LDX 7 PARF(1) 9PHW STO 7 APTBEPAR(2) 9Q3G STO 7 ADNOPARAL(2) 9QH6 SBN 6 A1-1 9QS3 LDN 5 AVELINE+APB+1 9R4Y TXL 6 5 9R*T BCC P41A [BR REQ LEN PARA BLOCK > OR = MIN 9RLQ LDN 6 AVELINE+APB [SET REQ LEN PARA BLOCK TO MIN 9RXM P41A TXL 6 ALOGLEN(2) 9S8J BCC P41 [BR IF REQ LEN = CURRENT LOG LEN 9SFL LDX 3 2 9S^= ALTLEN 3,6 [SHORTEN CPB/CALAS 9TDW P41 MHUNTW 2,CLB [FIND LB 9TYG SMO FX2 9WD6 LDX 6 JOBEVENTS 9WXQ BPZ 6 SAG 9X4Y SLL 6 1 9X=6 BNG 6 SAG [IGNORE IF BREAK-IN IS STOPJOB 9XCB SMO FX2 9XX2 LDX 4 AWORK1 9YBL BNZ 4 P42 9YW= MHUNTW 3,CPB,CALAS 9^*W LDCT 6 #300 9^TG ANDX 6 CPBFSD(3) =2*6 BNZ 6 SAG =2SQ CLOSE [CLOSE DOWN MACRO FILE =3#B P42 COMBRKIN =3S2 [ ENTRY FROM OBEY COMMAND =4?L QENTRY5 =4R= SAG LDX 3 FX2 =5=W #SKI K6ALLGEO>99-99 =5QG TRACE AWORK2(3),COMMAND =6=6 LDX 6 AWORK1(3) [LOAD MACRO OR BUILT IN TYPE =6PQ BZE 6 MAC [J IF MACRO =79B ACROSSVAR AWORK3(3) [GO ACROSS TO COMMAND =7P2 VORTEX =88L TXU 7 ONE(1) =8N= BCS VP =97W XYZ =9MG #SKI APL ==76 MFREEW GMON,AOUT ==LQ ENDREC =?6B VP TXU 7 TWO(1) =?L2 BCC XYZ [J IF LINE OF COMMENT =#5L MHUNTW 2,CLB =#K= STOZ CLBPTNECHA(2) =DG= #SKI APL =D^W CALL 4 REPLY =FFG [ THIS COMERR COVERS A MULTITUDE OF SINS: VERB TOO LONG,VERB =F^6 [ FORMAT ERROR ,PARAMETER IDENTIFIER ERROR ,TOO MANY PARAMETERS =GDQ [ OR RECORDS IN A COMMAND, PARAMETER SUBSTITUTION AT THE WRONG =GYB [ LEVEL,PARAMETER TOO LONG. =HD2 COMERRX 7 =HXL MENDAREA 50,K99ALASB =JC= #END ^^^^ ...45511370000200000000