CIOUT8

(George Source)

Macros used: ALTLEN, BXL, COOR1, COOR1Y, HUNTW, LONGON1, MENDAREA, MFREEW, MHUNTW, OUTMON, READYOFF, READYON, SEGENTRY, TICKLE, UP

CIOUT8.txt
22FL    #SEG  CIOUT8                       [G CONSTANTINIDES
22^=    #OPT           K0CIOUT=0
23DW    #OPT           K6CIOUT=0
23YG    #LIS           K0CIOUT>K0ALLGEO>K0COMMAND   
24D6                   8HCIOUT8 
24XQ    # ENTRY POINTS  
25CB          SEGENTRY K1CIOUT,Z1CIOUT  
25X2          MENDAREA 50,K100CIOUT 
26BL    #                                  THIS  SEGMENT  IS  USED  TO  TRANS-  
26W=    #              FER  MESSAGES  FROM  THE  COMMAND  PROCESSOR  TO  CIMOP  
27*W    #   
27TG    WAKEY          [THIS SUBR WAKES UP THE OBJECT PROG USING CI CHANNEL 
28*6                   [AND IF CPA IS BEING ABANDONED,ALSO WAKES UP THE JOB 
28SQ                   [WHICH IS DRIVING THE OBJECT PROGRAM 
29#B          SBX   7  FX1  
29S2          LONGON1  CIREL,CIJOBNUM(3)   [ELSE ACTIVATE PARENT CPA
2=?L          LDX   2  CIFPTR(3)           [PTR TO THE OLPA 
2=R=          SBN   2  BWORKRING
2?=W          LDX   0  ATYPE(2)            [RENAMED GENERAL IF RELEASED 
2?QG          SRL   0  12   
2#=6          SBN   0  GENERAL  
2#PQ          BNZ   0  WKY  
2*9B          LDX   1  FX1                 [DONOT TICKLE SINCE IS BEING RELEASED
2*P2          LDX   2  FX2  
2B8L          BRN      WKY1 
2BN=    WKY   TICKLE   CIJOBNUM(3),CIMEMBER(3)  [WAKE UP THE MEMBER THAT ISSUED 
2C7W                                       [THE LAST PERI TO THE CI CHANNEL 
2CMG    WKY1
2D76          ADX   7  1
2DLQ          EXIT  7  0
2F6B    #   
2FL2    #   
2G5L    Z1CIOUT 
2GK=          LDX   0  ACOMMUNE7(2) 
2H4W          STO   0  AWORK1(2)
2HJG          READYOFF  
2J46    Z60   MHUNTW  3,AMXOR,CILCB 
2JHQ          LDX   5  CIREADY(3)   
2K3B          SLL   5  1
2KH2          BPZ   5  Z10                 [J IF INTERLOCK BIT 1 UNSET  
2L2L          LDCT  5  #100 
2LG=          ORS   5  CIREADY(3)          [ SET  INTERLOCK  BIT2   
2L^W          CALL  7  WAKEY
2MFG          COOR1 
2M^6          BRN      Z60                 [ALWAYS LOOK FOR BBC BLOCKS FIRST
2NDQ    Z10 
2NYB          HUNTW    1,AMXOR,BBC  
2PD2          BNG   1  Z30                 [J IF NO BBC BLOCK   
2PXL          LDN   7  0                   [MARK BBC FOUND  
2QC=          LDX   4  A1(1)               [CHAR CT OF MSGE 
2QWW          ADN   4  11                  [ROUND UP TO INTEGRAL WDS + 2 FOR
2RBG          SRL   4  2                   [COMPATIBILITY WITH AOUT BLOCK   
2RW6          STO   4  6                   [SAVE IT 
2S*Q          BRN      Z30A 
2STB    Z30   MHUNTW  1,GMON,AOUT   
2T*2          STO   1  7                   [MARK AOUT BLOCK FOUND   
2TSL          LDX   4  A1(1)               [NO OF WDS IN MSGE + 2   
2W#=    Z30A  LDX   5  ALOGLEN(3)   
2WRW          SBN   5  CIMESS-A1
2X?G    Z30B  BXL   4  5,Z30C              [J IF LCB LARGE ENOUGH FOR MSGE  
2XR6          ADN   4  CIMESS-A1
2Y=Q          ALTLEN   3,4,AMXOR,CILCB     [ALTER LENGTH OF LCB 
2YQB          MHUNTW   3,AMXOR,CILCB
2^=2          BNZ   7  Z50                 [J IF NOT BBC
2^PL          LDX   4  6                   [RESTORE WD CT   
329=          MHUNTW   1,AMXOR,BBC  
32NW          BRN      Z40  
338G    Z30C  SBN   5  10                  [LCB IS LARGE ENOUGH,SO NOW SEE IF IT
33N6          BNG   5  Z40                 [IS TOO LARGE. IF SO I0ERATE UNTIL   
347Q          BRN      Z30B                [NOT MORE THAN 10 WDS TOO BIG.   
34MB    Z50   MHUNTW  1,GMON,AOUT   
3572          LDX   4  A1(1)               [RESTORE WD CT   
35LL    Z40   LDN   5  A1+2(1)             [START OF MSGE IN BLOCK  
366=          LDN   6  CIMESS(3)
36KW          SBN   4  2                   [NO OF WDS IN MSGE   
375G          BZE   4  Z20                 [J IF NO CHARS TO MOVE   
37K6          SMO      4
384Q          MOVE  5  0
38JB    Z20 
3942          BNZ   7  Z21                 [J IF NOT BBC
39HL          LDX   5  A1(1)               [CHAR CT OF MSGE(BBC)
3=3=          BRN      Z21A 
3=GW    Z21 
3?2G          LDX   5  AWORK1(2)           [CHAR CT OF MSGE (AOUT)  
3?G6    Z21A  DSA   5  CIREADY(3)          [SET CHAR CT IN LCB. 
3?^Q          LDCT  5  #200 
3#FB          ORS   5  CIREADY(3)          [SET INTERLOCK BIT 1 
3#^2          BNZ   7  Z150                [J IF NOT BBC
3*DL          LDN   6  #2000               [BBC CATEGORY BIT
3*Y=          OUTMON   A1(1),A1+2,6,AMXOR,BBC   
3BCW          MFREEW   AMXOR,BBC
3BXG          HUNTW    1,AMXOR,BBC  
3CC6          BPZ   1  Z60                 [J IF ANOTHER BBC BLOCK FOUND
3CWQ          HUNTW   3,GMON,AOUT          [BBC CANT BE A 'READY'.  
3DBB          BNG   3  Z80B                [J IF ONLY BBC TO OUTPUT 
3DW2          LDX   0  AWORK1(2)
3F*L          BNG   0  Z80B                [J IF BROADCAST ONLY 
3FT=          BRN      Z60                 [ELSE J TO SET B2 AND WAIT UNTIL 
3G#W                                       [BUFFER FREE 
3GSG    Z150
3H#6          NGN   0  1                   [IN CASE WE FIND A BBC BLOCK AFTER   
3HRQ          STO   0  AWORK1(2)           [WE OUTPUT THE GMON/AOUT BLOCK   
3J?B          LDX   6  A1+1(1)             [ PICK  UP  CATEGORY  WORD   
3JR2          SLC   6  1
3K=L          BPZ   6  Z70                 [J IF NOT READY  
3KQ=          LDX   6  CIREADY(3)   
3L9W          SLC   6  5
3LPG          BPZ   6  Z90                 [J IF NOT AWAITING BROKEN-IN MSGE.   
3M96          READYON                      [SET BREAKIN MARKER IN CPA.  
3MNQ          ERS   5  CIREADY(3)          [UNSET INTERLOCK BIT 1 IN CILCB  
3N8B          BRN      Z90A                [LOOK FOR BBC BLOCKS BEFORE GOING UP 
3NN2    Z90   LDCT  5  #400 
3P7L          ORS   5  CIREADY(3)          [SET READY IN LCB
3PM=          LDN   5  0
3Q6W    Z80   CALL  7  WAKEY
3QLG          BNZ   5  Z90A                [J IF NOT 'READY' TO MISS COOR   
3R66          COOR1Y
3RKQ    Z90A  HUNTW    1,AMXOR,BBC         [J TO OUTPUT BBC 
3S5B          BPZ   1  Z60  
3SK2          LDCT  0  #10  
3T4L          ANDX  0  CLONG1(2)           [IN CASE BBC DONE WHILE WE WERE  
3TJ=          ERS   0  CLONG1(2)           [IN CIOUT
3W3W          UP
3WHG    Z70   SLC   6  4
3X36          BPZ   6  Z80                 [J IF THIS IS NOT BROKEN-IN MSGE.
3XGQ          LDCT  6  #10                 [OTHERWISE CLEAR 'AWAITING' BIT. 
3Y2B          ANDX  6  CIREADY(3)   
3YG2          ERS   6  CIREADY(3)   
3Y^L          BRN      Z80  
3^F=    Z80B  MHUNTW   3,AMXOR,CILCB
3^YW          BRN      Z80  
42DG    #END
^^^^ ...20071740000200000000