{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: PCTLPTP851)}}
====== PCTLPTP851 ======
(George Source)
**Macros used:** [[george:macro:ACROSS|ACROSS]], [[george:macro:BXE|BXE]], [[george:macro:BXGE|BXGE]], [[george:macro:BXL|BXL]], [[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:NUDGE|NUDGE]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:TRACE|TRACE]], [[george:macro:UNLOCK|UNLOCK]]
22FL #LIS K0PCTLPTP>K0PCT>K0ALLGEO>K0GREATGEO
22^= #SEG PCTLPTP8 [G CONSTANTINIDES
23DW 8HPCTLPTP8
23YG # ENTRY POINTS
24D6 SEGENTRY K1PCTLPTP,Z1PCTLPTP
24XQ MENDAREA APCTGAP,K100PCTLPTP
25CB [
25X2 [ THIS SEGMENT CONTROLS THE WRITING OF DATA TO A REMOTE LINE PRINTER
26BL [ - A 7021 OR TAPE PUNCH - A 7025
26W= [
27*W #
27TG XALPHA #74 [ALPHA & DELTA-SPLIT
28*6 XBETA #75 [BETA
28SQ ONEDAY 24*3600/K9*1000
29#B MODE40004 #40004
29J8 ...ZMMD4 4 [KEEP 1 AFTER MODE4004
29S2 #
2=?L #
2=R= [
2?=W [ THIS SUBROUTINE SETS UP THE MODE *3 CONTROL AREA IN THE MOP ACTIVITY
2?QG [
2#=6 PREPERI
2#PQ LDX 2 FX2
2*9B LDX 4 AWORK2(2) [GET THE LINE NUMBER.
2*P2 PREPERI1
2B8L FINDLCA ,4 [GET POINTER TO THE LCA IN X1.
2BN= SRC 4 9 [LINE NUMBER TO TOP 9 BITS.
2C7W DCA ,STO,4,MODE
2CMG LDN 0 1
2D76 DLCA 1,DLA,0,MODE
2DLQ LDN 0 2
2F6B DLCA 1,DLA,0,MODE2
2FL2 EXIT 7 0
2G5L #
2GK= PERI LDN 0 80 [SET UP THE SPOUT.
2H4W DLCA 1,DLA,0,COUNT2
2HJG LDN 0 ENQOUT(3)
2J46 DLCA 1,STO,0,CTSA2
2JHQ PERI2 SBX 7 FX1 [ERROR RETRANSMISSIONS RE-JOIN HERE.
2K3B LDN 0 128 [SET UP THE CURRENT AREA.
2KH2 DLCA 1,DLA,0,COUNT
2L2L DLCA 1,STO,5,CTSA
2LG= LDN 0 INREP1(3)
2L^W DLCA 1,STO,0,CREP [PRE-EMPT OUR LOADING UP THE LCA.
2MFG LDN 0 INREP2(3)
2M^6 DLCA 1,STO,0,CREP2
2NDQ PERI1 GLPERI
2NYB WAIT2 CALL 1 ZHUNTALCB
2PD2 LDX 0 GTIM(2)
2PXL BPZ 0 WAIT3
2QC= LDX 0 JTIME
2QWW STO 0 GTIM(2)
2RBG WAIT3 LDX 0 GSIGN
2RW6 ORS 0 GWAIT(2)
2S*Q COOR1
2STB LDXC 0 INREP1(3)
2T*2 BCS WAIT2
2TSL LDX 4 INREP2(3) [READ REPLY WORD.
2W#= ADXC 0 0
2WRW BCS ZINOP2 [J. IF TIMED-OUT ON WRITE.
2X?G SLC 0 4
2XR6 BPZ 0 ZINOP2 [J. IF INOPERABLE ON WRITE.
2Y=Q ANDN 0 3
2YQB BZE 0 PERI3 [J. IF NOT ERROR OR NOT-IMP.
2YS^ ... ANDN 0 1
2YXJ ... BZE 0 XRRA
2^27 ... TRACE 4,PCTNI2
2^4Q ... BRN ZINOP2
2^7* ...XRRA TRACE 4,PCTER2
2^=2 LDXC 4 INREP2(3)
2^PL SMO FX1
329= BCC (7)
32NW PCNCL LDX 4 AWORK2(2) [SET UP THE DCA & J. TO CANCEL THE
338G SRC 4 9 [READ.
33N6 ORX 4 MODE40004(1)
347Q DCA ,STO,4,MODE
34MB BRN PERI1
3572 PERI3 BNG 4 WAIT2 [J. IF READ NOT YET TERMINATED.
35LL ADXC 4 4
366= BCS ZINOP3 [J. IF READ TIMED-OUT,
36KW SLC 4 4
375G BPZ 4 ZINOP3 [OR INOPERABLE.
37K6 SRC 4 1
384Q ADX 7 1
38JB BNG 4 (7)
3942 LDEX 2 INREP2(3)
39HL NGX 2 2 [FIND THE STATUS REPLY CHARACTER(S).
3=3= BNG 6 YETX [J. IF OUTPUTTING FROM ETXBUFF.
3=GW SMO 6 [SAVE THE RESTART WORD, AS IT COULD
3?2G LDX 0 INTLK2(3) [BE OVERWRITTEN BEFORE WE NOTICE
3?G6 STO 0 INTLK4(3) [OUTPUT FAILURE ON THIS BUFFER.
3?^Q LDX 0 BITS22LS [CLEAR THE "FILLED" AND "BEING OUTPUT
3#FB SMO 6
3#^2 ANDS 0 INTLK(3)
3*DL YETX ADN 2 78
3*Y= BNG 2 ONLY1 [J. IF ONLY 1 CHAR. READ IN.
3BCW SRC 2 2
3BXG ADN 2 ENQOUT(3) [POINTER TO LAST TWO CHARS. READ IN.
3CC6 BRN STATCON
3CWQ ONLY1 LDCH 5 ENQOUT(3) [IF ONLY 1 CHAR. MUST BE ALPHA SHIFT.
3DBB SBN 5 #40 [ALPHA CONVERSION.
3DW2 BRN STAT2
3F*L #
3FT= [
3G#W [ THIS SUBROUTINE CONVERTS THE STATUS CHARACTER RECEIVED IN SHIFT FORM
3GSG [ IN X0 TO BIT SIGNIFICANT FORM IN X5
3H#6 [
3HRQ STATENQ [DECODE STATUS REPLY TO INITIAL SELEC
3J?B LDCH 0 0(2)
3JR2 BXL 0 XBETA(1),STAT3 [J. IF ALPHA.
3K=L LDX 5 GENQ3(3) [GET THE 1ST. 2 CHARS. (INTERFACE
3KQ= SRL 5 12 [ADDRESS) INTO X5.
3L9W BCHX 2 STAT4
3LPG STAT3 LDN 5 #7400 [SET UP INTERFACE ADDRESS IF ALPHA.
3M96 ORX 5 0
3MNQ STAT4 ERX 5 GENQ1(3) [COMPARE INTERFACE ADDRESS REPLIED
3N8B ANDN 5 -1 [WITH ADDRESS ORIGINALLY SENT.
3NN2 BNZ 5 POLL [RE-POLL IF NOT THE SAME.
3P7L BCHX 2 STAT5
3PM= STAT5 LDCH 5 0(2) [GET NEXT CHAR.
3Q6W BXL 5 XALPHA(1),STAT1 [J. IF NOT SHIFT.
3QLG #
3R66 #
3RKQ STATCON
3S5B LDCH 0 0(2) [GET 1ST. CHARACTER OF PAIR.
3SK2 BCHX 2 £
3T4L LDCH 5 0(2) [GET 2ND.
3TJ= STAT1 BXE 0 XBETA(1),STAT2 [J. IF BETA SHIFT.
3W3W SBN 5 #40 [CONVERSION FOR ALPHA STATUS. (-#40).
3WHG BXL 0 XBETA(1),STAT2 [J. IF WAS ALPHA.
3X36 ADN 5 #44 [CONVERSION FOR DELTA 2 STATUS. (+4).
3XGQ BXGE 5 XALPHA(1),STAT2 [J. IF WAS DELTA 2.
3Y2B SBN 5 #34 [CONVERSION FOR DELTA 1 STATUS. (-#30
3YG2 STAT2 SRC 5 1 [J. IF STATUS SHOWS DEVICE INOPERABLE
3Y^L ANDN 4 1
3^F= BPZ 5 XDEV
3^YW BNZ 4 (7) [EXIT 0 IF TRANSFER REPLY SHOWS ERROR
42DG EXIT 7 1 [EXIT 1 IF ALL OK.
42Y6 #
43CQ ZHUNTALCB [FIND A7020/ALCB BLOCK.
43XB MHUNTW 2,A7020,ALCB
44C2 EXIT 1 0
44WL #
45B= ZHUNTALIST [FIND A7020/ALIST BLOCK.
45TW MHUNTW 3,A7020,INFORM
46*G LDX 2 FPTPCT(3)
46T6 SBN 2 FPTPCT
47#Q EXIT 1 0
47SB #
48#2 #
48RL #
49?= Z1PCTLPTP [THE ENTRY POINT TO ADDRESS THE
49QW [DEVISE AND COMMENCE OUTPUT
4==G #
4=Q6 CALL 1 ZHUNTALIST [CHECK WHETHER THE NEXT BUFFER IS FUL
4=QM ... LDX 0 EWAIT(2)
4=R8 ... ANDN 0 #2000
4=RP ... BZE 0 NRESET [J IF ALIST NOT RESET
4=S= ... ERS 0 EWAIT(2)
4=SR ... STOZ INTLK1(2) [REAET LAST USED BUFFER NUMBER
4=T# ...NRESET
4=W3 ... LDX 0 EWAIT(2)
4=^Y ... ANDX 0 BIT9
4?5T ... BNZ 0 NSELY
4?9Q LDX 0 INTLK1(2)
4?PB SBN 0 ALFBUFFNUM-1
4#92 BZE 0 OFIR
4#NL ADN 0 ALFBUFFNUM
4*8= SMO 0
4*MW OFIR LDXC 0 INTLK(2) [J. IF BUFFER FULL, I.E. SAFE TO SELE
4B7G BCS OK2GO
4B9P ...#UNS JSKI33
4B?Y ...(
4BB7 ... LDX 0 EWAIT(2)
4BDB ... ANDX 0 BIT11
4BGK ... BNZ 0 OK2GO
4BJS ...)
4BM6 ...NSELY ORX 2 GSIGN [OTHERWISE UNSET THE FLIP BIT IF IT'S
4C6Q ADX 3 APCTP(3) [STILL SET, AND SET THE SECONDARY BIT
4CLB LDCH 0 APCTID(2)
4D62 ANDX 0 APCTD(3)
4DKL LDCT 4 #20 [IS THE "END" MARKER SET?
4F5= ANDX 4 EWAIT(2)
4FJW ERS 0 APCTD(3)
4G4G BNZ 4 ONLYX
4GJ6 ORS 0 APCTX(3)
4H3Q BRN NOPUT
4HHB ONLYX LDCT 0 #10 [SET THE OUTPUT FINISHED MARKER
4J32 ERX 4 EWAIT(2)
4JGL ORS 0 4
4K2= STOC 4 EWAIT(2)
4KFW BCC NOPUT
4K^G HUNTACT ACTLF,2
4LF6 FPUT
4LYQ NOPUT ACROSS PCTCON,3 [REPOLL.
4MDB #
4MY2 OK2GO CALL 1 ZHUNTALCB [FIND THE LCB.
4NCL LDCT 6 #200 [MARKER TO SHOW WE'RE SELECTING.
4NX= LOCKC 2,ZHUNTALCB
4PBW MHUNTW 3,A7020,ALCB
4PWG DSA 7 GENQ1(3) [ENQ MESSAGE
4QB6 LDN 0 APCTERRNUM-1 [SET THE *3 SELECT.
4QTQ STO 0 ACOMMUNE1(2) [ERROR TRANSFER COUNT
4R*B LDEX 4 GUNITNO(3) [GET THE LINE NUMBER & SAVE IT.
4RT2 STO 4 AWORK2(2)
4S#L CALL 7 PREPERI1 [SET UP THE DCA & FIND THE LCA.
4SS= LDN 0 16
4T?W DLCA 1,DLA,0,COUNT2
4TRG LDN 0 GENQ3(3)
4W?6 DLCA 1,STO,0,CTSA2
4WQQ REALERR [ERROR RETRANSMISSIONS RE-ENTER HERE.
4X=B LDN 0 7
4XQ2 DLCA 1,DLA,0,COUNT
4Y9L LDN 0 GENQ1(3)
4YP= DLCA 1,STO,0,CTSA
4^8W LDN 0 GREP1(3) [SET UP THE RWA.S LAST SO THAT
4^NG DLCA 1,STO,0,CREP [EXEC DOESN'T PRE-EMPT THE LOADING.
5286 LDN 0 GREP2(3)
52MQ DLCA 1,STO,0,CREP2
537B WAITY GLPERI
53M2 WAITW LDXC 0 GTIM(3) [J. IF 2ND. TIME THROUGH AND TIME
546L BCC WAIT [ALREADY SET UP FOR CURRENT TRANSFER,
54L= LDX 0 JTIME [OTHERWISE SET THE PERI START TIME.
555W STO 0 GTIM(3)
55KG WAIT LDX 0 GSIGN [MARK IT
5656 ORS 0 GWAIT(3) [TO BE WOKEN UP BY THE AMOP
56JQ COOR1 [GO TO SLEEP DURING THE TRANSFER
574B LDXC 0 GREP1(3)
57J2 BCS WAIT
583L LDX 4 GREP2(3) [GET THE READ REPLY WORD.
58H= SLC 0 5 [J. IF INOPERABLE.
592W BPZ 0 ZINOP1
59GG ANDN 0 #13 [J. IF ERROR, NOT-IMP OR TIMED-OUT.
5=26 BNZ 0 ZINOP1
5=FQ BNG 4 WAITW [J. IF READ NOT YET TERMINATED.
5=^B ADXC 4 4 [J. IF TIMED-OUT OR INOP. TO RE-POLL.
5?F2 BCS POLL
5?YL SLC 4 4
5#D= BPZ 4 POLL
5#XW SRC 4 1
5*CG BNG 4 RERROR
5*X6 LDN 2 GENQ3(3) [ADDRESS OF
5BBQ CALL 7 STATENQ
5BWB BRN RERROR [J. IF READ WAS ERRORED.
5CB2 SRC 5 1 [J. IF WARNING SET.
5CTL BPZ 5 WARNA
5D*= ANDN 5 1 [J. IF ATTENTION SET.
5DSW BZE 5 POLL
5F#G UNLOCK 3 [UNLOCK THE LCB.
5FS6 #
5G?Q ZBUF CALL 1 ZHUNTALIST [FIND THE OUTPUT BUFFER & LOCK IT.
5GRB LOCKC 2,ZHUNTALIST
5H?2 CALL 1 ZHUNTALIST
5HQL LDX 3 2
5J== LDX 6 INTLK1(3) [STEP ON
5JPW ZLP1 CALL 0 NEXT [GET NEXT BUFFER.
5JQ5 ... LDX 0 EWAIT(3)
5JQ# ... ANDN 0 #2000
5JQH ... BZE 0 NCHAN [J IF ALIST NOT RESET
5JQQ ... ERS 0 EWAIT(3)
5JQ^ ... STOZ INTLK1(3) [RESET NUMBER OF LAST EMPTIED BUFFER
5JR8 ... LDN 6 0
5JRC ... BRN ZLP1 [TRY WITH RESET BUFFER NUMBER
5JRL ...NCHAN
5JS5 ...#UNS JSKI33
5JW# ...(
5JYH ... LDX 0 EWAIT(3)
5K2Q ... ANDX 0 BIT11
5K4^ ... BNZ 0 RESTOP
5K78 ...)
5K9G UNLOCK 3 [NOT AVAILABLE YET - UNLOCK BUFFER
5KP6 LDX 0 GSIGN [BLOCK, SET THE WAITING BIT & WAIT.
5L8Q ORS 0 EWAIT(3)
5LNB COOR1
5M82 BRN ZBUF [TRY AGAIN.
5MML #
5N7= NEXT SBN 6 ALFBUFFNUM-1 [GET NEXT BUFFER
5NLW BZE 6 NFIR
5P6G ADN 6 ALFBUFFNUM
5PL6 SMO 6
5Q5Q NFIR LDXC 4 INTLK(3) [J. IF NOT ALREADY FILLED
5QKB BCC (0)
5R52 #
5RJL ZLP2 STO 6 INTLK1(3) [UPDATE CURRENT BUFFER POINTER.
5S4= LDCT 0 #600 [YES - THEN SET
5SHW SMO 6 [THE 'BEING OUTPUT'
5T3G ORS 0 INTLK(3) [MARKER
5TH6 SMO 6 [SET
5W2Q LDX 5 INTLK(3) [UP THE OUTPUT BUFFER ADDRESS.
5WGB ANDN 5 -1
5X22 ADN 5 ACTBUFF(3)
5XFL CALL 7 PREPERI [SET UP THE DCA & FIND THE LCA.
5X^= CALL 7 PERI [DO THE TRANSFER.
5YDW CALL 7 ZREP1 [TAKE ERROR ACTION.
5YYG LDXC 0 EWAIT(3) [WAKE UP THE LISTFILE ACTIVITY IF
5^D6 BCC XCLF [IT'S WAITING FOR BUFFERS.
5^XQ STO 0 EWAIT(3)
62CB HUNTACT ACTLF,2,3 [FIND THE LISTFILE ACTIVITY
62X2 FPUT [WAKE IT UP
63BL XCLF SMO 6 [END OF MESSAGE YET?
63W= LDXC 0 INTLK2(3)
64*W BCC ZLP1 [J. FOR NEXT BUFFER IF NOT.
64B^ ... LDN 0 8
64C# ...#UNS JSKI33
64CM ... ORX 0 BIT11
64D4 ... ANDX 0 EWAIT(3)
64F7 ... BZE 0 NENYE
64G= ... LDX 0 6
64H* ... SBN 0 ALFBUFFNUM-1
64JD ... BZE 0 SPFIR
64KH ... ADN 0 ALFBUFFNUM
64LL ... SMO 0
64MP ...SPFIR LDXC 0 INTLK(3)
64NS ... BCS NENYE
64NY ...#UNS JSKI33
64P4 ...(
64P8 ... LDX 0 BIT11
64P# ... ANDX 0 EWAIT(3)
64PD ... BNZ 0 RESTOP [J IF DISENGAGING
64PJ ...[ ELSE SEND DC2
64PN ...)
64PX ... LDN 0 2
64R2 ... BCHX 3 XOUT
64RS ...NENYE SMO 6
64SL ... LDXC 0 INTLK2(3)
64TG ADXC 0 0 [DO WE NEED TO DISENGAGE THE DEVICE?
65*6 BCS STOP
65SQ SRC 5 1 [IF YES, DO WE WANT TO HOLD UP OUTPUT
66#B BPZ 5 WARNG [FOR ANY REASON - LIKE WARNING
66S2 ANDN 5 1 [OR ATTENTION
67?L BZE 5 XATTN
67R= LDX 2 BPTPCT(3)
68=W SBN 2 FPTPCT
68QG LDXC 0 ALINESTAT(2)
69=6 BCS XATTN [J. IF MOP OFF
69PQ LDCT 0 #100
6=9B ANDX 0 FINISH
6=P2 BNZ 0 XATTN [J. IF 'FINISH NOW' SET
6?8L SMO APCTP(2)
6?N= LDCH 0 APCTX(2)
6#7W SMO APCTP(2)
6#MG ANDX 0 APCTD(2)
6*76 BNZ 0 XATTN [J. IF O/P CONSOLE FLIPPED
6*LQ LDX 0 ATSLICE(2)
6B6B BZE 0 ZCONT [J. IF NOT MULTIDROP
6BL2 LDX 0 JTIME
6C5L SBX 0 APCTCLNCT(2)
6CK= BPZ 0 NODAY
6D4W ADX 0 ONEDAY(1)
6DJG NODAY TXL 0 ATSLICE(2)
6F46 BCC XATTN [J. IF TIME SLICE UP
6FHQ ZCONT CALL 0 NEXT [OR NEXT BUFFER NOT FILLED. J. IF NOT
6G3B XATTN LDN 0 #23 [IF NOT SENDING DC3 OR DC4 SEND
6GH2 BCHX 3 £ [STX:C/R:ETX, (STX:NULL:ETX FOR TP),
6H2L XOUT DCH 0 ETXBUFF+1(3) [TO END THE MESSAGE.
6HG= ORX 6 GSIGN [SET MARKER SO WE DON'T CLEAR INTLK W
6H^W ANDX 3 BITS22LS
6JFG LDN 5 ETXBUFF(3)
6J^6 CALL 7 PREPERI [SET UP THE DCA & FIND THE LCA.
6KDQ CALL 7 PERI [SEND THE ETX.
6KYB CALL 7 ZREP2 [TAKE ERROR ACTION.
6LD2 LDX 6 INTLK1(3) [GET THE NEXT BUFFER POINTER.
6LXL SBN 6 ALFBUFFNUM-1
6MC= BZE 6 NSEC
6MWW ADN 6 ALFBUFFNUM
6NBG SMO 6
6NW6 NSEC LDXC 0 INTLK(3) [IS THIS BUFFER FULL?
6P*Q BCS POLL [YES - REPOLL.
6PTB XDEAD LDCT 4 #20 [NO - IS THE "END" MARKER SET?
6Q2J ...#UNS JSKI33
6Q7Q ... ORX 4 BIT11
6Q*2 ANDX 4 EWAIT(3)
6QSL BZE 4 POLL [NO - REPOLL
6QWJ ...#UNS JSKI33
6QYG ...(
6R2D ... LDX 0 4
6R4B ... SRL 0 1
6R6# ...)
6R8= ...#UNS JSKI33
6R=8 ...#SKI
6R#= LDCT 0 #10 [YES - UNSET IT, SET THE TRANSMISSION
6RRW ERS 4 EWAIT(3) [ENDED MARKER AND WAKE UP THE ACTLF.
6S?G LDX 2 3
6SR6 LDX 3 BPTPCT(3)
6T=Q SBN 3 FPTPCT
6TQB BRN NUDGE
6W=2 #
6WPL WARNA UNLOCK 3 [WARNING SEEN AT ADDRESS STAGE:
6X9= CALL 1 ZHUNTALIST [UNLOCK LCB, FIND & LOCK ALIST BLOCK.
6XNW LDN 6 0 [UNSET THE "SELECT PHASE" MARKER.
6Y8G LOCKC 2,ZHUNTALIST
6YN6 CALL 1 ZHUNTALIST
6^7Q LDX 3 2 [& SET IT UP TO SEND DC3.
6^MB #
7272 WARNG LDN 0 #03 [IF WARNING SEEN SEND STX/CR/DC3/ETX
72LL BCHX 3 XOUT [(OR STX/NULL/DC3/ETX IF TAPE PUNCH).
736= #
738T ...#UNS JSKI33
73?D ...(
73B3 ...RESTOP
73DL ... ANDX 3 BITS22LS
73H9 ...)
73KW STOP LDN 0 4
745G BCHX 3 XOUT
74K6 #
754Q #
75JB RERROR
7642 LDN 0 1 [J. TO RETRANSMIT UNLESS MAXIMUM
76HL LDX 2 FX2 [ERROR COUNT HAS BEEN REACHED,
773= SBSC 0 ACOMMUNE1(2) [IN WHICH CASE REPOLL.
77GW BCS POLL
782G CALL 7 PREPERI
78G6 BRN REALERR [REPEAT PERI.
78^Q #
79FB ZREP1 SMO 6 [RESET THE OUTPUT BUFFER ADDRESS.
79^2 LDX 5 INTLK(3)
7=DL ANDN 5 -1
7=Y= ADN 5 ACTBUFF(3)
7?CW LDCT 0 #600
7?XG SMO 6
7#C6 ORS 0 INTLK(3)
7#WQ BRN ZREP3
7*BB ZREP2 LDN 5 ETXBUFF(3) [SET UP THE OUTPUT BUFFER ADDRESS.
7*W2 ZREP3 SMO FX2
7B*L STO 7 AWORK3 [SAVE THE LINK.
7BT= CALL 7 PREPERI [SET UP DCA & FIND THE LCA.
7C#W LDX 7 AWORK3(2) [RESTORE LINK.
7CSG BCT 7 PERI2 [J. BACK TO S/R & STEP BACK LINK TOO.
7D#6 #
7DRQ XDEV BNZ 4 ZDEV [READ ERROR AS WELL?
7F?B ANDN 5 4 [J. UNLESS DEVICE ERROR AS WELL, TO
7FR2 BZE 5 ZDEV [SEND "PLEASE ENGAGE",
7G=L BPZ 6 POLL
7GQ= ADXC 6 6 [OR TO SET END MARKER IF WE'VE FINISH
7H9W BCS POLL
7HPG BRN XDEAD
7J96 #
7JNQ ZDEV LDX 2 3 [ALIST BLOCK, OR ALCB IF IN SELECT PH
7K8B LDX 3 BPTPCT(3) [INFORM BLOCK POINTER.
7KN2 SLL 6 1
7L7L SBN 3 FPTPCT
7LM= BPZ 6 XETC [J. UNLESS CAME IN ON SELECT PATH.
7M6W UNLOCK 2 [UNLOCK THE LCB.
7MLG MHUNTW 3,A7020,INFORM [FIND THE INFORMATION BLOCK.
7N66 LDX 2 FPTPCT(3) [POINTER
7NKQ SBN 2 FPTPCT [TO THE 7020 BUFFER
7P5B XETC LDX 1 3 [FIND THE RECORD ENTRY FOR THIS DEVIC
7PK2 LDX 4 APCTID(2)
7Q4L ADX 1 APCTP(3)
7QJ= ANDX 4 HALFTOP
7R3W NXT LDX 0 APCTDEV(1)
7RHG ANDX 0 4
7S36 BNZ 0 XFND
7SGQ BDX 1 NXT
7T2B XFND LDN 0 #100 [SET THE "NOTIFY OPERABILITY" MARKER.
7TG2 ORS 0 APCTDEV+1(1)
7T^L LDCT 0 #140 [SET THE "PLEASE ENGAGE" AND ERROR
7WF= NUDGE ORS 0 EWAIT(2) [RESTART MARKER.
7WYW LDX 4 APCTID(2) [THE DEVISE IDENTIFIER WORD
7XDG LDXC 0 EWAIT(2) [WAKE UP THE ACTLF IF WAITING.
7XY6 BCC UNFLP
7YCQ STO 0 EWAIT(2)
7YXB HUNTACT ACTLF,2
7^C2 FPUT
7^D? ...#UNS JSKI33
7^FJ ...(
7^GT ...UNFLP LDX 2 FPTPCT(3)
7^J6 ... LDN 0 #4000
7^KC ... ANDX 0 EWAIT-FPTPCT(2)
7^LN ... BNZ 0 POLEZ
7^M^ ...[ DO NOT UNFLIP IF DISENGAGING
7^P= ... SRL 4 12
7^QH ...)
7^RS ...#UNS JSKI33
7^T5 ...#SKI
7^WL UNFLP SRL 4 12 [REMOVE THE
82B= SMO APCTP(3) [FLIP
82TW ERS 4 APCTD(3) [BIT
835N ...POLEZ
83*G BNG 6 POLE [J. IF CAME IN FROM SELECT PATH.
83T6 LDX 3 FPTPCT(3) [UNLOCK THE BUFFER BLOCK.
84#Q SBN 3 FPTPCT
84SB POLL UNLOCK 3
85#2 POLE ACROSS PCTCON,1 [BACK TO REPOLL.
85RL #
86?= #
86QW #
87=G ZINOP1
87Q6 BPZ 4 POLL [J. IF READ ALREADY TERMINATED, ELSE
889Q LDX 4 AWORK2(2) [SET UP CANCEL PERI & J. TO ISSUE IT.
88PB SRC 4 9
8992 ORX 4 MODE40004(1)
89NL DCA ,STO,4,MODE
8=8= BRN WAITY
8=MW #
8?7G ZINOP2
8?M6 BNG 4 PCNCL [J. IF READ NOT YET TERMINATED.
8#6Q ZINOP3 [STEP BACK THE BUFFER POINTER &
8#LB BNG 6 POLL [UNSET THE "BEING OUTPUT" MARKER.
8*62 LDCT 4 #200
8*KL SMO 6
8B5= ERS 4 INTLK(3)
8BJW SBNC 6 1
8C4G BCC ZTM
8CJ6 LDN 6 ALFBUFFNUM-1
8D3Q ZTM STO 6 INTLK1(3)
8DHB BRN POLL
8F32 #
8FGL #
8G2= #
8GFW #END
^^^^ ...50312000000200000000