15 22FL #SEG SPOOL [LEN WAGSTAFF 7 22_= #OPT K0SPOOL=0 14 23DW #LIS K0SPOOL>K0GREATGEO>K0ALLGEO 9 23YG 8HSPOOL 4 24D6 # 4 24XQ # 19 25CB # THIS SEGMENT IMPLEMENTS THE SPOOL COMMAND (8.30 ONWARDS) IE 19 25X2 # CHANGES THE MODE OF OPERATION OF A 7503. THE 1ST PARAMETER TO 19 26BL # THE COMMAND IS 'MODE OF OPERATION', IE 'OFF', 'ATTENDED', OR 17 26W= # 'UNATTENDED'. ALL THE OTHER PARAMETERS ARE PERIPHERAL 19 27*W # DESCRIPTION PARAMETERS EACH DEFINING AN INTERFACE OF A 7503 4 27TG # 11 28*6 SEGENTRY K1SPOOL,X1SPOOL 4 28SQ # 9 29#B STRING 4H00OF 9 29S2 4H00AT 9 2=?L 4H00UN 4 2=R= # 9 2?=W # READY MADE BIT MASKS. 4 2?QG # 19 2#=6 SPOFFMASK1 #74777777 [OFF ;IDF IDENT CELL 15 2#PQ SPMASK1 #03000000 [UNATTENDED 14 2*9B #02000000 [ATTENDED 4 2*P2 # 18 2B8L SPOFFMASK2 #77777771 [OFF ;AMXOR/ADCB 13 2BN= SPMASK2 #00000006 [UNAT 13 2C7W #00000004 [AT 4 2CMG # 18 2D76 SPOFFMASK3 #76377777 [OFF ;IDF 7020 CELL 13 2DLQ SPMASK3 #01400000 [UNAT 13 2F6B #01000000 [AT 4 2FL2 # 18 2G5L SPOFFMASK4 #77757577 [OFF ;A7020/INFORM 13 2GK= SPOFFMASK5 #77767677 [UNAT 13 2H4W SPMASK4 #00020200 [UNAT 13 2HJG #00020000 [AT 13 2J46 SPMASK5 #00010100 [UNAT 13 2JHQ #00010000 [AT 4 2K3B # 14 2KH2 # CONVERSION TABLE FOR DEVICE TYPES; IN IDF 11 2L2L # LP=1,CR=2,TW=3,TR=4,TP=5 15 2LG= # IN CPAR/JSCE, GEORGE DEVICE TYPES ARE USED - 11 2L_W # LP=2,CR=3,TW=63,TR=0,TP=1 4 2MFG # 9 2M_6 PCTTAB #020000 9 2NDQ #030000 9 2NYB #770000 8 2PD2 +0 9 2PXL #010000 4 2QC= # 9 2QWW PAPFERR +APFERR 9 2RBG PJPARMIS +JPARMIS 9 2RW6 PJSETP8 +JSETP8 10 2S*Q PJSPNOTPER +JSPNOTPER 10 2STB PJUSNOTPER +JUSNOTPER 4 2T*2 # 7 2TSL # ERROR PATHS 4 2W#= # 10 2WRW NUTS GEOERR 1,SPOOLBUG 4 2X?G # 8 2XR6 W1 LDX 1 FX1 17 2Y=Q LDX 7 PJSETP8(1) [1ST PARAM MISSING 10 2YQB LDX 6 PJPARMIS(1) 8 2_=2 COMERRX 6,7 4 2_PL # 8 329= W2 LDX 1 FX1 15 32NW LDX 6 PAPFERR(1) [FORMAT ERROR 7 338G COMERRX 6 4 33N6 # 8 347Q W3 LDX 1 FX1 18 34MB LDX 6 PJSPNOTPER(1) [SPOOLING NOT PERMITTED 8 3572 BRN W34 4 35LL # 8 366= W4 LDX 1 FX1 19 36KW LDX 6 PJUSNOTPER(1) [UNATTENDED SPOOLING NOT PER. 17 375G W34 MHUNTW 3,CPAR,JSCE [ON UNIT SO-AND-SO 15 37K6 LDX 0 JSCEQ(3) [CT OF CHARS 8 384Q ANDN 0 #7777 11 38JB OUTPARAM 0,JSCER,CPAR,JSCE 7 3942 ERRORX 6 8 39HL BRN XFREE 4 3=3= # 7 3=GW # SUBROUTINES 4 3?2G # 5 3?G6 SEARCH 8 3?_Q SBX 7 FX1 8 3#FB MSEARCH 1,2,4 8 3#_2 ADX 7 FX1 7 3*DL EXIT 7 0 4 3*Y= # 8 3BCW XHUNT SBX 0 FX1 8 3BXG LDX 2 FX2 9 3CC6 STO 0 AWORK4(2) 17 3CWQ LDXC 7 6 [IDF RECORD NUMBER 17 3DBB LDEX 6 6 [INTERNAL CELL PTR 7 3DW2 SRL 7 9 10 3F*L STO 7 ACOMMUNE3(2) 19 3FT= MXB 2 [X2=PTR TO RECORD (IN CORE) 18 3G#W ADX 2 6 [X2=PTR TO CELL (IN CORE) 8 3GSG SMO FX2 9 3H#6 LDX 0 AWORK4 8 3HRQ ADX 0 FX1 7 3J?B EXIT 0 0 4 3JR2 # 4 3K=L # 4 3KQ= # 18 3L9W # SET MARKER ACCORDING TO OFF,AT,UNAT; FIND APPROPRIATE IDF 19 3LPG # CELL; SET OR UNSET BITS THEREIN; IF MOPPED ON, SET OR UNSET 18 3M96 # BITS IN AMXOR/ADCB OR A7020/INFORM; WHEN FINISHED, WRITE 11 3MNQ # TO IDF, CLOSE IT, AND ENDCOM. 4 3N8B # 5 3NN2 X1SPOOL 17 3P7L SPARAPAS [GET 1ST PARAMETER 10 3PM= MHUNT 3,CPB,CUNI 9 3Q6W LDX 0 ANUM(3) 16 3QLG BNG 0 W1 [MISSING OR NULL 8 3R66 BZE 0 W1 8 3RKQ ANDN 0 #7777 7 3S5B SBN 0 2 15 3SK2 BNG 0 W2 [FORMAT ERROR 9 3T4L LDX 0 APARA(3) 8 3TJ= SRL 0 12 9 3W3W TXU 0 STRING(1) 15 3WHG BCC SPOFF [SPOOL OFF 10 3X36 TXU 0 STRING+1(1) 16 3XGQ BCC SPAT [SPOOL ATTENDED 10 3Y2B TXU 0 STRING+2(1) 16 3YG2 BCC SPUN [SPOOL UNATTENDED 15 3Y_L BRN W2 [FORMAT ERROR 4 3_F= # 17 3_YW SPOFF LDX 0 GSIGN [SET MARKER IN AWORK2 8 42DG BRN STO 7 42Y6 SPAT LDN 0 1 8 43CQ BRN STO 7 43XB SPUN LDN 0 0 9 44C2 STO STO 0 AWORK2(2) 4 44WL # 19 45B= LDX 0 ANUM(3) [THROW AWAY 1ST PARAMETER.. 19 45TW ANDN 0 #7777 [..SO WE CAN DO ^PARSORT ALL^ 19 46*G PARAMOVE 0 [SET MARKER ^NO PERIPHERAL.. 19 46T6 LDN 0 1 [DESC. PARAMETERS ACCESSED.. 14 47#Q STO 0 AWORK1(2) [ YET^ 4 47SB # 10 48#2 PARSORT NUTS,ALL,IDF 4 48RL # 16 49?= NEXT HUNTW 3,CPAR,JSCE [GET NEXT PARAM 8 49QW BNG 3 OVER 9 4==G LDX 0 JSCEB(3) 15 4=Q6 BPZ 0 W3 [J IF LOCAL 9 4=RN ... LDX 4 JSCEB(3) 8 4=T= ... SRL 4 21 7 4=WS ... SBN 4 5 15 4=YB ... BNZ 4 NEXTA [J IF NOT PCT 9 4=_Y ... LDX 4 JSCEA(3) 16 4?3G ... BZE 4 NEXTA [J IF MOP LINE 8 4?54 ... ANDN 4 #77 17 4?6L ... BZE 4 W3 [J IF NO INTERFACE 5 4?88 ...NEXTA 20 4?9Q STOZ AWORK1(2) [=^PERIPH.DESC.PARAM ACCESSED^ 9 4?PB LDX 0 JSCEA(3) 16 4#92 BZE 0 W3 [J IF MOP LINE 16 4#NL LDCH 0 JSCEA(3) [GET DEVICE TYPE 13 4*8= BZE 0 TOK [TR 7 4*MW SBN 0 2 13 4B7G BZE 0 TOK [LP 7 4BM6 SBN 0 1 13 4C6Q BZE 0 TOK [CR 8 4CLB SBN 0 60 13 4D62 BZE 0 TOK [TW 17 4DKL BRN W3 [WRONG DEVICE TYPE 4 4F5= # 18 4FJW TOK STOZ ACOMMUNE3(2) [FIND ZERO RECORD OF IDF 7 4G4G NEW 1 4 4GJ6 # 13 4H3Q SAWCEJX JSCEB(3),W3,SPIPB,SPMX 4 4HHB # 17 4J32 # MESSAGE BUFFERING: FIRST WE HAVE A NUMBER OF CHECKS. 18 4JGL # FOR INPUT DEVICES (A) UNATTENDED IS NOT ALLOWED (B) 7503 17 4K2= # BIT IN IDF MAY NOT BE SET - SO WE MUST BRN ROUND OUT 20 4KFW # TEST. FOR OUTPUT DEVICES ALL CASES ARE ALLOWED & 7503 BIT ALWAYS 6 4K_G # CHECKED. 4 4LF6 # 9 4LNY ...SPIPB LDEX 0 JSCEB(3) 14 4LYQ ... BZE 0 W3 [J IF CI 18 4M8J ... STOZ 6 [INITIALISE MARKER ;CHECK 15 4MDB LDCH 0 JSCEA(3) [ 7503 BIT^ 7 4MY2 SBN 0 2 17 4NCL BZE 0 SPOUT [J IF OUTPUT DEVICE 19 4NX= LDX 6 GSIGN [SETMARKER^DONTCHECK7503BIT^ 8 4PBW SBN 0 61 14 4PWG BZE 0 SPOUT [J IF TW 9 4QB6 LDX 0 AWORK2(2) 16 4QTQ BZE 0 W4 [J IF UNAT INPUT 4 4R*B # 8 4RT2 SPOUT LDN 2 BIPB 9 4S#L LDEX 4 JSCEB(3) 9 4SS= LDX 5 JSCEA(3) 8 4T?W ANDN 5 #7777 16 4TRG CALL 7 SEARCH [FIND IPB CELL 8 4W?6 ADN 2 BLINE 7 4WQQ LDX 4 5 17 4X=B CALL 7 SEARCH [FIND IDENTIFIER CELL 17 4XQ2 ADX 2 1 [X2=ABS PTR TO CELL 8 4Y9L LDX 1 FX1 18 4YP= ... BNZ 6 SM0 [J IF ^DONTCHECK7503BIT^ 9 4_8W LDX 0 BTYPE(2) 7 4_NG SLL 0 8 16 5286 BPZ 0 W3 [J IF NOT 7503 4 52MQ # 10 537B SM0 LDX 0 SPOFFMASK1(1) 18 53M2 ANDS 0 BNUMB(2) [UNSET BITS FOR STARTERS 8 546L SMO FX2 9 54L= LDX 0 AWORK2 19 555W ... BNG 0 SM1 [IF SPOOL OFF- NICELY DONE! 7 55KG SMO 0 10 5656 LDX 0 SPMASK1(1) 19 56JQ ORS 0 BNUMB(2) [ELSE SET APPROPRIATE BITS 4 574B # 10 57J2 SM1 MHUNTW 3,CPAR,JSCE 17 583L LDEX 4 JSCEB(3) [NOW FIND AMXOR/ADEVS 9 58H= FMOPG 2,4,IPB 12 592W HUNT2J 2,AMXOR,ADEVS,,XFREE 18 59GG LDX 5 A1+FOURTHWD(2) [CALC INTERNAL ADEVS PTR 9 5=26 LDX 4 JSCEA(3) 8 5=FQ ANDN 4 #7777 7 5=_B SBX 4 5 7 5?F2 SLL 4 2 17 5?YL SMO 4 [LOOK AT ADEVS ENTRY 10 5#D= LDX 3 A1+BPTR(2) 19 5#XW BZE 3 XFREE [NO DCB- NOTHING ELSE TO DO 4 5*CG # 18 5*X6 SBN 3 A1 [X3 PTS TO START OF DCB 8 5BBQ LDX 1 FX1 10 5BWB LDX 0 SPOFFMASK2(1) 16 5CB2 ... ANDS 0 IBULK(3) [UNSET BITS IN DCB 8 5CTL SMO FX2 9 5D*= LDX 0 AWORK2 15 5DSW BNG 0 XFREE [IF OFF, DONE 7 5F#G SMO 0 10 5FS6 LDX 0 SPMASK2(1) 15 5G?Q ORS 0 IBULK(3) [SET BIT(S) 8 5GRB BRN XFREE 4 5H?2 # 4 5HQL # 16 5J== # CHARACTER BUFFERING: UNATTENDED IS NOT ALLOWED, 10 5JPW # NO OTHER COMPLICATIONS. 4 5K9G # 9 5KP6 SPMX LDX 0 JSCEA(3) 18 5L8Q STO 0 AWORK3(2) [SAVE INFO TO AVOID HUNTS 4 5LNB # 8 5M82 LDN 2 BUNIT 9 5MML LDEX 4 JSCEB(3) 9 5N7= LDX 5 JSCEB(3) 7 5NLW SRL 5 9 8 5P6G ANDN 5 #77 15 5PL6 CALL 7 SEARCH [FIND MX CELL 8 5Q5Q ADN 2 BLINE 7 5QKB LDX 4 5 16 5R52 CALL 7 SEARCH [FIND LINE CELL 17 5RJL ADX 2 1 [X2=ABS PTR TO CELL 9 5S4= LDX 6 BLINE(2) 16 5SHW BZE 6 NUTS [NO 7020 CHAIN 4 5T3G # 17 5TH6 SC1 CALL 0 XHUNT [FIND INTERFACE CELL 8 5W2Q LDX 1 FX1 9 5WGB LDCH 0 BTYPE(2) 17 5X22 SMO 0 [CONVERT DEVICE TYPE 10 5XFL LDX 0 PCTTAB-1(1) 9 5X_= LDX 4 BNO(2) 8 5YDW SRL 4 12 20 5YYG ORX 0 4 [X0=DEVICETYPE+TERIDENTIFIER.. 15 5_D6 SMO FX2 [..(RROM IDF) 9 5_XQ LDX 4 AWORK3 19 62CB SRL 4 6 [X4=SAME BUT FROM CPAR/JSCE 7 62X2 TXU 0 4 17 63BL BCC SC2 [J IF REQD CELL FOUND 8 63W= LDX 6 0(2) 18 64*W BZE 6 NUTS [J IF NOT FOUND AT ALL 16 64TG BRN SC1 [TRY NEXT CELL 4 65*6 # 9 65SQ SC2 LDX 0 BNUMB(2) 7 66#B SLL 0 4 16 66S2 BPZ 0 W3 [J IF NOT 7503 8 67?L SMO FX2 17 67R= LDX 0 AWORK2 [CHAR BUFF UNATTENDED 19 68=W BZE 0 W4 [IS NOT ALLOWED AP PRESENT 4 68QG # 8 69=6 LDX 1 FX1 10 69PQ LDX 0 SPOFFMASK3(1) 15 6=9B ANDS 0 BNUMB(2) [CLEAR BITS 8 6=P2 SMO FX2 9 6?8L LDX 0 AWORK2 16 6?N= BNG 0 SC3 [J IF SPOOL OFF 7 6#7W SMO 0 10 6#MG LDX 0 SPMASK3(1) 15 6*76 ... ORS 0 BNUMB(2) [SET BIT(S) 4 6*LQ # 10 6B6B SC3 MHUNTW 3,CPAR,JSCE 18 6BL2 LDEX 4 JSCEB(3) [NOW FIND AMXOR/ALINES 9 6C5L FMOPG 2,4,MXUX 12 6CK= HUNT2J 2,AMXOR,ALINES,,XFREE 18 6D4W LDX 4 JSCEB(3) [CALC INTERNAL ALINES PTR 7 6DJG SRL 4 9 8 6F46 ANDN 4 #77 7 6FHQ SLL 4 2 17 6G3B SMO 4 [LOOK AT ALINES ENTRY 10 6GH2 LDX 3 A1+BPTR(2) 19 6H2L BZE 3 XFREE [NO LCB- NOTHONG ELSE TO DO 4 6HG= # 18 6H_W SBN 3 A1 [X3 PTS TO START OF LCB 11 6JFG HUNT2B 3,A7020,INFORM 8 6J_6 LDX 1 FX1 8 6KDQ SMO FX2 9 6KYB LDX 4 AWORK3 8 6LD2 ANDN 4 #77 15 6LXL LDX 5 4 [EXTRA COPY 7 6MC= SBN 4 5 18 6MWW BPZ 4 SC4 [J IF INTERFACE 5 OR 6 10 6NBG LDX 0 SPOFFMASK4(1) 7 6NW6 SMO 5 20 6P*Q SLC 0 0 [LINE UP ACCORDING TO INTERFACE 8 6PTB BRN SC5 10 6Q*2 SC4 LDX 0 SPOFFMASK5(1) 7 6QSL SMO 4 7 6R#= SLC 0 0 15 6RRW SC5 ANDS 0 APCTSTAT(3) [UNSET BITS 4 6S?G # 8 6SR6 SMO FX2 9 6T=Q LDX 0 AWORK2 18 6TQB BNG 0 XFREE [J IF SPOOL OFF- JOB DONE 8 6W=2 BPZ 4 SC6 16 6WPL SMO 0 [ELSE SET BIT(S) 10 6X9= LDX 0 SPMASK4(1) 7 6XNW SMO 5 7 6Y8G SLC 0 0 8 6YN6 BRN SC7 7 6_7Q SC6 SMO 0 10 6_MB LDX 0 SPMASK5(1) 7 7272 SMO 4 7 72LL SLC 0 0 16 736= SC7 ORS 0 APCTSTAT(3) [JOB DONE ATLAST! 4 73KW # 4 745G # 4 74K6 # 9 754Q XFREE MFREEW CPAR,JSCE 8 75JB BRN NEXT 4 7642 # 4 76HL # 4 773= # 4 77GW # 20 782G OVER LDX 0 AWORK1(2) [J IF IDF NOT OPEN.(NOWT DONE) 8 78G6 BNZ 0 NOIDF 7 78_Q IDFWRITE 6 79FB CLOSE 6 79_2 NOIDF ENDCOM 4 7=DL # 4 7=Y= #END 6 ____ ...653133670004