PCTCIN8
(George Source)
Macros used: ACROSS, CHAIN, COOR1, DCA, DLCA, FINDLCA, FPUT, GLPERI, HUNTACT, LOCKC, MENDAREA, MHUNTW, SEGENTRY, SETNCORE, UNLOCK
- PCTCIN8.txt
22FL #SEG PCTCIN8 [G CONSTANTINIDES 22^= #LIS K0PCTCIN>K0PCT>K0ALLGEO>K0GREATGEO 23DW 8HPCTCIN8 23YG # ENTRY POINTS 24D6 SEGENTRY K1PCTCIN,Z1PCTCIN 24XQ MENDAREA APCTGAP,K100PCTCIN 25CB [ 25X2 [ THIS SEGMENT CONTROLS THE READING OF LINES FROM THE SOURCE INTERFACE 26BL [ OF A REMOTE TELETYPE - A 7023. 26W= [ 27*W # 27TG XENQ #76250000 [ENQ 28*6 XEOT #76240000 [EOT 28SQ # 29#B # 29S2 STXCC #76222020,8HCANCEL^*[STX " CANCEL" N/L. 2=?L STXNL #76227632 [STX N/L 2=R= NULL #76207604,#76230000 [NULL DC4 ETX 2?=W # 2?GN ...XCONT +50 2?QG # 2#=6 REFIND [LOCKC 2#PQ MHUNTW 2,A7020,ALCB 2*9B EXIT 1 0 2*P2 # 2B8L REFINDA [FIND THE A7020/CONSIN BLOCK FOR LOCK 2BN= MHUNTW 2,A7020,INFORM 2C7W LDX 2 FPTPCT(2) 2CMG SBN 2 FPTPCT 2D76 EXIT 1 0 2DLQ # 2F6B # 2FL2 Z1PCTCIN [THE ENTRY TO SELECT THE SOURCE 2G5L [INTERFACE OF THE 7023 AND TO READ 2GK= [A LINE FROM IT. 2H4W # 2HJG CALL 1 REFIND [FIND THM LINE CONTROL BLOCK. 2J46 LOCKC 2,REFIND [LOCK IT READY FOR THE TRANSFER. 2JHQ MHUNTW 3,A7020,ALCB 2K3B DSA 7 GENQ1(3) [SET THE HARDWARE ADDRESS IN ENQ SEQ. 2KH2 LDEX 7 GUNITNO(3) [LINE NUMBER. 2L2L FINDLCA ,7 [LCA POINTER INTO X1. 2LG= SRC 7 9 2L^W DCA ,STO,7,MODE 2MFG LDN 0 1 2M^6 DLCA 1,DLA,0,MODE 2NDQ LDN 0 7 2NYB DLCA 1,DLA,0,COUNT 2PD2 LDN 0 GENQ1(3) 2PXL DLCA 1,STO,0,CTSA 2QC= LDN 0 GREP1(3) 2QWW DLCA 1,STO,0,CREP 2RBG GLPERI 2RW6 LDX 0 JTIME 2S*Q STO 0 GTIM(3) 2STB WAIT LDX 0 GSIGN [SET THE 2T*2 ORS 0 GWAIT(3) [WAITING BIT 2TSL COOR1 [GO TO SLEEP 2W#= LDX 4 GREP1(3) [REPLY WORD 2WRW BNG 4 WAIT [HAS THE ENQ FINISHED? 2X?G UNLOCK 3 [UNLOCK THE LINE CONTROL BLOCK 2XR6 ADXC 4 4 2Y=Q BCS XFINISH 2YQB SLC 4 4 2^=2 BPZ 4 XFINISH 2^PL ANDN 4 3 329= BNZ 4 XFINISH 32NW CALL 1 REFINDA [FIND THE INPUT BLOCK & 338G LOCKC 2,REFINDA [LOCK IT READY FOR THE READS. 33N6 CALL 1 REFINDA 347Q LDX 3 2 34MB LDX 2 FX2 3572 STOZ CICOUNT(3) [COUNT OF CHARACTERS READ SO FAR. 35LL STOZ CIPTR(3) [POINTER TO NEXT CHAR. TO BE READ IN. 35WD ... STOZ AWORK1(2) 366= XERR SLC 7 9 36KW FINDLCA ,7 375G SRC 7 9 37K6 DCA ,STO,7,MODE 384Q LDN 0 2 38JB DLCA 1,DLA,0,MODE 3942 LDN 0 128 39HL DLCA 1,DLA,0,COUNT 3=3= LDN 4 CIBUFF(3) 3=GW ADX 4 CIPTR(3) 3?2G DLCA 1,STO,4,CTSA 3?G6 LDN 0 #22 3?^Q DLCA 1,DLA,0,MODE2 3#FB LDN 0 40 3#^2 DLCA 1,DLA,0,COUNT2 3*DL ADN 4 32 3*Y= DLCA 1,STO,4,CTSA2 3BCW LDN 0 INREP2(3) 3BXG DLCA 1,STO,0,CREP2 3CC6 SBN 0 INREP2-INREP1 3CWQ DLCA 1,STO,0,CREP 3DBB GLPERI 3DL8 ... LDX 1 FX1 3DW2 LDX 6 JTIME 3F*L XWAIT LDXC 4 INREP1(3) [J. TO WAIT FOR TRANSFERS TO END. 3FT= BCS WAIT1 [IF TEIMINATED WITHOUT WAITING WE MAY 3G#W LDX 5 INREP2(3) [POSSIBLY HAVE A MISSED INPUT CONDITI 3GSG ADXC 4 4 3H#6 BCS ZINOPX 3HRQ SLC 4 4 3J?B BPZ 4 ZINOPX [ON THE FIRST TRANSFER 3JR2 BNG 5 WAIT1 [J. TO WAIT FOR TRANSFER TO END. 3K=L SRC 4 1 3KQ= ... BNG 4 XERROR 3L9W LDEX 0 INREP1(3) [ANY DATA RECIVED? 3LPG SBN 0 128 3M96 BZE 0 XERR 3MNQ SRC 4 1 3N8B BNG 4 XERR [AN ERROR? 3NN2 ANDN 4 1 [J. IF EOM RECEIVED AFTER FIRST TRANS 3P7L BZE 4 SINGLEBLOCK 3PM= ADXC 5 5 3Q6W BCS ZINOPY 3QLG SLC 5 4 3R66 BPZ 5 ZINOPY [INOPERABILITY ON THE SECOND? 3RKQ ANDN 5 3 [J. IF ERROR OR NOT IMP 3S5B BNZ 5 XERR 3SK2 LDEX 0 INREP2(3) [REPLY COUNT 3T4L LDN 2 128+40 [GET COUNT OF CHARS. READ IN. 3TJ= SBX 2 0 [POSITION 3W3W TESTETB 3WHG LDX 0 CIPTR(3) 3X36 ADS 2 CICOUNT(3) [COUNT OF CHARS. READ SO FAR. 3XGQ BNZ 0 NOWEOT [J. IF THIS IS SECOND BLOCK READ. 3Y2B SBN 2 2 [OTHERWISE SEE IF INPUT ENDS WITH ETB 3YG2 SRC 2 2 3Y^L LDN 4 CIBUFF(3) 3^F= LDX 5 GSIGN 3^YW ADX 4 2 42DG MVCH 4 2 42Y6 SBN 0 #7607 43CQ BNZ 0 NOWEOT [NOT ETB -> END OF INPUT: READ EOT NE 43XB STO 2 CIPTR(3) [OTHERWISE GO TO READ SECOND BLOCK. 44C2 LDN 0 2 44WL SBS 0 CICOUNT(3) 45B= LDX 2 FX2 45TW BRN XERR 46*G NOWEOT 46T6 LDX 2 FX2 [POINTER 474Y ... STOZ AWORK1(2) 47#Q XER SLC 7 9 47SB FINDLCA ,7 48#2 SRC 7 9 48RL DCA ,STO,7,MODE 49?= LDN 0 2 49QW DLCA 1,DLA,0,MODE 4==G LDN 0 4 4=Q6 DLCA 1,DLA,0,COUNT 4?9Q LDN 0 CIEOT(3) 4?PB DLCA 1,STO,0,CTSA 4#92 LDN 0 INREP1(3) 4#NL DLCA 1,STO,0,CREP 4*8= GLPERI 4*MW LDX 6 JTIME 4B7G LDX 1 FX1 4BM6 WAITCON 4C6Q LDXC 0 INREP1(3) 4CLB BCS WAITON 4D62 ADXC 0 0 4DKL BCS YEOT 4F5= SLC 0 4 4FJW BPZ 0 YEOT [INOPERABLE? 4G4G ANDN 0 3 4GJ6 ... BNZ 0 XEROR 4H3Q LDX 0 CIEOT(3) [WAS 4HHB ANDX 0 HALFTOP [ENQ 4J32 TXU 0 XENQ(1) [RECEIVED 4JGL BCC XER [IN CORE? 4K2= YEOT 4KFW LDCT 0 #010 [SET THE EOT RECEIVED 4K^G ORS 0 EWAIT(3) [MARKER 4LF6 UNLOCK 3 [UNLOCK THE BUFFER 4LYQ LDX 0 APCTID(3) [REMOVE 4MDB SRL 0 12 [THE 4MY2 LDX 1 BPTPCT(3) ['FLIP' 4NCL LDX 6 ALINESTAT-FPTPCT(1) [GET THE LINE STATUS WORD. 4NX= ADX 1 APCTP-FPTPCT(1) [BIT 4PBW ERS 0 APCTD-FPTPCT(1) [IN THE PCT RECORD 4PWG BPZ 6 NMOP1 [J. UNLESS BEING MOPPED OFF. 4QB6 STOZ CICOUNT(3) [SCRUB THE INPUT BY NULLIFYING THE CO 4QTQ NMOP1 LDX 7 IDUNIQUE-FPTPCT(1) [GET THE TERMINAL IDENTIFIER. 4R*B LDXC 0 EWAIT(3) [UNSET WAIT BIT 4RT2 BCC SETMES 4S#L STO 0 EWAIT(3) 4SS= HUNTACT CPAT,2,3 [FIND THE CPA 4T?W FPUT [AND SET IT GOING 4TRG SETMES 4W?6 LDN 3 3 [COUNT FOR PLAIN N/L. 4WQQ BPZ 6 NMOP2 [J. IF ORDINARY RESPONSE. 4X=B LDN 3 5 [SEND "CANCEL" IF MOPPING OFF. 4XQ2 NMOP2 SETNCORE COUTBUFF-A1+1(3),3,A7020,CONSOUT,1 4Y9L [SET UP THE MESSAGE BLOCK 4YP= STO 7 CIDENTM(3) [SET THE TERMINAL IDENTIFIER 4^8W LDN 7 STXNL(1) [MOVE IN 4^NG BPZ 6 NMOP3 [J. UNLESS MOPPING OFF. 5286 LDN 7 NULL(1) [SET UP "CANCEL" TO INDICATE 52MQ LDN 0 COUTBUFF+3(3) [INPUT WAS THROWN AWAY. 537B MOVE 7 2 53M2 LDN 7 STXCC(1) 546L NMOP3 LDN 0 COUTBUFF(3) 54L= MOVE 7 3 555W LDX 1 3 [POINTER TO MESSAGE BLOCK INTO X1 55KG MHUNTW 3,A7020,INFORM [FIND THE INFORMATION BLOCK 5656 CHAIN 1,3 [QUEUE BLOCK AT HEAD OF QUEUE 56JQ ADX 3 APCTP(3) [STEP TO THE CURRENT PCT RECORD 574B LDCH 0 APCTX(3) [FIND CONSOLE OUTPUT BIT AND SET FLIP 57J2 ORS 0 APCTD(3) [BIT 583L XFINISH 58H= ACROSS PCTCON,1 [REPOLE 592W # 59GG # 5=26 SINGLEBLOCK 5=9Y ... LDN 0 0 5=FQ LDX 4 CIPTR(3) [TEST IF FIRST TWO CHARACTERS 5=^B LDX 5 GSIGN [READ WERE AN ENQ. 5?F2 ADN 4 CIBUFF(3) 5?YL MVCH 4 2 5#D= SBN 0 #7624 [EOT? 5#XW BZE 0 YEOT 5*CG SBN 0 1 [ENQ? 5*X6 BZE 0 XERR [REPEAT READ IF SO. 5BBQ LDN 2 128 [GET COUNT OF CHARACTERS READ. 5BWB LDEX 0 INREP1(3) 5CB2 SBX 2 0 5CTL BRN TESTETB [J TO SEE IF ANOTHER BLOCK TO READ 5D*= # 5DSW ZINOPX 5F#G BPZ 5 ZINOPY [J. IF READ HAS ALREADY TERMINATED. 5FS6 LDX 5 7 5G?Q ORX 5 BIT9 [LINE NO. / #40004. 5GRB ORN 5 4 5H?2 DCA ,STO,5,MODE [SEND CANCEL PERI. 5HQL GLPERI 5J== WAIT1 MHUNTW 1,A7020,ALCB 5JPW BNG 6 WAIT2 5K9G STO 6 GTIM(1) [SET TIME A3WHICH PERI WAS ISSUED. 5KP6 LDX 6 GSIGN 5L8Q WAIT2 ORS 6 GWAIT(1) [SET ASLEEP MARKER. 5LNB COOR1 [WAIT FOR READ TO FINISH. 5M82 BRN XWAIT 5MML # 5N7= WAITON 5NLW MHUNTW 1,A7020,ALCB [FIND THE LINE CONTROL BLOCK 5P6G BNG 6 WAIT3 5PL6 STO 6 GTIM(1) [SET TIME AT WHICH PERI WAS ISSUED. 5Q5Q LDX 6 GSIGN 5QKB WAIT3 ORS 6 GWAIT(1) [SET ASLEEP MARKER. 5R52 COOR1 [WAIT FOR READ TO FINISH. 5RJL BRN WAITCON [CONTINUE WAIT 5S4= # 5SHW # 5T3G ZINOPY 5TH6 UNLOCK 3 [UNLOCK THE BUFFER 5W2Q BRN XFINISH 5WGB # 5WHR ...[ ROUTINE MAY LOOP IF 7503 NOT BEING USED WITH 7020 EMULATOR 5WK8 ...[ PROGRAM - SO LIMIT NUMBER OF TIMES WE REPEAT PERI 5WLK ...XEROR LDN 0 1 5WN2 ... ADX 0 AWORK1(2) 5WPC ... STO 0 AWORK1(2) 5WQS ... TXU 0 XCONT(1) 5WS9 ... BCS XER 5WSX ...XERGO 5WTL ... UNLOCK 3 5WX3 ... ACROSS PCTCON,2 [SEND INOPERABLE 5WX8 ...XERROR 5WX* ... LDN 0 1 5WXG ... ADX 0 AWORK1(2) 5WXM ... STO 0 AWORK1(2) 5WXS ... TXU 0 XCONT(1) 5WX^ ... BCS XERR 5WY6 ... BRN XERGO 5WYD ...[ 5X22 # 5XFL # 5X^= #END ^^^^ ...07150044000500000000