{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: COMPOST867)}}
====== COMPOST867 ======
(George Source)
**Macros used:** [[george:macro:ADDINMODE|ADDINMODE]], [[george:macro:ANSOK2|ANSOK2]], [[george:macro:BBS|BBS]], [[george:macro:BBUS|BBUS]], [[george:macro:BS|BS]], [[george:macro:BXE|BXE]], [[george:macro:BXGE|BXGE]], [[george:macro:BXL|BXL]], [[george:macro:BXU|BXU]], [[george:macro:CLOSE|CLOSE]], [[george:macro:CLOSEDIR|CLOSEDIR]], [[george:macro:CLOSEMULT|CLOSEMULT]], [[george:macro:ERASEMULT|ERASEMULT]], [[george:macro:FCBFIND|FCBFIND]], [[george:macro:FINDWFN|FINDWFN]], [[george:macro:GEOERR|GEOERR]], [[george:macro:HSPACTLF|HSPACTLF]], [[george:macro:HUNT2|HUNT2]], [[george:macro:JBC|JBC]], [[george:macro:JBCC|JBCC]], [[george:macro:JMBAC|JMBAC]], [[george:macro:LFSIZE|LFSIZE]], [[george:macro:MENDAREA|MENDAREA]], [[george:macro:MHUNT|MHUNT]], [[george:macro:MHUNTW|MHUNTW]], [[george:macro:NAME|NAME]], [[george:macro:PICKREP2|PICKREP2]], [[george:macro:PUTREP2|PUTREP2]], [[george:macro:REWRITE|REWRITE]], [[george:macro:RV|RV]], [[george:macro:SEG|SEG]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SETMODE|SETMODE]], [[george:macro:SETREP2|SETREP2]], [[george:macro:SETUPCORE|SETUPCORE]], [[george:macro:SFCB|SFCB]], [[george:macro:TESTMODE|TESTMODE]], [[george:macro:TESTREP2|TESTREP2]], [[george:macro:TOPFCB2|TOPFCB2]], [[george:macro:TRACE|TRACE]], [[george:macro:UNOPCH|UNOPCH]], [[george:macro:UP|UP]], [[george:macro:UPPLUS|UPPLUS]]
22FL ... SEG COMPOST,82,MIKE PUTNAM,USEROPES
22^= [
2394 ...[ (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1983
23DW [
23YG SEGENTRY K1COMPOST,NEXTELEM
24D6 SEGENTRY K3COMPOST,SINGLFREZ
24XQ SEGENTRY K4COMPOST,MDFREEZE
25CB SEGENTRY K7COMPOST,MDFCLOSE
25X2 SEGENTRY K8COMPOST,MULTIFREZ
26BL [
26W= [
27*W [ K1 USED BY USERONE TO CALCULATE GEN. NO. FOR OPENING NEXT
27TG [ ELEMENT OF A MULTIFILE, SETTING REPLY AND CLOSING MDF IF NECESS.
28*6 [
28SQ [
29#B [ THIS CONTAINS THE SECURE JOBWELL ENHANCEMENT
29S2 [ AWORK1 CONTAINS E-MODES
2=?L [ AWORK3 - CONTAINS EAUTOCOUNT - IF 'FREEZE' MODE
2=R= [ CONTAINS ESAVECOUNT - IF 'SAVEFREEZE' MODE
2?=W [ AWORK4 - CONTAINS FREEZECOUNT - IF 'FREEZE' MODE
2?QG [ CONTAINS FSVCT - IF 'SAVEFREEZE' MODE
2#=6 NEXTELEM
2#PQ LDX 6 5 [USEROPEN MODES IN X5 ON ENTRY
2*9B STO 6 AWORK1(2)
2*P2 SETMODE 5,ERASE,EMPTY
2B8L ANDX 5 6
2BN= ANDN 6 #7000
2C7W SBN 6 #3000 [ [X6] -VE IF READ MODE
2CMG LDN 7 0
2D76 CALL 4 SFCB [SETS X2 -> FCB OF MDF
2DLQ LDN 3 1 [SET NOT FIRST APPEND
2F6B [ PUT CURRENT HIGHEST GEN.IN X4
2FL2 LDEX 4 FSTREND(2)
2G5L MHUNT 1,FILE,FABSNB
2GK= SMO A1(1)
2H4W [ PUT LAST GEN.ACCESSED IN X7
2HJG LDX 7 A1-2(1)
2J46 BPZ 6 WRIT [J IF WRITER
2JHQ SBN 4 2
2K3B BNG 4 MULTEND [J IF NO ELEMENTS AND READING
2KH2 ADN 4 2
2L2L TRY
2LG= BXE 4 7,MULTEND [END OF MULTIFILE
2L^W #SKI K6COMPOST>99-99
2MFG (
2M^6 BXGE 4 7,OK
2NDQ GEOERR 1,CURR-END
2NYB OK
2PD2 )
2PXL TINC
2QC= ADN 7 1
2QWW BPZ 6 NORV [NO RETRIEVE FOR WRITER
2RBG SETMODE 0,DIR [LF DOES USEROPEN WITH DIR MODE
2RW6 SMO FX2
2S*Q ANDX 0 AWORK1
2STB BNZ 0 NORV [NOR IF NOT OPENING FILE
2T*2 ADN 7 1
2TSL BXL 4 7,NORU [PRESENT ELEMENT IS LAST ONE
2W#= SMO A1(1)
2WRW STO 7 A1-2(1) [FABSNB SET UP FOR UNNORM
2X?G RV [RETRIEVE NEXT ELEMENT
2XR6 MHUNT 1,FILE,FABSNB
2Y=Q NORU
2YQB SBN 7 1 [GEN RIGHT FOR NEXT ELEM TO OPEN
2^=2 NORV
2^PL SMO A1(1)
329= STO 7 A1-2(1)
32NW UPPLUS 1
338G WRIT
33N6 BNZ 5 NAPP [NOT EMPTY OR ERASE IMPLIES APPEND
347Q [ APPEND CASE
34MB BXU 7 3,NOTAPP1
3572 LDN 3 0 [SET FIRST APPEND
35LL NOTAPP1
366= SBN 4 2
36KW BNG 4 TINC [J IF NO ELEMS, ASSUMES [X7] = 1
375G ADN 4 2
37K6 [ IGNORE FABSNB CONTENTS, SET [X7] = CURRENT HIGHEST GEN. NO.
384Q LDX 7 4
38JB NAPP
3942 SEGENTRY K50COMPOST [FOR MENDING: TINYMULT MACRO
39HL LDN 4 FMULTLEN [MAX NO. OF ELEMENTS IN MULT
3=3= BRN TRY
3=GW MULTEND
3?2G CLOSEMULT
3?G6 BZE 3 OPAPP [J IF FIRST APPEND
3?^Q SETREP2 ENDMULT
3#FB UP
3#^2 OPAPP
3*DL SETREP2 MULTFULL [MULTIFILE HAS BEEN FILLED UP
3*Y= UP
3BCW [
3BXG [
3CC6 [
3CWQ SINGLFREZ
3DBB CALL 7 SVFRZMOD [ SET UP AWORK3,4 APPROPRIATELY
3DW2 CALL 4 SOLID [FREEZE DIR. ENTRY & FCB IF IN CORE
3F*L UP
3FT= [
3G#W [
3GSG [ ENTRY FOR UPDATING CURRENT AND TRUE ENDS OF MULTIFILE IN THE
3H#6 [ MDF FROM THE GEN. NO. GIVEN IN FABSNB WHEN OPENING A NEW
3HRQ [ ELEMENT FOR WRITING. THE ELEMENT'S FCB AND DIR. ENT ARE FROZEN
3J?B [ AND MARKED TO BE ERASED IF NECESSARY. THE MDF IS USED TO
3JR2 [ DETERMINE WHETHER OR NOT TO DO SO.
3K=L [
3KQ= [
3L9W MDFREEZE
3LPG CALL 7 SVFRZMOD [ SET UP AWORK3,4 APPROPRIATELY
3M96 LDN 7 2
3MNQ CALL 4 SFCB [OF MDF
3N8B MHUNT 1,FILE,FABSNB
3NN2 SMO A1(1)
3P7L LDX 0 A1-2(1) [GEN. NO.
3PM= LDEX 4 FSTREND(2) [HIGHEST GEN. NO. BEFORE UPDATE
3Q6W LDCT 1 #377
3QLG ANDX 1 FSTREND(2)
3R66 SLC 1 9
3RKQ SBX 1 0
3S5B BPZ 1 NOALT
3SK2 LDX 1 0
3T4L SRC 1 9
3TJ= ERX 1 FSTREND(2)
3W3W LDCT 6 #377
3WHG ANDX 1 6
3X36 ERS 1 FSTREND(2) [RE-SET TRUE END
3XGQ NOALT
3Y2B DEX 0 FSTREND(2) [NEW CURR END
3YG2 LDX 5 FREEZECOUNT(2)
3Y^L [ CHECK IF MDF IS TO BE ERASED
3^49 ...#UNS ILOGACC
3^6S ...(
3^9C ... LDN 6 0 [ENT REWRITE MARKER
3^#2 ... MHUNTW 3,FILE,ENT
3^BK ...)
3^F= BBUS 14,FSTREND(2),NOB14 [J IF NOT ERASED
3^JB ...#UNS ILOGACC
3^MG ... ADN 6 1 [INDICATE ENT TO BE REWRITTEN
3^QL ...#UNS ILOGACC
3^TQ ...#SKI
3^YW MHUNTW 3,FILE,ENT
42DG BS 3,BEERASE [MARK MDF'S ENT T.B.E.
42KN ...#UNS ILOGACC
42QW ...#SKI
42Y6 BZE 5 NOFREZ
43CQ NOB14
43DT ...#UNS ILOGACC
43FY ...(
43H3 ... JBC NOLOG,2,BFLOGACC
43J6 ... ADN 6 1 [INDICATE ENT TO BE REWRITTEN
43K9 ... BS 3,BELOGACC
43L# ...NOLOG
43MC ... BNZ 5 YFRZ [MULT FROZEN
43NG ... BZE 6 UP [ENT NOT TO BE REWRITTEN
43PK ... BRN NOFREZ [ENT TO BE REWRITTEN
43QN ...YFRZ
43RR ...)
43SW ...#UNS ILOGACC
43T^ ...#SKI
43XB BZE 5 UP [X5=OK REPLY
44C2 LDX 6 FSTRID(2)
44WL HSPACTLF 6,5,4 [AVOIDS LF FROM OTHER JOB PROBLEM
45B= NOFREZ
45TW CALL 4 SOLIDIFY
46*G PICKREP2 5
46T6 UP
47#Q CLOSEDIR
47SB PUTREP2 5
48#2 UP
48RL
49?=
49QW [
4==G [
4=Q6 [ THIS IMPLEMENTS THE CLOSEMULT MACRO WHICH ERASES
4?9Q [ ANY EXTRANEOUS ELEMENTS OR THE WHOLE MULTIFILE IF SO MARKED.
4?PB [ IF TOP FILE OPEN IS NOT AN MDF A NORMAL CLOSE IS DONE.
4#92 [
4#NL [
4*8= MDFCLOSE
4*MW LDN 7 0
4B7G ... TOPFCB2 2 [AT TOP LEVEL
4BM6 JBCC XLAST,2,BFMDFOP [J IF NOT MDF, OTHERWISE CLEAR BIT
4C2T ... LDX 0 CTOPEN(2)
4CBJ ... ANDX 0 HALFTOP
4CQ? ... BZE 0 READMODE [J IF OPEN FOR READING
4D62 LDEX 5 FSTREND(2) [NEW HIGHEST GEN. NO.
4DKL LDCT 0 #400
4F5= ORS 0 FSTREND(2)
4FJW ERS 0 FSTREND(2) [UNSET WRITER BIT
4G4G LDX 3 FREEZECOUNT(2)
4GJ6 ... BZE 3 SNOFREZ [J IF MULT NOT FROZEN
4H3Q LDX 4 FSTRID(2) [ID FOR ACTLF'S
4HHB STOZ FREEZECOUNT(2)
4J32 HSPACTLF 4,3,5,1
4JGL ... TOPFCB2 2 [RELOCATE MDF'S FCB
4K2= ...SNOFREZ
4KFW STOZ FSTRID(2)
4K^G LDEX 0 FSTREND(2) [CURR. END
4LF6 LDCT 1 #377
4LYQ ANDX 1 FSTREND(2) [TRUE END
4MDB SLC 1 9
4MY2 SBX 0 1
4NCL BNG 0 XER [J IF EXCESS ELEMENTS
4NX= LDN 0 #1000
4PBW ANDX 0 FSTREND(2) [PICK OUT TO-BE-ERASED BIT IF PRESENT
4PWG BZE 0 XLAST
4QB6 XER
4QTQ #SKI K6COMPOST>99-99
4R*B TRACE FSTREND(2),FSTREND
4RT2 [ DUPLICATE FABSNB BEFORE DOING ERASEMULT WHICH IS AUTONOMOUS
4S#L [ AND CONSUMES A FABSNB
4SS= MHUNT 2,FILE,FABSNB
4T?W LDX 3 HDREC(2)
4TRG SETUPCORE 3,1,FILE,FABSNB
4W?6 HUNT2 2,FILE,FABSNB,1
4WQQ LDN 5 HDREC(2)
4X=B LDN 6 HDREC(1)
4XQ2 MOVE 5 0(3)
4Y9L LDX 0 ATYPE(2)
4YP= STO 0 ATYPE(1)
4^8W ERASEMULT [START UP MULTIFILE ERASE
4^NG ... BRN XCLMULTUP [FINISH
5286 XLAST
52MQ CLOSE [MDF OR TOP FILE
52PF ...XCLMULTUP
537B UP
53M2 READMODE
53WS ... LDX 0 CTOPEN(2)
546L SBN 0 1 [X0=COUNT OF READERS
54L= BZE 0 SNOFREZ [J IF LAST CLOSER
555W BS 2,BFMDFOP [SET BIT AGAIN
55KG BRN XLAST [SHD BE IN SAME COORD AS UNSETTING
5656 [
56JQ [
574B [
57J2 MULTIFREZ [USED BY USERSTRM
583L CALL 7 SVFRZMOD [ SET UP AWORK3,4 APPROPRIATELY
58H= CALL 4 SOLIDCOMP [FREEZE ELEMENT
592W UP
59GG [
5=26 [
5=FQ
5=^B
5?F2 SFCB
5?YL # LOCATES THE FCB FOR THE FILE AT DEPTH SPEC BY X7
5#D= # LEAVES X2-> FCB ; DESTROYS X0,X1; LINK IS X4
5#XW SFCB 7,2
5*CG EXIT 4 0
5*X6
5BBQ
5BWB # FREEZES DIRENT & FCB (IF IN CORE) FOR FILE SPEC. IN ENT BLOCK.
5CB2 # ENTRY AT SOLID => DIR OPEN ON TOP
5CTL [ ENTRY AT SOLIDCOMP USED SOLELY FOR FREEZING ELEMENTS OF
5D*= [ MULTIFILES-OTHERWISE AS FOR SOLID
5DSW # ENTRY AT SOLIDIFY => FILE OPEN ON TOP, DIR OPEN AT DEPTH 1
5F#G # EXPECTS DIR. POSITIONED READY TO REWRITE ENTRY
5FS6 # SOLIDIFY EXPECTS THE NO OF TIMES TO FREEZE IN X5
5G?Q SOLID
5GRB MHUNT 1,FILE,FABSNB
5H?2 BBS 16,ATYPE(1),WORK [J IF WORKFILE BEING FROZEN
5HQL SOLIDCOMP
5J== LDN 0 0 [DEPTH AT WHICH DIR.OPEN
5JPW LDN 5 1 [FREEZE ONCE
5K9G BRN SOL0
5KP6 SOLIDIFY
5L8Q LDN 0 1 [DEPTH AT WHICH DIR.OPEN
5LNB SOL0
5M82 SBX 4 FX1
5MML LDX 2 FX2
5N7= ... STO 4 AWORK2(2)
5P3W ... LDX 4 0 [SAVE DEPTH OF DIR IN X4
5PDW ... LDN 6 0 [CLEAR FILE OPEN FOR WRITING
5PTW ... [MARKER
5Q=W ... BZE 4 SOL [J IF FILE NOT OPEN TO ACT
5QMW ... TOPFCB2 2 [X2->FCB OF FILE
5R52 BRN SOLTOP
5RJL [
5S4= [ FILE NOT OPEN TO THIS ACT.SEARCH FILE CHAIN FOR IT TO FREEZE THE
5SHW [ FCB-IT MAY NOT BE THERE,OF COURSE
5T3G [
5TH6 SOL
5W2Q ... FCBFIND 2,SOLD
6H^W [
6JFG [ READY TO FREEZE FCB OF FILE.X2->FCB
6J^6 [
6KDQ SOLTOP
6KYB ... UNOPCH 2,YWRIT
6LD2 ... BRN SOLTOPN
6LXL ...YWRIT
6MWW LDN 6 1 [MARK: OPEN FOR WRITING
6NBG SOLTOPN
6NW6 LDX 3 2 [ X3-> FCB
6P*Q LDX 2 FX2
6Q*2 SMO AWORK4(2)
6QSL LDEX 0 0(3) [ FREEZECOUNT OR FSVCT
6R#= ... CALL 7 SCHECKLIM [CHECK NOT TOOMANY LF'S
6RRW ... BRN SOUT [CLANG!
6SR6 SMO AWORK4(2)
6T=Q ADS 5 0(3) [ FREEZECOUNT OR FSVCT
6TQB #SKI K6COMPOST>99-99
6W=2 TRACE FLOC1(3),FCBFROZE
6WPL [
6X9= ...[ READY TO FREEZE DIR.ENTRY.DIR AT LEVEL IN X4
6XNW SOLD
6XYN ... LDX 1 4 [SAVE DEPTH OF DIR IN X1
6Y8G LDX 2 FX2 [ RESET X2=>CPAT
6YN6 MHUNTW 3,FILE,ENT
6^7Q SMO AWORK3(2)
6^MB ... LDEX 0 0(3) [ EAUTOCOUNT OR ESAVECOUNT
7272 ... CALL 7 SCHECKLIM [CHECK NOT TOOMANY LF'S
72LL ... BRN SOUT
73KW SMO AWORK3(2)
745G ADS 5 0(3) [ EAUTOCOUNT OR ESAVECOUNT
74K6 NAME 3,FILE,FWB
754Q REWRITE 0(1)
75JB MHUNTW 1,FILE,FWB
7642 NAME 1,FILE,ENT
7655 ...#UNS AWLSZ
7668 ...(
767? ... BNZ 6 YUNCL [J IF OPEN FOR WRITING
768B ... LDX 7 ECOPS(1)
769F ... SRL 7 15 [PICK UP SIZE OF FILE
76=J ... JMBAC NOTMULT,1,BEMDF,BEMULT [J IF SINGLE FILE
76?M ... LDX 3 EGEN(1) [PICK UP GENERATION NO. OF MULTEL
76#Q ... LFSIZE 7,3 [INFORM LISTFILE
76*T ... BRN YUNCL
76BY ...NOTMULT
76D3 ... LFSIZE 7 [INFORM LISTFILE
76F6 ...YUNCL
76G9 ...)
76HL ANSOK2
773= SOUT
77GW LDX 2 FX2
782G STO 6 ACOMMUNE1(2) [SAVE FOR USERSTRM
78G6 ... LDX 4 AWORK2(2)
78^Q ADX 4 FX1
79FB EXIT 4 0
7*W2 WORK
7*^# ... FINDWFN ,3,1 [X3=FCB OF WFILE
7B4M ... TESTREP2 NOTFOUND,(GEOERR)
7B6W ... LDN 5 1
7B?# ... LDX 0 FREEZECOUNT(3)
7BCQ ... CALL 7 SCHECKLIM [CHECK NOT TOOMANY LF'S
7BJ8 ... EXIT 4 0 [ERROREXIT
7BNL ... ADS 5 FREEZECOUNT(3)
7BP2 ...#UNS AWLSZ
7BPB ...(
7BQ6 ... UNOPCH 3,(4)
7BQW ... LDX 7 FBLMOD(3)
7BR= ... SBN 7 FBLKS-A1
7BRL ... SBX 4 FX1
7BS2 ... LFSIZE 7
7BSB ... ADX 4 FX1
7BSQ ...)
7BT= EXIT 4 0
7C#W [
7C*T ...SCHECKLIM
7CBS ...[ SR TO CHECK IF LF LIMIT EXCEEDED. X0= CURRENT FREEZECOUNT
7CCR ...[ X2=FX2, X5=COUNT OF NEW FREEZES. EXITS 7 1 IF LIMIT NOT REACHED
7CDQ ...[ OR IF FREEZE MODE NOT SPECIFIED. OTHERWISE SETS REPLY LF512
7CFP ...[ AND EXITS 7 0
7CGN ... ADX 0 5
7CHM ... SEGENTRY K98COMPOST [USED BY LISTMAX MACRO
7CJL ... SBN 0 512
7CKK ... BPZ 0 XLIM
7CLJ ...NFREZ EXIT 7 1
7CMH ...XLIM TESTMODE AWORK1(2),NFREZ,,SAVEFREEZE
7CNG ... SETREP2 LF512
7CPF ... EXIT 7 0
7CQD ...[
7CRC ...[
7CSG SVFRZMOD [ SETS UP AWORK3,4
7D#6 STOZ 4
7DRQ ADDINMODE ,4,SAVEFREEZE
7F?B ANDX 4 AWORK1(2) [ E-MODES
7FR2 BNZ 4 SAVEGIVEN [ 'SAVEFREEZE' GIVEN
7G=L LDN 0 EAUTOCOUNT
7GQ= LDN 4 FREEZECOUNT
7H9W BRN STORMODS [ GO STORE VALUES
7HPG SAVEGIVEN
7J96 LDN 0 ESAVECOUNT
7JNQ LDN 4 FSVCT
7K8B STORMODS
7KN2 STO 0 AWORK3(2) [ STORE VALUES
7L7L STO 4 AWORK4(2)
7LM= EXIT 7 0
7M6W [
7MLG [
7N66 ... MENDAREA 60,K99COMPOST
7P5B #END
^^^^ ...42304755000200000000