TRANSFER70

(George Source)

Macros used: BACKTRAN, CHTRAN, CONVERT, FINDCORE, FREECORE, GEOERR, GETCORE, KEEPMESS, KEEPREP, LOCK, MENDAREA, MHUNT, NAME, PUTREP, SEGENTRY, SETREP, UP

TRANSFER70.txt
22FL    #SEG  TRANSFER70                   [JOHN BAILEY 
22^=    #LIS  K0TRANSFER
23DW          8HTRANSFER
23YG    #   
24D6          SEGENTRY K1TRANSFER,QK1TR 
24XQ          SEGENTRY K3TRANSFER,QK3TR 
25CB          SEGENTRY K4TRANSFER,QK4TR 
25X2          SEGENTRY K5TRANSFER,QK5TR 
26BL          SEGENTRY K7TRANSFER,QK7TR 
26W=          SEGENTRY K8TRANSFER,QK8TR 
27*W    #   
27TG    QK1TR   
28*6          MHUNT    3,EWDAS,GEXD        [REFIND GEXD 
28SQ          LDN   0  1
29#B          ADS   0  ETLINK(3)           [AVOID NON-COORDINATING BRANCH   
29S2          LDX   4  ECOR(3)             [REMEMBER ECOR IN X4 
2=?L          LDN   1  EBUF-A1(3)   
2=R=    W2    LDX   1  A1(1)               [GET POINTER TO NEXT BUFFER  
2?=W          BZE   1  W1                  [NONE MARKED NOT SAVED   
2?QG          LDX   6  A1+2(1)  
2#=6          ANDX  6  BITS22LS            [GET SAVED COUNT 
2#PQ          BNZ   6  W2   
2*9B    W3    LDN   6  FBUFR(1) 
2*P2          STO   6  ECOR(3)             [CORE ADDRESS
2B8L          LDX   6  A1+2(1)  
2BN=          LDX   5  EBLOCK(3)
2C7W          BPZ   6  W4                  [BRANCH IF NOT MARKED'TO BE WRITTEN' 
2CMG          LDX   6  A1+1(1)  
2D76          STO   6  EBLOCK(3)           [BLOCK ADDRESS OF BLOCK  
2DLQ          LDN   6  1
2F6B          STO   6  EMODE(3)            [WRITE MODE  
2FL2          CALL  0  TRAN                [DO TRANSFER 
2G5L          STO   5  EBLOCK(3)
2GK=          STOZ     ETMARK(3)           [NO MORE OUTSTANDING WRITES  
2H4W    W4    STO   5  A1+1(1)  
2HJG          STOZ     A1+2(1)  
2J46          LDN   6  0                   [READ MODE   
2JHQ          STO   6  EMODE(3) 
2K3B          CALL  0  TRAN                [DO TRANSFER 
2KH2          LDX   0  EWK+3(3) 
2L2L          BZE   0  W37  
2LG=          LDN   0  1                   [JUMP IF READ ONLY   
2L^W          ADS   0  A1+2(1)             [UPDATE SAVED COUNT  
2MFG    W37   CALL  0  TIDY 
2M^6          ADS   4  ECOR(3)             [ADD WORD PART OF ADDRESS
2NDQ    W18   SETREP   OK   
2NYB          UP
2PD2    W1    LDN   6  128  
2PXL          ADN   6  FBUFR-A1            [X6=LENGTH OF FBUF BLOCK 
2QC=          GETCORE  6,1,1               [MANDATORY,LONGLOCK  
2QWW          FINDCORE 2
2RBG          LOCK     2
2RW6          FINDCORE 1
2S*Q          NAME     1,EWDAS,FBUF 
2STB          STOZ     A1+2(1)  
2T*2          MHUNT    3,EWDAS,GEXD 
2TSL          LDX   6  EBUF(3)  
2W#=          STO   6  A1(1)               [CHAIN INTO FRONT OF FBUF CHAIN  
2WRW          STO   1  EBUF(3)  
2X?G          BRN      W3   
2XR6    TRAN  SBX   0  FX1  
2Y=Q          STO   0  EWK+2(3)            [REMEMBER LINK   
2YQB          BZE   6  W5                  [BRANCH IF READ  
2^=2          LDX   7  EBLOCK(3)
2^PL          STO   7  FBUFR(1)            [BLOCK NUMBER
329=          LDN   0  FBUFR(1) 
32NW          SUM   7  128                 [CHECKSUM BLOCK  
338G          SBS   7  FBUFR+1(1)   
33N6    W5    STO   1  EWK+1(3)            [REMEMBER ADDRESS OF FBUF
347Q          LDX   1  EBLOCK(3)
34MB          CONVERT  EBS(3),ETYPE(3),EBASE(3),EDEPF(3)
3572 ...      BACKTRAN EMODE(3),BSET+FLAW+BONL,ECNT(3),,EBSUN(3),EBS(3),ECOR(3) 
35LL          MHUNT    3,EWDAS,GEXD 
366=          CHTRAN   ETYPE(3),WFAIL,WINOP 
36KW          LDX   1  EWK+1(3)            [TRANSFER SUCCESSFUL 
375G          BZE   6  W6A                 [BRANCH IF READ  
37K6          LDX   0  BITS22LS 
384Q          ANDS  0  A1+2(1)             [REMOVE WRITE BITS   
38JB          BRN      W6   
3942    W6A   LDX   7  EBLOCK(3)
39HL          TXU   7  FBUFR(1)            [CHECK CORRECT BLOCK READ DOWN   
3=3=          BCC      W7   
3=GW    W12   LDX   1  FX1  
3?2G          KEEPMESS XCH(1),ESERL(3),EBLOCK(3)
3?G6          BRN      W8   
3?^Q    W7    LDX   7  FBUFR+1(1)   
3#FB          BZE   7  W6                  [BRANCH IF NO CHECKSUM   
3#^2          LDN   0  FBUFR(1) 
3*DL          SUM   7  128  
3*Y=          BNZ   7  W12                 [BRANCH IF CHECKSUM FAIL 
3BCW    W6    LDX   0  EWK+2(3) 
3BXG          ADX   0  FX1  
3CC6          EXIT  0  0
3CWQ    WFAIL KEEPMESS XFAIL(1),ESERL(3),EBLOCK(3)  
3DBB          MHUNT    3,EWDAS,GEXD 
3F*L    W8    KEEPREP  7,EXFAIL 
3FT=          MHUNT     3,EWDAS,GEXD
3G#W    W11   LDX   1  EBUF(3)  
3GSG          STOZ     EBUF(3)             [LOOK DOWN FBUF CHAIN AND FREE   
3H#6    W10   BNZ   1  W9   
3HRQ          STOZ     ECOR(3)             [ZEROISE POINTER 
3J?B          PUTREP   7
3JR2          UP
3K=L    W9    LDX   4  A1(1)               [REMEMBER POINTER TO NEXT FBUF   
3KQ=          FREECORE 1                   [FREE FBUF   
3L9W          LDX   1  4
3LPG          BRN      W10  
3M96    WINOP KEEPMESS XINOP(1),ESERL(3)   [INOPERABLE  
3MNQ          MHUNT    3,EWDAS,GEXD 
3NN2          MHUNT    3,EWDAS,GEXD 
3P7L          LDX   1  EWK+1(3) 
3PM=          LDX   0  A1+2(1)  
3Q6W          SLL   0  1
3QLG          BPZ   0  W8                  [BRANCH IF NOT SPECIAL WRITE 
3R66          KEEPREP  7,INOP   
3RKQ          BRN      W11  
3S5B    XCH            +EWCHSUM 
3T4L    XINOP          +EWINOP  
3TJ=    XFAIL          +EWSCAF  
3WHG    TIDY  STO   0  EWK+2(3)            [REMEMBER LINK   
3X36          LDN   1  EBUF-A1(3)   
3XGQ    W15   LDX   5  1                   [REMEMEMBER BUFF. ADDRESS
3Y2B    W16   LDX   1  A1(1)
3YG2          BNZ   1  W13                 [BRANCH IF MORE FBUFS
3Y^L          LDX   0  EWK+2(3) 
3^F=          EXIT  0  0
3^YW    W13   BNZ   6  W14                 [BRANCH IF WRITE 
42DG          TXU   1  EWK+1(3) 
42Y6          BCC      W15                 [BRANCH IF BLOCK ONLY JUST BEEN  
43CQ    W14   LDXC  7  A1+2(1)             [READ INTO OR MARKED TO BE WRITTEN   
43XB          BCS      W15  
44C2          SLL   7  2
44WL          BNZ   7  W15                 [BRANCH IF MARKED TO BE SAVED
45B=          LDX   7  A1(1)
45TW          SMO      5                   [KEEP FBUF LIST IN ORDER 
46*G          STO   7  A1   
46T6          FREECORE 1                   [FREE FBUF   
47#Q          LDX   1  5
47SB          BRN      W16  
48#2    QK3TR   
48RL          MHUNT    3,EWDAS,GEXD 
49?=    W30 
49QW    #SKIP          K6TRANSFER>99-99 
4==G          LDN   4  0
4=Q6    W20   LDX   1  EBUF(3)             [GET ADDRESS OF NEXT FBUF
4?9Q    #SKIP          K6TRANSFER>99-99 
4?PB    (   
4#92          BNZ   1  W17  
4#NL          SBN   4  1                   [ENSURE ONLY ONE TO WRITE
4*8=          BZE   4  W18  
4*MW          GEOERR   1,NOSFBUFS   
4B7G    )   
4BM6    #SKIP          K6TRANSFER>99-99 
4C6Q    #SKIP   
4CLB          BZE   1  W18                 [BRANCH IF NO MORE FBUFS 
4D62    W17   LDXC  0  A1+2(1)  
4DKL          BCC      W19                 [BRANCH IF NOT TO BE WRITTEN 
4F5=          CALL  5  WTRAN
4FJW    #SKIP          K6TRANSFER>99-99 
4G4G          ADN   4  1
4GJ6    W19   LDX   0  A1(1)
4H3Q          STO   0  EBUF(3)  
4HHB          FREECORE 1                   [FREE ALL FBUFS  
4J32          BRN      W20  
4JGL    POINT1 LDN  1  EBUF-A1(3)   
4K2=    W22   LDX   1  A1(1)               [POINTER TO NEXT FBUF
4KFW          BNZ   1  W21  
4K^G    W23   GEOERR   1,NOFBUF!
4LF6    W21   LDN   7  FBUFR-1(1)   
4LYQ          TXL   7  EBLOCK(3)           [SEE IF CORE POINTER WITHIN...   
4MDB          BCC      W22                 [...THIS BUFFERS BOUNDARY
4MY2          ADN   7  129  
4NCL          TXL   7  EBLOCK(3)
4NX=          BCS      W22  
4PBW          EXIT  0  0                   [EXIT WHEN FOUND 
4PWG    POINT2 LDX  7  EBLOCK(3)
4QB6          DVS   6  ECNT(3)             [CHANGE WORD ADDRESS TO BLOCK NO.
4QTQ          LDN   1  EBUF-A1(3)   
4R*B    W24   LDX   1  A1(1)
4RT2          BZE   1  W23                 [BRANCH IF BUFFER NOT FOUND  
4S#L          TXU   7  A1+1(1)  
4SS=          BCS      W24  
4T?W          EXIT  0  0
4TRG    WTRAN SBX   5  FX1                 [RELATAVISE LINK 
4W?6          LDN   0  FBUFR(1) 
4WQQ          STO   0  ECOR(3)             [CORE ADDRESS
4X=B          LDX   0  A1+1(1)  
4XQ2          STO   0  EBLOCK(3)           [BLOCK NUMBER
4Y9L          LDN   6  1
4YP=          STO   6  EMODE(3)            [MODE 1(WRITE)   
4^8W          CALL  0  TRAN                [DO ACTUAL TRANSFER  
4^NG          ADX   5  FX1  
5286          EXIT  5  0
52MQ    QK4TR   
537B          MHUNT    3,EWDAS,GEXD 
53M2          CALL  0  POINT1              [FIND BUFFER TO BE WRITTEN   
546L          BRN      W25  
54L=    #   
555W    QK5TR   
55KG          MHUNT    3,EWDAS,GEXD 
5656          CALL  0  POINT2              [FIND BUFFER TO BE WRITTEN   
56JQ    W25   STO   1  EWK+3(3) 
574B          LDX   0  ETMARK(3)
57J2          BZE   0  W26                 [BRANCH IF NO OUTSTANDING WRITES 
583L          LDN   1  EBUF-A1(3)   
58H=    W28   LDX   1  A1(1)
592W          BNZ   1  W27                 [MORE FBUFS  
59GG    W32   GEOERR   1,WRFBUF?
5=26    W27   LDXC  0  A1+2(1)  
5=FQ          BCC      W28                 [TO BE WRITTEN?  
5=^B          TXU   1  EWK+3(3) 
5?F2          BCC      W29                 [SAME BLOCK? 
5?YL          CALL  5  WTRAN               [WRITE BLOCK 
5#D=    W26   LDX   1  EWK+3(3) 
5#XW          LDX   5  EWK(3)              [WRITE MARKERS   
5*CG          STO   5  A1+2(1)             [STORE WRITE MARKERS IN FBUF 
5*X6    W29   STO   1  ETMARK(3)
5BBQ          BRN      W30  
5BWB    #   
5CB2    QK7TR   
5CTL          MHUNT    3,EWDAS,GEXD 
5D*=          CALL  0  POINT1              [FIND RELEVANT FBUF  
5DSW          BRN      W38  
5F#G    #   
5FS6    QK8TR   
5G?Q          MHUNT    3,EWDAS,GEXD        [FIND RELEVANT FBUF  
5GRB          CALL  0  POINT2   
5H?2    W38   LDX   4  EWK+3(3) 
5HQL          BZE   4  W31  
5J==          LDN   4  1                   [IF CHUCK WRITE X4=1 
5JPW    W31   STO   1  EWK+3(3) 
5K9G          LDN   1  EBUF-A1(3)   
5KP6    W33   LDX   1  A1(1)               [LOOK FOR A BLOCK TO WRITE   
5L8Q          BZE   1  W32  
5LNB          LDXC  0  A1+2(1)  
5M82          BCC      W33                 [NOT TO BE WRITTEN   
5MML          TXU   1  EWK+3(3) 
5N7=          BCC      W34  
5NLW          LDN   0  1
5P6G          ADS   0  ETLINK(3)           [AVOID NON-COORDINATING BRANCH   
5PL6          CALL  5  WTRAN               [WRITE AWAY BLOCK
5Q5Q          LDX   1  EWK+3(3) 
5QKB    W34   LDX   5  A1+2(1)             [UPDATE COUNT OF SAVES   
5R52          ANDX  5  BITS22LS 
5RJL          SBX   5  4
5S4=    #SKIP          K6TRANSFER>99-99 
5SHW    (   
5T3G          BPZ   5  W35                 [ERROR IF SAVES NEGATIVE 
5TH6          GEOERR   1,COUNTNEG   
5W2Q    W35 
5WGB    )   
5X22          ORX   5  EWK(3)   
5XFL          STO   5  A1+2(1)             [STORE WRITE MARKERS IN FBUF 
5X^=          LDN   6  1
5YDW          CALL  0  TIDY                [TIDY UP FBUF LIST   
5YYG          BRN      W18  
5^D6    #   
5^XQ          MENDAREA 30,K99TRANSFER   
62CB    #END
^^^^ ...36421524000300000000