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