|
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: 20736 (0x5100) Types: TextFile Names: »uti30«
└─⟦00964e8f7⟧ Bits:30007478 RC8000 Dump tape fra HCØ. └─⟦b2ec5d50f⟧ └─⟦f8e4b63af⟧ »trcfput« └─⟦this⟧
; ta 78.03.07 correct, page ...1... s. a12,b19,c25,d6,e7,f8,g2 w. d. p.<:fpnames:> l. k=h55 b0: 0 ; cur command b1: 0 ; program name ds. w3 b1. ; entry: jl. w3 h29.-4 ; stack current input rl. w3 b0. ; se. w3 (b1.) ; if left hand side then jl. a1. ; alarm(call) al w3 x3+10 ; rs. w3 b0. ; jl. w3 f1. ; get sep se. w0 (c11.) ; if sep<>spacetext then jl. a2. ; alarm(param) jl. w3 f2. ; get param jl. w3 f1. ; get sep se. w0 (c12.) ; if sep<>point integer then jl. a2. ; alarm(param) jl. w3 f2. ; get param rs. w0 b2. ; save segm rl. w1 h20.+h0 ; al w1 x1+1 ; rs. w1 b10. ; save bufferbase+1 rl. w3 b1. ; al w2 x3+12 ; d6: rs. w2 b15. ; connect: save name addr; jl. w3 h27.-2 ; connect bsfile to cur in se w0 0 ; if not connected jl. f6. ; then goto test compressedlib; bl. w0 h20.+h1+1; se w0 4 ; if kind<>4 then jl. a3. ; alarm(not connected) al. w1 h54. ; al. w3 h20.+h1+2; jd 1<11+42 ; lookup bsfile rl. w0 h54. ; rs. w0 b19. ; save total segm; ws. w0 b2. ; if segm>=size-block then ws. w0 h20.+h1+16; sh w0 0 ; alarm(segm) jl. a4. ; al. w0 h20.+h1+16; rs. w0 b16. ; save adr of segcount rl. w0 h20.+h0 ; ba. w0 1 ; rs. w0 b17. ; save buffer adr. al. w1 b13. ; rl. w3 b15. ; jd 1<11+42 ; lookup rl. w0 b2. ; am 16 ; bl. w1 b13. ; w1:=contents-32; al w1 x1-32 ; sl w1 0 ; if compressed codeprocedure wa w0 2 ; then segcount:=w1+segm; rs. w1 b14. ; am 17 ; bz. w1 b13. ; rs. w1 b15. ; save start ext list; wa. w0 h20.+h1+16; rs. w0 h20.+h1+16; segcount:=segcount+segm jl. w3 h22.-2 ; inblock current in d0: jl. w3 f1. ; nextparam: sl. w0 (c13.) ; get sep se w0 (0) ; if sep=end then jl. d4. ; goto exit se. w0 (c11.) ; if sep<>space text jl. a2. ; then alarm(param) al w0 0 ; rs. w0 b4. ; firstbit:=0; al w0 23 ; rs. w0 b5. ; lastbit:=23; jl. w3 f2. ; get param se. w0 (c14.) ; if param<>real<:add:> sn. w0 (c19.) ; and param<>real<:adr:> se w0 (0) ; then jl. d1. ; goto bitparam \f ; ta 20.11.73 correct, page ...2... jl. w3 f1. ; get sep se. w0 (c12.) ; if sep<>pointinteger then jl. a2. ; alarm(param) jl. w3 f2. ; get param ls w0 -1 ; if odd value then ls w0 1 ; addr:=addr-1 rs. w0 b3. ; save addr sl w0 512 ; if addr>511 then jl. a5. ; alarm(addr) wa. w0 b10. ; cur word addr:= rs. w0 b11. ; bufferstart+addr jl. d0. ; goto nextparam d1: rl. w1 b11. ; bitparam sn w1 0 ; if no address jl. a2. ; then alarm(param) se. w0 (c15.) ; if param<>real<:bit:> jl. d3. ; then goto ifparam jl. w3 f1. ; get sep se. w0 (c12.) ; if sep<>pointinteger then jl. a2. ; alarm(param) jl. w3 f2. ; get param rs. w0 b4. ; save firstbit jl. w3 f1. ; get sep se. w0 (c12.) ; if sep<>pointinteger then jl. a2. ; alarm(param) jl. w3 f2. ; get param rs. w0 b5. ; save lastbit sl w0 24 ; jl. a9. ; if lastbit>23 then alarm(bit) ws. w0 b4. ; sh w0 -1 ; if lastbit>firstbit then jl. a9. ; alarm(bit) jl. w3 f1. ; get sep se. w0 (c11.) ; if sep<>spacetext jl. a2. ; then alarm(param) jl. w3 f2. ; get param d3: se. w0 (c16.) ; ifparam: if param<> jl. a2. ; real<:if:> then alarm(param) al w0 -23 ; wa. w0 b5. ; w0:=-23+lastbit ws. w0 b4. ; -firstbit al w1 -1 ; w1:=all ones ls w1 (0) ; w1:=maxnumber rs. w1 b8. ; jl. w3 f4. ; get value rs. w0 b6. ; save oldvalue se w2 0 ; if oldvalue too big jl. a7. ; then alarm(oldvalue) jl. w3 f1. ; get sep se. w0 (c11.) ; if sep<>spacetext then jl. a2. ; alarm(param) jl. w3 f2. ; get param se. w0 (c17.) ; if param<>real<:the:> then jl. a2. ; alarm(param) jl. w3 f4. ; get value rs. w0 b7. ; save newvalue se w2 0 ; if newvalue too big jl. a6. ; then alarm(newvalue) al w1 -23 ; wa. w1 b5. ; sh:=-23+lastbit rl. w0 (b11.) ; w0:=word ls w0 x1 ; shift sh la. w0 b8. ; and max rs. w0 b8. ; \f ; ta 76.07.19 correct, page ...3... se. w0 (b6.) ; if oldvalue<>value in word jl. a8. ; alarm(oldvalue) ac w1 x1 ; sh:=23-lastbit rl. w3 (b11.) ; w3:=word rl. w0 b6. ; ls w0 x1 ; w0:=oldvalue shift sh ws w3 0 ; w3:=word-oldvalue shift sh rl. w0 b7. ; ls w0 x1 ; w0:=newvalue shift sh wa w3 0 ; w3:=w3+newvalue shift sh rs. w3 (b11.) ; store new word jl. d0. ; goto next param d4: rl. w1 b12. ; exit: se w1 0 ; if wrongvalues then jl. e4. ; then goto errorexit al. w1 h20. ; al w0 -1 ; wa. w0 h20.+h1+16; segcount:=segcount-1 rs. w0 h20.+h1+16 jl. w3 h23. ; outblock jl. w3 f7. ; changedate; jl. w3 h30.-4 ; unstack current in al w2 0 ; ok d5: jl. h7. ; goto programexit f4: ; procedure get value; rs. w3 b9. ; begin al w1 1 ; minus:=false jl. w3 f1. ; get sep sn. w0 (c13.) ; if sep=space integer then jl. f5. ; goto not minus se. w0 (c11.) ; if sep<>space text jl. a2. ; alarm(param) jl. w3 f2. ; get param se. w0 (c18.) ; if param<>real<:neg:> jl. a2. ; then alarm(param) al w1 -1 ; minus:=true jl. w3 f1. ; get sep se. w0 (c12.) ; if sep<>pointinteger jl. a2. ; then alarm(parm) f5: jl. w3 f2. ; get param al w2 0 ; error:=false rs. w0 b18. ; save value ws. w0 b8. ; if value-max<0 sl w0 1 ; then al w2 1 ; error:=true; rl. w0 b8. ; sn w0 -1 ; if all bits al w2 0 ; then no error rl. w0 b18. ; wm w0 2 ; value:=value*sign se w2 1 ; la. w0 b8. ; and max jl. (b9.) ; end get value; f1: rl. w2 b0. ; procedure get sep; rs. w2 f3. ; begin rl w0 x2 ; addr last sep:=cur command al w2 x2+2 ; w0:=separator rs. w2 b0. ; cur command:=next command jl x3 ; end get sep; f3: 0 ; addr. last sep \f ; ta 76.07.19 correct, page ...4... f2: rl. w2 b0. ; procedure get param rl w0 x2 ; begin al w2 x2-2 ; w0:=param ba w2 x2+1 ; cur command:=next command rs. w2 b0. ; jl x3 ; end get param; a0: 0 ; error number a12: am 1 ; error(code inconsistent); a11: am 1 ; error(entry inconsistent); a10: am 1 ; error(not found); a9: am 1 ; error(bits) a8: am 1 ; error(oldvalue different) a7: am 1 ; error(oldvalue) a6: am 1 ; error(newvalue) a5: am 1 ; error(addr) a4: am 1 ; error(segm) a3: am 1 ; error(not connected) a2: am 1 ; error(param) a1: al w0 1 ; error(call) rs. w0 a0. ; save error number al. w0 c0. ; jl. w3 h31.-2 ; outtext(***) rl. w1 b1. ; al w0 x1+2 ; jl. w3 h31.-2 ; outtext(programname) rl. w0 a0. ; sh w0 9 ; if error>9 or sn w0 3 ; error=3 then jl. e1. ; goto errortype1; sl w0 5 ; if error>4 then jl. e3. ; goto errortype3 sn w0 4 ; if error=4 then jl. e2. ; goto errortype2 se w0 2 ; am c20 ; if error=1 then text:=call al. w0 c2. ; else text:=param jl. w3 h31.-2 ; outtext(text) rl. w0 a0. ; if error=1 then se w0 2 ; then goto exit jl. e4. ; rl. w3 b0. ; if error caused by param al w3 x3-2 ; then goto paramerror se. w3 (f3.) ; jl. e5. ; al w2 32 ; bl w3 x3 ; sn w3 8 ; w2:=separator al w2 46 ; jl. w3 h26.-2 ; outtext(separator) e5: rl. w3 f3. ; paramerror: bl w1 x3+1 ; sn w1 4 ; if param=integer then jl. e6. ; goto integer param al w0 x3+2 ; text:=param se w1 10 ; if sep=end then al. w0 c9. ; text:=missing jl. w3 h31.-2 ; outtext(text) jl. e4. ; goto errorexit e6: rl w0 x3+2 ; integerparam: jl. w3 h32.-2 ; outinteger(param) 1 ; jl. e4. ; goto errorexit \f ; ta 76.07.19 correct, page ...5... e1: al w2 32 ; errortype1: jl. w3 h26.-2 ; outchar(32) rl. w1 b1. ; al w0 x1+12 ; jl. w3 h31.-2 ; outtext(filename) al. w0 c3. ; rl. w1 a0. ; sn w1 10 ; if error=10 then al. w0 c23. ; not found; sn w1 11 ; if error=11 then al. w0 c24. ; entry defect; sn w1 12 ; if error=12 then al. w0 c25. ; code defect; jl. w3 h31.-2 ; outtext(not connected) rl. w0 a0. ; sl w0 11 ; if error>10 then jl. w3 h30.-4 ; unstack cur in; jl. e4. ; goto errorexit e2: al. w0 c4. ; errortype2: jl. w3 h31.-2 ; outtext(segm) rl. w0 b2. ; jl. w3 h32.-2 ; outinteger(segmno) 1 ; jl. e4. ; goto errorexit e3: al. w0 c5. ; errortype3: jl. w3 h31.-2 ; outtext(addr) rl. w0 b3. ; jl. w3 h32.-2 ; outinteger(addr) 1 ; rl. w0 a0. ; sn w0 5 ; if error no=5 jl. e4. ; then goto errorexit al. w0 c8. ; jl. w3 h31.-2 ; outtext(bits) rl. w0 b4. ; outinteger(firstbit) jl. w3 h32.-2 ; 1 ; al w2 46 ; jl. w3 h26.-2 ; outchar(46) rl. w0 b5. ; jl. w3 h32.-2 ; outinteger(lastbit) 1 ; rl. w0 a0. ; w0:=error number sn w0 9 ; if error number=9 then jl. e4. ; goto errorexit sn w0 6 ; if error number=6 am c21 ; then text:=newvalue al. w0 c7. ; else text:=oldvalue jl. w3 h31.-2 ; outtext(text) rl. w1 a0. ; number:=if error number=6 then rl. w0 b7. ; newvalue se w1 6 ; else rl. w0 b6. ; oldvalue jl. w3 h32.-2 ; outinteger(number) 1<23+1 ; rl. w0 a0. ; if error<>8 then se w0 8 ; goto errorexit jl. e4. ; else al. w0 c10. ; jl. w3 h31.-2 ; outtext(, found) rl. w0 b8. ; jl. w3 h32.-2 ; outinteger(found oldvalue) 1<23+1 ; rl. w1 b12. ; wrongvalues:= al w1 x1+1 ; wrongvalues+1; rs. w1 b12. ; jl. d0. ; goto nextparam e4: jl. w3 h30.-4 ; errorexit: al w2 10 ; unstack cur input jl. w3 h26.-2 ; outchar(10) al w2 1 ; ok:=false jl. d5. ; goto programexit \f ; ta 78.03.07 correct, page ...6... c0: <:<10>***:> c1: <: call:> c2: <: param :> c3: <: not connected:> c4: <: segm.<0>:> c5: <: addr.<0>:> c6: <: newvalue=:> c7: <: oldvalue=:> c8: <: bits.<0>:> c9: <:missing:> c10: <:, found=:> c23: <: unknown<0>:> c24: <: entry inconsistent<0>:> c25: <: code inconsistent<0>:> h. c11: 4, 10 ; space text c12: 8 , 4 ; point integer c13: 4 , 4 ; space integer w. c14: <:add:> c15: <:bit:> c16: <:if:> c17: <:the:> c18: <:neg:> c19: <:adr:> c20=c1-c2 c21=c6-c7 c22: 12 b2: 0 ; segm b3: 0 ; addr b4: 0 ; firstbit b5: 0 ; lastbit b6: 0 ; oldvalue b7: 0 ; newvalue b8: 0 ; work loc., e.g. found oldvalue b9: 0 ; workloc b10: 0 ; buffer addr. b11: 0 ; current word addr b12: 0 ; wrongvalues b13: 0 , r.10 b14: 0 ; saved proc segm b15: 0 ; start ext list b16: 0 b17: 0 b18: 0 b19: 0 ; total segments \f ; ta 78.03.07 correct, page ...7... f6: al. w1 b13. ; test compressedlib: rl. w3 b1. ; al w3 x3+12 ; jd 1<11+42 ; lookup; se w0 0 ; if not found then jl. a10. ; alarm(unknown); al w2 x1+2 ; w2:=docname; jl. d6. ; goto connect; f7: ; changedate: b. a3 w. rs. w3 b6. ; save return; rl. w0 b14. ; se w0 -28 ; sl w0 0 ; if not procedure then jl. a0. ; begin al. w1 b13. ; rl. w3 b1. ; al w3 x3+12 ; w3:=name addr; jd 1<11+42 ; lookup; dl w1 110 ; ld w1 5 ; rs. w0 b13.+10 ; shortclock; al. w1 b13. ; jd 1<11+44 ; changeentry; jl. (b6.) ; end; a0: rl. w2 b15. ; if startext>502 sl w2 502 ; then jl. a11. ; alarm(entry inconsistent); al w1 0 ; sn w0 -28 ; if not compressed then rs. w1 b14. ; segcount:=0; jl. w3 f8. ; get decimal time; rs. w0 b4. ; save date; rs. w1 b5. ; save clock; rl. w0 b14. ; rs. w0 (b16.) ; relsegm:=0; jl. w3 h22.-2 ; inblock; rl. w0 b15. ; se w0 0 ; if startext=0 jl. a1. ; and rl. w0 b13. ; bs sl w0 0 ; then jl. a1. ; begin al. w1 b13. ; lookup docname; al. w3 b13.+2 ; startext:=byte17 jd 1<11+42 ; bz. w0 b13.+17 ; end; rs. w0 b15. ; sl w0 502 ; if startext>500 then jl. a11. ; alarm(entry inconsistent); a1: rl. w2 b15. ; am. (b17.) ; basebuf; bz w1 x2+1 ; addr:=z(startadr) extract 12 wm. w1 c22. ; *12 rs. w1 b3. ; + am. (b17.) ; bz w1 x2 ; z(startadr) shift (-12) ls w1 1 ; *2 am. (b17.) ; ba w1 x2+3 ; + own bytes wa. w1 b3. ; al w1 x1+6 ; +6 wa. w1 b15. ; +startext; am. (b17.) ; al w1 x1+0 ; rs. w1 b3. ; b3:=clock addr; \f ; ta 78.03.07 correct, page ...8... a2: rl. w0 b4. ; next segm: am. (b17.) ; sh w1 502 ; if clockaddr<502 rs w0 x1-2 ; then save date; rl. w0 b5. ; am. (b17.) ; sh w1 500 ; if clockaddr<500 rs w0 x1 ; then save clock; al w0 0 ; am. (b17.) ; if addr=502 sn w1 502 ; then rs. w0 b15. ; startext:=0; am -1000 al. w1 h20.+1000; rl. w0 b14. ; rs. w0 (b16.) ; jl. w3 h23. ; outblock(0); rl. w1 b3. ; am. (b17.) ; sh w1 500 ; if clockaddr<500 jl. (b6.) ; then return; rl. w1 b19. ; al w1 x1-1 ; seg:=seg-1; rs. w1 b19. ; am. (b17.) ; bz w2 503 ; if continueaddr>500 or sl w1 0 ; if seg<0 sl w2 500 ; then alarm(code inconsistent); jl. a12. ; al w1 x2-502 ; addr:=continueaddr-502 wa. w1 b3. ; + addr; rs. w1 b3. ; am -1000 jl. w3 h22.-2+1000; inblock(1); rl. w1 b15. ; if startext=500 then se w1 500 ; begin jl. a3. ; rl. w1 b3. ; clockaddr:= am. (b17.) ; clockaddr ba w1 x2+1 ; +own bytes ws w1 4 ; -continueadr; rs. w1 b3. ; al w0 2 ; startext:=2; rs. w0 b15. ; end; a3: rl. w1 b3. ; if clockaddr>500 am. (b17.) ; sl w1 502 ; then jl. a2. ; goto next segm; rl. w0 b5. ; rs. w0 (b3.) ; save clock; rl. w1 b3. ; rl. w0 b4. ; if date not on rl. w2 b15. ; first segm se w2 0 ; then rs w0 x1-2 ; save date; rl. w0 b14. ; ba. w0 1 ; rs. w0 (b16.) ; am -1000 ; al. w1 h20.+1000; am -1000 jl. w3 h23.+1000; outblock(1); jl. (b6.) ; return; e. \f ; ta 76.07.19 correct, page ...9... f8: ; get decimal time ; entry exit ; w0 - isodate ; w1 - clock ; w2 - unchanged ; w3 return destroyed b. c11 w. ds. w3 c11. ; save w2, w3 jd 1<11+36 ; w0w1:=get clock nd w1 3 ; float fd. w1 c8. ; div by 10000 bl w3 3 ; ad w1 x3-47 ; normalize wd. w1 c6. ; day:=sec//86400; al w3 0 ; w0w3:=secs:=secs mod 86400; wd. w0 c0. ; w0w3:=minutes:=secs//60; ld w3 24 ; w2:=seconds:=secs mod 60; wd. w0 c0. ; w0:=hour:=minutes//60; rs. w3 c9. ; c9:=minutes:=minutes mod 60; wm. w0 c2. ; wa. w0 c9. ; wm. w0 c2. ; wa w0 4 ; c9:=clock:=(hour*100+minutes) rs. w0 c9. ; *100+seconds; ld w1 26 ; year:=(day*4 wa. w0 c7. ; +99111) al w3 0 ; //1461; wd. w0 c4. ; as w3 -2 ; day:=day*4+99111 mod 1461//4; wm. w3 c1. ; month:=day*5 al w3 x3+461 ; +461 wd. w3 c3. ; //153; al w1 x2+5 ; day:=(day*5+461) mod 153 + 5; sl w3 13 ; if month>13 then al w3 x3+88 ; month:=month-twelvemonth+oneyear; wm. w3 c2. ; month:=month*100; rx w2 0 ; wd. w1 c1. ; day:=day//5; wa w3 2 ; date:=day+month; wm. w2 c5. ; year:=year*10000; wa w3 4 ; date:=date+year; al w0 x3 ; w0:=date; dl. w2 c10. ; w1:=clock; restore w2; jl. w3 (c11.) ; return c0: 60 ; c1: 5 ; c2: 100 ; c3: 153 ; days in the 5 month march-july c4: 1461 ; days in 4 years c5: 10000 ; c6: 86400 ; seconds in 24 hours c7: 99111 ; to adjust for 1.1.68 being date 0 10000<9 ; c8: 4096+14-47 ; 10000*2**(-47) as float. number c9: 0 ; work for clock c10: 0 ; saved w2 c11: 0 ; saved w3 e. m.rc 1978.03.07 correct \f g2=k-h55 g0:g1: (:g2+511:)>9 ; segm 0, r.4 ; doc s2 ; date 0,0 ; fil, block 2<12+4 ; contents.entry g2 ; loadlength d. p.<:insertproc:> e. m. rc 20.11.73, correct e. \f ▶EOF◀