(George Source)
Macros used: BACKTRAN, CHTRAN, CONVERT, FINDCORE, FREECORE, GEOERR, GETCORE, KEEPMESS, KEEPREP, LOCK, MENDAREA, MHUNT, NAME, PUTREP, SEGENTRY, SETREP, UP
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