BMAPTAPE865

(George Source)

Macros used: ACROSS, BS, BXE, BXL, BXU, GEOERR, HUNTMISB, JBCC, MONOUT, MONOUTX, OUTBLOCK, OUTPACK, OUTPACKX, SEG, SEGENTRY, STEPAGAIN, STEPREWRITE, TESTNAMX, TOPFCB, TOPFCB2, TRACEIF

BMAPTAPE865.txt
22FL          SEG      BMAPTAPE,865 
22^=          SEGENTRY K1BMAPTAPE,TAPE  
23DW    [THIS SEGMENT IS ENTERED FROM BMAPONE TO TAKE   
23YG    [SPECIAL ACTION ON TAPE ENTRANTS
25X2    NFIFTAPE
26BL    #HAL  +FI+FTAPE,0   
26W=    MTNOT   
27*W                   +BMTU
27TG    MTNOTOWN
28*6                   +BMTWP   
28SQ    MTWRONG 
29#B                    +BMTO   
2?QG    ROUNDMASK   
2#=6                   #77777774
2#PQ    NFIVE          +5   
2*9B    TAPEMASK
2*P2                   #37777777
2CMG    [   
2D76    [   
2DLQ    [ THUIS ROUTINE SETS UP A GMON ASET BLOCK FOR MESSAGE PARAMETERS
2F6B    [   
2FL2    [     ON ENTRY  X5=> SIZE OF BLOCK  
2G5L    [               X7 =>LINK   
2GK=    [   
2H4W    OUTBLOCK
2HJG          SBX   7  FX1  
2J46          OUTBLOCK 5
2JHQ          STEPAGAIN 
2K3B          ADX   7  FX1  
2KH2          EXIT  7  0
2L2L    [   
2LG=    [   
2L^W    [ THIS ROUTINE PACKS A PARAMETER INTO A GMOM ASET BLOCK 
2MFG     [  ON ENTRY   X2 [ ADDRESS OF PARAMATER DATA   
2M^6    [              X5 = LENGTH OF DATA  
2NDQ    [              X6 = LPDC CHARACTER  
2NYB    [              X7 = LINK
2PD2    OUTPACK 
2PXL          SBX   7  FX1  
2QC=          OUTPACKX 2,5,6
2QWW          ADX   7  FX1  
2RBG          EXIT  7  0
2RW6    [   
2S*Q    MONOUT  
2STB          SBX   7  FX1  
2T*2          MONOUTX  3
2TSL          ADX   7  FX1  
2W#=          EXIT  7  0
39HL    [************************************************** SERCHFENTRY 
3=3=    [ ROUTINE TO BINARY CHOP A FTAPE OR FUSER BLOCK TO FIND A REQUIRED  
3=GW    [ ENTRY 
3?2G    [     X3 => ADDRESS OF BLOCK
3?G6    [     X5 => KEY OF ENTRY THAT WE REQUIRE
3?^Q    [   
3#FB    SERCHFENTRY 
3#^2          ANDX  7  BITS22LS            ['CALL' WILL SET B0 OF LINK IF 'V' SE
3*DL          LDX   1  FX1  
3*Y=          LDX   0  ATYPE(3) 
3BCW          BXU   0  NFIFTAPE(1),WEHAVEFUSER  [J IF SEARCHING A FUSER 
3BXG          ORX   7  GSIGN
3CC6    WEHAVEFUSER 
3CWQ          STO   4  ACOMMUNE2(2)        [WE ALSO WISH TO SAVE THIS (BMAPONE) 
3DBB    SHAREDCODE  
3DW2          LDX   4  5
3F*L          LDX   0  A1(3)               [USED DATA  'V'  
3FT=          LDX   6  3
3G#W          ADX   6  0
3GSG          ADN   6  A1+1                [DISTANCE MARKER FOR LIMIT OF SEARCH 
3H#6          LDN   5  A1+1 
3HRQ          ADX   5  3                   [HOME MARKER FOR START OF SEARCH 
3J?B    NEXTCHOP
3JR2          SRL   0  1                   [DIVIDE V BY 2   
3K=L          BPZ   7  ROUNDFUSER          [IF WE HAVE A FUSER BLOCK
3KQ=    [   
3L9W    [*******************************************
3LPG    [ THIS SECTION ROUNDS DOWN THE NEW 'V' FOR A FTAPE BLOCK TO BE  
3M96    [ DIVISIBLE BY FOUR ,THUS POINTING IT AT WORD 0 OF A FTAPE ENTRY
3MNQ    [   
3N8B          ANDX  0  ROUNDMASK(1)        [MASK FOR REMOVING B22 AND B23   
3NN2          BRN      ROUNDDONE
3P7L    [   
3PM=    [********************************************   
3Q6W    [ THIS SECTION ROUNDS DOWN THE NEW 'V' FOR A FUSER BLOCK TO BE  
3QLG    [ DIVISIBLE BY FIVE,THUS POINTING IT AT WORD 0 OF A FUSER ENTRY 
3R66    [   
3RKQ    ROUNDFUSER  
3S5B          STO   0  2
3SK2          DVS   1  NFIVE(1) 
3T4L          SBX   0  1
3TJ=          LDX   1  FX1  
3W3W    ROUNDDONE   
3WHG          STO   0  3                   [PUT'V' INTO A MODIFIER  
3X36          BPZ   7  NOMASKBMBIT         [IF FUSER THEN KEY IS GENUINE
3XGQ          LDX   2  TAPEMASK(1)  
3Y2B          SMO      5
3YG2          ANDX  2  0(3)                [CLEANED UP KEY IN X2
3Y^L          BRN      OVERFUSER
3^F=    NOMASKBMBIT 
3^YW          SMO      5
42DG          LDX   2  3(3) 
42Y6    OVERFUSER   
43CQ          BXE   2  4,WEHAVEIT          [IF THIS IS THE ENTRY WE WANT
43XB          BNZ   3  NOCHOPAGAIN  
44C2          TRACEIF  K6BMAPONE,99,299,4,DIRNDICT  
44WL          LDN   2  0
45B=          BRN      WAYOUT   
45TW    NOCHOPAGAIN 
46*G          BXL   2  4,MOREBIG
46T6          STO   5  6
47#Q          ADX   6  0                   [NEW'DISTANCE' =  0D+V   
47SB          BRN      NEXTCHOP            [TO CHOP AGAIN   
48#2    MOREBIG 
48RL          ADX   5  0                   [NEW 'HOME' = OH +V  
49?=          LDX   0  6
49QW          SBX   0  5
4==G          BRN      NEXTCHOP            [TO CHOP AGAIN   
4=Q6    WEHAVEIT
4?9Q    [   
4?PB    [**********************************************:************
4#92    [  WE HAVE CORRECT KEY, BUT IF IN FUSER BLOCK   
4#NL    [  WE MUST NOW LOCATE THE CORRECT USERNAME AS   
4*8=    [  KEYS ARE NOT NECESSARILY UNIQUE. 
4*MW    [   
4B7G          ADX   3  5                   [POINTER TO ENTRY IN BLOCK   
4BM6          BNG   7  NOWOUT   
4C6Q          LDX   2  FX2  
4CLB    TRYBACK 
4D62          SBN   3  5
4DKL          LDX   0  3(3) 
4F5=          BXE   0  4,TRYBACK
4FJW          ADN   3  5
4G4G    NEXTSLOT
4GJ6          LDX   0  3(3) 
4H3Q          BXU   0  4,NOTFND 
4HHB          LDN   5  2
4J32          STOZ      1   
4JGL    NEXTWORD
4K2=          LDX   0  0(3) 
4KFW          SMO      ACOMMUNE1(2) 
4K^G          TXU   0  EUSE1N(1)
4LF6          BCS      NOTHIS   
4LYQ          ADN   3  1
4MDB          ADN   1  1
4MY2          SBN   5  1
4NCL          BPZ   5  NEXTWORD 
4NX=          SBN   3  3
4PBW          BRN      NOWOUT   
4PWG    NOTHIS  
4QB6          ADN   5  3
4QTQ          ADS   5  3
4R*B          BRN      NEXTSLOT 
4RT2    NOTFND  
4S#L    [   
4SS=    [***************************************************
4T?W    [  EXIT  +0  IF ENTRY NOT FOUND 
4TRG    [   
4W?6          STOZ     2
4WQQ          BRN      WAYOUT   
4X=B    NOWOUT  
4XQ2    [   
4Y9L    [*************************************************************  
4YP=    [  EXIT  +1  IF ENTRY FOUND 
4^8W    [   
4^NG          LDN   2  1
5286    WAYOUT  
52MQ          LDX   1  FX1  
537B          ANDX  7  TAPEMASK(1)  
53M2          SMO      FX2  
546L          LDX   4  ACOMMUNE2
54L=          ADX   7  2
555W          EXIT  7  0
55KG    [   
5656    [************************************************* STEPAGAIN
56JQ    [   
574B    STEPAGAIN   
57J2          SBX   7  FX1  
583L          STEPAGAIN 
58H=          ADX   7  FX1  
592W          EXIT  7  0
59GG    [   
5=26    [************************************************* STEPREWRITE  
5=FQ    [   
5=^B    STEPREWRITE 
5?F2          STEPREWRITE   
5?YL          EXIT  7  0
5#D=    [   
5#XW    [   
?JLG    [********************************************************* TAPE 
?K66    [  ENTRY (ACROSS) FROM BMAPONE TO PROCESS ENTRY FOR A TAPE  
?KKQ    [   
?L5B    TAPE
?LK2          CALL  7  STEPAGAIN
?M4L          TRACEIF  K6BMAPONE,99,299,ESERN(3),TAPE   
?MJ=          NGX   0  ESERN(3) 
?N3W          BPZ   0  XFILEBENT
?NHG          JBCC     RETURN,3,BNERASE    [CLEAR RETURN TAPE BIT   
?P36          CALL  7  STEPREWRITE  
?PGQ    RETURN  
?Q2B          JBCC     TSINFTAPE,3,BNBMO   [CLEAR ERASE RETURNING BIT   
?QG2          CALL  7  STEPREWRITE  
?Q^L    TSINFTAPE   
?RF=    [   
?RYW    [********************************************************** 
?SDG    [  LOCATE FTAPE ENTRY AND CHECK IF FOR AN UNOWNED   
?SY6    [  TAPE(J. TO NOTOWNED), IF OWNED BY A DIFFERENT
?TCQ    [  USER(J. TO WRONGOWNER) OR IF THERE IS NO FTAPE ENTRY 
?TXB    [  (J. TO MTNOTOWNED). IF O.K. MARK FOUND.  
?WC2    [   
?WWL          LDX   5  ESERN(3)            [TSN WE REQUIRE IN FTAPE 
?XB=          HUNTMISB 3,FI,FTAPE   
?XTW          CALL  7  SERCHFENTRY  
?Y*G          BRN      MTNOTFOUND          [IF NO ENTRY FOR TAPE IN FUSER   
?YT6          LDX   0  1(3)                [WORD 1 OF USERNAME  
?^#Q          BZE   0  NOTOWNED 
?^SB          LDX   2  FX2  
#2#2          TOPFCB2  1
#2RL          TESTNAMX 3,FME1(1),1(3),WRONGOWNER,7 [ARE USERNAMES THE SAME  
#3?=          LDCT  0  #400 
#3QW          ANDX  0  0(3)                [IS TSN MARKED   
#4=G          BZE   0  NOTMARKED
#4Q6          BRN      XFILEBENT           [REPEATED USERNAME - TREAT AS BENT   
#59Q    NOTMARKED   
#5PB          LDCT  0  #400 
#692          ORS   0  0(3)                [ MARK 'FOUND'   
#6NL          LDN   3  ASUPUSER-EUSE1N(2)   
#78=    [   
#7MW    [*********************************************************  
#87G    [  NOW UPDATE PROPER OWNER'S COUNT OF TAPES IN FUSER
#8M6    [   
#96Q          STO   3  ACOMMUNE1(2) 
#9LB          LDX   5  ASUPUSER(2)  
#=62          ADX   5  ASUPUSER+1(2)
#=KL          ADX   5  ASUPUSER+2(2)
#?5=          HUNTMISB 3,FI,FUSER   
#?JW          CALL  7  SERCHFENTRY  
##4G          BRN      XBR  
##J6          LDN   0  1
#*3Q          ADS   0  4(3)                [INCREMENT USERS MT COUNT
#*HB    [*****************************************************  
#B32    [GO BACK TO BMAPONE TO CHECK TRAPS AND INDEX RECORDS
#BGL          ACROSS   BMAPONE,4
#C2=    [   
BX4Q    [******************************************************  NOTOWNED   
BXJB    [  FTAPE ENTRY SHOWS THAT TAPE IS NOT OWNED.
BY42    [  ARRANGE FOR IT TO BE RETURNED FROM THIS USER 
BYHL    [  AND SEND MESSAGE TO THAT EFFECT  
B^3=    [   
B^GW    NOTOWNED
C22G          CALL  7  STEPAGAIN
C2G6          BS       3,BNBM   
C2^Q    [   
C3FB    [*******************************************************  MTNOTFOUND
C3^2    [  NO FTAPE ENTRY FOR THIS TAPE SO AGAIN GET IT 
C4DL    [  RETURNED AND SEND MESSAGE
C4Y=    [   
C5CW    MTNOTFOUND  
C5XG          LDN   5  6
C6C6          CALL  7  OUTBLOCK            [SET UP 6 WORD GMON ASET 
C6WQ          CALL  7  STEPAGAIN
C7BB          LDN   2  ESERN(3) 
C7W2          LDN   5  1
C8*L          LDN   6  17                  [TSN PDC 
C8T=          CALL  7  OUTPACK  
C9#W          TOPFCB   1
C9SG          LDN   2  FME1(1)  
C=#6          LDN   5  3
C=RQ          LDN   6  3                   [ USERNAME PDC   
C??B          CALL  7  OUTPACK  
C?R2          SMO      FX1  
C#=L          LDX   5  MTNOT               [MTNOTFOUND MESSAGE IDENTIFIER   
C#Q=          CALL  7  STEPAGAIN
C*9W          JBCC     NOWOUTPUT,3,BNBM    [IF CASE WAS MTNOTFOUND  
C*PG          LDX   5  MTNOTOWN(1)  
CB96          BRN      NOWOUTPUT           [ TO OUTPUT MESSAGE  
CBNQ    [   
CC8B    [******************************************************  WRONGOWNER 
CCN2    [  THIS TAPE IS OWNED BY ANOTHER USER. GET IT   
CD7L    [  RETURNED FROM THIS USER AND SEND MESSAGE 
CDM=    [   
CF6W    WRONGOWNER  
CF#4 ...      HUNTMISB 1,FI,FTAPE   
CFF= ...      SBX   3  1
CFRN ...      STO   3  4
CG66          LDN   5  10   
CGKQ          CALL  7  OUTBLOCK 
CH5B          CALL  7  STEPAGAIN
CHK2          LDN   2  ESERN(3) 
CJ4L          LDN   5  1
CJJ=          LDN   6  17                  [ TSN PDC
CK3W          CALL  7  OUTPACK  
CK93 ...      HUNTMISB 2,FI,FTAPE   
CK=Q ...      ADX   2  4
CK#F ...      ADN   2  1                   [ ? OF OTHER USERNAME IN FTAPE   
CKB8 ...      LDN   5  3
CKCX ...      LDN   6  3
CKFL ...      CALL  7  OUTPACK  
CKHG          TOPFCB   1
CL36          LDN   2  FME1(1)  
CLGQ          LDN   5  3
CM2B          LDN   6  3
CMG2          CALL  7  OUTPACK  
CRWL          SMO      FX1  
CSB=          LDX   5  MTWRONG             [WRONGOWNER MESSAGE  
CSTW    NOWOUTPUT   
CT*G          MONOUTX  5                   [ OUTPUT THE APPROPIATE MESSAGE  
CTT6          CALL  7  STEPAGAIN
CW#Q          BS       3,BNERASE           [MARK TAPE TO BE RETURNED
CWSB          STEPREWRITE   
CX#2    [****************************************************** 
CXRL    [GO BACK TO BMAPONE TO SKIP BLOCKS RECORD   
CY?=    [AND CHECK TRAPS RECORD ETC 
CYQW          ACROSS   BMAPONE,5
F=QL    XFILEBENT   
F?==          ACROSS   BMAPONE,12   
F?PW    XNOTAPEUSER 
F#9G          GEOERR   1,NOTAPEUS   
F#P6    XBR 
F*8Q ...      GEOERR   1,BMAPTAPE   
F*NB    [   
FB82    #END
^^^^ ...173651310003
  • Last modified: 17/01/2024 11:55
  • by 127.0.0.1