RMTLFEND864
(George Source)
Macros used: ACROSS, BXE, BXU, DOWN, EMPTY, FLIP, LF, MFREEW, MHUNTW, SEGENTRY, SLEEP, SLEEP2, STEPAGAIN, WAKEUP
- RMTLFEND864.txt
22FL #SEG RMTLFEND 22^= #LIS K0RMTLFEND>K0PCT>K0ALLGEO>K0GREATGEO 23DW 8HRMTLFEND 23YG # ENTRY POINTS 24D6 SEGENTRY K1RMTLFEND,Z1RMTLFEND 24XQ SEGENTRY K2RMTLFEND,Z2RMTLFEND 25CB # 25X2 [ 26BL [THIS SEGMENT DEALS WITH THE END OF FILE PROCESSING AFTER RMTLF HAS 26W= [OUTPUT A FILE TO A REMOTE LP OR TP WHERE THE 7020 IS ATTACHED VIA A 27*W [MULTIPLEXOR/UNIPLEXOR/SCANNER -I.E. NOT A 7900. 27TG [THE CURRENT ACTIVITY IS AN ACTLF. 28*6 [ON ENTRY 28SQ [AWORK1 = +VE FOR LP OUTPUT. -VE FOR TP OUTPUT 29#B #DEF NUM=IWORK1 29S2 #DEF REST=IWORK2 2=?L #DEF NLI=IWORK3 2=R= #DEF TBITS=IWORK4 2?=W #DEF QUAL=IWORK5 2?QG #DEF ZFE5=#7635 2#=6 ZDLEFE1 #76007631 2#PQ # 2*9B SPLNUPAGE 2*P2 SMO FX1 2B8L LDN 1 ZDLEFE1 2BN= MVCH 1 4 2C7W LDCT 1 #200 2CMG SMO FX2 2D76 LDX 0 IWORK11 2DLQ SLL 0 12 2F6B ADN 0 ZFE5 2FL2 MVCH 1 3 2G5L LDX 1 FX2 2GK= SBN 6 7 2H4W SBN 7 3 2HJG EXIT 4 0 2J46 # 2JHQ STX #76227632 2K3B SNULL #76207620 2KH2 PF1 2,#76327620 2L2L PF2 4,#76327632 2LG= PF12 #763301 2L^W # 2MFG # 2M^6 # SUBROUTINE TO RELOCATE FILE RECORD EITHER IN FILE ITSELF OR IN 2NDQ # THE ADATA,ACONV BLOCK 2NYB # 2PD2 RECLOC 2PXL LDXC 0 QUAL(2) 2QC= BCC STEPAGAIN [J IF NO TRANSFORMING 2QWW RCONV MHUNTW 3,ADATA,ACONV [LOCATE TRANSFORM BLOCK 2RBG ADN 3 A1 2RW6 BRN (4) 2S*Q STEPAGAIN 2STB SBX 4 FX1 2T*2 STEPAGAIN [RELOCATE RECORD 2TSL ADX 4 FX1 2W#= BRN (4) 2WRW # 2X?G # 2XR6 # SUBROUTINE TO WAKE UP THE PCT POLLING ACTIVITY 2Y=Q # 2YQB WAKUP WAKEUP LF 2^=2 EXIT 6 0 2^PL # 329= # SUBROUTINE TO GET THE LAST CHARACTER DEPOSITED 32NW # 338G SBACK STO 0 GEN0 [SAVE LINK 33N6 SLC 2 2 [STEP BACK THE OUTPUT POINTER 347Q SBN 2 1 34MB SRC 2 2 3572 LDCH 0 0(2) [GET THE CHAR. 35LL BRN (GEN0) [EXIT 366= # 36KW # SUBROUTINE TO SET UP THE "CLEAN FINISH" COUNT 375G # 37K6 SETCL LDN 0 CLEANUM [CLEANUM = 8 WHEN I LAST LOOKED 384Q ADXC 0 AWORK1(2) [J IF TP 38JB BCS SETTP 3942 SLL 0 2 [*4 FOR *LP (APPROX 1/2 PAGE FULL) 39HL SETTP SBN 0 1 [FAIRLY ARBITRARY 3=3= STO 0 IWORK15(2) [TEST WHEN IT GOES -VE 3=GW EXIT 4 0 3?2G # 3?G6 # SUBROUTINE TO FLIP, IF X6 IS NON-ZERO, THEN GET THE NEXT BUFFER 3?^Q # 3#FB SFLIP MHUNTW 3,A7020,ALIST [FIND THE OUTPUT BUFFER BLOCK 3#^2 STO 3 AWORK2(2) [REMEMBER ITS ADDRESS 3*DL BZE 6 SLEEP [J IF FLIP SWITCH UNSET 3*Y= FLIP [TELL PCT ACTIVITY WE'RE READY TO GO 3BCW BRN SLEEP [J TO SET UP THE NEXT OUTPUT BUFFER 3BXG # 3CC6 # SUBROUTINE TO STEP ON TO THE NEXT BUFFER WHEN IT IS AVAILABLE 3CWQ # 3DBB SLP1 SBX 4 FX1 [RELATIVISE LINK 3DW2 CALL 7 WAIT [WAIT FOR A BUFFER TO BECOME FREE 3F*L ADX 4 1 3FT= ORX 4 GSIGN [SET LINK -VE TO SHOW COORDINATION 3G#W # 3GSG SLEEP LDCT 0 #103 [J IF ERROR, MOP OFF OR INOP. TERMIN 3H#6 ANDX 0 EWAIT(3) 3HRQ BNZ 0 SLP1 3J?B LDX 1 INTLK3(3) [POINTER TO CURRENT BUFFER 3JR2 LDX 2 FX2 3K=L CALL 6 SPL19 3KQ= BRN U [J IF NOT 1901A 3L9W BRN XCLN 3LPG U LDXC 6 5 [J UNLESS END OF TRANSFER COINCIDES 3M96 BNZ 6 XCLN [WITH END OF RECORD (OR LINE) 3MNQ STO 4 GEN4 [SAVE LINK, THEN RESET THE COUNT 3N8B LDX 6 GSIGN [OF LINES TO THE NEXT FORCED CLEAN 3NN2 CALL 4 SETCL [FINISH, AND MARK THIS BUFFER AS 3P7L SMO 1 [MESSAGE-CAN-END-WITH-THIS-TRANSFER 3PM= ORS 6 INTLK2(3) 3Q6W LDX 4 GEN4 3QLG XCLN SBN 1 ALFBUFFNUM-1 [STEP ON TO THE NEXT BUFFER 3R66 BZE 1 NEXZO 3RKQ ADN 1 ALFBUFFNUM 3S5B SMO 1 3SK2 NEXZO LDXC 6 INTLK(3) [HAS IT BEEN EMPTIED YET? 3T4L BCS SLP1 [J IF NOT 3TJ= ANDN 6 -1 [GET POINTER TO START OF BUFFER 3W3W ORX 6 GSIGN [ALLOW 2 CHARS. FOR STX 3WHG ADN 6 ACTBUFF 3X36 STO 6 AWORK3(2) [REMEMBER CURRENT POINTER 3XGQ SMO FX1 [PUT STX INTO 3Y2B LDX 0 STX 3YG2 SMO 6 3Y^L STO 0 0(3) 3^F= LDX 0 IWORK14(2) [SET THE RESTART LINE NO. 3^YW SMO 1 [FOR THE LAST BUFFER 42DG STO 0 INTLK2(3) 42Y6 STO 1 INTLK3(3) [SET POINTER TO NEW BUFFER 43CQ #SKI ALTEBCC<1$1 43XB ( 44C2 LDN 7 78 [RESET 7-BIT BLOCK CHAR. COUNT 44WL LDN 6 118 [AND 6-BIT TRANSFER CHAR. COUNT 45B= ) 45TW #SKI ALTEBCC 46*G ( 46T6 STO 6 IWORK10(2) [REMEMBER POINTER FOR START OF OUTPUT 47#Q LDN 7 72 [RESET CHAR COUNTS ALLOWING FOR 47SB LDN 6 112 [SIX EXTRA BCC CHARS. 48#2 ) 48RL EXIT 4 0 [WILL SET V IF COORDINATED, AS B0 SET 49?= # 49QW # SUBROUTINE TO DO SLEEP MACRO, EXITING ONLY IF NO ERROR CONDITION 4==G # OCCUR 4=Q6 # 4?9Q WAIT SBX 7 FX1 [RELATIVISE LINK 4?PB SLEEP2 RLINE,REST1 [WAIT FOR BUFFER TO BECOME FREE 4#92 MHUNTW 3,A7020,ALIST [RELOCATE THE BUFFER BLOCK 4#NL ADX 7 1 [RESET LINK 4*8= STO 3 AWORK2(2) [REMEMBER BLOCK ADDRESS 4*MW EXIT 7 0 4B7G REST1 ACROSS RMTLF,3 4BM6 # 4C6Q # SUBROUTINE TO CLEAR UP LAST BUFFER, STEP ONTO THE NEXT, & RESET PT 4CLB # 4D62 TREND SBX 3 ACOMMUNE3(1) [RELATIVISE POINTER DOWN INPUT RECORD 4DKL SBX 4 FX1 [RELATIVISE AND PRESERVE LINK 4F5= STO 3 IWORK11(1) 4FJW STO 4 IWORK13(1) 4G4G LDX 3 AWORK2(1) [POINTER TO ALIST BLOCK 4GJ6 LDX 6 INTLK3(3) 4H3Q LDN 0 1 4HHB ADS 0 ALFTRANS(1) [UPDATE TRANSFER COUNT 4J32 CALL 0 SBACK 4JGL SBN 0 #74 [(OVERWRITE LAST CHAR. DEPOSITED 4K2= BPZ 0 TRED1 [IF IT WAS A SHIFT). 4KFW BCHX 2 £ 4K^G TRED1 4LF6 #SKI ALTEBCC 4LYQ CALL 4 SBC [CALC. BCC FOR THIS BUFFER & STORE 4MDB LDX 1 GSIGN 4MY2 LDN 0 #7607 4NCL SMO 6 4NX= ORS 1 INTLK(3) 4PBW MVCH 1 2 4PWG XRJE CALL 6 WAKUP [KICK THE OUTPUT ACTIVITY IF ASLEEP 4QB6 CALL 4 SLEEP [STEP ON TO NEXT BUFFER 4QTQ BVCR NCOOR [J UNLESS WE NEED TO RESET POINTERS 4R*B LDX 3 ACOMMUNE3(2) [J IF END OF FILE HAS BEEN REACHED 4RT2 BZE 3 NCOOR 4S#L CALL 4 RECLOC [FIND INPUT RECORD AGAIN 4SS= STO 3 ACOMMUNE3(2) [SAVE POINTER TO RECORD 4T?W NOREC MHUNTW 3,A7020,ALIST [AND THE BUFFER BLOCK IF STEP COOR-ED 4TRG STO 3 AWORK2(2) 4W?6 NCOOR LDX 1 FX2 4WQQ LDX 2 AWORK2(1) [SET NEW OUTPUT POINTER 4X=B LDX 4 REST(1) 4XQ2 ADX 2 AWORK3(1) 4Y9L BNZ 4 XLINE [IF LINE RESTARTS GET THE 4YP= LDX 0 IWORK19(1) [RECORD NO. AT START OF LAST BUFFER 4^8W STO 0 IWORK14(1) [REMEMBER FOR INSERTION IN NEXT INTLK 4^NG LDX 0 NUM(1) [RECORD NUMBER AT START OF THIS BUFF. 5286 STO 0 IWORK19(1) [SAVE FOR INSERTION IN NEXT IWORK14 52MQ XLINE LDX 3 ACOMMUNE3(1) 537B LDXC 4 IWORK13(1) 53M2 BCC NSPLD 546L CALL 4 SPLNUPAGE 54L= LDXC 4 IWORK13(1) 555W BRN SPLE 55KG NSPLD 5656 ADX 3 IWORK11(1) [RESET THE INPUT POINTER 56JQ SPLE ADX 4 FX1 [RECONSTITUTE THE LINK 574B LDXC 0 AWORK1(1) [EXIT IF LP 57J2 BCC (4) 583L LDN 0 #75 [OR IF CURRENT SHIFT IS ALPHA 58H= BXU 0 IWORK16(1),(4) 592W SBN 6 1 [INSERT BETA AT START OF BUFFER 59GG DCH 0 0(2) [STEP DOWN TRANSFER COUNT 5=26 BCHX 2 (4) 5=FQ # 5=^B SPL19 LDX 0 EWAIT(3) 5?F2 SRC 0 3 5?YL BNG 0 SPLYY [J IF SPOOLING 5#D= SLC 0 2 5#XW BPZ 0 (6) [J IF NOT 1901A RJE 5*CG YSSTP SMO FX2 5*X6 LDXC 0 AWORK1 5BBQ BCS (6) [J IF TP 5BWB SPLYY EXIT 6 1 5CB2 # 5CTL #SKI ALTEBCC 5D*= ( 5DSW # SUBROUTINE TO CALCULATE BCC FOR LAST BUFFER & PUT IN BUFFER AS 5F#G # SIX CHARACTERS BEFORE ETX/ETB 5FS6 # 5G?Q SBC SMO FX2 5GRB LDXC 0 AWORK1 5H?2 BCS (4) [J IF TP 5HQL LDX 0 2 [SAVE OUTPUT POINTER 5J== LDX 2 FX2 5JPW STO 4 ACOMMUNE4(2) [SAVE LINK 5K9G STO 0 ACOMMUNE2(2) 5KP6 LDX 4 IWORK10(2) [GET RELATIVE POINTER FOR START 5L8Q LDX 1 0 [POINTER TO END OF DATA 5LNB SBX 1 AWORK2(2) [RELATIVISE END POINTER 5M82 SLC 1 2 [CONVERT TO CHARS. 5MML SLC 4 2 [CONVERT TO CHARS. 5N7= SBX 1 4 [NO. OF CHARS. IN OUTPUT BUFFER 5NLW LDX 0 1 5P6G LDX 1 AWORK2(2) 5PL6 ADX 1 IWORK10(2) [START ADDRESS OF DATA 5Q5Q LDX 2 0 5QKB LDN 0 0 [INITIALISE SBC 5R52 SBC1 LDCH 4 0(1) [GET NEXT CHAR 5RJL ERX 0 4 5S4= SLC 0 1 [ADD TO SBC 5SHW BCHX 1 £ [J IF COUNT NOT ZERO 5T3G BCT 2 SBC1 5TH6 SMO FX2 5W2Q LDX 2 ACOMMUNE2 5WGB LDN 4 6 5X22 LDX 1 0 [SBC IN X1 5XFL SBC2 LDN 0 0 5X^= SLL 01 4 [EXPAND 4 BITS TO A CHAR 5YDW DCH 0 0(2) [PUT IN BUFFER 5YYG BCHX 2 £ 5^D6 BCT 4 SBC2 [TO 6 CHARS. 5^XQ SMO FX2 62CB LDX 4 ACOMMUNE4 [RESTORE LINK 62X2 EXIT 4 0 63BL ) 63W= # 64*W # SECTION TO DEAL WITH LINE RESTARTS 64TG # IN THE CASE OF RESTARTS RENGAGE RESETS THE ACTLF BEFORE COMING 65*6 # BACK UP 65SQ # 66#B RLINE CALL 4 RECLOC [GET POINTER TO RESTART RECORD 66S2 LDN 6 1 [SET MARKER TO FORCE FLIP 67?L ACROSS RMTLF,4 67R= # 68=W # 68QG # 69=6 # 69PQ Z1RMTLFEND 6=9B BZE 6 RLOC [J OUT IF NOT JUST ENTERED 6=P2 CALL 4 SFLIP [FLIP, AND GET NEXT BUFFER 6?8L CALL 3 OUTPT [1ST. REC: SET UP "FILE EMPTY" MESS. 6?N= 14,12,10HFILE EMPTY 6#7W # 6#MG # 6*76 # 6*LQ RLOC MHUNTW 3,A7020,ALIST [RELOCATE THE BUFFER BLOCK 6B6B LDN 4 0 [SET "END" MARKER 6BL2 BRN NOWT 6C5L # 6CK= # 6D4W OUTPT LDX 1 FX2 [RESET X1 TO CURRENT ACTIVITY AND 6DJG LDX 2 AWORK2(1) [X2 TO CURRENT POSITION IN OUTPUT 6F46 LDX 5 AWORK1(1) [LP/TP SWITCH WORD [BUFFER 6FHQ ADX 2 AWORK3(1) 6G3B BZE 5 XTP [J IF LINE PRINTER 6GH2 LDN 0 #74 6H2L SBN 6 4 [ALLOW FOR EXTRA RUNOUT CHARS. 6HG= SBN 7 2 6H^W BXE 0 IWORK16(1),XTP [J IF ALREADY IN ALPHA SHIFT 6JFG DCH 0 0(2) [OTHERWISE SET ALPHA 6J^6 SBN 6 1 [ALLOW FOR EXTRA SHIFT CHAR. 6KDQ STO 0 IWORK16(1) 6KYB BCHX 2 £ [STEP OUTPUT POINTER 6LD2 # 6LXL XTP SBX 6 0(3) [NO OF TRANSMISSION CHARS IN MESSAGE 6MC= BNG 6 TR6 [J IF TOO LONG FOR THIS BUFFER 6MWW SBXC 7 1(3) [DITTO 7-BIT DATA CHARS. 6NBG BCC XTR6 6NW6 TR6 SBX 3 FX1 [RELATIVISE CALL ADDRESS 6P*Q CALL 4 TREND [STEP ON TO NEXT BUFFER 6PTB LDN 7 0 [SET X7 SO WE DONT STEP BACK AT YCF4 6Q*2 ADX 3 FX1 [NB X3 IS PRESERVED IF ACOMM3 = 0 6QSL # 6R#= XTR6 BNG 5 TP7 [J IF NOT LINE PRINTER 6RRW SMO FX1 [INSERT 2 NEW LINES 6S?G LDN 1 PF2+1 6SR6 MVCH 1 4 6T=Q TP7 LDN 1 2(3) [MOVE IN THE MESSAGE 6TQB SMO 1(3) 6W=2 MVCH 1 -2 6WPL BZE 5 YCF2 [J IF NOT TAPE PUNCH 6X9= LDX 3 FX1 [INSERT NEWLINE + 3 RUNOUTS 6XNW LDN 1 PF1+1(3) 6Y8G MVCH 1 4 6YN6 LDN 1 SNULL(3) 6^7Q MVCH 1 4 6^MB # 7272 YCF2 SMO FX2 [POINTER TO ALIST BLOCK 72LL LDX 3 AWORK2 736= BRN YCF4A 73KW Z2RMTLFEND 745G YCF4 74K6 MHUNTW 3,A7020,ALIST 754Q SMO FX2 75JB STO 3 AWORK2 7642 YCF4A 76HL LDX 2 3 773= SMO FX2 77GW ADX 2 AWORK3 782G LDX 6 INTLK3(3) [GET POINTER TO BUFFER'S RED TAPE WD 78G6 LDX 1 GSIGN 78^Q SMO 6 [MARK BUFFER AS FILLED 79FB ORS 1 INTLK(3) 79^2 SMO 6 [AND "CLEAN" 7=DL ORS 1 INTLK2(3) 7=Y= CALL 0 SBACK [MOVE IN ETB TO END BLOCK. 7?CW SBN 0 #74 [(OVERWRITE LAST CHAR DEPOSITED 7?XG BPZ 0 TRED2 [IF IT WAS A SHIFT) 7#C6 BCHX 2 £ 7#WQ TRED2 ADN 1 ETXBUFF(3) [MOVE IN #7635(#7620 IF TP) 7*BB CALL 6 SPL19 7*W2 BRN XCTP [J IF NOT 1901A RJE LP 7B*L LDN 0 3 [WILL BECOME DC3 7BT= #SKI ALTEBCC<1$1 7C#W ( 7CSG MVCH 1 6 7D#6 SLC 2 2 7DRQ SBN 2 3 7F?B SRC 2 2 7FR2 DCH 0 0(2) 7G=L ) 7GQ= #SKI ALTEBCC 7H9W ( 7HPG MVCH 1 4 [CR DC3 INTO BUFFER 7J96 SLC 2 2 7JNQ SBN 2 1 7K8B SRC 2 2 7KN2 DCH 0 0(2) 7L7L SMO FX2 7LM= STO 1 ACOMMUNE1 [SAVE ETXBUFF POINTER 7M6W CALL 4 SBC [WORK OUT BCC & PUT IN BUFFER 7MLG SMO FX2 7N66 LDX 1 ACOMMUNE1 [RESTORE POINTER 7NKQ MVCH 1 2 [ETX IN BUFFER 7P5B ) 7PK2 BRN NOWT 7Q4L XCTP MVCH 1 2 7QJ= ORX 1 GSIGN [MOVE IN #7623 ETX (PLAIN ETB SEEMS 7R3W #SKI ALTEBCC 7RHG ( 7S36 SMO FX2 7SGQ STO 1 ACOMMUNE1 7T2B CALL 4 SBC 7TG2 SMO FX2 7T^L LDX 1 ACOMMUNE1 7WF= ) 7WYW MVCH 1 2 [TO UPSET THE LINE PRINTER SOMETIMES 7XDG NOWT CALL 6 WAKUP [KICK THE PCT ACTIVITY IF DORMANT 7XY6 LDN 6 0 [SET MARKER SO WE DONT REFLIP 7YCQ SMO FX2 7YXB LDXC 0 IWORK20 7^C2 BCC MAINFILE [J IF MAINFILE 7^WL LDCT 5 #200 [SET "DC4" MARKER IN LAST BUFFER 82B= SMO INTLK3(3) [OF SETUP LISTING TO DISENGAGE *LP 82TW ORS 5 INTLK2(3) 83*G # 83T6 MAINFILE 84#Q SMO INTLK3(3) 84SB LDXC 0 INTLK2(3) 85#2 BCS ZCLOK 85RL CALL 4 SFLIP 86?= LDX 2 AWORK3(2) [RESET THE BUFFER WORD 86QW ADX 2 3 87=G BRN YCF4 87Q6 ZCLOK 889Q LDCT 6 #20 [SET THE "LISTING FINISHED" MARKER 88PB XWAKE LDCT 4 #100 [UNLESS WE'VE HAD A DEVICE ERROR, IN 8992 ORS 6 EWAIT(3) [WHICH CASE ENSURE THAT IT IS NOT SET 89NL ANDX 4 EWAIT(3) 8=8= BZE 4 YWAIT 8=MW ERS 6 EWAIT(3) 8?7G YWAIT CALL 7 WAIT [WAIT FOR THE OUTPUT TO FINISH 8?M6 LDCT 0 #10 [WAIT AGAIN UNLESS THE "OUTPUT FINISH 8#6Q ANDX 0 EWAIT(3) [MARKER" HAS NOW BEEN SET 8#LB BZE 0 XWAKE 8*62 ERS 0 EWAIT(3) [CLEAR IT IF SO 8*KL # 8B5= LDX 4 IWORK20(2) 8BJW LDCT 0 #100 [RESET THE AWORK WORDS FOR LISTEND 8C4G ANDX 0 4 [(OR LISTING OF MAINFILE) 8CJ6 STO 4 AWORK4(2) 8D3Q STO 0 AWORK2(2) 8DHB BZE 0 NOTSETUP [J NOT SETUP FILE 8F32 BPZ 4 SENOTLISTED [J IF JUST FINISHED MAINFILE 8FGL DOWN RENGAGE,3 [OUTPUT PLEASE LINE UP MSG 8G2= ACROSS RMTLF,1 [TO LIST SETUP FILE AGAIN 8GFW SENOTLISTED 8G^G NOTSETUP 8HF6 LDXC 0 REST(2) [J UNLESS PAGE RESTARTS, 8HYQ BCC YCLOS 8JDB MFREEW ADATA,IPTEMP [IN WHICH CASE THE RESTART BLOCK 8JY2 YCLOS 8KCL ACROSS PCTLISTB,2 [FOR LINE OF *'S 8KX= # 8LBW # 8LWG #END ^^^^ ...542340740002