{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: PRINT70)}} ====== PRINT70 ====== (George Source) **Macros used:** [[george:macro:ABANDCOM|ABANDCOM]], [[george:macro:ASSMESS|ASSMESS]], [[george:macro:BS|BS]], [[george:macro:CHNUMCON|CHNUMCON]], [[george:macro:CLOSE|CLOSE]], [[george:macro:CLOSEMULT|CLOSEMULT]], [[george:macro:CLOSESTREAM|CLOSESTREAM]], [[george:macro:COMBRKIN|COMBRKIN]], [[george:macro:CREATEB|CREATEB]], [[george:macro:ENDCOM|ENDCOM]], [[george:macro:ERRORX|ERRORX]], [[george:macro:FLIPS|FLIPS]], [[george:macro:FPCACA|FPCACA]], [[george:macro:FREECORE|FREECORE]], [[george:macro:GEOERR|GEOERR]], [[george:macro:GETWORDX|GETWORDX]], [[george:macro:HUNT|HUNT]], [[george:macro:INPRINTX|INPRINTX]], [[george:macro:LDNBIT|LDNBIT]], [[george:macro:MENDAREA|MENDAREA]], [[george:macro:MFREE|MFREE]], [[george:macro:MHUNT|MHUNT]], [[george:macro:MHUNTW|MHUNTW]], [[george:macro:MONOUT|MONOUT]], [[george:macro:NAMETOP|NAMETOP]], [[george:macro:OUTBLOCN|OUTBLOCN]], [[george:macro:OUTMON|OUTMON]], [[george:macro:OUTNUM|OUTNUM]], [[george:macro:PARABEGX|PARABEGX]], [[george:macro:PARABRAC|PARABRAC]], [[george:macro:PARAFREE|PARAFREE]], [[george:macro:PARALYSE|PARALYSE]], [[george:macro:PARALYSX|PARALYSX]], [[george:macro:PARAPASS|PARAPASS]], [[george:macro:PARUNACC|PARUNACC]], [[george:macro:REPERR|REPERR]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SETBIT|SETBIT]], [[george:macro:SETNCORE|SETNCORE]], [[george:macro:SPARANOT|SPARANOT]], [[george:macro:STEP|STEP]], [[george:macro:TBS|TBS]], [[george:macro:TESTBRKIN|TESTBRKIN]], [[george:macro:TESTGETW|TESTGETW]], [[george:macro:TESTMULT|TESTMULT]], [[george:macro:TESTRACE|TESTRACE]], [[george:macro:TESTREAM|TESTREAM]], [[george:macro:TESTREP|TESTREP]], [[george:macro:TESTREP2|TESTREP2]], [[george:macro:TESTREPNOT|TESTREPNOT]], [[george:macro:TRACE|TRACE]], [[george:macro:UNSETBIT|UNSETBIT]], [[george:macro:USEROPEN|USEROPEN]], [[george:macro:VFREE|VFREE]], [[george:macro:WORDFIN|WORDFIN]] 22FL ...#SEG PRINT70 [JOHN P. TITORENKO 22^= #LIS K0PRINT>K0ALLGEO>K0GREATGEO 23DW #OPT K6PRINT=K6ALLGEO>K6GREATGEO 23YG 8HPRINT 24D6 # 24XQ SEGENTRY K1PRINT,XX1P 25CB # 25X2 # THIS SEGMENT DEALS WITH THE PRINT COMMAND. IF A FILE DESCRIPTION 26BL # PARAMETER IS INCLUDED THE SEGMENT INSERTS IN THE SPECIFIED FILE 26W= # THE WORDS OF OBJECT PROGRAM SPECIFIED BY THE FOLLOWING PARAMETERS 27*W # OF THE COMMAND,OTHERWISE OUTPUT IS TO THE MONITORING FILE, THE 27TG # WORD IS INTERPRETED IN CHARACTER,OCTAL,DECIMAL AND INSTRUCTION FORM 28*6 # ENTRY IS MADE AT K1 28SQ # 29#B SPIT 6HREGION 29S2 SALL 3HALL 2=?L # 2=R= XACCESS +GREAD+CHUSED+GNOMESS 2?=W MAGIC +7036875 2?QG XCAT #200 2#=6 THREE +3 2#PQ SPACE #00000020 2*9B X7CHARS +1.3 2*P2 XJNOTUSED +JNOTUSED 2B8L PERM1 +ERUNPAIR [ERROR MESSAGES 2BN= PERM3 +CHNUMIN 2C7W PERM4 +GWERRES 2CMG PERM5 +JPOSWDS 2D76 PERM6 +JPARMIS 2DLQ PERM7 +JMTRACE 2F6B PERM8 +APFERR 2FL2 PERM9 +EREXQUOTA 2FTS ...PJMAXPAR +JMAXPAR 2G5L # 2GK= # LOCATIONS IN BUFFER(ADATA/CSTORE) 2H4W #DEF PADDR=A1 2HJG #DEF PCHAR=PADDR+3 2J46 #DEF PSDEC=PCHAR+2 2JHQ #DEF POCTAL=PSDEC+2 2K3B #DEF PINST=POCTAL+4 2KH2 #DEF PACCDUMP=PINST+4 2L2L # 2LG= # WORKING SPACE 2L^W # 2MFG #DEF PFLAG=AWORK1 2M^6 # 2NDQ # PFLAG IS USED TO HOLD VARIOUS FLAGS AS FOLLOWS 2NYB # 2P88 ...#DEF STARTAREA=23 2PD2 #DEF RESVIOL=22 2PXL #DEF PPRES=21 2QC= ...#DEF STARTCOM=20 2QWW ...#DEF STARTPRINT=19 2RBG #DEF UFILE=18 2RW6 #DEF POPEN=17 2S*Q #DEF REGION=16 2STB #SKI G4 2T*2 #DEF NU1=15 2TSL #DEF ONEP=14 2W#= #DEF PMODE=5 2WRW # 2X?G # THIS S/R IS USED TO FIND A PARAMETER STARTING WITH A SPECIFIED 2XR6 # CHARACTER STRING 2Y=Q PBEG 2YQB SBX 7 FX1 2^=2 PARABEGX 3,4,,,0 2^PL MHUNT 3,CPB,CUNI 329= LDX 4 ANUM(3) 32NW LDX 5 JPARNUM(3) 338G LDCH 6 APARA(3) [OBTAIN 1ST CHARACTER 33N6 ADX 7 FX1 347Q EXIT 7 0 34MB # 3572 # THIS S/R SPLITS UP THE PARAMETER FOUND BY PBEG, LEAVING THEM IN A 35LL # MULTY BLOCK AT LEVEL 2 366= PLYSE 36KW SBX 7 FX1 375G PARALYSE ,,5 [SPLIT AT PAIRED PARENTHESIS 37K6 TESTREP UNPAIR,PERR1A [J IF UNPAIRED PARENTHESIS 37SY ... TESTREP TOOMANY,PERR11 384Q MFREE CPB,CUNI 38JB LDN 4 2 3942 LDN 5 #34 [, AS SEPARATOR 39HL PARALYSX 5,,4 [SPLIT REGIONES 39RD ... TESTREP TOOMANY,PERR11 3=3= ADX 7 FX1 3=GW EXIT 7 0 3?2G # 3?G6 # THIS S/R DOES A PARAPASS & FINDS THE CUNI BLOCK 3?^Q PPASS 3#FB SBX 7 FX1 3#^2 #SKI AJOBUSE<1$1 3*DL ( 3*Y= HUNT 3,CPB,CMULTI 3BCW BNG 3 UNACC 3BXG PARAPASS 3CC6 BRN SEARCH 3CWQ UNACC 3DBB ) 3DW2 PARUNACC 3F*L SEARCH 3FT= MHUNT 3,CPB,CUNI 3G#W ADX 7 FX1 3GSG EXIT 7 0 3H#6 # 3HRQ # 3J?B XX1P 3JR2 # 3K=L SETNCORE 18,3,ADATA,CSTORE [BLOCK TO CONTAIN OUTPUT TO 3KQ= [ THE MONITORING FILE 3L9W LDN 5 0 3LKK ...#FID STARTCOM STARTCOM 1 3L^# ...#FID STARTPRINT STARTPRINT 1 3M*3 ...#FID STARTAREA STARTAREA 1 3MNQ STO 5 PFLAG(2) [INITIALISE FLAG WORD 3N8B # THE FIRST PART OF T8E SEGMENT DOWN TO LABEL ZOUTPUT NALYSES THE NEXT 3NN2 # PARAMETER, IF THIS IS A FILE NAME THE SPECIFIED FILE IS PENED AND 3P7L # THE COMMON PATH JOINED TO ACCESS THE NEXT PARAMETER. THERWISE THE 3PM= # PARAMETER IS TESTED FOR VALIDITY AND THE 0/P ADDRESS OF T E 1ST WORD 3Q6W # TO BE PRINTED INSERTED IN X5. A COUNT OF THE NUMBER OF ORDS T BE 3QLG # PRINTED IS INS RTED IN X4. CONTROL T EN PASSES TO ZOUTPUT 3R66 # 3RKQ # 3S5B NEWPAR 3SK2 CALL 7 PPASS [GET PARAM & POINTER TO BLOCK 3T4L LDX 4 ANUM(3) 3TJ= ... TBS STARTCOM,PFLAG(2),5 [TEST START SWITCH 3W3W BZE 5 OREC [IF NOT SET -NOT 1ST PARAM 3WHG ERS 5 PFLAG(2) [UNSET SWITCH 3X36 BZE 4 RECO [IF NULL NO FILE NAME PARAMETER 3XGQ ... BNG 4 NEWPARG [NO PARAMETER 3Y2B LDCH 0 APARA(3) 3YG2 SBN 0 #12 [TEST IF : 3Y^L BZE 0 NREG 3^F= SBN 0 #7 [TEST IF ! 3^YW BZE 0 NREG 42DG SBN 0 #20 [TEST IF ALPHABETIC 42Y6 BNG 0 RECO 43CQ SBN 0 #32 43XB BPZ 0 RECO 44C2 NREG 44WL MFREE CPB,CUNI 45B= SETBIT UFILE,PFLAG(2) [INDICATE OUTPUT TO FILE 45TW # 46*G # REGION LIST FORMAT 46T6 # 47#Q # LOOK FOR'ALL' 47SB NPAR 48#2 LDN 4 3 [CHARACTER COUNT 48RL LDX 5 SALL(1) 49?= LDN 3 1 49QW CALL 7 PBEG [SEARCH FOR ALL 4==G BNG 4 PPAR [GO TO LOOK FOR'REGIONS' 4=Q6 SETBIT ONEP,PFLAG(2) 4?9Q FPCACA 3,2 4?PB LDX 4 ALIMIT(3) 4#92 STOZ 5 4#NL BRN ZOUTPUT [GO TO PRINT PROGRAM 4*8= # 4*MW # 1 REGION LIST PARAMETER FINISHED OR A NON EXISTENT PARAMETER FOUND 4B7G # 4BM6 NEWPARG 4C6Q TBS REGION,PFLAG(2),3 [SEE IF PRINTING FINISHED 4CLB BZE 3 PR1 [PRINTING IS FINISHED 4D62 PARAFREE [FREE MULTY BLOCKS 4DKL # 4F5= # REGION LIST FORMAT BUT NO'ALL' 4FJW # 4G4G # LOOK FOR PARAMETER PRECEDED BY 'REGION' 4GJ6 # 4H3Q PPAR 4HHB LDN 3 1 [SET UP ACCS FOR S/R 4J32 SETBIT REGION,PFLAG(2) 4JGL ... LDN 4 6 4K2= LDX 5 SPIT(1) 4KFW LDX 6 SPIT+1(1) 4K^G CALL 7 PBEG [SEARCH FOR REGIONS 4LF6 BNG 4 PERR8 [NO'REGIONS'-PARAMETER FORMAT ERROR 4LYQ SBN 6 #30 [SEE IF 1ST CHAR IS A '(' 4MDB BNZ 6 ONEPAR [IF NOT-ASSUME 1 PARAMETER ONLY 4MY2 CALL 7 PLYSE [SPLIT REGIONS PARAM 4NCL BRN NEWPAR 4NX= # 4PBW # 'REGIONS' PARAMETER WITHOUT PAIRED PARENTHESIS 4PWG # 4QB6 ONEPAR 4QTQ BZE 4 ORE1 4R*B SETBIT ONEP,PFLAG(2) 4RT2 BRN ROCO 4S#L # 4SS= OREC 4T?W BZE 4 ZFUNI [NULL PARAMETER 4TRG BPZ 4 ROCO [J IFF IF EXISTS 4W?6 ORE1 4WQQ MFREE CPB,CUNI 4X=B BRN NEWPARG 4XQ2 # 4Y9L RECO LDN 7 #200 [TEST IF MONITORING FILE POSL0MORT 4YP= TESTRACE 7,PERR7 [CATEGORY ALLOWED 4^8W BZE 4 NPAR 4^NG ROCO SRL 4 12 [TYPE TO B12-23 5286 BZE 4 TP1A [BRANCH IF SIMPLE 52MQ SBN 4 2 537B BNG 4 Q1END [IF PSEUDO-SIMPLE AVOID QUICK 53M2 [ ANALYSIS-BOUND TO FAIL 546L BNZ 4 TP3A [BRANCH IF QUALIFIED 54L= [OTHERWISE COMPOSITE 555W # 55KG # [A QUICK TEST FOR PARAMETER OF TYPE 5656 # [ (N,M) WHERE N,M ARE DECIMAL INTS. 56JQ LDN 4 #7777 574B ANDX 4 ANUM(3) [PARAMETER LENGTH 57J2 SBN 4 1 583L BCHX 3 £ [FIRST CHAR KNOWN TO BE ( 58H= CALL 0 XCDB 592W BNZ 6 Q2END [QUICK TEST FAILS IF N DOUBLE LENGTH 59GG STO 7 ACC5(2) [REMEMBER N 5=26 LDN 5 #34 [IE , 5=FQ CALL 0 XTEST [IS NEXT CHAR A , ? 5=^B BRN Q2END [IF NOT,QUICK TEST FAILS 5?F2 BZE 4 Q2END [IF COUNT EXHAUSTED,QUICK TEST FAILS 5?YL CALL 0 XCDB 5#D= BNZ 6 Q2END [QUICK TEST FAILS IF M DOUBLE LENGTH 5#XW BZE 4 Q2END [ OR IF COUNT EXHAUSTED 5*CG STO 7 ACC4(2) [REMEMBER M 5*X6 LDN 5 #31 [IE ) 5BBQ CALL 0 XTEST 5BWB BRN Q2END [QUICK TEST FAILS IF NEXT CHAR NOT ) 5CB2 BNZ 4 Q2END [ OR IF COUNT NOT EXHAUSTED 5CTL LDX 4 ACC4(2) [OTHERWISE TEST OK 5D*= LDX 5 ACC5(2) [ RESTORE X4,X5, 5DSW LDN 7 0 [ INDICATE TYPE 2 PARAM 5F#G BRN VCHK [ AND CHECK PARAMETER VALUES 5FS6 # 5G?Q # 5GRB TP1A LDX 4 ANUM(3) [A QUICK TEST FOR PARAMETER OF TYPE 5H?2 ANDN 4 #7777 [ N WHERE N IS A DECIMAL INTEGER. 5HQL CALL 0 XCDB 5J== BNZ 4 Q1END [QUICK TEST FAILS IF COUNT NOT 5JPW # [ EXHAUSTED 5K9G BNZ 6 Q1END [ OR IF NUMBER WENT DOUBLE LENGTH 5KP6 LDN 4 1 [NUMBER OF PRINTWORDS 5L8Q LDX 5 7 [THE CONVERTED NUMBER 5LNB BPZ 5 ZOUTPUT [IF NUMBER > OR = 0,ANALYSIS COMPLETE 5M82 BRN PERR4 [OTHERWISE ERROR 5MML # 5N7= TP3A [A QUICK TEST FOR PARAMETER OF TYPE 5NLW LDN 4 #7777 [ M(N) WHERE M,N ARE DECIMAL INTEGERS 5P6G ANDX 4 ANUM(3) [COUNT TO X4 5PL6 CALL 0 XCDB 5Q5Q BNZ 6 Q3END [IF M WENT DOUBLE LENGTH,TEST FAILS 5QKB STO 7 ACC5(2) [REMEMBER M 5R52 LDN 5 #30 5RJL CALL 0 XTEST [IS NEXT CHARACTER A ( ? 5S4= BRN Q3END [IF NOT QUICK TEST FAILS 5SHW BZE 4 Q3END [QUICK TEST FAILS IF COUNT EXHAUSTED 5T3G CALL 0 XCDB 5TH6 BNZ 6 Q3END [IF N WENT DOUBLE LENGTH,TEST FAILS 5W2Q BZE 4 Q3END [DITTO IF COUNT EXHASTED 5WGB STO 7 ACC4(2) [REMEMBER N 5X22 LDN 5 #31 5XFL CALL 0 XTEST [IS NEXT CHARACTER A ) ? 5X^= BRN Q3END [IF NOT QUICK TEST FAILS 5YDW BNZ 4 Q3END [DITTO IF COUNT NOT EXHAUSTED 5YYG LDX 4 ACC4(2) [IF TEST SUCCESSFUL,RESTORE X4,X5 5^D6 LDX 5 ACC5(2) 5^XQ NGN 7 1 [INDICATES TYPE 3 PARAM 62CB BRN VCHK [CHECK PARAMETER VALUES 62X2 # 63BL Q1END LDN 7 1 [ SET TYPE 1 MARKER 63W= BRN PCON 64*W Q2END LDN 7 0 [SET TYPE 2 MARKER 64TG BRN PBRAC 65*6 Q3END NGN 7 1 [ SET TYPE 3 MARKER 65SQ PBRAC PARABRAC [ REDUCE PARAMETER TO A NUMBER STRING 66#B TESTREPNOT OK,PERR1 [ UNPAIRED PARENTHESES 66S2 MHUNT 3,CPB,CUNI 67?L LDX 5 ANUM(3) 67R= BZE 5 PERR3 68=W # 68QG # 69=6 PCON [REACH HERE WITH N OR N,M IN UNI BLOC 69PQ #SKI K6PRINT>699-699 6=9B ( 6=P2 TRACE 1,PTCOMCV 6?8L ) 6?N= CHNUMCON 1,REAKIN [ATTEMPT TO CONVERT NUMBERS 6#7W TESTREP2 CHNUMERR,PERR3A [TEST FOR ERROR 6#MG MHUNTW 3,CPAR,GNUMCON 6*76 LDX 6 A1(3) [THE NO. OF EXPRESSIONS CONVERTED 6*LQ LDX 5 A1+1(3) [IF DEFINED,THE O/P BASE ADDR 6B6B LDX 4 A1+2(3) [IF DEFINED,EITHER O/P WORDCOUNT (TP3 6BL2 [ PARAM),OR TOP OF PT AREA (TP2PARAM) 6C5L FREECORE 3 [FREE THE GNUMCON BLOCK 6CK= BCT 6 X6GT1 6D4W LDN 4 1 [IF 1 CONVN SET WORDCOUNT TO 1 6DJG LDN 7 1 [ AND INDICATE TYPE 1 PARAMETER 6F46 BRN VCHK [ AND CHECK X4,X5 FOR LEGALITY 6FHQ X6GT1 BCT 6 PERR3 [ERROR IF >2 CONVERSIONS 6G3B # 6GH2 VCHK BNG 5 PERR4 [IF O/P BASE ADDR <0,ERROR 6H2L BZE 7 TP2A [BRANCH IF TYPE 2 PARAMETER 6HG= BZE 4 TP3B [PARAM WAS LIKE 6(0) 6H^W BNG 4 PERR5 [NO OF PRINTWORDS NEGATIVE 6JFG BRN ZOUTPUT 6J^6 # 6KDQ TP2A SBX 4 5 [CONVERT TYPE 2 PARAM (N,M) TO 6KYB # [ TYPE 3 FORM N(M-N+1) 6LD2 BNG 4 PERR5 [IF UPPER BND < LOWER BND 6LXL ADN 4 1 6MC= BRN ZOUTPUT 6MWW # 6NBG # ERROR CASES 6NW6 # 6P*Q PERR1 LDX 1 FX1 6PTB LDX 4 PERM1(1) [UNPAIRED PARENTHESES 6Q*2 BRN XERCL 6QSL PERR3A 6R#= LDN 0 #1000 6RRW ANDX 0 CONTEXT(2) 6S?G BZE 0 ULTND [PACK UP IF LOAD ERROR 6SR6 PERR3 LDX 1 FX1 6T=Q LDX 4 PERM3(1) [INVALID NUMBER FORMAT 6TQB BRN XERCL 6W=2 PERR4 LDX 1 FX1 6WPL LDX 4 PERM4(1) [RESERVATION VIOLATION 6X9= BRN XERCL 6XNW PERR5 LDX 1 FX1 6Y8G LDX 4 PERM5(1) [NO OF PRINTWORDS < 0 6YN6 XERCL CALL 7 SRERR [ISSUE ERROR MESSAGE 6^7Q PERR2 6^MB TP3B SETBIT PPRES,PFLAG(2) [PARAMETER PRESENT BIT 7272 ZFUNI VFREE CPB,CUNI 73KW BRN NEWPAR 745G # 74K6 PERR1A 754Q LDX 4 PERM1(1) 75JB CALL 7 SRERR 7642 SETBIT PPRES,PFLAG(2) [PARAMETER PRESENT BIT 76HL BRN ORE1 76L9 ...PERR11 76NS ... LDX 4 PJMAXPAR(1) 76RC ... CALL 7 SRERR 76W2 ... SETBIT PPRES,PFLAG(2) 76YK ... BRN ORE1 773= # 77GW # THE REST OF THIS SEGMENT.DOWN TO LABEL PR1,OUTPUTS TO THE MONITORING 782G # FILE THE CONTENTS OF [X4] WORDS COMMENCING AT OBJECT PROGRAM ADDRESS 78G6 # [X5].GETWORD REQUESTS ACCESS TO A MAXIMUM OF 512 WORDS. 78^Q # 79FB # 79^2 ZOUTPUT 7=8S ... SETBIT STARTAREA,PFLAG(2) 7=DL SETBIT PPRES,PFLAG(2) 7=Y= STOZ AWORK4(2) ['ZERO COUNT' WORD 7?CW FPCACA 3,2 [FIND THE PCA 7?XG LDX 0 ALIMIT(3) 7#C6 SBX 0 5 [X0=NO OF PRINTWORDS ALLOWED WITHOUT 7#WQ [ RESERVATION VIOLATION 7*BB BNG 0 PERR4 7*W2 BZE 0 PERR4 [J IF NO PRINTWORDS IN RESERVATION 7B*L TXL 0 4 7BT= BCC RESOK [J IF PRINT REQUEST WITHIN 7C#W # [RESERVATIONS 7CSG LDX 4 0 [ADJUST REQUEST TO BE WITHIN RESERVN 7D#6 SETBIT RESVIOL,PFLAG(2) 7DRQ BRN QQQ 7F?B RESOK LDNBIT RESVIOL,0 7FR2 ANDS 0 PFLAG(2) [UNSET RESVIOL FLAG 7G=L QQQ 7GQ= TBS UFILE,PFLAG(2),0 7H9W BZE 0 XNOFI [J IF NO FILE 7HPG TBS POPEN,PFLAG(2),0 7J96 BNZ 0 XNOFI [J IF FILE OPEN 7JNQ FLIPS PFLAG(2),,POPEN [INDICATE FILE OPEN 7K8B LDN 1 0 7KN2 SPARANOT 1,1 [GET PARAMETER FRO M CALAS 7L7L XFID MHUNT 3,CPB,CMULTI 7LM= BNG 3 XNOFID 7M6W NAMETOP 3,ADATA,ERREPLY [RENAME MULTI SO AS NOT TO CONFUSE 7MLG BRN XFID [USEROPEN 7N66 XNOFID 7NKQ MHUNT 3,CPB,CUNI 7P5B NAMETOP 3,FILE,FNAME [RENAME BLOCK 7PK2 CREATEB [SET UP FILE/CREATE BLOCK 7PXC ... MHUNT 3,FILE,CREATE 7Q9S ... BS 3,CESERIAL 7QJ= LDCT 0 #400 7R3W ADN 0 #12 7RHG STO 0 CETM(3) 7S36 #SKI AMULTUSER 7SGQ USEROPEN REAKIN,APPEND,CREATE,EMPTY,MULT,FILE 7T2B #SKI AMULTUSER<1$1 7TG2 USEROPEN REAKIN,APPEND,CREATE,EMPTY,STREAMS 7T^L UNFID MHUNT 3,ADATA,ERREPLY 7WF= BNG 3 NOFID 7WYW NAMETOP 3,CPB,CMULTI 7XDG BRN UNFID 7XY6 NOFID 7YCQ REPERR YAKO 7YXB BRN ULTND [PACK UP IF ERROR 7^C2 REAKIN 7^WL COMBRKIN [ACTION IF BREAKIN 82B= XNOFI 82TW QBRKN TESTBRKIN ZBRKN [TEST FOR BREAK-IN 83*G YAKO 83T6 ... TBS STARTPRINT,PFLAG(2),0 84#Q BNZ 0 NOSPACE 84SB CALL 6 SPACES [OUTPUT ALINE OF SPACES 85#2 NOSPACE 85RL ZOUT STOZ AWORK2(2) 86?= LDX 6 4 86QW SBN 6 512 87=G BNG 6 ZGTWD [IF REQUEST FOR < OR = 512 WORDS THEN 87Q6 # [ SET AWORK2 TO 0 AND LEAVE X4 ALONE 889Q STO 6 AWORK2(2) [OTERWISE X4=512 FOR THE CURRENT 88PB LDN 4 512 [ GETWORD AND THE EXCESS IS STORED IN 8992 # [ AWORK2 89NL ZGTWD 8=8= #SKI K6PRINT>699-699 8=MW TRACE 4,PTGETWDC 8?7G # X5=O/P ADDR;X6=GEORGE ADDR;X4=WORDS REQUESTED;X7=WORDS GIVEN(G3) 8?M6 # OR WORDS TO THE END OF UNACCESSED AREA 8#6Q GETWORDX 5,6,XACCESS(1),7,4,ZBRKN,1 8#LB TESTREP OK,ZGOOD 8*62 TESTREP2 LOADERR,TIFO 8*KL #SKI G4 8B5= ( 8BJW TESTREPN NOTUSED,RELERR 8C4G LDX 0 AWORK2(2) [WORDS STILL TO BE PRINTED 8CJ6 ADX 0 4 [+WORDS REQUESTED-NO OF WORDS TO 8D3Q SBX 0 7 [THE END OF UNACCESSED AREA IN X0 8DHB BZE 0 P1FIN [J IF ZERO 8F32 BNG 0 P1FIN [OR NEGATIVE 8FGL STO 0 4 [OTHERWISE X4=NO OF WORDS REMAINING 8G2= LDX 0 5 8GFW ADX 0 7 8G^G STO 0 AWORK2(2) [AWORK2=O/P ADDRESS 8HF6 CALL 7 OUTLINE [OUTPUT PARAMETER IF NECESSARY 8HYQ LDX 5 AWORK2(2) [SET X5=O/P ADDRESS 8JDB BRN ZOUT [AND DO ANOTHER GETWORDX 8JY2 # 8KCL P1FIN 8KX= CALL 7 OUTLINE [OUTPUT PARAMETER 8LBW ADX 5 4 [O/P ADDRESS OF LAST WORD REQUESTED 8LWG ADX 5 AWORK2(2) [+NO OF WORDS STILL TO BE PRINTED 8MB6 SBN 5 1 8MTQ CALL 7 XOUTPAR [OUTPUT PARAMETER 8N*B CALL 7 XOUTMESS [OUTPUT'NOTUSED'MESSAGE 8NT2 UNSETBIT NU1,PFLAG(2) [REMOVE NOTUSED MARKER AND 8P#L BRN ZFUNI [LOOK FOR MORE PARAMETERS 8PS= RELERR 8Q?W ) 8QRG GEOERR 1,PRINT1 8R?6 ZGOOD 8RQQ SBX 5 6 8S=B NGS 5 AWORK3(2) [AWORK3=G.ADDR-O/P ADDR 8SQ2 LDX 5 6 [X5=GEORGE ADDRESS OF PRINTWORD 8T9L ADX 4 AWORK2(2) [IF WE HAVE ACCESS ALL WORDS 8TP= LDX 0 4 [ REQUIRED,PROCEED TO PRINT THEM 8W8W SBX 0 7 8WNG STO 3 ACOMMUNE1(2) [REMEMBER PREVIOUS WORD 8X86 BNG 0 ZGOTAL 8XMQ LDX 4 7 [...OTHERWISE PRINT THE NUMBER GIVEN 8Y7B STO 0 AWORK2(2) [ AND SET AWORK2 TO THE RESIDUE. 8YM2 BRN ZIN 8^6L ZGOTAL 8^L= STOZ AWORK2(2) 925W ZIN 92KG #SKI G4 9356 ( 93JQ TBS NU1,PFLAG(2),0 944B BZE 0 ZBETTER [J IF PRGEDING AREA NOT'NOTUSED' 94J2 ERS 0 PFLAG(2) [UNSET NOTUSED FLAG 953L STO 5 AWORK4(2) [THIS IS SILLY 95H= SBX 5 AWORK3(2) 962W SBN 5 1 96GG CALL 7 XOUTPAR [OUTPUT LAST LOCATION AS PARAMETER 9726 LDX 5 AWORK4(2) 97FQ STOZ AWORK4(2) 97^B CALL 7 XOUTMESS [OUTPUT MESSAGE 98F2 CALL 6 SPACES 98YL SMO 5 99D= LDX 6 0 [X6=CURRENT PRINTWORD 99XW BRN ZPRT 9=CG ZBETTER 9=X6 ) 9?BQ ... TBS STARTPRINT,PFLAG(2),0 9?WB ... BZE 0 ZIN1 [J IF NOT 1ST PARAM TO BE PRINTED 9#B2 ERS 0 PFLAG(2) 9#TL FPCACA 1,2,N 9**= LDX 0 ALMT(1) 9*SW ANDN 0 #40 [PICK UP BRANCH MOD& 9B#G SRC 0 11 9BS6 ORS 0 PFLAG(2) 9CRB ZIN1 9D?2 SMO 5 9DQL LDX 6 0 [X6=THE VALUE OF THE NEXT O/P WORD 9DXS ... TBS STARTAREA,PFLAG(2),0 9F52 ... BZE 0 PHINE 9F=8 ... ERS 0 PFLAG(2) 9FCB ... BRN X6NE 9FJJ ...PHINE TXU 6 ACOMMUNE1(2) 9FPW BCS X6NE [J IF NOT EQUAL TO PREVIOUS WORD 9G9G LDX 0 AWORK4(2) [COUNT = 0? 9GP6 BNZ 0 ZNFT [J IF NOT 9H8Q LDN 0 1 [OTHERWISE ADD 1 TO COUNT 9HNB STO 0 AWORK4(2) 9J82 ZNFT LDN 7 1 9JML TXU 7 4 9K7= BCS X6Z 9KLW LDX 0 AWORK2(2) 9L6G BZE 0 X6ZT [IF X6=0 AND THIS IS THE LAST PRINTWO 9LL6 X6Z LDX 0 AWORK4(2) [ZERO COUNT 9M5Q TXU 0 THREE(1) [INCREMENT THE ZERO COUNT UNLESS 9MKB BCC X6ZA [ IT WAS PREVIOUSLY 9N52 ADS 7 AWORK4(2) [ THREE 9NJL X6ZA SMO 0 9P4= BRN X6ZB 9PHW X6ZB BRN ZPRT [IF ZERO COUNT=0,PRINT CURRENT WORD 9Q3G BRN ZFIN [ =1,IGNORE CURRENT WORD 9QH6 CALL 6 SPACES [ =2,OUTPUT ALINE OF SPAC 9R2Q BRN ZFIN [ =3,IGNORE CURRENT WORD 9RGB # 9S22 X6ZT LDX 0 AWORK4(2) [ZERO COUNT 9SFL BZE 0 ZPRT [IF 0,STRAIGHTFORWARD PRINT 9S^= SBN 0 2 9TDW BNZ 0 ZC13T [IF ZERO COUNT = 2, 9TYG CALL 6 SPACES [OUTPUT ALINE OF SPACES 9WD6 ZC13T CALL 7 PRINTOLD 9WXQ BRN ZFIN 9XCB # 9XX2 X6NE LDX 0 AWORK4(2) [ZERO COUNT WORD 9YBL STOZ AWORK4(2) [RESET IT TO ZERO 9YW= SBN 0 2 9^*W BNG 0 ZPRT [IF COUNT 0 OR 1 PRINT 9^TG LDN 6 0 =2*6 SBN 5 1 [BACKSTEP TO PREVIOUS WORD =2SQ CALL 7 PRINTOLD [PRINT IT =3#B ADN 5 1 [STEP FORWARD TO CURRENT WORD =3S2 # [ PRINTWORD. =4?L ZPRT CALL 7 PRINT [CURRENT PRINTWORD TO MONITORING FILE =4R= # =5=W ZFIN TESTBRKIN ZBRKN [TEST FOR BREAK-IN =5QG # =6=6 SMO 5 =6PQ LDX 6 0 =79B STO 6 ACOMMUNE1(2) [REMEMBER PREVIOUS WORD =7P2 ADN 5 1 [STEP GEORGE ADDRESS OF O/P WORD =88L BCT 4 ZIN1 [IF COUNT NOT EXHAUSTED CONTINUE =8N= # [ INNER LOOP =97W LDX 4 AWORK2(2) =9MG BZE 4 QRVFS [EXIT FROM OUTER LOOP IF ALL PRINTING ==76 LDX 3 ACOMMUNE1(2) [COMPLETE ==LQ SBX 5 AWORK3(2) [OTHERWISE RESET X4 TO TOTAL COUNT OF =?6B # [ PRINTWORDS,SET X5 TO O/P ADDRESS =?L2 BRN ZOUT [ AND DO ANOTHER GETWORD. =#5L QRVFS TBS RESVIOL,PFLAG(2),0 =#K= BZE 0 ZFUNI =*4W [ NEXT PARAMETER =*JG BRN PERR4 [ OTHERWISE ISSUE ERROR MESSAGE FIRST =B46 # =BHQ # THE LAST PART OF THIS SEGMENT CLEARS UP AFTER BREAK-IN OR AT END OF =C3B # COMMAND. =CH2 # =D2L PR1 TBS PPRES,PFLAG(2),0 =DG= BNZ 0 TERM [J IF PARAMETER PRESENT BIT SET =D^W LDX 4 PERM6(1) [ISSUE ERROR MESSAGE =FFG CALL 7 SRERR =F^6 TERM =GDQ TIFO LDN 7 0 [SET X7 FOR NORMAL TERMINATION =GYB TPR1 TBS POPEN,PFLAG(2),0 =HD2 BZE 0 YNF [J IF NO USER FILE =HXL #SKI AMULTUSER =JC= NOST TESTMULT STCL =JWW #SKI AMULTUSER<1$1 =KBG NOST TESTREAM STCL [J IF MULTIFILE =KW6 MFREE FILE,FABSNB =L*Q CLOSE =LTB BRN YNF =M*2 STCL CLOSE =MSL #SKI AMULTUSER =N#= STC CLOSEMULT [CLOSE SDF =NRW #SKI AMULTUSER<1$1 =P?G STC CLOSESTREAM [CLOSE SDF =PR6 YNF TESTGETW NOGWD =Q=Q WORDFIN [CLEAR UP IF GETWORD =QQB NOGWD BZE 7 ULTND [J IF NOT BREAKIN =R=2 ABANDCOM [RETURN TO COMMAND PROCESSOR =RPL ULTND ENDCOM [ " " " " " =S9= XTOF LDN 7 0 [FILE OPEN & NO BREAKIN =SNW BRN NOST =T8G XABAN LDN 7 1 [FILE OPEN & BREAKIN =TN6 BRN NOST =W7Q NIKAERB =WMB LDN 7 1 [SDF OPEN & BREAKIN =X72 BRN STC =XLL # =Y6= ZBRKN LDN 7 1 [SET X7 FOR BREAK-IN =YKW BRN TPR1 =^5G # =^K6 # ERROR CASES WHICH END COMMAND ?24Q # ?2JB PERR7 LDX 1 FX1 ?342 LDX 4 PERM7(1) ?3HL CALL 7 SRERR ?43= BRN ULTND ?4GW PERR8 ?52G ... TBS STARTPRINT,PFLAG(2),0 ?5G6 BZE 0 PR1 [J IF REGION FOUND ?5^Q CALL 7 PPASS ?6FB LDX 4 PERM8(1) ?6^2 CALL 7 SRERR [PARAMETER FORMAT ERROR ?7DL BRN TIFO ?7Y= PERR9 ?8CW SBX 5 AWORK3(2) ?8XG SBN 5 1 ?9C6 OUTNUM 5,0 ?9WQ MONOUT JFILEVIOL ?=BB BRN XTOF ?=W2 PERR10 ??*L LDX 4 PERM9(1) ??T= CALL 7 SRERR ?##W BRN XTOF ?#SG # ?*#6 # SUBROUTINES ?*RQ # ?B?B # THE FOLLOWING TWO SUBROUTINES SET UP THE BUFFER READY FOR OUTPUT AND ?BR2 # CALL THE S/R XMSOUT TO OUTPUT TO THE APPROPRIATE FILE ?C=L # PRINTOLD ONLY SETS THE ADDRESS,AS THE REMAINDER OF THE BUFFER WILL ?CQ= # HAVE BEEN SET UP BY THE PREVIOUS LINE OF OUTPUT ?D9W # ?DPG PRINTOLD ?F96 LDN 6 0 ?FNQ BRN START ?G8B # ?GN2 PRINT [CONVERTS A GIVEN WORD TO VARIOUS ?H7L # [CHARACTER FORMS AND INSERTS THEM ?HM= [IN THE MONITORING FILE ?J6W LDN 6 1 ?JLG START MHUNTW 3,ADATA,CSTORE [FIND THE DATA BLOCK ?K66 LDX 1 FX1 ?KKQ LDX 2 FX2 ?L5B STO 4 PACCDUMP(3) [REMEMBER COUNT ?LK2 STO 5 PACCDUMP+1(3) [REMEMBER GEORGE ADDR OF PRINTWORD ?M4L SBX 7 FX1 ?MJ= STO 7 PACCDUMP+2(3) [REMEMBER RELATIVISED CALL ADDRESS ?N3W LDX 0 ACES [SPACE WORD ?NHG STO 0 PADDR(3) ?P36 STO 0 PADDR+1(3) [SPACE FILL ADDR AREA OF BUFFER ?PGQ BZE 6 ZINAD ?Q2B PFRIG SMO 5 ?QG2 LDX 6 0 [OTHERWISE X6:=PRINTWORD ?Q^L LDN 4 PADDR(3) ?RF= LDN 5 PADDR+1(3) ?RYW MOVE 4 14 [SPACE FILL THE BLOCK ?SDG STO 6 PCHAR(3) [STORE WORD IN CHARACTER FORM ?SY6 LDX 1 6 [OCTAL FORM IN A1+7,A1+8 ?TCQ LDN 7 8 ?TXB PR2 LDN 0 0 ?WC2 SLL 01 3 ?WWL DCH 0 POCTAL+1(3) ?XB= BCHX 3 £ ?XTW BCT 7 PR2 ?Y*G LDN 0 #23 [IE # ?YT6 SBN 3 2 [RESET X3 TO START OF BLOCK ?^#Q SMO 3 ?^SB DCH 0 POCTAL [ # TO CHAR POSN 3 OF POCTAL #2#2 # #2RL # [INSTRUCTION FORM TO A1+11 - A1+14 #3?= LDCH 4 PFLAG(2) [MODE OF MEMBER 0 #3QW LDN 7 PINST #4=G INPRINTX 6,7,4,ADATA,CSTORE #4Q6 MHUNTW 3,ADATA,CSTORE #59Q # #5PB [SIGNED DECIMAL FORM TO A1+5 - A1+6 #692 LDN 0 6 #6NL LDN 5 #33 [IE + #78= BPZ 6 Q5 [IF PRINTWORD POSITIVE,CONVERT IT #7MW LDN 5 #35 [IE - #87G NGX 6 6 [OR IF NEGATIVE,BUT NOT #40000000 #8M6 BPZ 6 Q5 [ NEGATE AND CONVERT #96Q LDX 6 MAGIC(1) [IF #40000000,NEGATION SHOULD HAVE #9LB LDN 7 0 [ GIVEN #37777777+1,WHICH,WHEN MULT- #=62 BRN Q99 [ IPLIED BY MAGIC LEAVES X6,X7 SET UP #=KL # [ AS SPECIFIED #?5= Q5 MPY 6 MAGIC(1) #?JW Q99 MODE 1 [SUPPRESS NON-SIGNIFICANT ZEROS ##4G LDX 2 3 [X2 WILL BE LEFT POINTING TO THE ##J6 BCHX 3 £ [ POSITION OF THE ARITHMETIC SIGN #*3Q Q6 CBD 6 4 #*HB TXU 4 SPACE(1) [IF CBD PRODUCES A SPACE, #B32 BCS Q8 #BGL LDX 2 3 [ UPDATE X2 #C2= Q8 DCH 4 PSDEC(3) #CFW BCHX 3 £ #C^G BCT 0 Q6 #DF6 MODE 0 [LAST ZERO UNSUPRESSED #DYQ CBD 6 PSDEC(3) #FDB DCH 5 PSDEC(2) #FY2 SBX 3 X7CHARS(1) [X3 POINTS TO DATA BLOCK AGAIN #GCL LDX 2 FX2 #GX= # #HBW # [ AND INSERTED IN A1 TO A1+1 #HWG ZINAD #JB6 LDX 4 PACCDUMP+1(3) [GEORGE [DDRESS OF PRINTWORD #JTQ SBX 4 AWORK3(2) [-CONVERTED TO O/P ADDRESS #K*B MPY 4 MAGIC(1) #KT2 LDN 0 6 #L#L BCHX 3 £ [STEP FIRST CHARACTER POSITION #LS= MODE 1 [ZERO SUPPRESSION #M?W Q9 CBD 4 PADDR(3) #MRG BCHX 3 £ #N?6 BCT 0 Q9 #NQQ MODE 0 [-EXCEPT LAST CHARACTER #P=B CBD 4 PADDR(3) #PQ2 SBN 3 1 [X3 POINTS TO DATA BLOCK (+0.3) #Q9L # #QP= # [BUFFER NOW SET UP #R8W LDX 4 PACCDUMP(3) #RNG LDX 5 PACCDUMP+1(3) #S86 LDX 7 PACCDUMP+2(3) #SMQ LDN 3 17 #T7B CALL 6 XMSOUT #TM2 # #W6L ADX 7 FX1 [MAKE CALL ADDRESS ABSOLUTE #WL= EXIT 7 0 #X5W # #XKG # #Y56 # #YJQ XCDB [CONVERTS CHARACTER STRING TO BINARY, #^4B LDCT 6 #200 [ HALTING AT END OF STRING OR FIRST #^J2 LDN 7 0 [ NOW NUMERIC CHARACTER.COUNT (X4) *23L ZCVT CDB 6 APARA(3) [ AND POINTER (X3) UPDATED FOR EACH *2H= BCS ZEND [ NUMERIC CHAR FOUND *32W BCHX 3 £ [ S/L RESULT IN X7. *3GG BCT 4 ZCVT [IF EITHER CONVERTED NO. WAS DOUBLE *426 ZEND EXIT 0 0 [ LENGTH OR FIRST CHARACTER NON- *4FQ [ NUMERIC X6 SET NZ.X6 INITIALISED *4^B [ T0 #20000000 SO 1ST CDB MAKES X6=0 *5F2 # *5YL # *6D= # *6XW XTEST [TESTS CHARACTER IN X5 AGAINST'THAT *7CG LDCH 1 APARA(3) [ POINTED TO BY X3,STEPING X3 IF *7X6 TXU 1 5 [ THESE COINCIDE *8BQ BCS ZDIF *8WB BCHX 3 £ *9B2 SBN 4 1 *9TL EXIT 0 1 [EXIT IF MATCH FOUND *=*= ZDIF EXIT 0 0 [EXIT IF MATCH NOT FOUND *=SW # *?#G # *?S6 # *#?Q SRERR [JUST THE MACRO ERRORX FOR THE OUTPUT *#RB SBX 7 FX1 [ OF MONITORING FILE MESSAGES **?2 ERRORX 4 **QL ADX 7 FX1 *B== EXIT 7 0 *BPW # *C9G # *CP6 SPACES *D8Q LDN 3 2 *DNB # *F82 # THIS SUBROUTINE OUTPUTS A LINE TO THE MONITORING FILE OR MOVES *FML # DATA TO A FILE FUWB.ON ENTRY X3 CONTAINS THE NUMBER OF WORDS *G7= # INVOLVED *GLW XMSOUT *H6G SBX 6 FX1 *HL6 LDX 2 FX2 *J5Q TBS UFILE,PFLAG(2),0 *JKB BZE 0 XMON [J IF OUTPUT TO M/F *K52 TBS POPEN,PFLAG(2),0 *KJL BZE 0 YMON [NOTHING IF NO FILE OPEN *L4= LDX 7 3 [REMEMBER X3 *LHW OKAY LDX 3 7 *M3G STEP ,0(3),XABAN *MH6 TESTREP REFUSED,PERR10 *N2Q TESTREPN FILEFULL,TST [IF FILEFULL- TO NEXT STREAM *NGB #SKI AMULTUSER *P22 TESTMULT TNOC *PFL #SKI AMULTUSER<1$1 *P^= TESTREAM TNOC *QDW BRN PERR9 [OUTPUT MESSAGE *QYG TNOC CLOSE [CLOSE ELEMENT *RD6 CREATEB *RXQ MHUNT 3,FILE,CREATE *SCB LDCT 0 #420 *SKL ... STO 0 CEINF1(3) *SRW ... LDCT 0 #400 *T26 ... ADN 0 #12 *T8B ... STO 0 CETM(3) *TBL #SKI AMULTUSER *TW= USEROPEN NIKAERB,APPEND,CREATE,EMPTY,MULTEL *W*W #SKI AMULTUSER<1$1 *WTG USEROPEN NIKAERB,APPEND,CREATE,EMPTY,STREAMCOMP *X*6 REPERR OKAY [TEST FOR ERROR *XSQ LDN 7 0 [SDF OPEN & BREAKIN *Y#B BRN STC *YS2 TST SMO 7 *^?L LDN 0 0 [WORD COUNT *^R= STO 0 0(3) B2=W LDN 0 #41 B2QG STO 0 1(3) B3=6 SBN 7 2 B3PQ BZE 7 XSPACES [J IF LINE OF SPACES B49B ADN 3 2 [UPDATE POINTER B4P2 MHUNT 2,ADATA,CSTORE [FIND BLOCK B58L ADN 2 PADDR B5N= SMO 7 B67W MOVE 2 0 [MOVE A DATA B6MG XSPACES B776 LDX 7 PACCDUMP+2-PADDR(2) [RESET X7 B7LQ BRN YMON [AND EXIT B86B XMON B8L2 SBN 3 2 B95L BZE 3 PMON [J IF SPACES B9K= SLL 3 2 [SET CHARACTER COUNT B=4W PMON B=JG SMO FX1 B?46 LDX 1 XCAT [CATEGOIY BRTS B?HQ OUTMON 3,PADDR,1,ADATA,CSTORE B#3B YMON B#H2 LDX 2 FX2 B*2L LDX 1 FX1 B*G= ADX 6 FX1 B*^W EXIT 6 0 BBFG # BB^6 # BCDQ # BCYB #SKI G4 BDD2 ( BDXL # BFC= # G4 SUBROUTINES BFWW # ============== BGBG # BGW6 # THIS SUBROUTINE IS OBEYED FOLLOWING A NOTUSED REPLY FROM GETWORD BH*Q # IF THIS IS THE 1ST NOTUSED REPLY IT WILL:- BHTB # 1)OUTPUT THE LAST LOCATION ACCESSED IF THIS WAS THE LAST IN A BJ*2 # SERIES OF IDENTICAL LOCATIONS BJSL # 2)OUTPUT A LINE OF SPACES BK#= # 3)SET UP A PARAMETER BLOCK AND OUTPUT THE 1ST LOCATION ADDRESS BKRW # AS A PARAMETER BL?G # BLR6 OUTLINE BM=Q SBX 7 FX1 BMQB TBS NU1,PFLAG(2),0 BN=2 BNZ 0 PTNOT1 [J IF NOT 1ST NOTUSED REPLY BNPL SETBIT NU1,PFLAG(2) BP9= LDX 0 AWORK4(2) BPNW SBN 0 2 BQ8G STO 7 AWORK4(2) [REMEMBER X7 BQN6 BNG 0 NOTZE [J IF NOT MORE THAN 1 BR7Q SBN 5 1 BRMB STOZ AWORK3(2) [BIG FIDDLE BS72 CALL 7 PRINTOLD BSLL ADN 5 1 BT6= NOTZE CALL 6 SPACES [OUTPUT A LINE OF SPACES BTKW OUTBLOCN 8 [OUTPUT PARAMETER BLOCK BW5G CALL 7 XOUTPAR [OUTPUT 1ST LOCATION BWK6 LDX 7 AWORK4(2) BX4Q STOZ AWORK4(2) BXJB PTNOT1 BY42 ADX 7 FX1 BYHL EXIT 7 0 B^3= # B^GW # C22G # OUTPUTS THE CONTENTS OF X5 AS A PARAMETER C2G6 # C2^Q XOUTPAR C3FB SBX 7 FX1 C3^2 OUTNUM 5,0 C4DL ADX 7 FX1 C4Y= EXIT 7 0 C5CW # C5XG # C6C6 # OUTPUTS THE NOTUSED MESSAGE TO THE APPROPRIATE FILE .CALLS XMSOUT IF C6WQ # THIS IS AN USER SPECIFIED FILE C7BB # C7W2 XOUTMESS C8*L SBX 7 1 C8T= TBS UFILE,PFLAG(2),0 C9#W BNZ 0 XFILE [J IF OUTPUT TO FILE C9SG MONOUT JNOTUSED C=#6 BRN XNOFILE C=RQ XFILE C??B ASSMESS XJNOTUSED(1) C?R2 STO 7 AWORK4(2) C#=L MHUNT 1,GMON,AOUT C#Q= LDX 3 A1(1) C*9W ADN 1 A1+2 C*PG MHUNT 2,ADATA,CSTORE CB96 ADN 2 PADDR CBNQ ADN 3 3 CBYJ ... ANDN 3 #7777 CC8B SRL 3 2 [CHARS-WDS CCD8 ... ADN 3 2 CCN2 MOVE 1 0(3) [MOVE TO OUTPUT BUFFER CD7L CALL 6 XMSOUT [AND OUTPUT MESSAGE CDM= LDX 7 AWORK4(2) CF6W STOZ AWORK4(2) CFLG XNOFILE CG66 ADX 7 FX1 CGKQ EXIT 7 0 CH5B # CHK2 # CJ4L # CJJ= ) CK3W MENDAREA 30,K100PRINT CKHG # CL36 # CLGQ #END ^^^^ ...65531551001700000000