|
DataMuseum.dkPresents historical artifacts from the history of: RC4000/8000/9000 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about RC4000/8000/9000 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 48384 (0xbd00) Types: TextFile Names: »plotman«
└─⟦667bb35d6⟧ Bits:30007480 RC8000 Dump tape fra HCØ. └─⟦4334b4c0b⟧ └─⟦this⟧ »plotman«
stem name (maybe wrk-name): r3. ; overlap: result 3; r3. ; exact : result 3; m101 ; move name.work to name.sender (in case of wrk-name); m151 ; create internal process; m150 ; set name and interval; j0 ; result ok; ; start internal process ; ; call: ; w3.sender : name address ; ; return: ; w0.sender : result = 0 : internal process started ; ( result = 2 : state of process does not permit start ) ; result = 3 : process does not exist ; result = 3 : process is not an internal process ; result = 3 : process is not a child of calling process ; result = 6 : nameformat illegal p29: ; start internal process: m65 ; move catbase,name to work; m152 ; start internal process; ; stop internal process ; ; call: ; w3.sender : name address ; ; return: ; w0.sender : result = 0 : stop initiated ; result = 3 : process does not exist ; result = 3 : process is not an internal process ; result = 3 : process is not a child of calling process ; result = 6 : nameformat illegal ; w2.sender : buffer address (in case result=0) p30: ; stop internal process: m65 ; move catbase,name to work; m153 ; stop internal process; ; modify internal process ; ; call: ; w1.sender : register address ; w3.sender : name address ; ; return: ; w0.sender : result = 0 : internal process modified ; ( result = 2 : state of process does not permit modification ) ; result = 2 : child ic outside child process ; result = 3 : process does not exist ; result = 3 : process in not an internal process ; result = 3 : process is not a child of calling process ; result = 6 : nameformat illegal p31: ; modify internal process: m65 ; move catbase,name to work; m154 ; modify internal process; ; remove process ; ; call: ; w3.sender : name address ; ; return: ; w0.sender : result = 0 : process removed ; result = 1 : function forbidden in calling process ; result = 2 : state of process does not permit removal ; result = 2 : calling process is not a user of process ; result = 2 : claimed message to pseudo process ; result = 3 : process does not exist ; result = 3 : process is not a child of calling process ; result = 5 : peripheral process reserved by another user ; result = 6 : nameformat illegal p32: ; remove process: m65 ; move catbase,name to work; m155 ; remove process; ; generate name ; ; call: ; w3.sender : name address ; ; return: ; w0.sender : result = 0 : wrk-name generated ; result = 2 : catalog io-error p34: ; generate name: m16 ; generate wrk-name: r7. ; (irrell) r7. ; (irrell) m101 ; move name.work to name.sender; j0 ; result ok; ; copy ; ; call: ; w1.sender : first address ; w2.sender : buffer address ; w3.sender : last address ; ; return: ; w0.sender : result = 0 : area copied ; result = 2 : sender of buffer is stopped ; result = 3 : buffer describes input or output ; outside senders area ; result = 3 : message regretted ; result = 3 : operation in buffer is neither input not output ; w1.sender : bytes moved (if result=0) ; w3.sender : characters moved (if result=0) p35: ; copy: m156 ; copy message; ; set catalog base ; ; call: ; w0.sender : lower base ; w1.sender : upper base ; w3.sender : name address ; ; return: ; w0.sender : result = 0 : catalog base set ; ( result = 2 : state of process does not permit modification ) ; result = 3 : process does not exist ; result = 3 : process is not an internal process ; result = 3 : process is not a child of calling process ; result = 4 : newbase illegal ; result = 6 : nameformat illegal p36: ; set catalog base: m65 ; move catbase,name to work; m71 ; test new base; m74 ; set catbase of internal; j0 ; result ok; ; set entry base ; ; call: ; w0.sender : lower base ; w1.sender : upper base ; w3.sender : name address ; ; return: ; w0.sender : result = 0 : entry interval set ; result = 2 : catalog io-error ; result = 2 : document not ready ; result = 3 : entry not found ; result = 3 : name overlap (at new base) ; result = 3 : name already exists (at new base) ; result = 4 : entry protected against calling process ; (i.e. oldbase.entry outside maxbase.sender) ; result = 4 : key,newbase combination illegal ; result = 5 : entry used by another process ; result = 6 : nameformat illegal ; result = 7 : maincat not present b. g10 h. p37: ; set entry base: m0 , r7. ; if no maincat then result 7; m65 ; move catbase,name to work; m11 , a53 ; search best entry and test modif allowed (no users) m36 , t3 ; search chain (state = ready); m71 ; test new base; m72 ; save oldbase, base.work := newbase; r0. ; same base: result ok; m75 ; test base.work,key.work combination; r4. ; error: result 4; m17 ; test new system name (wrk-name not allowed): r3. ; overlap: result 3; r3. ; exact : result 3; m56 ; modify cur entry; m48 ; if areaprocess then reinit area process; m77 , r0. ; if key.work < min aux key then result ok; m4 ; set aux cat; m18 ; test new catalog name: g6. ; overlap: goto repair maincat; g8. ; exact : goto remove superfluous entry; g0: ; find old entry in auxcat: m73 ; restore oldbase; m18 ; test new catalog name: g1. ; overlap: goto create new; (does'nt matter) g2. ; exact : goto copy; ; the entry did not exist in the auxcat g1: ; create new: m55 ; find empty entry; g5. ; no room: goto repair maincat; m60 ; clear access counters.work; m125, g3. ; goto modify; g2: ; copy: m64 ; move statarea.entry to statarea.work; g3: ; modify: m71 ; (test and) get new base; m72 ; save oldbase, set newbase; r7. ; (same base: not possible) m56 ; modify cur entry; m88, g4. ; if size.work>=0 then m62 ; update and insert statarea; g4: ; m5 ; set maincat; j0 ; result ok; g5: ; repair maincat: m71 ; (test and) get new base; m72 ; save oldbase, set newbase; r7. ; (same base: not possible) g6: ; (newbase set): m5 ; set maincat; m18 ; test new catalog name: r7. ; overlap: result 7; (not possible) g7. ; exact : goto change main entry; j7 ; result 7; (not possible) g7: ; change main entry: m73 ; restore oldbase; m56 ; modify cur entry; j3 ; result 3; g8: ; remove superfluous entry: m57 ; delete cur entry; m125, g0. ; goto find old entry in auxcat; e. ; ; set backing storage claims ; ; call: ; w1.sender : claim list address ; w2.sender : docname address ; w3.sender : name address ; ; result: ; w0.sender : result = 0 : backing starage claims set ; result = 1 : claims exceeded (at calling process) ; result = 1 : claims exceeded (at child) ; result = 2 : document not found ; result = 3 : process does not exist ; result = 3 : process is not an internal process ; result = 3 : process is not a child of calling process ; result = 6 : nameformat (of docname) illegal ; result = 6 : nameformat (of childname) illegal p39: ; set bs claims: m104 ; move docname.sender to docname.work; m84 ; (size.work := 0); m36 , t29 ; search chain (state = allowed for set bs claims); m65 ; move catbase,name to work; m32 ; set bs claims; ; create pseudo process ; ; call: ; w3.sender : name address ; ; return: ; w0.sender : result = 0 : pseudo process created ; result = 1 : (area) claims exceeded ; result = 2 : catalog io-error ; result = 3 : name overlap ; result = 3 : name already exists ; result = 6 : nameformat illegal p40: ; create pseudo process: m65 ; move catbase,name to work; m15 ; test new system name (maybe wrk-name): r3. ; overlap: result 3; r3. ; exact : result 3; m101 ; move name.work to name.sender (in case of wrk-name); m158 ; create pseudo process; m150 ; set name and interval; j0 ; result ok; ; general copy ; ; call: ; w1.sender: parameter address ; w2.sender: buffer address ; ; return: ; w0.sender: result = 0 : area copied ; result - 2 : sender of buffer stopped ; result = 3 : message regretted ; result = 3 : illegal addresses in buffer ; result = 3 : operation in buffer not odd p42: ; general copy: m157 ; ; prepare backing storage ; ; call: ; w3.sender : chainhead address ; ; return: ; w0.sender : result = 0 : chaintable allocated ; result = 1 : function forbidden in calling process ; result = 1 : area claims exceeded ; result = 2 : catalog io-error ; result = 3 : auxcat name overlap ; result = 3 : auxcat name already exists ; result = 4 : document-device does not exist ; result = 4 : device is not a bs-device ; result = 4 : device not reserved by calling process ; result = 5 : auxcat size <= 0 or auxcat size too large ; result = 5 : chainhead chain inconsistent ; result = 5 : auxcat chain inconsistent ; result = 5 : illegal kind of chaintable ; result = 5 : key illegal ; result = 5 : too many slices ; result = 5 : claims exceeded (too few slices for chaintable) ; result = 5 : claims exceeded (auxcat too large) ; result = 5 : claims exceeded (no room in maincat) ; result = 6 : auxcat nameformat illegal ; result = 6 : docname nameformat illegal ; result = 7 : no chains idle b. g10 h. p51: ; prepare bs: m8 , f71 ; check function mask (aux catalog handling); m86 ; move chainhead.sender to work and test auxcat size > 0; r5. ; auxcat size <= 0: result 5; ; test the auxcat name: m70 ; base.work := catalog interval; m17 ; test new system name (wrk-name not allowed): r3. ; overlap: result 3; r3. ; exact : result 3; ; test the document name: ; notice: the reservation ensures that the document does not exist ; already in the bs-system m85 ; search bs-process and check reserved by sender: r4. ; not found or not bs or not reserved: result 4; m70 ; base.work := catalog interval; (because moved again...) m76 ; test auxkey (and interval); ; give all claims to sender: m38 ; find empty chain and prepare; m20 ; copy chaintable chain; ; claim the slices used for chaintable: m25 ; test claims (prepare bs); r5. ; claims exceeded: result 5; m19 ; test chain errors; m21 ; copy chain and cut down (auxcat); ; claim the slices used for auxcat: ; (notice: the auxcat itself is not described in any catalog entry) m25 ; test claims (prepare bs); r5. ; claims exceeded: result 5; m19 ; test chain errors; ; insert in maincat a description of the aux catalog ; (if maincat does not exist yet, it will take place when ; the main catalog is connected) m0 , g5. ; if no maincat yet then goto no maincat; m31 ; prepare maincat entry; m30 ; test claims (create): r5. ; claims exceeded: result 5; m14 ; compute namekey; m55 ; find empty entry; r5. ; no room: result 5; m56 ; modify cur entry; g5: ; no maincat: m40 ; terminate update of new chainhead; ; notice: now the chain is included is the bs-system ; (still not ready for normal use) m37 , t1 ; state.chain := after prepare; m46 , 0 ; setup area process (procfunc) for auxcat; m47 , 2 ; include (sender) as user of auxcat area process; m49 ; let sender be reserver of auxcat area process; ; (i.e. sender may now make any modifications ; in the auxcat) ; (hint: he could have done any damage before he ; called ..prepare bs.. so why not let him have the ; advantage of the area-process concept) j0 ; result ok; e. ; ; insert entry ; ; call: ; w1.sender : entry address ; w3.sender : chainhead address ; ; return: ; w0.sender : result = 0 : entry inserted in main catalog ; result = 1 : function forbidden in calling process ; result = 2 : catalog io-error ; result = 2 : document not found ; result = 2 : state of document does not permit this call ; result = 3 : name overlap ; result = 3 : name already exists ; result = 4 : calling process is not user of the device ; result = 5 : key illegal ; result = 5 : interval illegal ; result = 5 : chain overlap ; result = 5 : chain outside limits ; result = 6 : nameformat illegal ; result = 6 : docname format illegal ; result = 6 : claims exceeded ; result = 7 : maincat not present ; ; notice: the claims of the process are ok, when result = 0,3,(5),7 b. g20 h. p52: ; insert entry: m8 , f71 ; check function mask (aux catalog handling) m109 ; move chainhead.sender to work; m84 ; (size.work := 0;) m36 , t21 ; search chain (state = allowed for insert entry); m9 ; check privileges; m37 , t2 ; state.chain := during insert; m107 ; move entry.sender to work; m76 ; test auxkey, interval; ; notice: if the main catalog has been connected from this ; document, the chain has already been copied, and ; entry and slices claimed m3 ; if main-catalog entry then r0. ; goto result ok; m21 ; copy chain (entry) and cut down; m0 , g20. ; if no maincat then goto claim slices only; m30 ; test claims (create entry): r6. ; claims exceeded: result 6; m19 ; test chain errors; m17 ; test new system name (wrk-name not allowed): g15. ; overlap: result 3; g15. ; exact : result 3; ; make it easy for changing the name of the document: m88 , g5. ; if size.work >= 0 then m66 ; docname.work := docname.chain; m125, g10. ; else g5: ; begin m90 ; (prepare compute docnumber: prevent alarms) m91 ; first slice.work := compute docnumber; g10: ; end; m55 ; find empty entry: r6. ; no room: result 6; m56 ; modify cur entry; j0 ; result ok; ; ; entry cannot be inserted in maincat but the entry is already claimed. ; unclaim 1 entry and 0 slices in main and auxcat and reclaim i entry in auxcat. g15: m280, r7. ; unclaim entries . (hardly claims exceeded.) m260, r7. ; claim 1 aux entry. j3 ; deliver result 3 g20: ; claim slices only: ; main catalog not present, therefor don't claim a maincat entry m26 ; test claims (create aux entry); r6. ; claims exceeded: result 6; m19 ; test chain errors; j7 ; result 7; e. ; ; insert backing storage ; ; call: ; w2.sender : docname address ; ; return: ; w0.sender : result = 0 : document included is bs-system ; result = 1 : function forbidden in calling process ; result = 2 : document not found ; result = 2 : state of document does not permit this call ; result = 4 : calling process is not user of device ; result = 6 : docname format illegal p53: ; insert bs: m8 , f71 ; check function mask (aux catalog handling); m104 ; move docname.sender to docname.work; m84 ; (size.work := 0;) m36 , t21 ; search chain (state = allowed for insert bs); m9 ; check privileges; m37 , t3 ; state.chain := ready; j0 ; result ok; ; delete backing storage ; ; call: ; w2.sender : docname address ; ; return: ; w0.sender : result = 0 : document removed from bs-system ; result = 1 : function forbidden in calling process ; result = 2 : catalog io-error ; result = 2 : document not found ; result = 4 : calling process is not user of device ; result = 5 : areaprocesses exists for the document ; result = 6 : main catalog on the document ; result = 6 : docname format illegal p54: ; delete bs: m8 , f71 ; check function mask (aux catalog handling); m104 ; move docname.sender to docname.work; m84 ; (size.work := 0); m36 , t23 ; search chain (state = allowed for delete bs); m9 ; check privileges; m115 ; check any area processes on document; m1 ; test main catalog not on document; m116 ; prepare catalog scan; m37 , t4 ; state.chain := during delete; ; the following assumes that the disc-driver handles messages: ; last come => last served ; a (dummy) message is sent to the aux catalog (in this case an input ; message, because such a procedure exists), and when the answer ; arrives, all other area-transfers must have been terminated too. ; the chaintable may now (soon) be used by another disc, if wanted. m4 ; set auxcat; m118 ; (get first auxcat segment); r0. ; (no entries with namekey = 0, does'nt matter) j0 ; result ok; ; delete entries ; ; call: ; w2.sender : docname address ; ; return: ; w0.sender : result = 0 : all entries deleted (from main catalog) ; and chain released ; result = 1 : function forbidden in calling process ; result = 2 : catalog io-error ; result = 2 : document not found ; result = 2 : state of document does not permit this call ; result = 3 : not all entries deleted yet ; result = 4 : calling process is not user of device ; result = 6 : docname format illegal b. g10 h. p55: ; delete entries: m8 , f71 ; check function mask (aux catalog handling); m104 ; move docname.sender to docname.work; m84 ; (size.work := 0;) m36 , t4 ; search chain (state = during delete); m9 ; check privileges; m0 ; if no maincat then g10. ; goto clear up; ; clear a portion of the main catalog for entries belonging to curdoc m118 ; for all curkey entries in main catalog do g5. ; begin m122, g1. ; if entry on document then m31 ; prepare maincat entry; m28 ; test claims (remove): r7. ; claims exceeded: result 7; (not possible) m120 ; delete entry; g1: ; m119 ; end for all entries; g5: ; m121 ; update entry count, if any deleted; m117 ; test more catalog segments to clean: r3. ; more segments: result 3; ; all entries, belonging to curdoc, has been removed from main catalog: g10: ; clear up: m70 ; base.work := catalog interval; m67 ; move auxcat name from chain to name.work; m45 ; search best area process: r7. ; not found: result 7; (not possible) m50 ; (if area process then) delete area process; m41 ; terminate use of chain and disc; m37 , t0 ; state.chain := idle; j0 ; result ok; e. ; ; connect main catalog ; ; call: ; w1.sender : main catalog name address ; w3.sender : chainhead address ; ; return: ; w0.sender : result = 0 : main catalog connected ; result = 1 : function forbidden in calling process ; result = 1 : area claims exceeded ; result = 2 : catalog io-error ; result = 2 : document not found ; result = 2 : state of document does not permit this call ; result = 3 : name does not exist in auxcat ; result = 3 : name overlap ; result = 3 : name already exists ; result = 4 : calling process is not user of device ; result = 5 : maincat size <= 0 or maincat size too large ; result = 5 : key illegal ; result = 5 : interval illegal ; result = 5 : chain overlap ; result = 5 : chain outside limits ; result = 6 : claims exceeded ; result = 6 : docname format illegal ; result = 7 : main catalog already present b. g10 h. p56: ; connect main catalog: m8 , f72 ; check function mask (main catalog handling); m0 , g1. ; if maincat already exists then j7 ; result 7; g1: ; m109 ; move chainhead.sender to work; m84 ; (size.work := 0;) m36 , t21 ; search chain (state = allowed for connect catalog); m9 ; check privileges; ; prepare a search in auxcat for a main catalog: m103 ; move catalog name.sender to name.work; m70 ; base.work := catalog interval; m17 ; test new system name (wrk-name not allowed): r3. ; overlap: result 3; r3. ; exact : result 3; m4 ; set auxcat; m10 ; search best entry (in aux catalog): r3. ; not found: result 3; m87 ; if size.work <= 0 then r5. ; result 5; m76 ; test auxkey (and interval); m37 , t2 ; state.chain := during insert; m21 ; copy chain and cut down; ; claim an auxcat entry and the slices used for main catalog m26 ; set claims (create aux entry): r6. ; claims exceeded : result 6; m19 ; test chain errors; m66 ; docname.work := docname.curdoc; m46 , 0 ; setup area process (procfunc) for main catalog area; m39 ; set maincat and prepare claims; m5 ; set maincat; m42 ; clean main catalog; m67 ; move auxcat name from chain to name.work; m70 ; base.work := catalog interval; m45 ; search best area process: r7. ; not found: result 7; (not possible) m47 , 2 ; include (sender) as user of auxcat area process; m49 ; let sender be reserver of auxcat area process; ; (see the hint in ..prepare backing storage..) ; insert all existing chainheads in main catalog m123 ; for all existing chaintables do r0. ; begin m31 ; prepare maincat entry; m30 ; test claims (create); r6. ; claims exceeded: result 6; m70 ; base.work := catalog interval; m14 ; compute namekey; m55 ; find empty entry: r6. ; no room: result 6; m56 ; modify cur entry; m119 ; end for; ; result ok; e. ; ; remove main catalog ; ; return: ; w0.sender : result = 0 : main catalog removed ; result = 7 : main catalog not present p57: ; remove main catalog: m8 , f72+f71; check function mask (main catalog handling); m0 , r7. ; if no maincat then result 7; m68 ; move maincat name from pseudo chainhead to name.work; m70 ; base.work := catalog interval; m45 ; search best area process: r7. ; not found: result 7; (not possible) m50 ; (if area process then) delete area process; m4 ; set auxcat; (i.e. prevent further use of main catalog) m2 ; clear maincat; j0 ; result ok; ; lookup bs claims ; call: ; w1.sender : claim list address ; w2.sender : document name address ; w3.sender : name address ; return: ; w0.sender : result = 0 : bs claims looked up ; result = 2 : document not found ; result = 3 : process does not exist ; result = 6 : name format illegal p59: ; lookup bs claims m104 ; move docname.sender to docname.work m84 ; size.work:=0 m36,t22 ; search chain, state = allowed for normal use m65 ; move catbase,name to work; m51 ; find best internal process and move bs claims ; create aux entry and area process ; ; call: ; w1.sender : entry address ; w2.sender : docname address ; w3.sender : procname address ; ; return: ; w0.sender : result = 0 : entry and areaprocess created ; result = 1 : function forbidden in calling process ; result = 1 : area claims exceeded ; result = 2 : catalog io-error ; result = 2 : document not found ; result = 2 : state of document does not permit this call ; result = 3 : procname overlap ; result = 3 : procname already exists ; result = 3 : entryname overlap (in auxcat) ; result = 3 : entryname already exists (in auxcat) ; result = 4 : calling process is not user of device ; result = 4 : claims exceeded ; result = 5 : key illegal ; result = 5 : interval illegal ; result = 6 : entryname format illegal ; result = 6 : procname format illegal ; result = 6 : docname format illegal b. g10 h. p60: ; create aux entry and area process: m8 , f76 ; check function mask (create aux entry); m104 ; move docname.sender to docname.work; m84 ; (size.work := 0;) m36 , t28 ; search chain (state = allowed for create aux); m9 ; check privileges; m107 ; move entry.sender to work; m90 ; first slice.work := 0; m88 , g1. ; if size.work >= 0 then m66 ; docname.work := docname.chain; g1: ; m76 ; test auxkey and interval; ; scan the auxcat to see if the new entry may be created: m4 ; set auxcat; m18 ; test new catalog name (in auxcat): r3. ; overlap: result 3; r3. ; exact : result 3; m37 , t6 ; state.chain := during aux entry manipulation; m22 , 2.10 ; compute slices to claim (compute new slices); m26 ; test claims (create aux entry): r4. ; claims exceeded: result 4; m23 ; adjust chain to size; m55 ; find empty entry: r4. ; no room: result 4; m6 ; dump chaintable; m60 ; clear access counters.work; m56 ; modify current entry; m88 , g2. ; if size.work>=0 then m62 ; update and insert statarea; g2: ; ; prepare for testing of the area-process name: m5 ; set maincat; m100 ; move name.sender to name.work; (i.e. get procname) m15 ; test new system name (wrk-name allowed): r3. ; overlap: result 3; r3. ; exact : result 3; m46 , 2 ; setup area process (sender); m49 ; let sender be reserver of the area-process; m101 ; move name.work back to name.sender (if wrk-name); j0 ; result ok; e. ; ; remove aux entry ; ; call: ; w1.sender : entry address ; w2.sender : docname address ; ; return: ; w0.sender : result = 0 : aux entry removed ; result = 1 : function forbidden in calling process ; result = 2 : catalog io-error ; result = 2 : document not found ; result = 2 : state of document does not permit this call ; result = 3 : entry does not exist (in auxcat) ; result = 6 : entry nameformat illegal ; result = 6 : docname format illegal p61: ; remove aux entry: m8 , f76 ; check function mask (create aux); m104 ; move docname.sender to docname.work; m84 ; (size.work := 0;) m36 , t28 ; search chain (state = allowed for aux entry manipulation m9 ; test privileges; m4 ; set auxcat; m107 ; move entry.sender to work; ; notice: there is no check upon legality of interval m10 ; search best entry (in auxcat): r3. ; not found: result 3; ; notice: it is not checked that it was the rigth entry (i.e. same base) m37 , t4 ; state.chain := during aux entry manipulation; m57 ; delete cur entry; ; notice: the entry- and slice-claims are not released, nor is the slice-chain j0 ; result ok; ; lookup aux entry ; ; call: ; w1.sender : tail address ; w2.sender : docname address ; w3.sender : name address ; ; return: ; w0.sender : result = 0 : entry looked up ; result = 2 : catalog input-output error ; result = 2 : document not ready( or does not exist ; result = 3 : entry not found ; result = 6 : name format illegal ; result = 7 : maincat not present p43: ; lookup auxentry: m0 , r7. ; check maincat m65 ; move catbase.name to work m104 ; move docname.sender to docname.work m84 ; size.work:=0 m36 , t3 ; search chain (state ready) m4 ; set auxcat m100 ; move entry.sender to entry.work m10 ; seach best entry r3. ; not found result 3 m106 ; move tail.sender to tail.sender m5 ; set main cat j0 ; result ok ; clear statistics in aux entry ; ; call: ; w2.sender : dacname address ; w3.sender : name address ; ; return: ; w0.sender : result = 0 : the statistiks of the entry is initialised ; result = 2 : catalog input/output error ; result = 2 : document not ready(or does not exist) ; result = 3 : entry not found; name conflict(in auxcat) ; result = 6 : name format illegal; claims exceeded ; result = 7 : maincat not present b.g10 h. p44: ; m0 , r7. ; if no maincat then result 7 m65 ; move catbase.sender to work m104 ; move docname.sender to docname.work m84 ; size.work:=0 m36 , t3 ; search chain (state ready) m4 ; set aux cat m100 ; move entry.sender to entry.work m10 ; search best entry r3. ; not found result 3 m88 , g0. ; if size.work>=0 then m64 ; move statarea.entry to statarea.work m60 ; clear access counters.work m63 ; move statarea.work to statarea.entry g0: ; m5 ; set main cat j0 ; result ok e. \f n49: ; start of monitor call-table: p20., p21., p22., p23., p24., p25., p26., p27., p28., p29., p30., p31., p32., r7. , p34., p35., p36., p37., p38., p39., p40., r7. , p42., p43., p44. , p45., p46., r7. , r7. , r7. , r7. , p51., p52., p53., p54., p55., p56., p57., r7.,p59. , p60., p61., w. j0 = j0+n50 , j1 = j1+n50 , j2 = j2+n50 , j3 = j3+n50 , j4 = j4+n50 , j5 = j5+n50 , j6 = j6+n50 , j7 = j7+n50 ; record cat buf: ; this record holds the current catalog segment. if its content is ; changed, then the segment is rewritten onto the backing store at ; the very end of all process function actions. d0: -1, r.f9>1 ; cat buf (0:size-2); d18: 0 ; last word of cat buf. d19 = d0 - 2 + f10*f0 ; abs addr of last word of last entry ; in cat buf. c.(:a92>22a.1:)-1 m. procfunc testbuffer, start d49=k, 0, r.100, d50=k m. procfunc testbuffer, top z. ; interrupt address (used during debugging): ; proc func is entered here after programming errors. c. (:a92>21a.1:) -1 e30: 0, r.a180>1 ; ia: save for registers; al. w1 e30. ; if included print then rl w0 x1+0 ; begin jd 1<11+28 ; for i:=ia step 2 until ia+12 do al w1 x1+2 ; print w (word(i)); sh. w1 e30.+a180-2 ; wait forever in disabled mode; jl. -8 ; jl. (2) j7 z.c. -(:a92>21a.1:) ; else e30 = 0,z. ; ia:= 0; ; code for printing of proc func variables during debugging: e28: c.(:a92>19a.1:) -1 ; if test call included b. g24 ; then begin w. jl. x1+g0. ; goto case print param of ( g0: jl. (g17.) ; 0: error 7, jl. g1. ; 2: print cur entry, jl. (g17.) ; 4: print pf variables); g1: rl. w3 (g13.) ; print cur entry: al w2 x3+f0 ; for addr:= cur entry addr g3: rl w1 x3 ; step 2 until cur entry addr+entry size jd 1<11+30 ; do print x (word(addr)); al w3 x3+2 ; sh w3 x2 ; jl. g3. ; jl. (g11.) ; goto error 1; g11: j1, g17: j7, g13: d3, e.z. ; end; ; define the last b-names: b61 = k ; top address.proc func b62 = e30 ; interrupt address.proc func b63 = j10+2 ; waiting point i. ; id list of process functions ; after loading: b. g0 ; begin w.g0:al. w2 g0. ; define last: jl x3 ; autoload(next segment,top proc func); jd. g0. ; after loading: goto define last; e. ; end. the load code is removed; j21=k - b127 + 2 k = b61 ; top proc func e. ; end proc func segment ; segment 7: Initialize process functions ; this segment initializes the process descriptions for the first internal ; process (proc func). it is executed and then removed ; immediately after loading. s. g6 ; begin init proc func: w.b127=k, g6, k=k-2 g0: al. w2 g0. ; after load: load address := top of procfunc; jl x3 ; goto autoloader; jl. g0. ; entry from autoloader: goto after load; g6= k - b127 + 2 k = b61 ; k= first after proc func; e. ; end init proc func ▶EOF◀