ANALYSEA3
(George Source)
Macros used: ACROSS, ALTLEN, HUNT, MENDAREA, MFREE, MHUNTW, MHUNTX, ON, PHOTO, SEGENTRY, SETREP, TESTMOVE, UP
- ANALYSEA3.txt
22FL #LIS K0ANALYSEA>K0ALLGEO>K0GREATGEO>K0COMMAND 22^= #SEG ANALYSEA3 [ BILL IZATT 23DW 8HANALYSEA 23YG [ THE ENTRY POINTS 24D6 [ THESE ENTRY POINTS MUST BE KEPT FIXED WITHIN THE SEGMENT 24XQ SEGENTRY K1ANALYSEA,QENTRY1 25CB SEGENTRY K2ANALYSEA,QENTRY2 25X2 SEGENTRY K3ANALYSEA,QENTRY3 26BL [ 26W= [ 27*W SPACE #20 27TG XTEN #12 28*6 XALPH #41 28SQ OCT73 #73 29#B XLP #30 29S2 XRP #31 2=?L QT #22 2=R= MINUS #35 2?=W MINUS1 #77777777 2?QG # 2#=6 # THIS SEGMENT IS ENTERED FROM SEGMENT ANALYSE TO COMPLETE THE 2#PQ # IMPLEMENTATION OF THE PARALYSE AND PARANEXT MACROS. THE PARE 2*9B # PARAMETER IS SPLIT AT EACH OCCURRENCE OF THE SEPARATOR,OR IF 2*P2 # NONE SPECIFIED AT EACH END OF PAIRS OF BRACKETS,PARENTHESES 2B8L # QUOTES AND THE COMPONENTS STORED IN THE BLOCK SET UP IN ANAL 2BN= # PARALYSE THEN GOES UP; PARANEXT GOES ACROSS TO K5PARAM . K3A 2C7W # IS USED BY THE COMMAND PROCESSOR TO DETERMINE PARAMETER TYPE 2CMG QENTRY1 2D76 TESTMOVE 7,OK [BRN IF NO BLOCKS MOVED 2DLQ HUNT 3,CPB,CMULTI 2F6B LDX 2 FPTR(3) [ADDRESS OF PARENT BLOCK 2FL2 BRN OK1 2G5L OK LDX 2 5 2GK= OK1 LDX 1 6 2H4W SMO FX2 2HJG LDX 5 EXT+7 2J46 SMO FX2 2JHQ LDX 7 EXT+4 [LOAD SEPARATOR 2K3B BPZ 7 SEP [BRANCH IF SEPARATOR SPECIFIED 2KH2 # 2L2L # NO SEPARATOR SPECIFIED 2LG= # 2L^W SBN 4 2 2MFG BZE 4 SCOMP [BRANCH IF PARAMETER COMPOSITE 2M^6 SBN 4 1 2NDQ BNZ 4 XADR [BRN IF SIMPLE OR PSEUDO-SIMPLE 2NYB # 2PD2 # QUALIFIED PARAMETER (NO SEPARATOR SPECIFIED) 2PXL # 2QC= QUAL SMO 2 2QWW LDCH 4 0(1) [TAKE FIRST CHARACTER 2RBG WHAT CALL 0 TESTBRAC [TEST FOR BRACKET 2RW6 BRN £ [BRANCH IF NOT 2S*Q TFCH SMO 2 2STB LDCH 4 0(1) [TAKE FIRST CHARACTER 2T*2 SMO FX2 2TSL LDX 5 EXT+7 [CHARACTER COUNT 2W#= BCT 5 STOCT [BRANCH IF NOT END OF PARAMETER 2WRW CALL 7 STORECH [STORE LAST CHARACTER 2X?G BRN ZEND [BRANCH TO TERMINATE BLOCK 2XR6 STOCT SMO FX2 2Y=Q STO 5 EXT+7 [CHARACTER COUNT 2YQB BCHX 1 £ 2^=2 STOCH CALL 7 STORECH [STORE CHARACTER 2^PL SMO 2 329= LDCH 4 0(1) [TAKE A CHARACTER 32NW STO 1 6 [POINTER TO THIS CHARACTER 338G BCHX 1 £ [UPDATE POINTER 33N6 STO 1 APTNECHA(2) [ AND STORE 347Q SMO FX2 34MB LDX 5 EXT+7 [COUNT OF NUMBER OF CHARACTERS IN OLD 3572 BCT 5 NEND [BRANCH IF NOT END 35LL CALL 7 STORECH [END OF PARAMETER, STORE LAST CHARACT 366= BRN ZEND [BRANCH TO TERMINATE BLOCK 36KW NEND SMO FX2 375G STO 5 EXT+7 [STORE CHARACTER COUNT 37K6 LDX 0 CPBFSD(3) [BRACKET COUNT 384Q BNZ 0 TBTY 38JB SMO FX1 3942 TXU 4 SPACE 39HL BCS CTB1 [NOT SPACE,CARRY ON AS BEFORE 3=3= LDN 7 0 3=GW TNC2 ADN 7 1 [SPACE COUNT 3?2G SMO 2 3?G6 LDCH 4 0(1) [TAKE NEXT CHAR 3?^Q SMO FX1 3#FB TXU 4 SPACE 3#^2 BCS NMSP 3*DL BCHX 1 £ 3*Y= BRN TNC2 3BCW NMSP CALL 0 TESTBRAC 3BXG BRN XLD [NOT BRACKET,SPACES SIGNIFICANT 3CC6 SBN 7 1 3CWQ SMO FX2 [IS BRACKET,SPACES REDUNDANT 3DBB SBS 7 EXT+7 [REDUCE CHAR COUNT BY SPACE COUNT 3DW2 STOZ 4 [SPACES ARE TRAILINC, 3F*L STO 1 APTNECHA(2) 3FT= CALL 7 TER [TERMINATE PARAMETER 3G#W LDX 1 APTNECHA(2) 3GSG BRN TFCH 3H#6 # 3HRQ XLD SMO FX2 3J?B SBS 7 EXT+7 [REDUCE CHARACTER COUNT BY SPACE COUN 3JR2 SMO FX1 3K=L LDX 4 SPACE 3KQ= XLDA SMO FX2 3L9W STO 7 EXT+3 3LPG CALL 7 STORECH [STO SIGNIFICANT SPACE 3M96 SMO FX2 3MNQ LDX 7 EXT+3 3N8B BCT 7 XLDA [BRN IF SPACE COUNT NOT EXHAUSTED 3NN2 SMO 2 3P7L LDCH 4 0(1) [GET NEXT CHAR AFTER SPACE 3PM= BCHX 1 £ 3Q6W SMO FX2 3QLG LDX 5 EXT+7 [CHARACTER COUNT 3R66 BNZ 5 STOCH [CONTINUE IF COUNT NOT EXHAUSTED 3RKQ CALL 7 STORECH [STO LAST CHARACTER 3S5B BRN ZEND 3SK2 # 3T4L CTB1 CALL 0 TESTBRAC 3TJ= BRN STOCH [BRANCH IF NOT BRACKET 3W3W STO 6 APTNECHA(2) [IS BRACKET,END OF PARAMETER,SET PTR. 3WHG LDN 0 1 3X36 SMO FX2 3XGQ ADS 0 EXT+7 [SET CHARACTER COUNT BACK 3Y2B STOZ 4 3YG2 CALL 7 TER [TERMINATE PARAMETER 3Y^L LDX 1 APTNECHA(2) [POINTER TO FIRST CHARACTER OF NEW PA 3^F= BRN TFCH 3^YW TBTY CALL 7 TINBRAC [BRACKET COUNT NON ZERO, TEST FOR BRA 42DG BRN STOCH [BRANCH IF BRACKET COUNT STILL NON ZE 42Y6 CALL 7 STORECH [END OF PARAMETER, STORE CHARACTER 43CQ STOZ 4 43XB CALL 7 TER [TERMINATE PARAMETER 44C2 LDX 1 APTNECHA(2) [POINTER TO FIRST CHARACTER OF NEW PA 44WL SMO FX2 45B= LDX 5 EXT+7 [CHARACTER COUNT 45TW CALL 0 XLSPTEST [ANNIHILATE LEADING SPACES 46*G SMO FX2 46T6 STO 5 EXT+7 [CHARACTER COUNT 47#Q BRN WHAT 47SB # 48#2 # COMPOSITE PARAMETER (NO SEPARATOR SPECIFIED) 48RL # 49?= SCOMP CALL 7 SCOMPOST 49QW CALL 0 XLSPTEST [IGNORE LEADING SPACES 4==G NEND1 SMO FX2 4=Q6 STO 5 EXT+7 [CHARACTER COUNT 4?9Q NENDA CALL 7 STORECH [STORECH IF NOT SPACE 4?PB SMO FX2 4#92 LDX 5 EXT+7 [CHARACTER COUNT 4#NL BCT 5 NEND2 [BRN IF NOT END 4*8= BRN ZEND [END OF PARAMETER 4*MW NEND2 BCHX 1 £ 4B7G SMO 2 4BM6 LDCH 4 0(1) [TAKE A CHARACTER 4C6Q SMO FX1 4CLB TXU 4 SPACE 4D62 BCS NEND1 [STORECH IF NOT SPACE 4DKL STO 1 APTNECHA(2) [HOLD ADDRESS OF FIRST SPACE 4F5= LDN 0 0 4FJW STWO ADN 0 1 [ADD 1 TO SPACE COUNT 4G4G BCT 5 PLUS2 4GJ6 BRN ZEND [BRN IF NO MORE CHARACTERS 4H3Q PLUS2 BCHX 1 £ 4HHB SMO 2 4J32 LDCH 4 0(1) [TAKE NEXT CHARACTER 4JGL SMO FX1 4K2= TXU 4 SPACE 4KFW BCC STWO [BRN IF ANOTHER SPACE 4K^G LDX 1 APTNECHA(2) [ADDRESS OF FIRST SPACE 4LF6 SMO FX2 4LYQ STO 5 EXT+7 [CHARACTER COUNT 4MDB STSP SMO 2 4MY2 LDCH 4 0(1) 4NCL SMO FX2 4NX= STO 0 EXT+3 [SPACE COUNT 4PBW CALL 7 STORECH [STO SIGNIFICANT SPACE 4PWG SMO FX2 4QB6 LDX 0 EXT+3 [SPACE COUNT 4QTQ BCHX 1 £ [ADDRESS OF NEXT SPACE IN 1 4R*B BCT 0 STSP [BRN IF SPACE COUNT NOT EXHAUSTED 4RT2 # 4S#L XADR SMO 2 [ENTRY FOR SIMPLE + PSEUDO-SIMPLE PAR 4SS= LDCH 4 0(1) [TAKE NEXT CHARACTER (NON-SPACE) 4T?W BRN NENDA [BRN TO STORE THIS CHARACTER 4TRG # 4W?6 # SEPARATOR SPECIFIED (ALL PARAMETER TYPES) 4WQQ # 4X=B SEP SBN 4 2 4XQ2 BNZ 4 TACH [BRANCH IF PARAMETER NOT COMPOSITE 4Y9L CALL 7 SCOMPOST 4YP= CALL 0 XLSPTEST [IGNORE LEADING SPACES 4^8W BRN TACH 4^NG UDMOD BCHX 1 £ [UPDATE CHARACTER POINTER 5286 TACH SMO FX2 52MQ STO 5 EXT+7 [STO CHARACTER COUNT 537B SMO 2 53M2 LDCH 4 0(1) [TAKE A CHARACTER 546L LDX 0 CPBFSD(3) [BRACKET COUNT 54L= BZE 0 TSP [BRANCH IF ZERO 555W CALL 7 TINBRAC [BRACKET COUNT NON ZERO, TEST FOR BRA 55KG BRN UDCHC [COUNT NON ZERO 5656 BRN UDCHC [COUNT ZERO 56JQ # 574B TSP SMO FX2 57J2 TXU 4 EXT+4 [TEST FOR SEPARATOR 583L BCS TLP [BRANCH IF NOT 58H= SEPR STOZ 4 592W STO 1 APTNECHA(2) 59GG CALL 7 TER [TERMINATE PARAMETER 5=26 LDX 1 APTNECHA(2) 5=FQ SMO FX2 5=^B LDX 5 EXT+7 [LOAD CHARACTER COUNT OF OLD PARAMETE 5?F2 SBN 5 1 5?YL BZE 5 ZENDA [END IF NO MORE CHARACTERS 5#D= BCHX 1 £ [UPDATE CHARACTER POINTER 5#XW CALL 0 XLSPTEST [IGNORE LEADING SPACES 5*CG BRN TACH 5*X6 # 5BBQ TSPT SMO FX1 5BWB TXU 4 SPACE 5CB2 BCC PLUS3 [BRN IF SPACE 5CTL BRN UDCHC 5D*= # 5DSW PLUS3 LDN 0 0 5F#G SMO FX2 5FS6 LDX 5 EXT+7 [CHARACTER COUNT 5G?Q PLUS4 ADN 0 1 [SPACE COUNT 5GRB SBN 5 1 [REDUCE CHARACTER COUNT 5H?2 BZE 5 ZENDA [COMPOSITE TRAILERS 5HQL BCHX 1 £ 5J== SMO 2 5JPW LDCH 4 0(1) [TAKE NEXT CHARACTER 5K9G SMO FX1 5KP6 TXU 4 SPACE 5L8Q BCC PLUS4 [BRN IF ANOTHER SPACE 5LNB SMO FX2 5M82 STO 5 EXT+7 [CHARACTER COUNT 5MML SMO FX2 5N7= TXU 4 EXT+4 5NLW BCC SEPR [BRN IF SEPARATOR FOLLOWS SPACES 5P6G SMO FX1 5PL6 LDX 4 SPACE 5Q5Q XSMO SMO FX2 5QKB STO 0 EXT+3 [SPACE COUNT 5R52 CALL 7 STORECH [STORE SPACE 5RJL SMO FX2 5S4= LDX 0 EXT+3 5SHW BCT 0 XSMO [BRN IF SPACE COUNT NOT EXHAUSTED 5T3G SMO 2 5TH6 LDCH 4 0(1) [TAKE 1ST CHARACTER AFTER SPACES 5W2Q STO 4 5 [PRESERVE X4 5WGB CALL 0 TESTBRAC 5X22 BRN UDCHC 5XFL LDX 4 5 5X^= BRN UDCHC 5YDW # 5YYG TLP STO 4 5 [HOLD CHARACTER 5^D6 CALL 0 TESTBRAC [TEST FOR BRACKET 5^XQ BRN TSPT [NOT A BRACKET 62CB LDX 4 5 62X2 # 63BL UDCHC CALL 7 STORECH [STORE CHARACTER 63W= TEP SMO FX2 64*W LDX 5 EXT+7 [LOAD CHARACTER COUNT OF OLD PARAMETE 64TG BCT 5 UDMOD [BRANCH IF END OF PARAMETER NOT REACH 65*6 # 65SQ # END OF PARAMETER IF SEPARATOR SPECIFIED 66#B # THE CHARACTER IS TESTED FOR BEING A BRACKET BEFORE END 66S2 # OF PARAMETER IS TESTED FOR:SHOULD NOT BE TESTED TWICE 67?L # 67R= ZENDA LDX 0 CPBFSD(3) 68=W BZE 0 ZEND1 68QG BRN SUSP 69=6 # 69PQ # END OF PARAMETER 6=9B # 6=P2 ZEND 6?8L LDX 0 CPBFSD(3) [BRACKET COUNT 6?N= BZE 0 TESTO 6#7W CALL 7 TINBRAC [MATCHING BRACKET ? 6#MG BRN SUSP [LOOKS SUSPICOUS 6*76 BRN ZEND1 [YES 6*LQ TESTO CALL 0 TESTBRAC [OPENING BRACKET? 6B6B BRN ZEND1 [NO 6BL2 SUSP SMO FX2 6C5L LDX 4 EXT+2 6CK= BNZ 4 UNPAIR [ONLY ERROR IF NOT COMPOSITE 6D4W ZEND1 NGN 4 1 6DJG CALL 7 TER [TERMINATE LAST PARAMETER & SET END O 6F46 NULP 6FHQ LDN 7 APARAFIR 6G3B SLL 7 12 6GH2 ADN 7 1 6H2L STO 7 APTBEPAR(3) [SET FOR 1ST PASS 6HG= STO 7 ADNOPARAL(3) [SET FOR 1ST ANALYSE 6H^W STOZ APTNECHA(2) 6JFG # TEST FOR PARALYSE OR PARANEXT 6J^6 TWCH SMO FX2 6KDQ LDX 7 EXT+5 6KYB SETREP OK 6LD2 BNZ 7 NEXT [BRANCH IF PARANEXT 6LXL UP [RETURN IF PARALYSE 6MC= NEXT 6MWW SMO FX2 6NBG STO 7 EXT+7 [SET EXT+7=-1 FOR SPARAPAS 6NW6 UDAL NGN 7 1 6P*Q SMO FX2 6PTB STO 7 EXT+2 [SET "LOWEST" ANALEV FOR PARAPASS 6Q*2 ACROSS PARAM,25 [BRN TO PASS FIRST PARAMETER 6QSL # 6R#= # SUBROUTINE TO TERMINATE A PARAMETER 6RRW # 6S?G TER LDX 1 APTNECHA(3) 6SR6 SLC 1 2 6T=Q ADN 1 3 6TQB SRL 1 2 [ROUND TO WHOLE NO. OF WORDS 6W=2 STO 1 APTNECHA(3) [STO POINTER TO FIRST WORD OF NEW PAR 6WPL SBN 1 A1-1 [LOGICAL LENGTH NEEDED 6X9= TXL 1 ALOGLEN(3) [COMPARE WITH ACTUAL LOGICAL LENGTH 6XNW BCS ON [BRANCH IF SUFFICIENT CORE 6Y8G LDX 6 ALOGLEN(3) 6YN6 ADN 6 AVELINE [EXTEND CORE BY AVERAGE LINE LENGTH 6^7Q SBX 7 FX1 6^MB PHOTO 5 7272 ALTLEN 3,6,CPB,CMULTI [ INCREASE BLOCK SIZE 72LL TESTMOVE 5,RES [BRANCH IF NO BLOCKS MOVED 736= HUNT 3,CPB,CMULTI 73KW RES ADX 7 1 [ RESTORE RETURN ADDRESS (X1=FX1) 745G BRN NJOIN 74K6 ON LDX 1 FX1 754Q LDX 2 FX2 [ X2 WILL BE RESTORED ON EXIT 75JB NJOIN SMO APTNECHA(3) [ POINTER TO NEXT PARAMETER 7642 STO 4 0(3) [ZEROISE 1ST WORD OR SET END OF BLOCK 76HL LDN 6 1 [ X6=1 => TER S/R. RESTORE X2 AT END 773= ADS 6 APARANUM(3) [ADD 1 TO NUMBER OF PARAMETERS 776B ... LDX 6 APARANUM(3) 779G ... SBN 6 25 77#L ... BPZ 6 TOOMANY 77CQ ... LDN 6 1 [INDICATES TER SUBR 77GW # 782G # SUBROUTINE ENTERED HERE BY COMMAND PROCESSOR VIA K3ANALYS 78G6 # 78^Q SCENT 79FB STO 3 ACOMMUNE3(2) 79^2 ADX 3 APTBEPAR(3) 7=DL STO 7 AWORK1(2) 7=Y= LDX 7 0(3) [CHARACTER COUNT 7?CW BNG 7 UP [BRN IF NO MORE PARAMETERS (CP) 7?XG ADN 3 1 [EVALUATE ADDRESS OF 1ST CHARACTER 7#C6 BRN PTYPE1 7#WQ [ 7*BB QENTRY2 7*W2 LDX 0 ACOMMUNE1(2) 7B*L TESTMOVE 0,NMV 7BT= LDX 3 ACOMMUNE2(2) 7C#W SLL 3 12 7CSG MHUNTX 3,3 7D#6 STO 3 ACOMMUNE3(2) [NEW START ADDRESS 7DRQ BRN XFND 7F?B NMV LDX 3 ACOMMUNE3(2) 7FR2 XFND ADX 3 ACOMMUNE4(2) [ABSOLUTE PTR. TO 1ST CHARACTER 7G=L LDX 7 ACOMMUNE5(2) [COUNT OF CHARACTERS 7GQ= NGN 6 1 [INDICATE PTYPE MACRO 7H9W PTYPE1 7HPG STOZ 5 [SET 'SIMPLE' 7J96 BZE 7 UUU [BRN IF NULL PARAMETER 7JNQ LDCH 4 0(3) [GET 1ST CHARACTER 7K8B TXU 4 XLP(1) 7KN2 BCC XLPA [BRN IF LEFT PARENTHESIS 7L7L TXU 4 QT(1) 7LM= BCC QTA [BRN IF QUOTE 7M6W TXU 4 XRP(1) 7MLG BCC WQUAL 7N66 BRN STINT 7NKQ NEXTZ 7P5B LDCH 4 0(3) [GET NEXT CHARACTER 7PK2 TXU 4 XRP(1) 7Q4L BCC WQUAL [BRN IF QUALIFIED 7QJ= TXU 4 XLP(1) 7R3W BCC WQUAL [BRN IF QUALIFIED 7RHG TXU 4 QT(1) 7S36 BCC WQUAL [BRN0IF QUALIFIED 7SGQ BNZ 5 NPSEV [BRN IF NOT 'SIMPLE' 7T2B STINT 7TG2 TXL 4 OCT73(1) 7T^L BCC PSEV [BRN IF NOT 'SIMPLE' ANY MORE 7WF= TXL 4 XALPH(1) 7WYW BCC NPSEV [BRN IF LETTER 7XDG TXL 4 XTEN(1) 7XY6 BCS NPSEV [BRN IF DIGIT 7YCQ TXU 4 SPACE(1) 7YXB BCC NPSEV [BRN IF SPACE 7^C2 TXU 4 MINUS(1) 7^WL BCC NPSEV 82B= PSEV LDN 5 1 [SET 'PSENDO-SIMPLE' 82TW NPSEV BCHX 3 £ 83*G BCT 7 NEXTZ 83T6 # 84#Q # END OF PARAMETER: INSERT TYPE AND LENGTH IN SPECIFIED WORD 84SB UUU 85#2 SLL 5 12 85RL BPZ 6 STORETYPE2 [BRN IF ANALYSE/CP 86?= ADX 5 ACOMMUNE5(2) 86QW LDX 3 ACOMMUNE3(2) 87=G ADX 3 ACOMMUNE6(2) 87Q6 STO 5 0(3) 889Q UP 88PB STORETYPE2 8992 LDX 3 ACOMMUNE3(2) 89NL SMO APTBEPAR(3) 8=8= ORS 5 0(3) [INSERT PARAMETER TYPE 8=MW LDX 7 AWORK1(2) 8?7G BZE 6 XIT70 8?M6 LDX 2 FPTR(3) [ RESTORE X2 FOR EXIT FROM TER S/R 8#6Q LDX 0 APTNECHA(3) 8#LB STO 0 APTBEPAR(3) 8*62 ADN 0 1 8*KL STO 0 APTNECHA(3) 8B5= XIT70 8BJW EXIT 7 0 8C4G XLPA 8CJ6 SBN 7 2 [WE WANT TO TEST ALL BUT LAST CHAR. 8D3Q BNG 7 WQUAL 8DHB BZE 7 XLPE 8F32 XLPB BCHX 3 £ 8FGL LDCH 4 0(3) 8G2= TXU 4 XLP(1) 8GFW BCC XLPC 8G^G TXU 4 XRP(1) 8HF6 BCS XLPB1 8HYQ BNZ 7 WQUAL 8JDB BRN WCOMP 8JY2 XLPB1 8KCL BCT 7 XLPB 8KX= XLPE 8LBW BCHX 3 £ 8LWG LDCH 4 0(3) 8MB6 TXU 4 XRP(1) 8MTQ BCC WCOMP 8N*B BRN WQUAL 8NT2 XLPC BCT 7 XLPC1 8P#L BRN XLPE 8PS= XLPC1 LDN 0 1 [SORT OF DELIMITER COUNT 8Q?W XLPD BCHX 3 £ 8QRG LDCH 4 0(3) 8R?6 TXU 4 XRP(1) 8RQQ BCS NOTRP 8S=B SBN 0 1 8SQ2 BNG 0 WQUAL 8T9L NOTRP 8TP= TXU 4 XLP(1) 8W8W BCS NOTLP 8WNG ADN 0 1 8X86 NOTLP BCT 7 XLPD 8XMQ BZE 0 XLPE 8Y7B BRN WQUAL 8YM2 QTA 8^6L SBN 7 1 8^L= BZE 7 WQUAL [ONLY ONE CHARACTER 925W SLC 3 2 [ABSOLUTE POINTER TO LAST CHARACTER 92KG ADX 3 7 9356 SRC 3 2 93JQ LDCH 7 0(3) [X7HOLDS LAST CHAR OF PARAMETER 944B TXU 7 QT(1) 94J2 BCC WCOMP [IF TERMINAL CHARS BOTH QUOTES,COMPOS 953L WQUAL 95H= LDN 5 3 [SET QUALIFIED 962W BRN UUU 96GG WCOMP 9726 LDN 5 2 [SET COMPOSITE 97FQ BRN UUU 97^B # 98F2 # SUBROUTINE TO TEST FOR BRACKET WHEN BRACKET COUNT ZERO 98YL # 99D= TESTBRAC 99XW SMO FX1 9=CG TXU 4 XLP [TEST FOR ( 9=X6 BCS STLB [BRANCH IF NOT 9?BQ SLL 4 12 9?WB SMO FX1 9#B2 ORX 4 XRP [SET ( AS BRACKET 9#TL BRN STOB 9**= STLB SMO FX1 9*SW TXU 4 QT [TEST FOR " 9B#G BCC SAP [BRANCH IF IS 9BS6 EXIT 0 0 [NOT'BRACKET',EXIT 9C?Q SAP SLL 4 12 9CRB SMO FX1 9D?2 ORX 4 QT [SET " AS BRACKET 9DQL STOB SMO FX2 9F== STO 4 EXT+6 [STORE BRACKET TYPE 9FPW LDN 4 1 9G9G ADS 4 CPBFSD(3) [ADD 1 TO BRACKET COUNT 9GP6 EXIT 0 1 [RETURN 9H8Q # 9HNB # SUBROUTINE TO TEST FOR BRACKET WHEN BRACKET COUNT IS NON 9J82 # 9JML TINBRAC 9K7= SMO FX2 9KLW LDX 5 EXT+6 9L6G SRL 56 12 [ISOLATE LEFT BRACKET 9LL6 SRL 6 12 [ISOLATE RIGHT BRACKET 9M5Q TXU 4 6 [TEST FOR 'CLOSE' 9MKB BCS TOP [BRANCH IF NOT 9N52 SBN 0 1 [SUBTRACT 1 FROM BRACKET COUNT 9NJL STO 0 CPBFSD(3) 9P4= BNZ 0 ZRET [BRANCH IF BRACKET COUNT NON-ZERO 9PHW EXIT 7 1 [RETURN, BRACKET COUNT ZERO 9Q3G TOP TXU 4 5 [TEST FOR 'OPEN' 9QH6 BCS ZRET [BRANCH IF NOT 9R2Q ADN 0 1 [ADD 1 TO BRACKET COUNT 9RGB STO 0 CPBFSD(3) 9S22 ZRET EXIT 7 0 [RETURN, BRACKET COUNT NON ZERO 9SFL # 9S^= # SUBROUTINE TO IGNORE LEADING SPACES 9TDW # 9TYG XLSPTEST 9WD6 SMO 2 9WXQ LDCH 4 0(1) [TAKE A CHAR 9XCB SMO FX1 9XX2 TXU 4 SPACE 9YBL BCC TNC [BRN IF SPACE 9YW= EXIT 0 0 [EXIT NO SPACES 9^*W TNC SBN 5 1 [REDUCE CHAR COUNT FOR EACH SPACE 9^TG BZE 5 ZEND [END IF NO MORE CHARS =2*6 BCHX 1 £ [1 IS UPDATED =2SQ SMO 2 =3#B LDCH 4 0(1) [TAKE NEXT CHAR =3S2 SMO FX1 =4?L TXU 4 SPACE =4R= BCC TNC [BRN IF ANOTHER SPACE =5=W EXIT 0 0 =5QG # =6=6 # SUBROUTINE TO STORE A CHARACTER =6PQ # =79B STORECH =7P2 STO 1 APTNECHA(2) =88L LDN 0 1 =8N= LDX 5 APTBEPAR(3) [POINTER TO BEGINNING OF PARAMETER =97W SMO 5 =9MG ADS 0 0(3) [ADD 1 TO PARAMETER CHARACTER COUNT ==76 LDX 5 APTNECHA(3) [POINTER TO NEXT CHARACTER ==LQ SLL 5 2 =?6B SRL 5 2 [NUMBER OF WORDS IN BLOCK =?L2 SBN 5 A1-1 [ADD 1 AND SUBTRACT RED TAPE =#5L TXL 5 ALOGLEN(3) =#K= BCS NCOR [BRANCH IF SUFFICIENT CORE =*4W LDX 5 ALOGLEN(3) =*JG ADN 5 AVELINE [EXTEND CORE BY AVERAGE LINE LENGTH =B46 SBX 7 FX1 =BHQ SMO FX2 =C3B STO 7 EXT+1 [STORE RETURN ADDRESS =CH2 STO 2 7 [STORE ADDRESS OF OLD BLOCK =D2L PHOTO 6 =DG= ALTLEN 3,5 [INCREASE BLOCK SIZE =D^W LDX 2 7 =FFG TESTMOVE 6,NSER [BRANCH IF NO BLOCKS MOVED =F^6 HUNT 3,CPB,CMULTI =GDQ LDX 2 FPTR(3) =GYB NSER SMO FX2 =HD2 LDX 7 EXT+1 =HXL ADX 7 FX1 [RETURN ADDRESS =JC= NCOR LDX 1 APTNECHA(3) [POINTER TO NEXT CHARACTER =JWW SMO 3 =KBG DCH 4 0(1) [STORE CHARACTER =KW6 BCHX 1 £ [UPDATE POINTER =L*Q STO 1 APTNECHA(3) [ AND STORE =LTB LDX 1 APTNECHA(2) =M*2 EXIT 7 0 [RETURN =MSL # =N#= # SUBROUTINE TO CHECK THAT A 'COMPOSITE' PARAMETER IS IN FACT INCLUD =NRW # IN A BRACKET PAIR =P?G # =PR6 SCOMPOST =Q=Q SMO FX2 =QQB STOZ EXT+2 ['COMPOSITE MARKER =R=2 SMO 2 =RPL LDCH 4 0(1) =S9= STOZ CPBFSD(3) [ZEROISE BRACKET COUNT =SNW SBN 5 2 [REDUCE CHARACTER COUNT BY 2 =T8G BNZ 5 UNUL [BRN IF NOT NULL PARAMETER =TN6 STOZ APARAFIR(3) [SET =W7Q LDN 4 1 [RED =WMB STO 4 APARANUM(3) [TAPE =X72 NGS 4 APARAFIR+1(3) [WORDS =XLL BRN NULP =Y6= UNUL =YKW BCHX 1 £ =^5G EXIT 7 0 =^K6 # ?24Q # ROUTINE ENTERED IF AN UNPAIRED BRACKET ENCOUNTERED ?27* ...# OR TOO MANY PARAMETERS FOUND ON SPLITTING A PARAMETER ?29Y ...# ?2#H ...TOOMANY ?2C6 ... SETREP TOOMANY ?2FP ... BRN XFREE ?2JB UNPAIR ?2PJ ... SETREP UNPAIR ?2WQ ...XFREE ?342 MFREE CPB,CMULTI ?43= UP ?4GW [ ?52G [ ENTRY FROM COMMAND PROCESSOR ?5G6 QENTRY3 ?5^Q MHUNTW 3,CPB,CALAS ?6FB LDN 4 APARAFIR ?6^2 STO 4 APTBEPAR(3) ?7DL LDN 6 0 [INDICATE C/P ?7Y= SCENTCALL ?8CW CALL 7 SCENT [SET PARAMETER TYPE ?8XG SMO APTBEPAR(3) ?9C6 LDX 7 0(3) ?9WQ ANDN 7 #7777 ?=BB ADN 7 7 ?=W2 SRL 7 2 ??*L ADS 7 APTBEPAR(3) ??T= BRN SCENTCALL ?##W UP ?#SG UP ?*#6 MENDAREA 30,K99ANALYSEA ?*RQ #END ^^^^ ...57322164000300000000