{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: MACROS RM59B)}}
====== MACROS RM59B ======
(George Source)
22FL ...[??? FNORM SECT FILE FGN 6 DOC
2FL2 #MAC FNORM
2G5L #STR %A
2GK= #SKI
2H4W (
2HJG DOWN DECODE,2
2J46 )
2JHQ #STR %A
2K3B (
2KH2 LDN 0 %A
2L2L SMO FX2
2LG= STO 0 EXEC3 [SET MODE PARAM IN EXEC3
2L^W DOWN DECODE,1
2MFG )
2M^6 #NOR
2N8Y ...[??? USERNORM SECT FILE FGN 6 DOC
2NDQ #MAC USERNORM
2NYB LDEX 0 %A
2PD2 SMO FX2
2PXL STO 0 ACOMMUNE6
2QC= #STR NOERRMESS,%B
2QWW (
2RBG #STR %B
2RW6 GEOERR 1,USERNORM
2S*Q DOWN NORMALUS,4
2STB )
2T*2 #STR NOERRMESS,%B
2TSL #SKI
2W#= DOWN NORMALUS,7
2WRW #NOR
2X3N ...[??? FINDNAME SECT FILE FGN 6 DOC
2X?G #MAC FINDNAME
2XR6 DOWN LEXIFIND,1
2Y=Q #NOR
2YQB ...[??? OWNERCHE SECT FILE FGN 6 DOC
2^PL #MAC OWNERCHE
2^PY ...[ THIS MACRO CHECKS IF FILES IN THE DIRECTORY OPEN AT THE TOP LEVEL
2^Q= ...[ ARE OWNED BY THE PROPER USER.
2^QK ...#UNS FTS1
2^RJ ...(
2^SH ...#STR NOADJ,%A
2^TG ...#SKI
2^WF ...(
2^XD ... LDN 0 1
2^YC ... SMO FX2
2^^B ... STO 0 ACOMMUNE8
322* ...)
323# ...#STR NOADJ,%A
324? ...(
325= ... SMO FX2
3269 ... STOZ ACOMMUNE8
3278 ...)
3287 ...)
329= DOWN OWNERCHE,1
32NW #NOR
338G ...[??? CHECKOWN SECT FILE FGN 6 DOC
347Q #MAC CHECKOWNER
34#Y ...[ THIS MACRO CHECKS IF THE ENTRANT,WHOSE NAME IS IN THE 1ST FABSNB
34G6 ...[ IS OWNED BY THE PROPER USER.
34MB DOWN OWNERCHE,2
3572 #NOR
35LL ...[??? PROPUSER SECT FILE FGN 6 DOC
375G #MAC PROPUSER
379C ...[ CHECKS WHETHER A USER, WHOSE NAME IS IN CPREFIX IN THE CURRENT
37*# ...[ ACTIVITY BLOCK, IS A PROPER USER. IF NOT, THE PROPER USER NAME
37F9 ...[ IS LEFT IN ACOMMUNE1-3
37K6 DOWN LEXIFIND,2
384Q #NOR
38JB ...[??? DICTJOB SECT FILE FGN 6 DOC
3=3= #MAC DICTJOB
3=77 ...[ DICTJOB MACRO KEEPS A COUNT OF JOBS RUNNING IN A USER & DOES OTHER
3=?4 ...[ ENTRY POINTS: 1-JOB,ETC. 2-ENDJOB,ETC. 3-ERASE
3=B^ ...[ DICTJOB 3 IS THE SAME AS JOBQCHEC (WHICH WAS ALREADY IN USE)
3=GW #STR %A,5
3?2G #SKI
3?G6 (
3?^Q LDX 0 %B
3#FB SMO FX2
3#^2 STO 0 ACOMMUNE1
3*DL )
3*Y= DOWN DICTJOB,%A
3BCW #NOR
3BMN ...[??? FILELOG SECT FILE FGN 6 DOC
3BXG #MAC FILELOG
3CC6 DOWN FILELOG,1
3CWQ #NOR
3D6J ...[??? TEMPDIRA SECT FILE FGN 6 DOC
3DBB #MAC TEMPDIRA
3DW2 FJOCA 1,FX2
3F*L LDCT 0 #002
3FT= ANDX 0 JMISC(1)
3G#W BNZ 0 M1TEMPDIRA
3GSG DOWN NEWDIR,5
3H#6 BRN %A
3HRQ BRN %B
3J?B M1TEMPDIRA
3JR2 #NOR
3K=L ...[??? FREEALL SECT FILE FGN 6 DOC
3KQ= #MAC FREEALL
3L24 ...[ FREES ALL BS BLOCKS IN A FRB OF FULLB FORMAT & ALSO FREES THE FRB
3L9W MHUNTW 2,FILE,FRB
3LPG NAME 2,BSTB,FULLB
3M96 FREEBAX [FREE BS BLOCKS IN FULLB
3MNQ MFREE BSTB,EMPTYB [FREE CORE
3N8B #NOR
3NN2 ...[??? TESTNAME SECT FILE FGN 6 DOC
3QLG #MAC TESTNAME
3QPL ...[ THIS TESTS TWO NAMES AND SETS X7 ZERO IF THEY ARE
3QSQ ...[ NOT ALIKE %A=LENGTH OF NAME %B, %C CONTAIN THE
3QXW ...[ STARTING ADDRESSES OF THE TWO NAMES
3R32 ...[ IT USES X7 AND X0
3R66 NGN 0 %A [SET UP X0 AS COUNT
3RKQ TTEST
3S5B SMO 0
3SK2 LDX 7 %A+%B [ LOAD INTO X7 FIRST WORD
3T4L SMO 0 [J IF NOTSAME
3TJ= TXU 7 %A+%C
3W3W BCS NOTSAME
3WHG ADN 0 1 [ADD ONE TO COUNT
3X36 BNZ 0 TTEST [ J IF COUNT NOT EXPIRED
3XGQ LDN 7 1 [SET X7 FOR ALIKE
3Y2B BRN TOUT
3YG2 NOTSAME
3Y^L LDN 7 0
3^F= TOUT [SET X7 FOR NOTALIKE
3^YW #NOR
42DG ...[??? TESTNAMX SECT FILE FGN 6 DOC
43CQ #MAC TESTNAMX
43JY ...[ THIS MACRO TESTS 2 NAMES AND BRANCHES TO %D IF THEY ARE NOT EQUAL
43Q6 ...[ %E IS A WORK-ACCUMULATOR ,X7 BEING THE DEFAULT VALUE
43XB NGN 0 %A
44C2 M1TESTNAMX
44WL #STR %E
45B= (
45TW SMO 0
46*G LDX %E %A+%B
46T6 SMO 0
47#Q TXU %E %A+%C
47SB )
48#2 #STR %E
48RL #SKI
49?= (
49QW SMO 0
4==G LDX 7 %A+%B
4=Q6 SMO 0
4?9Q TXU 7 %A+%C
4?PB )
4#92 BCS %D
4#NL ADN 0 1
4*8= BNZ 0 M1TESTNAMX
4*MW #NOR
4*XN ...[??? TESTUSER SECT FILE FGN 6 DOC
4B7G #MAC TESTUSER [TESTS IF WORD"%A CONTAINS" :"
4BM6 #ACC %A
4C6Q (
4CLB LDX 0 %A
4D62 BXE 0 HCOLUSER,%B
4DKL )
4F5= #ACC %A
4FJW #SKI
4G4G BXE %A HCOLUSER,%B
4GJ6 #NOR
4GRY ...[??? UNNORM SECT FILE FGN 6 DOC
4H3Q #MAC UNNORM
4HHB #STR %A
4J32 #SKI
4JGL DOWN NNORM,1
4K2= #STR %A
4KFW (
4K^G #STR %A,FULL
4LF6 #SKI
4LYQ DOWN NNORM,1
4MDB #STR %A,TWO
4MY2 #SKI
4NCL DOWN NNORM,2
4NX= #STR %A,LOC
4PBW #SKI
4PWG DOWN NNORM,3
4QB6 #STR %A,FULL
4QTQ (
4R*B #STR %A,TWO
4RT2 (
4S#L #STR %A,LOC
4SS= GEOERR 1,UNNORM
4T?W )
4TRG )
4W?6 )
4WQQ #NOR
4X=B ...[??? ERASE SECT FILE FGN 6 DOC
4XQ2 #MAC ERASE
4X^S ...[ THIS MACRO ERASES THE FILE WHOSE FABSNB IS IN THE CHAIN.
4Y9L DOWN ERASEA,2
4YP= #NOR
4^8W ...[??? ERASEND SECT FILE FGN 6 DOC
4^NG #MAC ERASEND
4^Y# ...[ SAME AS ERASE BUT DIRECTORY ABOVE TO-BE-ERASED FILE IS OPEN
5286 DOWN ERASEA,1
52MQ #NOR
537B ...[??? CREATEB SECT FILE FGN 6 DOC
53M2 #MAC CREATEB
53WS ...[ THIS MACRO SETS UP A GENERAL PURPOSE FILE/CREATE BLOCK
546L SETNCORE CREALEN,1,FILE,CREATE
54L= #MOD %A
555W #SKI
55KG (
5656 #STR %A,1
56JQ LDX %A 1
574B )
57J2 ADN 1 A1
583L STOZ 0(1)
58H= LDX 0 1
592W ADN 1 1
59GG MOVE 0 CREALEN-1
5=26 #STR 1,%A
5=FQ #SKI
5=^B SBN 1 A1+1
5?F2 #STR 1,%A
5?YL LDX 1 FX1
5#D= #NOR
5#XW ...[??? FRIGMONF SECT FILE FGN 6 DOC
5*X6 #MAC FRIGMONF
5B4# ...[ THIS MACRO IS A FRIG TO CREATE A WORKFILE OPEN TO A CPAT INSIDE
5B9G ...[ THE SYSTEM AND ACCESSIBLE BY COMMAND EG LISTFILE
5BBQ CREATEWF [SETS UP A WORKFILE FCB,FEXTRA AND
5BWB [CHAINS IT AT THE TOP OF THE STACK
5CB2 OPENWORK M1FRIGMONF,GENERAL
5CTL TESTRPN2 OK,M1FRIGMONF
5D*= #STR %B
5DSW #SKI
5F#G FILEMOVE 0,-1 [MAKE IT BOTTOM FILE
5FS6 BRN M2FRIGMONF
5G?Q M1FRIGMONF
5GRB #STR %A
5H?2 BRN %A
5HQL #STR %A
5J== #STR
5JPW GEOERR 1,FRIGMONF
5K9G M2FRIGMONF
5KP6 #NOR
5L8Q ...[??? FINDFCB SECT FILE FGN 6 DOC
5MML #MAC FINDFCB
5MMY ...[
5MN= ...[ ACCS USED AS FOLLOWS
5MNJ ...[ X0 TESTNAMX
5MNW ...[ X1 FCBRING POINTER
5MP8 ...[ X2 POINTER TO THE REQUIRED NAME IN FABS
5MPG ...[ X3 =0 IF USER NAME OR ELSE POINTER TO SUPUSER NAME
5MPS ...[ X4 LOCAL NAME USER NAME IDICATOR . 0=FLOC1,3= FME1
5MQ6 ...[ X5 FIRST WORD OF REQ NAME OR GENERAL WORK WORD
5MQD ...[ X6 =0 IF ON DIR RING OR =1 IF ON HALF RING
5MQQ ...[ X7 FCB COUNT
5MR4 ...[
5MRH ...[ THIS MACRO SEARCHES THROUGH BOTH THE OPEN AND HALF-OPEN FILE CHAINS
5MXD ...[ FOR AN FCB WHOSE NAME IS GIVEN IN A FILE/FABSNB POINTED TO BY %A.
5N3* ...[ THE POINTER TO THE FCB IF FOUND IS GIVEN IN %B.
5N7= LDX 1 %A
5NLW LDN 2 %B
5P6G CALL 0 M1FINDFCB
5PL6 #OPT M2FINDFCB=1
5Q5Q #SKI M2FINDFCB
5QKB (
5R52 BRN M3FINDFCB
5RJL #DEF M1FINDFCB=0?
5S4= STO 0 GEN0 [STORE LINK IN GEN0
5SHW STO 1 GEN1 [KEEP %A IN GEN1
5T3G LDN 0 3
5TH6 LDN 1 GEN2 [ACCUMULATORS 3 TO 7 DUMPED
5W2Q MOVE 0 5 [ IN GEN2 TO GEN6
5WCT ...
5WSY ... NGX 5 GEN1
5X=3 ... STO 2 GEN1
5XM6 ... HUNT 2,FILE,FABSNB
5Y49 ... ADX 5 A1(2)
5YF# ... ADX 2 5 [POINTER DOWN FABS
5YWC ... ADN 2 A1 [POINTS TO REQ NAME
5^?G ... SBN 5 1 [ARE WE AT THE TOP OF THE FABS
5^NK ...
625N ... LDN 3 0 [SET X34 TO INDICATE USERNAME
62GR ... LDN 4 FME1-FLOC1
62XW ... BZE 5 M4FINDFCB [X2 POINTS TO TOP NAME MUST BE USER
63#^ ...
63Q4 ... LDX 0 0(2)
6477 ... ADN 2 1
64J= ... SBX 0 HCOLUSER [SEE IF USER COLON
64^* ... BZE 0 M4FINDFCB [YES IT IS
65BD ...
65RH ... SBN 2 1 [LOOKING FOR LOCAL NAME
668L ... SBN 5 3
66KP ... LDX 3 2 [SO SET X3 TO SUPUSER
672S ... LDN 4 0
67CX ... SBN 3 3
67T2 ... BZE 5 M4FINDFCB [SUPUSER IS TOP OF FABS
68=5 ...
68M8 ... SBN 3 2 [SUPUSER IS NOT TOP SO ADJUST X3
694? ...
69FB ...M4FINDFCB
69WF ...
6=?J ... LDX 5 0(2) [LOAD COMPARISON WORD
6=NM ... LDN 6 1 [INDICATE HALF OPEN CHAIN
6?5Q ... BASEFCB 1,HALF,M10FINDFCB,7
6?GT ...[
6?XY ...M5FINDFCB
6#*3 ... BZE 4 M8FINDFCB [DO LOCAL TEST
6#Q6 ...M6FINDFCB [USERNAME TEST
6*79 ... BXE 5 FME1-FCBRING(1),M11FINDFCB
6*J# ...M7FINDFCB
6*^C ... NEXTFCB 1,DIR,M6FINDFCB,7
6BBG ... BRN M10FINDFCB
6BRK ...
6C8N ...M8FINDFCB [LOCAL NAME TEST
6CKR ... BXE 5 FLOC1-FCBRING(1),M11FINDFCB
6D2W ...M9FINDFCB
6DC^ ... NEXTFCB 1,DIR,M8FINDFCB,7
6DT4 ...
6F=7 ...M10FINDFCB [FCB NOT FOUND ON THIS SEARCH
6FM= ... BZE 6 M10AFINDFCB [FINISHED BOTH HALF AND DIR
6G4* ... LDN 6 0 [INDICATE DIR CHAIN
6GFD ... BASEFCB 1,DIR,M10AFINDFCB,7
6GWH ... BRN M5FINDFCB [RETURN TO SEARCH DIR RING
6H?L ...
6HNP ...M10AFINDFCB [GIVE REPLY NOTFOUND
6J5S ... KEEPREP 7,NOTFOUND
6JGX ... BRN M16FINDFCB
6JY2 ...
6K*5 ...M11FINDFCB [THIS ROUTINE CHECKS FURTHER DETAILS OF FCB
6KQ8 ... LDX 5 1(2)
6L7? ... SMO 4
6LJB ... BXU 5 FLOC2-FCBRING(1),M12FINDFCB [COMPARE REST OF NAME
6L^F ...
6MBJ ... LDX 5 2(2)
6MRM ... SMO 4
6N8Q ... BXE 5 FLOC3-FCBRING(1),M13FINDFCB
6NKT ...
6P2Y ...M12FINDFCB [RETURN TO SEARCH
6PD3 ... LDX 5 0(2)
6PT6 ... BZE 4 M9FINDFCB [LOCAL NAME EXIT
6Q=9 ... BRN M7FINDFCB [USER NAME EXIT
6QM# ...
6R4C ...M13FINDFCB [FIRST NAME OK
6RFG ... BZE 3 M14FINDFCB [USER SO NO FURTHER NAME CHECK NECC
6RWK ... TESTNAMX 3,0(3),FUSER1-FCBRING(1),M12FINDFCB,5 [LOCAL NAME CHEC
6S?N ...
6SNR ...M14FINDFCB [FINAL CHECK FOR TO BE ERASED DIRS
6T5W ... LDX 5 FCOMM-FCBRING(1)
6TG^ ... ANDN 5 1
6TY4 ... BNZ 5 M12FINDFCB
6W*7 ... SBN 1 FCBRING [EVERYTHING OK
6WQ= ... LDX 5 1
6WTG ...#STR %C
6WYQ ...#SKI
6X42 ...(
6X7* ... BZE 6 M15FINDFCB [FILE ALREADY OPEN
6XJD ... LDX 4 FPTR(1) [CHAIN BLOCKS ON FILE CHAIN
6X^H ... TRANSFCB 5,HALF,FILE
6YBL ... LDX 1 4
6YRP ... CHAIN 1,BFILE+1 [CHAIN FINDEXF BLOCK
6^8S ...
6^KX ...M15FINDFCB
6^SD ...)
7232 ... LDX 2 5
72D5 ... KEEPREP 7,OK
72T8 ...
73=? ...M16FINDFCB
73MB ... PUTREP 7
745G TRACEIF K6OPEN,99,299,7,HALFREP
74K6 LDN 0 GEN2 [RESTORE X3 TO X7
754Q LDN 1 3
75JB MOVE 0 5
7642 LDX 1 GEN1
76HL STO 2 0(1) [PUT -> IN %B
773= LDX 1 FX1
77GW LDX 2 FX2
782G BRN (GEN0)
78G6 #FREE M2FINDFCB
78^Q #DEF M2FINDFCB=0
79FB M3FINDFCB
79^2 )
7=DL #NOR
7=ND ...[??? READLEX SECT FILE FGN 6 DOC
7=Y= #MAC READLEX
7?CW DOWN USELEX,1
7?XG #NOR
7#7# ...[??? NEWUSER SECT FILE FGN 6 DOC
7#C6 #MAC NEWUSER
7#WQ DOWN USELEX,2
7*BB #NOR
7*L8 ...[??? FREELEX SECT FILE FGN 6 DOC
7*W2 #MAC FREELEX
7B*L DOWN USELEX,3
7BT= #NOR
7C#W ...[??? NOOWNERA SECT FILE FGN 6 DOC
7CSG ...#MAC NOOWNERACC
7D#6 ...#MEN OWNERCHE
7DRQ ...#TRA K55OWNERCHE
7F?B ... BRN K56OWNERCHE
7FR2 ...#END
7G=L ...#NOR
^^^^ ...07372056001100000000