SENTINEL8

(George Source)

Macros used: COOR1, COOR1X, DCA, DLCA, FINDLCA, GEOERR, GLPERI, HUNT2, JLBUSY, LOCKC, MENDAREA, MHUNTW, READ, RINGTWO, SEGENTRY, SETNCORE, SUICIDE

SENTINEL8.txt
22FL    #SEG  SENTINEL8                    [G CONSTANTINIDES
22^=    #LIS  K0SENTINEL>K0MULTIPLX>K0ALLGEO>K0GREATGEO 
23DW                   8HSENTINEL   
23YG    # ENTRY POINTS  
24D6          SEGENTRY K1SENTINEL,Z1SENTINEL
24XQ          MENDAREA 15,K99SENTINEL   
25CB    [   
25X2    ZDATA          #75527673           [SENTINEL DATA MESSAGE   
26BL                   #57746576
26W=                   #20677623
27*W    #DEF  ZLEN=0?-ZDATA+BUFFER-A1      [LENGTH OF THE LINE CONTROL BLOCK
27TG    XMASK          #42004000
28*6    #DEF  ZREP=#5                      [ERROR AND OPERABLE MARKERS  
28SQ    [   
29#B    PERY  LDX   2  IDENTM(3)           [X5 CONTAINS MODE (#1 OR #2) 
29S2          LDX   7  GUNITNO(3)   
2=?L          FINDLCA  ,7   
2=R=          JLBUSY   1,REJ
2?=W          SLL   7  15   
2?QG          DCA      ,STO,7,MODE  
2#=6          DLCA     1,DLA,5,MODE 
2#PQ          SBN   5  14   
2*9B          NGX   5  5
2*P2          DLCA     1,DLA,5,COUNT
2B8L          SBN   5  13   
2BN=          BNZ   5  READ 
2C7W          LDN   5  GREP1(3) 
2CMG          BRN      WRITE
2D76    READ  LDN   5  GREP2(3) 
2DLQ    WRITE DLCA     1,STO,5,CREP 
2F6B          LDN   5  BUFFER(3)
2FL2          DLCA     1,STO,5,CTSA 
2G5L          LDX   0  JTIME
2GK=          STO   0  GTIM(3)  
2H4W          GLPERI
2HJG    XIT   EXIT  4  0
2J46    REJ   GEOERR   1,REJECTED          [TRANSFER REJECTED   
2JHQ    [   
2K3B    ZHUNTLCB
2KH2          MHUNTW   2,AMXOR,ALCB 
2L2L          EXIT  1  0
2LG=    [   
2L^W    Z1SENTINEL  
2MFG          SETNCORE ZLEN,3,AMXOR,ALCB,1,1,2 [OBTAIN LINE CONTROL BLOCK.  
2M^6          LDN   0  A1+BPTR(3)          [ZEROISE IT. 
2NDQ          LDN   1  A1+BPTR+1(3) 
2NYB          STOZ     A1+BPTR(3)   
2PD2          MOVE  0  ZLEN-BPTR-1  
2PXL          STO   7  GUNITNO(3)          [LINE NO.
2QC=          LDX   6  AWORK4(2)
2QWW          STO   6  IDENTM(3)           [PRESERVE THE MPX ACTIVITY ADDRESS   
2RBG          LOCKC    3,ZHUNTLCB   
2RW6          MHUNTW   3,AMXOR,ALCB 
2S*Q          LDX   2  6
2STB          HUNT2    2,AMXOR,ALINES      [FIND THE LINE ENTRIES BLOCK.
2T*2          SLL   7  2
2TSL          ADX   2  7
2W#=          RINGTWO  A1(2),A1(3)         [ENRING LCB WITH ALINES ENTRY.   
2WRW          LDX   0  XMASK(1) 
2X?G          ANDX  0  A1+FOURTHWD(2)      [UNSET THE "SETTING UP" AND  
2XR6          ERS   0  A1+FOURTHWD(2)      ["ALREADY INTERRUPTED" MARKERS.  
2Y=Q          LDX   6  ZDATA+2(1)   
2YQB          SLL   0  12                  [SET SWITCH IF ALREADY INTERRUPTED.  
2^=2          ORX   7  0
2^PL          CALL  4  Z7                  [TEST IF BEING ONLINED OR MOPPED OFF 
329=          LDXC  7  7                   [UNSET SW. & J. IF NO READ REQST. YET
32NW          BCC      Z3   
338G    Z1    LDX   0  GSIGN               [SET ASLEEP MARKER AND INTERRUPT COUN
33N6          ADN   0  1
347Q          BRN      Z4                  [INITIATE READ (MAY HAVE LOST INPUT).
34MB    Z2    STOZ     GWAIT(3) 
3572          LOCKC    3,ZHUNTLCB   
35LL          MHUNTW   3,AMXOR,ALCB 
366=          LDX   0  GWAIT(3)            [J. IF INTERRUPT SEEN BY AMOP.   
36KW          BNZ   0  Z1   
375G    Z3    LDX   0  GSIGN               [MARK AS "ASLEEP".   
37K6    Z4    STO   0  GWAIT(3) 
384Q          STOZ     BUFFER(3)
38JB          LDN   5  2                   [INITIATE READ   
3942          CALL  4  PERY 
39HL          COOR1 
3=3=          CALL  4  Z7   
3=GW          LDX   0  GWAIT(3) 
3?2G          BCT   0  Z6                  [INTERRUPT COUNT = 1? (READ REQUEST).
3?G6    Z5    LDX   0  GSIGN               [GO BACK TO SLEEP.   
3?^Q          ORS   0  GWAIT(3) 
3#FB          COOR1X
3#^2    Z6    LDX   1  GREP2(3)            [TRANSFER STILL IN PROGRESS? 
3*DL          BNG   1  Z5   
3*Y=          BCT   0  Z1                  [INTERRUPT COUNT = 2? (NORMAL).  
3BCW          LDCH  0  GREP2(3)            [REPLY CHARACTER OK? 
3BXG          SBN   0  ZREP 
3CC6          BNZ   0  Z2   
3CWQ          LDX   1  FX1  
3DBB          LDX   4  ZDATA(1) 
3DW2          LDX   5  ZDATA+1(1)   
3F*L          TXU   4  BUFFER(3)           [MESSAGE TRANSFERRED OK? 
3FT=          TXU   5  BUFFER+1(3)  
3G#W          TXU   6  BUFFER+2(3)  
3GSG          BCS      Z2   
3H#6          LDN   5  1                   [INITIATE WRITE  
3HRQ          CALL  4  PERY 
3J?B          LDX   0  GSIGN               [MARK AS "ASLEEP".   
3JR2          ORS   0  GWAIT(3) 
3K=L          COOR1 
3KQ=          CALL  4  Z7   
3L9W          LDXC  0  GREP1(3)            [TRANSFER STILL IN PROGRESS? 
3LPG          BCS      Z5   
3M96          ANDN  0  #76                 [REMAINDER COUNT SATISFACTORY?   
3MNQ          BNZ   0  Z1   
3N8B          LDX   0  GWAIT(3)            [INTERRUPT COUNT = 3? (NORMAL).  
3NN2          SBN   0  3
3P7L          BNZ   0  Z1   
3PM=          BRN      Z2   
3Q6W    Z7    LDCT  0  #110                [CHECK IF MOP/ONLINE BITS
3QLG          LDX   1  A1+FPTR(3)          [ARE SET IN THE ALINES ENTRY.
3R66          ANDX  0  FOURTHWD(1)  
3RKQ          BZE   0  XIT                 [J. OUT IF NEITHER IS SET
3S5B          LDXC  0  GREP1(3)            [J. IF WRITE STILL IN PROGRESS.  
3SK2          BCS      Z5   
3T4L          LDXC  0  GREP2(3)            [J. IF NO TRANSFERS IN PROGRESS, 
3TJ=          BCC      Z8   
3W3W          LDX   2  IDENTM(3)
3WHG          LDX   0  GUNITNO(3)   
3X36          SLL   0  15   
3XGQ          ADN   0  4
3Y2B          DCA      ,STO,0,MODE  
3YG2          GLPERI
3Y^L          BRN      Z5   
3^F=    Z8    STOZ     BPTR(1)             [WIND UP.
3^YW          STOZ     A1+BPTR(3)   
42DG          SUICIDE   
42Y6    [   
43CQ    #   
43XB    #   
44C2    #END
^^^^ ...07641325000100000000