{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: BMAPTAPE865)}}
====== BMAPTAPE865 ======
(George Source)
**Macros used:** [[george:macro:ACROSS|ACROSS]], [[george:macro:BS|BS]], [[george:macro:BXE|BXE]], [[george:macro:BXL|BXL]], [[george:macro:BXU|BXU]], [[george:macro:GEOERR|GEOERR]], [[george:macro:HUNTMISB|HUNTMISB]], [[george:macro:JBCC|JBCC]], [[george:macro:MONOUT|MONOUT]], [[george:macro:MONOUTX|MONOUTX]], [[george:macro:OUTBLOCK|OUTBLOCK]], [[george:macro:OUTPACK|OUTPACK]], [[george:macro:OUTPACKX|OUTPACKX]], [[george:macro:SEG|SEG]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:STEPAGAIN|STEPAGAIN]], [[george:macro:STEPREWRITE|STEPREWRITE]], [[george:macro:TESTNAMX|TESTNAMX]], [[george:macro:TOPFCB|TOPFCB]], [[george:macro:TOPFCB2|TOPFCB2]], [[george:macro:TRACEIF|TRACEIF]]
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