22FL #SEG PCTCRTR8 [G CONSTANTINIDES 22^= #LIS K0PCTCRTR>K0PCT>K0ALLGEO 23DW 8HPCTCRTR8 23YG # ENTRY POINTS 24D6 SEGENTRY K1PCTCRTR,Z1PCTCRTR 24XQ MENDAREA APCTGAP,K100PCTCRTR 25CB # 25X2 XCNCL #76107623 [CANCEL ETX 26BL XSUB #76127623 [DC4 ETX 26W= XDC4 #76047623 [SUB ETX 27*W NBIT45 #74777777 [MASK FOR UNSETTING THE DC4 & EOT BIT 27TG ONEDAY 24*3600/K9*1000 28*6 YEMODE40004 #40004000 [MODE #40004 SHIFTED LEFT 9 PLACES. 28JY ...XCONT +50 28SQ # 29#B TESTBUF 29S2 LDN 4 0 2=?L MVCH 3 4 2=R= STEST 2?=W BXE 0 XCNCL(1),ZCNCL 2?QG BXE 0 XSUB(1),ZCNCL 2#=6 ERX 0 XDC4(1) 2#PQ BNZ 0 XETX 2*9B ZDC4 LDCT 0 #20 2*P2 ORS 0 EWAIT(2) 2B8L EXIT 7 0 2BN= # 2C7W XETX ANDN 0 -1 [REPEAT READ IF DOESN'T END WITH ETX 2CMG BZE 0 (7) 2D76 ERN 0 #7623$#7607 [OR ETB. 2DLQ BNZ 0 ZENQX 2F6B EXIT 7 0 2FL2 # 2G5L # 2GK= REFIND [LOCKC 2H4W MHUNTW 2,A7020,ALCB 2HJG EXIT 1 0 2J46 # 2JHQ REFINDA [FIND THE A7020/INPUT BLOCK FOR LOCKC 2K3B MHUNTW 3,A7020,INFORM 2KH2 LDX 2 FPTPCT(3) 2L2L SBN 2 FPTPCT 2LG= EXIT 1 0 2L^W # 2MFG # 2M^6 # SELECT AND THEN READ FROM A REMOTE CARD OR TAPE READER ON A 7020 2NDQ # CONNECTED THROUGH A MULTIPLEXOR OR UNIPLEXOR 2NYB # 2PD2 Z1PCTCRTR 2PXL # 2QC= # FIRST CHECK THAT ALL BUFFERS ARE AVAILABLE. 2QWW CALL 1 REFINDA 2RBG BXU 5 APCTID(2),POLE 2RW6 LDX 4 BUFFNUM(2) 2S*Q SBX 4 FREBUFF(2) [J. IF FREBUFF < BUFFNUM 2STB BNZ 4 NOTYET 2T*2 SMO FX1 2TSL LDX 6 NBIT45 [UNSET THE DC4 AND EOT MARKERS 2W#= ANDS 6 EWAIT(2) 2WRW # 2X?G CALL 1 REFIND [FIND THE LCB & LOCK IT 2XR6 LOCKC 2,REFIND 2Y=Q MHUNTW 3,A7020,ALCB 2YQB LDEX 4 GUNITNO(3) [LINE NUMBER 2^=2 STO 4 ACOMMUNE3(2) [SAVE LINK NUMBER 2^PL FINDLCA ,4 329= SRC 4 9 [TO TOP NINE BITS 32NW DCA ,STO,4,MODE 338G LDN 0 1 33N6 DLCA 1,DLA,0,MODE 347Q LDN 0 7 34MB DLCA 1,DLA,0,COUNT 3572 LDN 0 GENQ1(3) 35LL DLCA 1,STO,0,CTSA 366= LDN 0 GREP1(3) 36KW DLCA 1,STO,0,CREP 375G DSA 7 GENQ1(3) [IN ENQ MESSAGE 37K6 GLPERI 384Q LDX 0 JTIME 38JB STO 0 GTIM(3) 3942 WCONT LDX 0 GSIGN [SET 39HL ORS 0 GWAIT(3) [AMOP MARKER 3=3= COOR1 [GO TO SLEEP 3=GW LDX 7 GREP1(3) [GAS TGE TRANSFER FINISHED 3?2G BNG 7 WCONT [NO - THEN CONTINUE WAITING 3?G6 UNLOCK 3 [YES - UNLOCK THE LCB 3?^Q SLC 7 5 [IS THE LINE INOPERABLE 3#FB BPZ 7 POLE 3#^2 ANDN 7 #13 3*DL BNZ 7 POLE 3*Y= ZLOOP CALL 1 REFINDA [FIND THE INPUT BUFFER BLOCK 3BCW LOCKC 2,REFINDA [& LOCK IT. 3BXG CALL 1 REFINDA 3CC6 LDX 1 3 3CWQ LDX 3 2 3DBB ZTR LDX 2 FX2 3DW2 LDX 4 FREBUFF(3) [J. IF AT LEAST 2 BUFFERS AVAILABLE. 3F*L SBNC 4 3 3FT= BCC YBUF0 3G#W UNLOCK 3 [OTHERWISE SET THE "ASLEEP" MARKER & 3GSG LDX 0 GSIGN [WAIT FOR THE CPAT TO MAKE SOME 3H#6 ORS 0 EWAIT(3) [MORE ROOM FOR READING IN DATA. 3HRQ COOR1 3J?B BRN ZLOOP [J. BACK TO TRY AGAIN. 3JR2 # 3K=L YBUF0 LDX 6 COMMON(3) [POINTER TO THE LAST BUFFER FILLED. 3KQ= SBX 6 BUFFNUM(3) [STEP ON 2 BUFFERS (CYCLICALLY). 3L9W ADN 6 2 3LPG BNG 6 YBUF1 [J FOR NORMAL CASE 3M96 BNZ 6 YBUF2 [J IF BUFFERS ARE 0 AND 1 3MNQ LDX 5 BUFFNUM(3) [BUFFERS ARE (BUFFNUM)-1 AND 0 3N8B BCT 5 YBUF3 3NN2 YBUF1 ADX 6 BUFFNUM(3) 3P7L YBUF2 LDX 5 6 3PM= SBN 5 1 3Q6W YBUF3 STO 6 ACOMMUNE2(2) [POINTER TO 2ND BUFFER 3QLG STO 5 ACOMMUNE1(2) [POINTER TO 1ST BUFFER 3R66 LDN 7 #42 [PRESENT READ MODE WITH WARNING 3RKQ LDCT 0 #200 [J IF READING SINGLE SHOT 3S5B ANDX 0 EWAIT(3) 3SK2 BNZ 0 SETCA 3T4L SBNC 4 2 [OR IF <5 BUFFERS ARE FREE 3TJ= BCS SETCA 3W3W LDXC 0 ALINESTAT(1) [OR IF MOPPING OFF OR ATTACHING 3WHG BCS SETCA 3X36 LDCT 0 #100 3XGQ ANDX 0 FINISH 3Y2B BNZ 0 SETCA [OR IF "FINISH NOW" IS SET, 3YG2 SMO APCTP(1) 3Y^L LDCH 0 APCTX(1) 3^F= SMO APCTP(1) 3^YW ANDX 0 APCTD(1) 42DG BNZ 0 SETCA [OR IF CONSOLE OUTPUT IS FLIPPED, 42Y6 LDX 0 ATSLICE(1) 43CQ BZE 0 ONEPT [J. IF NOT MULTIDROP 43XB LDX 0 JTIME 44C2 SBX 0 APCTCLNCT(1) 44WL BPZ 0 NODAY 45B= SMO FX1 45TW ADX 0 ONEDAY 46*G NODAY TXL 0 ATSLICE(1) 46T6 BCC SETCA [OR IF WE'VE FINISHED OUR TIME SLICE, 47#Q ONEPT LDN 7 2 [OTHERWISE USE ORDINARY READ MODE. 47SB # 48#2 SETCA SLL 5 5 [WORK OUT START ADDRESSES OF BUFFERS. 48RL SLL 6 5 49?= ADX 5 BUFFNUM(3) 49QW ADX 6 BUFFNUM(3) 4==G ADN 5 COMMON2(3) 4=Q6 ADN 6 COMMON2(3) 4=^Y ... STOZ AWORK1(2) 4?9Q FINDLCA ,ACOMMUNE3(2) [GET LCA POINTER 4?PB LDN 0 #22 [CONTINUATION READ 4#92 DLCA 1,DLA,0,MODE2 [MODE 4#NL DLCA 1,STO,6,CTSA2 [BUFFER ADDRESS 4*8= LDN 0 128 [AND 4*MW DLCA 1,DLA,0,COUNT2 [COUNT FOR 2ND. TRANSFER. 4B7G DLCA 1,DLA,0,COUNT [COUNT & MODE FOR 1ST. TRANSFER. 4BM6 RPERI DLCA 1,DLA,7,MODE [REPEATED PERIS JOIN HERE. 4C6Q LDN 4 INREP1(3) [SET CRWA,QRWA LAST TO PREVENT EXEC 4CLB DLCA 1,STO,5,CTSA [BUFFER ADDRESS 4D62 DLCA 1,STO,4,CREP [& RWA FOR CURRENT. 4DKL ADN 4 INREP2-INREP1 [FROM IMPLEMENTING PERI BEFORE LCA 4F5= DLCA 1,STO,4,CREP2 [HAS BEEN FULLY LOADED,AS IT MIGHT 4FJW LDX 7 ACOMMUNE3(2) [BE TEMPTED TO DO BY A STRAY RED REQU 4G4G YCNCL SRC 7 9 [PERI TO CANCEL READ JOINS HERE. 4GJ6 DCA ,STO,7,MODE 4H3Q GLPERI 4HHB LDX 4 JTIME 4J32 XWAIT LDXC 7 INREP1(3) [J IF 1ST READ NOT YET FINISHED 4JGL BCS WAIT1 [CHECK REPLY BEFORE WAIT TO CATER 4K2= LDX 0 INREP2(3) [FOR MISSED INPUT ON V SHORT RECORDS 4KFW LDX 2 3 4K^G LDX 1 FX1 4LF6 ADXC 7 7 4LYQ BCS PERINOP 4MDB SLC 7 4 4MY2 BPZ 7 PERINOP 4NCL SRC 7 1 4NX= BNG 7 REP 4PBW BNG 0 WAIT1 [J IF READ STILL ACTIVE 4PWG ADXC 0 0 4QB6 BCS RPOLL 4QTQ SLC 0 4 4R*B BPZ 0 RPOLL 4RT2 SRC 0 1 4S#L LDX 2 3 [BUFFER BLOCK ADDRESS 4SS= BPZ 0 SIM 4T?W SRC 7 1 [J. IF READ ERRORED. 4TRG BNG 7 ZENQ 4W?6 SRC 7 1 4WQQ BNG 7 RPOLL [J IF 1ST,NOT LIMITED,2ND N IMPL 4X=B SMO 5 4XQ2 LDX 0 0 [FIRST WORD OF THE BUFFER 4Y9L SRL 0 12 [IS IT 4YP= SBN 0 #7624 [EOT? 4^8W BZE 0 XEOT [YES - THEN BRANCH 4^NG SBN 0 #0001 [IS IT ENQ? 5286 BZE 0 ZENQ [J IF SO 52MQ NOSEC LDEX 7 INREP1(3) 537B LDN 3 124 [PREPARE TO 53M2 SBX 3 7 [LOOK AT 546L BNG 3 SUMBF [THE LAST 54L= SRC 3 2 [FOUR CHARACTERS 555W ADX 3 5 [TRANSFERED 55KG CALL 7 TESTBUF [HAS DC4 - CNCL BEEN TRANSFERED? 5656 SBX 3 5 56JQ SLC 3 2 574B SUMMK LDX 1 FX2 57J2 LDN 6 1 583L LDX 5 ACOMMUNE1(1) [REMEMBER ONLY 1 BUFFER FILLED 58H= SCO ORX 3 GSIGN [SET BUFFER FILLED BIT 592W STO 5 COMMON(2) [UPDATE POINTER TO LAST BUFFER FILLED 59GG SBS 6 FREBUFF(2) [AND NO OF BUFFERS LEFT VACANT 5=26 SMO ACOMMUNE1(1) 5=FQ STO 3 COMMON2(2) [SET CHARACTER COUNT FOR THIS BUFFER 5=^B LDX 3 2 5?F2 LDXC 0 EWAIT(2) [IS THE CPA 5?YL BCC XTR [TO BE WOKEN UP? 5#D= STO 0 EWAIT(2) [YES-THEN CLEAR "WAITING" MARK, 5#XW HUNTACT CPAT,2 [FIND THE CPA AND 5*CG FPUT [PUT IT ON THE LIST 5*X6 XTR LDX 1 BPTPCT(3) [GET PTR TO A7020/INFORM BLOCK 5BBQ LDCT 0 #020 [HAS DC4 5BWB SBN 1 FPTPCT 5CB2 ANDX 0 EWAIT(3) [OCCURED? 5CTL BZE 0 ZTR [JUMP IF NOT 5D*= LDX 4 APCTID(3) [IF IT HAS 5DSW SRL 45 12 [REMOVE 5F#G SRL 5 12 [THE 5FS6 SMO 5 [FLIP 5G?Q ERS 4 APCTD(1) [BIT 5GRB BRN ZTR [AND ROUND TO RECEIVE EOT 5H?2 # 5HQL SIM 5J== SRC 0 1 [IS THE 5JPW BNG 0 ZENQ [TRANSFER ERROR? 5K9G SRC 0 1 [HAS EOM 5KP6 BNG 0 RPOLL [BEEN RECEIVED? 5L8Q SRC 0 2 [ISOLATE THE 5LNB ANDN 0 #777 [COUNT 5M82 LDN 3 124 [POSITION 5MML SBX 3 0 [X3 ON THE 4TH CH FROM THE END 5N7= BNG 3 SECSUM 5NLW SRC 3 2 [FORM 5P6G ADX 3 6 [POINTER TO THIS CHARACTER 5PL6 CALL 7 TESTBUF [TEST FOR DC4 OR CNCL 5Q5Q SBX 3 6 [GET CHARACTER 5QKB SOMMK SLC 3 2 [COUNT & INSERT BUFFER FILLED MARKER. 5R52 LDX 1 FX2 5RJL ORX 3 GSIGN 5S4= LDX 5 ACOMMUNE2(1) [REMEMBER BOTH BUFFERS FILLED 5SHW SMO 5 [SET THE SECOND 5T3G STO 3 COMMON2(2) [BUFFER USED WORD 5TH6 LDN 6 2 [2 BUFFERS FILLED. 5W2Q LDN 3 128 [SET INITIAL READ 5WGB BRN SCO [SET UP FIRST BUFFER WORD 5X22 # 5XFL RPOLL LDCT 6 #120 [GIVE UP:INOP-WAITING FOR EOT? 5X^= ANDX 6 EWAIT(2) 5YDW BZE 6 XEOT1 5YYG XEOT LDCT 0 #10 [IF SET THE 5^D6 ORS 0 EWAIT(2) [EOT MARKER 5^XQ XEOT1 UNLOCK 2 62CB POLE ACROSS PCTCON,1 [NOW REPOLE 62X2 # 63BL NOTYET 63W= SRL 5 12 [INTERFACE BIT POSN. IN CHARACTER 3. 64*W ADX 3 APCTP(3) [STEP DOWN TO THIS PCT. 64TG ERS 5 APCTD(3) [UNSET THE PRIMARY FLIP BIT & 65*6 ORS 5 APCTX(3) [SET THE SECONDARY FLIP BIT. 65SQ ACROSS PCTCON,3 66#B # 66S2 PERINOP 67?L BPZ 0 RPOLL 67R= SCANC LDX 2 FX2 [OTHERWISE TRY TO SCRUB IT 68=W LDX 7 ACOMMUNE3(2) [GET THE LINE NO 68QG ORX 7 YEMODE40004(1) [NON-POWERFUL CANCEL. 69=6 BRN YCNCL [J. TO ISSUE PERI. 69PQ # 6=9B ZCNCL LDCT 0 #100 [SET THE ERROR MARKER & ROUND FOR EOT 6=P2 ORS 0 EWAIT(2) 6?8L LDX 3 2 [SAVE PTR TO BUFFER 6?N= BRN ZENQ 6#7W ZENQX LDX 3 2 6#MG LDX 2 FX2 6*76 LDX 5 ACOMMUNE1(2) 6*LQ LDX 6 ACOMMUNE2(2) 6B6B SLL 5 5 6BL2 SLL 6 5 6C5L ADX 5 BUFFNUM(3) 6CK= ADX 6 BUFFNUM(3) 6D4W ADN 5 COMMON2(3) 6DJG ADN 6 COMMON2(3) 6F46 BRN ZENQY 6FHQ # 6G3B REP BNG 0 SCANC [J IF 2ND PART STILL ACTIVE 6G4M ...[ INFINITE LOOP WILL OCCUR IF 7503 BEING USED WITHOUT A 7020 6G5Y ...[ EMULATOR PROGRAM - SO LIMIT NUMBER OF TIMES WE REPEAT PERI 6G79 ... LDN 0 1 6G8G ... ADX 0 AWORK1(2) 6G9R ... STO 0 AWORK1(2) 6G?4 ... SMO FX1 6G#* ... TXU 0 XCONT 6G*L ... BCS ZENQ 6GBX ... UNLOCK 3 6GD8 ... ACROSS PCTCON,2 6GFF ...[ 6GH2 ZENQ LDX 2 FX2 [REPEAT PERI(PARTS OF QLCA STILLVALID 6H2L ZENQY LDN 7 #42 [SEND WARNING TO GIVE PCT A CHANCE 6HG= FINDLCA ,ACOMMUNE3(2) [TO CORRECT ITSELF 6H^W BRN RPERI 6JFG # 6J^6 WAIT1 MHUNTW 1,A7020,ALCB [FIND THE LCB 6KDQ BNG 4 WAIT2 [J IF START TIME ALREADY SET 6KYB STO 4 GTIM(1) [STORE TIME AT WHICH PERI WAS INITIAT 6LD2 LDX 4 GSIGN [SET ASLEEP MARKER 6LXL WAIT2 ORS 4 GWAIT(1) 6MC= COOR1 [WAIT 6MWW BRN XWAIT [HAVE ANOTHER LOOK 6NBG # 6NW6 SUMBF SMO 5 [<4 CHARS READ IN:GET WHAT WE CAN 6P*Q LDX 0 0 6PTB NGX 4 3 [RIGHT JUSTIFY. 6Q*2 ROUND SRL 0 6 6QSL BCT 4 ROUND 6R#= ADN 3 4 6RRW CALL 7 STEST [CHECK FOR ETX 6S?G BRN SUMMK [J TO SET MARKERS FOR USED BUFFER 6SR6 # 6T=Q SECSUM 6TQB ADN 3 4 [RESET COUNT. 6W=2 BNZ 3 XAX 6WPL LDX 3 2 6X9= BRN NOSEC [J IF NOTHING IN THE BUFFER 6XNW XAX 6Y8G SMO 5 6YN6 LDX 5 31 6^7Q SRC 3 2 6^MB SMO 6 7272 LDX 6 0 72LL ADN 3 5 736= LDN 4 0 73KW MVCH 3 4 745G SMO FX2 [RESTORE X5,X6 74K6 LDX 5 ACOMMUNE1 754Q SMO FX2 75JB LDX 6 ACOMMUNE2 7642 SLL 5 5 76HL SLL 6 5 773= ADX 5 BUFFNUM(2) 77GW ADX 6 BUFFNUM(2) 782G ADN 5 COMMON2(2) [POINTERS TO THE TWO BUFFERS 78G6 ADN 6 COMMON2(2) [WHERE DATA HAS BEEN READ 78^Q CALL 7 STEST 79FB SBN 3 6 79^2 BRN SOMMK [J. TO MARK BOTH BUFFERS AS FILLED. 7=DL # 7=Y= # 7?CW #END ^^^^ ...24572313000300000000