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
  • Last modified: 17/01/2024 11:55
  • by 127.0.0.1