|
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: 31488 (0x7b00) Types: TextFile Names: »account3tx «, »opmess3tx «
└─⟦01e83a425⟧ Bits:30008166 Bånd med SW8010 og SW8500 source code └─⟦75ff9bef3⟧ └─⟦this⟧ »account3tx « └─⟦this⟧ »opmess3tx «
;fgs 1986.12.22 fp utility, job adm 3, page ...1... ;this text contains the parent message programs: ; ; account - replace - newjob - mount - opmess ; ring - suspend - release - enable - change - timer ; convert - mountspec - kit - corelock - coreopen ; bossjob opcomm ; the text is assmebled by the following call of the ; slang assmebler: ; (account=slang text ; account replace newjob mount opmess ring, ; suspend release enable change timer convert mountspec kit ; corelock coreopen bossjob opcomm) ; outer block containing fpnames: b. g4,i30 w. ; block for insertproc d. p.<:fpnames:> l. s. a30, b30, c12, d27, e27, f22 w. k=h55+10000 i0=k f9 ; length of program ;each program is executed by means of an action table ;containing references to the following actions: ; ; 1: test call error (left side in call) ; 2: read command <prog><s><integer1><s><integer2> ; and put it into the message ; 3: read command <prog><s><name> and ... ; 4: read command <prog><s><name><s><integer> and ... ; 5: read command <prog><s><name>(<s><integer>) and ... ; 6: read command <prog><s><integer><s><name> and ... ; 7: read command and convert the parameters to text ; in the message. ; 8: terminate current output ; 9: send parent message and wait for the answer. ;10: return happy to fp ;11: read command <prog><s><integer> and ... ;12: check answer and make error text for account ;13: - - - - - - - - - - - - - - - - - newjob ;14: - - - - - - - - - - - - - - - - - change ;15: - - - - - - - - - - - - - - - - - convert ;16: output operators answer in opcomm ;17: check answer and make error text for replace ;18: send message to boss and wait for the answer ;19: search file descriptor in mount,mountspec,ring,release or suspend ;20: maybe change file descriptor in mount ;21: test name empty in mountspec, ring, release or suspend ;22: check answer and make error text for kit \f ;fgs 1986.12.22 fp utility, job adm 3, page ...2... ;action tables: h. ;account: a4: d1, d23, d9,d12 ;replace: a5: d1, d27, d9,d17 ;newjob: a6: d1, d25, d9, d26, d13 ;mount: a7: d1, d3,d19, d9,d20,d10 ;opmess: a8: d1, d7, d9,d10 ;ring: a9: d1, d3,d19,d21, d9,d10 ;suspend: a10: d1, d3,d19,d21, d9,d10 ;release: a11: d1, d3,d19,d21, d9,d10 ;enable a12: d1, d3,d19,d21, d9,d10 ;change: a13: d1, d4, d9,d14 ;timer: a14: d1, d2, d9,d10 ;convert: a15: d1, d24, d9, d26, d15 ;mountspec: a16: d1, d6,d19,d21, d9,d10 ;kit: a17: d1, d6, d9,d22,d10 ;corelock: a18: d1,d11, d9,d10 ;coreopen: a19: d9,d10 ;bossjob: a29: d1,d25,d18, d26,d13 ;opcomm: a30: d1, d7, d9,d16,d10,0 w. \f ;fgs 1985.03.13 fp utility, job adm 3, page 3 ;working cells and common error texts: c0: 0 ; address of message area c1: 0 ; address of program name item c2: 0 ; param pointer during command ; reading c3: 4<12+4 ; sp int c4: 4<12+10 ; sp text c5: 6<12+10 ; = text c6: 8<12+4 ; point int c7: 8<12+10 ; point text c8: <:***<0>:> c9: <:<32>call<10><0>:> c10: <:<32>parametererror<10><0>:> c11: <:*operator answer: <0>:> c12: 0 ; fp start \f ;rc 24.04.72 fp utility, job adm 3, page 4 ;test call error: e1: rl. w3 (c1.) ; se. w3 (c5.) ; if not left side in call jl. e0. ; then goto next action; al. w0 c8. ; outtext(curr out, jl. w3 h31.-2+10000; <:*** am. (c1.) ; <program name> al w0 +2 ; jl. w3 h31.+10000 ; al. w0 c9. ; jl. w3 h31.+10000 ; call :>); al w2 1 ; jl. h7.+10000 ; goto fp end program (sorry); ;terminate current out: e8: al. w1 h21.+10000 ; zone:=curr out; bz w3 x1+h1+1 ; char := se w3 4 ; if kind = bs sn w3 18 ; or kind = mt am 25 ; then em al w2 0 ; else null; jl. w3 h34.+10000 ; close up(zone,char); jl. w3 h79.+10000 ; terminate zone; jl. e0. ; goto next action; ;send the message and wait for the answer: e9: al. w3 h44.+10000 ; rl. w1 c0. ; jd 1<11+16 ; send message al. w1 b0. ; jd 1<11+18 ; wait answer; jl. e0. ; goto next action; ;return happy to fp: e10: al w2 0 ; jl. h7.+10000 ; \f ;rc 21.04.72 fp utility, job adm 3, page 5 ;procedure next param: ; ;forwards the pointer c2 to the next item in the fp com- ;mand stack (if the current is not allready the last). ;if end list the return is to link+2 esle to link. ; ;w0 del,kind ;w1 unchanged ;w2 address of new item ;w3 link (unchanged) b. j1 w. f1: rl. w2 c2. ; step pointer; ba w2 x2+1 ; rl w0 x2 ; w0:=delim,kind; sh. w0 (j1.) ; if end list jl x3+2 ; then return to link+2; rs. w2 c2. ; store pointer; jl x3 ; return to link; j1: 4<12-1 e. ;procedure output parameter list: ; ;outputs the parameter list (not including the program name) ; ;w0 undefined ;w1 --- ;w2 --- ;w3 link --- b. j3 w. j0: 0 ; link f2: rs. w3 j0. ; start: save link; rl. w2 c1. ; j1: ba w2 x2+1 ; step to next item bl w3 x2 ; sh w3 3 ; if end list jl. (j0.) ; then return; al. w0 x3+j3. ; w0:=addr(delim text); jl. w3 h31.-2+10000; outtext(delim) bl w0 x2+1 ; sn w0 10 ; if param=text jl. j2. ; then goto write param; rl w0 x2+2 ; jl. w3 h32.-2+10000; outinteger(param); 0<23+0<12+1 jl. j1. ; goto next item; j2: al w0 x2+2 ; jl. w3 h31.-2+10000; outtext(param); jl. j1. ; goto next item; j3=k-4 ; delim table: <: :> <:=:> <:.:> e. \f ;rc 30.03.73 fp utility, job adm 3, page 6 ;parameter error in call: f3: al. w0 c8. ; outtext(curr out jl. w3 h31.-2+10000; <:*** am. (c1.) ; al w0 +2 ; <program name> jl. w3 h31.+10000 ; jl. w3 f2. ; parameter list al. w0 c10. ; jl. w3 h31.-2+10000; parametererror:>); al w2 3 ; goto fp end program jl. h7.+10000 ; sorry; ;check result of wait answer ; ;is called with the result (status) in w2 and ;the start address of the error text table in w1 ;w2=0 means ok b. j10 w. f6: sl w2 1 ; if result <= 0 sl w2 100 ; or result >= 100 jl. e10. ; then return happy to fp; j1: rl w0 x1 ; next table entry: sn w0 -1 ; if table end jl. j3. ; then goto special text; sn w0 x2 ; if result = table(pointer) jl. j2. ; then goto write error text; al w1 x1+4 ; step pointer; jl. j1. ; goto next entry; j4: 0 ; address of error text; j2: am (x1+2) ; write text in table: al. w0 f10. ; j5: rs. w0 j4. ; save error text address; al. w0 c8. ; outtext(curr out, jl. w3 h31.-2+10000; <:*** am. (c1.) ; al w0 +2 ; program name jl. w3 h31.+10000 ; jl. w3 f2. ; parameter list rl. w0 j4. ; jl. w3 h31.-2+10000; error text al w2 3 ; jl. h7.+10000 ; goto fp; \f ;rc 17.05.72 fp utility, job adm 3, page 7 ;check result wait answer continued: j6: <:<32>re:>,<:sul:>,<:t<32><32>:> j7: 0 j8:10 j3: al w1 0 ; wd. w2 j8. ; al w2 x2+48 ; al w1 x1+48 ; ls w2 8 ; wa w2 2 ; ls w2 8 ; al w2 x2+10 ; w2:=iso(result nl) rs. w2 j7. ; al. w0 j6. ; addr:=addr(spec text); jl. j5. ; goto write the text; e. ;output answer from parent: e16: al. w0 c11. ; outtext(<:*operator answer: :>); jl. w3 h31.-2+10000; al. w0 b0. ; outtext(<text in answer>); jl. w3 h31.+10000 ; rl. w0 f15. ; outinteger(<integer in answer>); jl. w3 h32.+10000 ; 1<23+32<12+1 ; al w2 10 ; outchar(<nl>); jl. w3 h26.+10000 ; jl. e0. ; goto next action; \f ;rc 17.05.72 fp utility, job adm 3, page 7a ;procedure read and store name parameter. ; ;reads the next parameter from the fp command stack. ;if it is a name the name is moved to words 8 to 14 ;in the message area. if it is not a name paramerror ;is entered. ; ; w3 is link - at return all registeres are un- ; defined b. j1 w. j0: 0 ; link f4: rs. w3 j0. ; save link; jl. w3 f1. ; next param; se. w0 (c4.) ; if del,kind <> space name jl. f3. ; or end list then error; rl. w1 c0. ; move name dl w0 x2+4 ; to message area; ds w0 x1+10 ; dl w0 x2+8 ; ds w0 x1+14 ; jl. (j0.) ; return; ;procedure read integer parameter: ; ;w0 undefined ;w1 message area start address ;w2 undefined ;w3 link integer f5: rs. w3 j0. ; save link; jl. w3 f1. ; next param; se. w0 (c3.) ; if del,kind<>space,int jl. f3. ; or end list \f ;rc 31.07.74 fp utiloty, job adm 3, page 8 ;read integer parameter continued ; then error; rl. w1 c0. rl w3 x2+2 ; set w1,w3; jl. (j0.) ; return; e. ;read command <prog><s>integer><s><integer> e2: jl. w3 f5. ; read integer param; rs w3 x1+12 ; store integer; jl. w3 f5. ; read integer param; rs w3 x1+14 ; store integer; jl. w3 f1. ; next param; jl. f3. ; not end list: error; jl. e0. ; end list: next action; ;read command <prog><s><name> e3: jl. w3 f4. ; read and store name; jl. w3 f1. ; next param; jl. f3. ; not end list: error; jl. e0. ; end list: next action; ;read command <prog><s><name><s><integer> e4: jl. w3 f4. ; read and store name; jl. w3 f5. ; read integer; rs w3 x1+6 ; store integer; jl. w3 f1. ; next param; jl. f3. ; not end list: error; jl. e0. ; end list: next action; ;read command <prog><s><name>(<s><integer>) b. j1 w. e5: jl. w3 f4. ; read and store name; jl. w3 f1. ; next param; jl. j1. ; if end list then jl. e0. ; then goto next action; j1: se. w0 (c3.) ; maybe integer: if not integer jl. f3. ; then error; rl. w1 c0. ; rl w3 x2+2 ; store integer; rs w3 x1+6 ; jl. w3 f1. ; next param jl. f3. ; not end list: error; jl. e0. ; end list: next action; \f ; rc 31.07.74 fp utility, job adm 3, page 8a ; read command <prog><s><name>(<s><short name>)(<s><integer>) e24: jl. w3 f4. ; read and store name; jl. w3 f1. ; next param; jl. j0. ; if end list then jl. e0. ; goto next action; j0: se. w0 (c4.) ; if name then jl. j1. ; begin rl w1 x2+6 ; se w1 0 ; if not short text then jl. f3. ; goto error; dl w1 x2+4 ; rl. w3 c0. ; take short text and ds w1 x3+4 ; store it; jl. w3 f1. ; if end list then jl. j1. ; goto next action; jl. e0. ; end; ; goto maybe integer; e. ; read command <prog><s><name>(<s><short name>) b. j0 w. e25: jl. w3 f4. ; read and store name; jl. w3 f1. ; next param; jl. j0. ; if end list then jl. e0. ; goto next action; j0: se. w0 (c4.) ; if not name then jl. f3. ; goto error; rl w1 x2+6; se w1 0 ; if not short name then jl. f3. ; goto error dl w1 x2+4 ; rl. w3 c0. ; take name and ds w1 x3+6 ; store it; jl. w3 f1. ; if not end list jl. f3. ; then goto error; jl. e0. ; goto next action; e. ;read command <prog><s><integer> e11: jl. w3 f5. ; read integer; rs w3 x1+12 ; store integer; jl. w3 f1. ; next param; jl. f3. ; not end list: error; jl. e0. ; end list: goto next action; \f ;rc 24.04.72 fp utility, job adm 3, page 9 ;read command <prog><s><integer><s><name> e6: jl. w3 f5. ; read integer param; rs w3 x1+6 ; store integer; jl. w3 f4. ; read and store name; jl. w3 f1. ; next param; jl. f3. ; not end list: error; jl. e0. ; end list: nexy action; ;read any param list and move it to message area: b. j20 w. j13: 0 ; addr in buf j14: 0 ; partial word e7: al. w1 j2. ; initialize the procedure rs. w1 j0. ; next char; jl. w3 j12. ; next char (bypass first sh w2 -1 ; space); if end list jl. e0. ; then goto next action; rl. w2 c0. ; w2:=buf addr; j15: al w2 x2+2 ; next word: am. (c0.) ; if all of buf used sl w2 16 ; then jl. e0. ; goto next action; rs. w2 j13. ; al w1 1 ; init partial word; j16: rs. w1 j14. ; next character: jl. w3 j12. ; next char; rl. w1 j14. ; w0,w1:=partial word; al w0 0 ; sh w2 -1 ; if end text jl. j17. ; then goto end text; ld w1 8 ; partial word:= lo w1 4 ; partial word shift 8 sn w0 0 ; add char; if word not jl. j16. ; full then next char; rl. w2 j13. ; store word; rs w1 x2 ; jl. j15. ; goto next word; j17: ld w1 8 ; end text: left justify sn w0 0 ; partial word; jl. j17. ; rs. w1 (j13.) ; store word jl. e0. ; goto next action; \f ;rc 24.04.72 fp utility, job adm 3, page 10 ;procedure next character ;link w3 - at return char or -1 in w2 j0: 0 ; link,pointer j1: 0,r.7 ; buffer j2=k-1 ; end buffer j12: rx. w3 j0. ; swop(pointer,link); j19: sl. w3 j2. ; if pointer >= last jl. j3. ; then goto next fp param; al w3 x3+1 ; step pointer; j7: bz w2 x3 ; w2:=char; sh w2 0 ; if char=null jl. j19. ; then skip char; j8: rx. w3 j0. ; swop(link,pointer); jl x3 ; return; 32 ; j8+4: space 61 ; j8+6: equality sign 46 ; j8+8: point j3: jl. w3 f1. ; next fp param; jl. j4. ; if end list then begin al. w3 j2. ; al w2 -1 ; char :=-1; jl. j8. ; goto swop; j4: bz w3 0 ; end; rl. w3 x3+j8. ; buf(0:1):= rs. w3 j1. ; (0,delim); bz w3 1 ; w3:=kind(param); ld w1 -100 ; ds. w1 j1.+4 ; buf(2:13):=1; ds. w1 j1.+8 ; ds. w1 j1.+12 ; se w3 10 ; if kind(param) <> name jl. j18. ; then goto integer; al. w1 j1.+2 ; name: w1:=pointer; j5: al w2 x2+2 ; next word: rl w0 x2 ; w0:=word; j6: al w3 0 ; next char: ld w0 8 ; w3:=char; hs w3 x1 ; buf(pointer):=char; al w1 x1+1 ; step in buf; se w0 0 ; if more left jl. j6. ; then goto next char; am. (c2.) ; if name not exhausted se w2 8 ; then jl. j5. ; goto next word; j9: al. w3 j1.+1 ; end param: set pointer; jl. j7. ; goto get char; j11: 10 ; j18: al. w1 j1.+13 ; integer: rl w3 x2+2 ; pointer:=last; j10: al w2 0 ; divide: wd. w3 j11. ; al w2 x2+48 ; hs w2 x1 ; al w1 x1-1 ; sn w3 0 ; jl. j9. ; jl. j10. ; e. \f ; rc 31.07.74 fp utility, job adm 3, page 10a ; read command account <integer><integer>(<integer>(<integer>)) b. j2 w. e23: jl. w3 f5. ; read integer param rs w3 x1+12 ; store integer jl. w3 f5. ; read integer param rs w3 x1+14 ; store integer al w3 0 ; rs w3 x1+8 ; empty param:=0 rs w3 x1+10 ; jl. w3 f1. ; next param jl. j1. ; if end list then jl. e0. ; goto next action j1: se. w0 (c3.) ; if not integer jl. f3. ; then error; rl. w1 c0. ; rl w3 x2+2 ; rs w3 x1+8 ; store integer jl. w3 f1. ; next param jl. j2. ; if end list then jl. e0. ; goto next action j2: se. w0 (c3.) ; if not integer jl. f3. ; then error; rl. w1 c0. ; rl w3 x2+2 ; rs w3 x1+10 ; store integer jl. w3 f1. ; next param jl. f3. ; if not end list then error jl. e0. ; goto next action e. \f ;rc 31.07.74 fp utility, job adm 3, page 11 ;error texts: f10=k ; reference ;error texts for account: b. j1 w. j1: <: kind illegal<10><0>:> f11: 1 , j1-f10 -1 e. ;error texts for newjob: b. j41 w. j1: <: job queue full<10><0>:> j2: <: job file not permanent<10><0>:> j3: <: job file unknown<10><0>:> j5: <: job file unreadable<10><0>:> j7: <: user index too large<10><0>:> j8: <: illegal identification<10><0>:> j9: <: user index conflict<10><0>:> j11: <: job file too long<10><0>:> j19: <: attention status at remote batch terminal<10><0>:> j20: <: device unknown<10><0>:> j21: <: device not printer<10><0>:> j22: <: parent device disconnected<10><0>:> j23: <: remote batch malfunction<10><0>:> j32: <: temp claim exceeded<10><0>:> j38: <: option unknown<10><0>:> j39: <: param error at job<10><0>:> j40: <: syntax error at job<10><0>:> j41: <: line too long<10><0>:> f12: 1, j1-f10 2, j2-f10 3, j3-f10 5, j5-f10 7, j7-f10 8, j8-f10 9, j9-f10 11, j11-f10 19, j19-f10 20, j20-f10 21, j21-f10 22, j22-f10 23, j23-f10 32, j32-f10 38, j38-f10 39, j39-f10 40, j40-f10 41, j41-f10 -1 e. ;error texts for kit: b. j1 w. j1: <: not available<10><0>:> f22: 1, j1-f10 -1 e. \f ;rc 27.06.75 fp utility, job adm 3, page 11a ;error texts for change: b. j2 w. j1: <: no cbuffers<10><0>:> j2: <: job printer not allowed<10><0>:> f13: 1, j1-f10 2, j2-f10 -1 e. ;error texts for convert: b. j23 w. j1: <: no cbuffers<10><0>:> j2: <: file does not exist<10><0>:> j3: <: file has login scope<10><0>:> j4: <: no temp resources<10><0>:> j5: <: file in use<10><0>:> j6 : <: file is not area<10><0>:> j7: <: file is no text file<10><0>:> j19: <: attention status at remote batch terminal<10><0>:> j20: <: device unknown<10><0>:> j21: <: device not printer<10><0>:> j22: <: parent device disconnected<10><0>:> j23: <: remote batch malfunction<10><0>:> f14: 1, j1-f10 2, j2-f10 3, j3-f10 4, j4-f10 5, j5-f10 6, j6 -f10 7, j7-f10 19, j19-f10 20, j20-f10 21, j21-f10 22, j22-f10 23, j23-f10 -1 e. ;error texts for replace: b. j1 w. j1: <: not allowed from online job<10><0>:> f17: 1,j1-f10 -1 e. ; error text for mountspec, release, ring or suspend b. j1 w. j1: <: tape name missing<10><0>:> f20: 1,j1-f10 -1 e. \f ;rc 23.05.73 fp utility, job adm 3, page 12 ;check answer in account, newjob, change, replace, ;convert and kit e22: am f22-f17 ; check kit: e17: am f17-f11 ; check replace: e12: am f11-f12 ; check account: e13: am f12-f13 ; check newjob: e14: am f13-f14 ; check change: e15: al. w1 f14. ; check convert: w1:=start table; rl. w2 b0. ; w2:=status; jl. f6. ; goto check result; ;send message to boss and wait for the answer: b. j1 w. e18: al. w3 j0. ; send message to boss; rl. w1 c0. ; jd 1<11+16 ; al. w1 b0. ; jd 1<11+18 ; jl. e0. ; goto next action; j0: <:boss:>,0,0,0 e. \f ;fgs 1985.03.13 fp utility, job adm 3, page 13 ;file descriptor in mount or mountspec b. j11 w. ;search file descriptor in mount or mountspec e19: am. (c0.) ; lookup entry(name); al w3 8 ; w3:=addr(name); al. w1 j1. ; jd 1<11+76 ; lookup head and tail; se w0 0 ; if not found jl. e0. ; then goto next action; rl. w2 j2. ; if mode.kind(entry) so. w2 (j6.) ; not mag tape jl. e0. ; then goto next action; am. (c12.) ; test entry protected: rl w1 h16 ; w1 := addr of own process; dl w1 x1+74 ; get max base; al w1 x1+1 ; if sh. w0 (j7.) ; low.entry.base<low.max.base sh. w1 (j8.) ; or upp.entry.base>upp.max.base jl. e0. ; then goto next action; al w2 1 ; modify parent message: rs. w2 j5. ; entry used := true; dl. w1 j3. ; se w0 0 ; if doc.name.entry=0 jl. j10. ; then add wait bit wa w2 x3-8 ; in message; rs w2 x3-8 ; j10: ds w1 x3+2 ; name in message := dl. w1 j4. ; name in entry; ds w1 x3+6 ; jl. e0. ; goto next action; j6: 1<23+18 ; mag tape mode kind j5: 0 ; boolean: entry used j1: 0 ; entry: j7: 0 ; entry base j8: 0 ; j11: 0,r.4 ; name j2: 0 ; mode kind j9: 0 ; document name: j3: 0,0 ; first doubleword j4: 0 ; second doubleword 0,r.5 ; rest of tail ;maybe change file descriptor in mount or mountspec e20: am. (j5.) ; if entry not used sn w1 x1 ; then jl. e0. ; goto next action; am. (j9.) ; if doc.name.entry <> null se w1 x1 ; then goto next action; jl. e0. ; dl. w1 f18. ; move doc name: ds. w1 j3. ; doc.name.entry:=answer(8:15); dl. w1 f19. ; ds. w1 j4. ; al. w1 j2. ; al. w3 j11. ; change entry; jd 1<11+44 ; jl. e0. ; goto next action; e. \f ; fgs 1986.12.22 fp utlity, job adm 3, page 13a ; test name empty in mountspec, ring, release or suspend: e21: am. (c0.) ; get first word of name rl w0 8 ; in message; al. w1 f20. ; al w2 1 ; sn w0 0 ; if name = 0 jl. f6. ; then make error text jl. e0. ; else goto next action; ;message areas etc. : b0: 0,r.8 ;answer area f15=b0+14,f18=b0+2,f19=b0+6 a0=k a4-a0, b4: 4<13+3<5+0, <:account:>,0,r.4 a5-a0, b5: 5<13+0<5+1, <:finis:>,0,r.5 a6-a0, b6: 6<13+0<5+0, <:job:>,0,r.6 a7-a0, b7: 7<13+0<5+0, <:mount :>,0,r.4 a8-a0, b8: 8<13+0<5+0, 0,r.7 a9-a0, b9: 9<13+0<5+1, <:ring :>,0,r.4 a10-a0,b10:10<13+0<5+0, <:suspend :>,0,r.4 a11-a0,b11:11<13+0<5+0, <:release :>,0,r.4 a12-a0,b12: 9<13+0<5+1, <:enable :>,0,r.4 a13-a0,b13:13<13+1<9+0, <:change :>,0,r.4 a14-a0,b14:14<13+3<5+0, <:timer:>,0,r.5 a15-a0,b15:15<13+1<9+0, <:conv:>,0,r.6 a16-a0,b16:16<13+1<9+0, <:mount:>,0,r.5 a17-a0,b17:17<13+1<9+1, <:kit:>,0,r.6 a18-a0,b18:18<13+2<5+1, <:corelock:>,0,r.4 a19-a0,b19:19<13+0<5+0, <:coreopen:>,0,r.4 a29-a0,b29: 6<13+0<5+0, <:job:>,0,r.6 a30-a0,b30: 8<13+0<5+1, 0,r.7 \f ;fgs 1986.12.22 fp utility, job adm 3, page ...14... ;entries into programs: b. j6 w. i30: am b30-b29 ; entry opcomm: i29: am b29-b19 ; entry bossjob: i19: am b19-b18 ; entry coreopen: i18: am b18-b17 ; entry corelock: i17: am b17-b16 ; entry kit: i16: am b16-b15 ; entry mountspec: i15: am b15-b14 ; entry convert: i14: am b14-b13 ; entry timer; i13: am b13-b12 ; entry change: i12: am b12-b11 ; entry enable: i11: am b11-b10 ; entry release: i10: am b10-b9 ; entry suspend: i9: am b9-b8 ; entry ring: i8: am b8-b7 ; entry opmess: i7: am b7-b6 ; entry mount: i6: am b6-b5 ; entry newjob: i5: am b5-b4 ; entry replace: i4: al. w2 b4. ; entry account: ds. w3 c1. ; save mess addr,prog name; rs. w3 c2. ; rs. w1 c12. ; save fp start; am (x2-2) ; al. w3 a0. ; pointer:=addr(act table); jl. j1. ; goto start actions; e0: rl. w3 j2. ; next action: al w3 x3+1 ; pointer:=pointer+1; j1: rs. w3 j2. ; start actions: save pointer; bl w3 x3 ; jl. x3+e0. ; goto action(table(pointer)); j2: 0 ; pointer; ; test if result=19 and maybe wait and repeat j3: 0 ; number of repetitions, initially 0; j4: 0, 1 ; message to clock; wait one second; j5: 0, r.8 ; answer area for clock answer j6: <:clock:>, 0, r.3; name and n.t.a. of clock process; e26: rl. w0 j3. ; rl. w2 b0. ; sh w0 2 ; if number of repetitions > 2 se w2 19 ; or result <> 19 then jl. e0. ; goto next action; al. w1 j4. ; al. w3 j6. ; send message( jd 1<11+16 ; <:clock:>, 1 second); ba. w0 1 ; repetitions:=repetitions+1; rs. w0 j3. ; rl. w1 j2. ; command pointer:=command pointer-1; al w1 x1-1 ; rs. w1 j2. ; al. w1 j5. ; answer area:= clock answer; jd 1<11+18 ; wait answer(<:clock:>); jl. e0. ; goto next action; \f ; fgs 1986.12.22 fp utility, job adm 3, page ...14a... ; read command <prog><s or name> (<s> oldid or newid) e27: b. j4 w. am -2000 ; rl. w2 c2.+2000 ; rl w0 x2+10 ; if param=integer am -2000 ; sn. w0 (c3.+2000) ; then jl. j1. ; goto regret; jl. w3 f4. ; read and store navn; jl. w3 f1. ; next param; jl. 4 ; jl. e0. ; if endlist then nextaction; bl w0 x2+1 ; se w0 10 ; if not text then jl. f3. ; alarm; rl w0 x2+4 ; se. w0 (j2.) ; jl. f3. ; rl w0 x2+2 ; sn. w0 (j3.) ; jl. j0. ; if param=oldid then goto not more; se. w0 (j4.) ; if param<>newid jl. f3. ; then alarm; al w0 1 ; not more: rs w0 x1+6 ; param:=1; j0: jl. w3 f1. ; if more param jl. f3. ; then alarm; jl. e0. ; goto next action; j1: jl. w3 f1. ; regret: jl. 4 ; jl. f3. ; al w0 -1 ; rs w0 x1+6 ; param:=-1; al w0 0 ; rs w0 x1+8 ; name:=0; jl. w3 f1. ; if more param jl. f3. ; then alarm; jl. e0. ; goto next action; j2: <:id:> ; j3: <:old:> ; j4: <:new:> ; e. d1= e1-e0, d2= e2-e0, d3= e3-e0, d4= e4-e0, d5= e5-e0 d6= e6-e0, d7= e7-e0, d8= e8-e0, d9= e9-e0,d10=e10-e0 d11=e11-e0,d12=e12-e0,d13=e13-e0,d14=e14-e0,d15=e15-e0 d16=e16-e0,d17=e17-e0,d18=e18-e0,d19=e19-e0,d20=e20-e0 d21=e21-e0,d22=e22-e0,d23=e23-e0,d24=e24-e0,d25=e25-e0 d26=e26-e0,d27=e27-e0 e. \f ; fgs 1986.12.22 fp utility, job adm 3, page ...15... ;insert entries into the catalog: 0 g2=k-i0 f9=g2 e. ; end program block g0: (:g2+511:)>9,0,r.4,s2 ,0,r.2 ; account 2<12+i4-i0,g2 1<23+4,0,r.4,s2 ,0,r.2 ; replace 2<12+i5-i0,g2 1<23+4,0,r.4,s2 ,0,r.2 ; newjob 2<12+i6-i0,g2 1<23+4,0,r.4,s2 ,0,r.2 ; mount 2<12+i7-i0,g2 1<23+4,0,r.4,s2 ,0,r.2 ; opmess 2<12+i8-i0,g2 1<23+4,0,r.4,s2 ,0,r.2 ; ring 2<12+i9-i0,g2 1<23+4,0,r.4,s2 ,0,r.2 ; suspend 2<12+i10-i0,g2 1<23+4,0,r.4,s2 ,0,r.2 ; release 2<12+i11-i0,g2 1<23+4,0,r.4,s2 ,0,r.2 ; enable 2<12+i12-i0,g2 1<23+4,0,r.4,s2 ,0,r.2 ; change 2<12+i13-i0,g2 1<23+4,0,r.4,s2 ,0,r.2 ; timer 2<12+i14-i0,g2 1<23+4,0,r.4,s2 ,0,r.2 ; convert 2<12+i15-i0,g2 1<23+4,0,r.4,s2 ,0,r.2 ; mountspec 2<12+i16-i0,g2 1<23+4,0,r.4,s2 ,0,r.2 ; kit 2<12+i17-i0,g2 1<23+4,0,r.4,s2 ,0,r.2 ; corelock 2<12+i18-i0,g2 1<23+4,0,r.4,s2 ,0,r.2 ; coreopen 2<12+i19-i0,g2 1<23+4,0,r.4,s2 ,0,r.2 ; bossjob 2<12+i29-i0,g2 g1: 1<23+4,0,r.4,s2 ,0,r.2 ; opcomm 2<12+i30-i0,g2 m.rc fp utility 1986.12.22 job adm 3 \f d. p.<:insertproc:> l. ▶EOF◀