{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: PCTCIN8)}}
====== PCTCIN8 ======
(George Source)
**Macros used:** [[george:macro:ACROSS|ACROSS]], [[george:macro:CHAIN|CHAIN]], [[george:macro:COOR1|COOR1]], [[george:macro:DCA|DCA]], [[george:macro:DLCA|DLCA]], [[george:macro:FINDLCA|FINDLCA]], [[george:macro:FPUT|FPUT]], [[george:macro:GLPERI|GLPERI]], [[george:macro:HUNTACT|HUNTACT]], [[george:macro:LOCKC|LOCKC]], [[george:macro:MENDAREA|MENDAREA]], [[george:macro:MHUNTW|MHUNTW]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SETNCORE|SETNCORE]], [[george:macro:UNLOCK|UNLOCK]]
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