|
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: 21504 (0x5400) Types: TextFile Names: »readgeotx«
└─⟦621cfb9a2⟧ Bits:30002817 RC8000 Dump tape fra HCØ. Detaljer om "HC8000" projekt. └─⟦0364f57e3⟧ └─⟦bf33d74f6⟧ »iogeofile« └─⟦00964e8f7⟧ Bits:30007478 RC8000 Dump tape fra HCØ. └─⟦b2ec5d50f⟧ └─⟦bf33d74f6⟧ »iogeofile« └─⟦this⟧
; read_geo_tx * page 1 13 09 77, 10.35; ( readgeo = set 1 readgeor = set bs readgeo readident = set bs readgeo readcmt = set bs readgeo readstn = set bs readgeo readnl = set bs readgeo mil = set bs readgeo readgeo = slang entry.no readgeo readgeor readident readcmt readstn readnl mil scope project read_geo read_geo_r read_ident read_cmt, read_stn read_nl m_i_l lookup read_geo read_geo_r read_ident read_cmt, read_stn read_nl m_i_l if 11.yes (message read_geo interim login scope scope login read_geo) ) b. ; outermost block p.<:fpnames:> m.girc 4000 readgeo 07.02.77, 08.21.46 \f ; read_geo_tx * page 2 13 09 77, 10.35; ; long procedure read_geo( z, typedec ); ; ______________________________________ ; ; read_geo (return, long) angle or distance of geotype ; ; z (call and return, zone) open for char input ; typedec (return, boolean) type shift 6 add dec ; ; further description of variables and actions on standard ; variables see read_geo_t; ; ; real procedure read_geo_r( z, typedec ); ; ________________________________________ ; ; read_geo_r (return, real) angle in radians ; or distance in meters ; z (call and return, zone) open for char input ; typedec (return, boolean) type shift 6 add dec ; ; further description of variables and actions on standard ; variables see read_geo_t; ; ; long procedure read_ident( z, typedec ); ; ________________________________________ ; ; read_ident (return, long) the number input, disregarding the ; first decimal point. ; z (call and return, zone) open for char input ; typedec (return, boolean) a short integer (12 bits) con- ; taining the number of decimals. ; the terminator m switches to ; geotype (type=8) recorded as ; typedec >= 8 shift 6 and mtr=true; ; ; long procedure read_cmt( z, typedec, scmt ); ; ____________________________________________ ; read_cmt (return, long) the value of the datetime or rundate ; input. a comma between date and time ; is permitted but not required. the ; same holds for decimal point between ; hour and minutes. a do is accepted ; giving read_cmt the value of scmt. ; termination m switches to geotype, ; signalled by mtr=true and then type- ; becomes the usual typedec for a ; geotype variable. ; typedec (return, boolean) true when a do is input. ; used as typedec in case of geotype ; input. ; scmt (call and return, long) the value used after input ; of a do. the return value equals ; read_cmt, except for input of ; geotype, where it is unchanged; ; \f ; read_geo_tx * page 3 13 09 77, 10.35; ; long procedure read_stn( z, numbertype ); ; _________________________________________ ; zone z; ; integer numbertype; ; ; read_stn (return, long) the landsnummer or station number ; input after a nl or ff. 200 00 0000 ; is added to station numbers. K is ; totally neglected. old landsnummer ; notation (without - ) is recognized ; and transformed correctly provided ; only 3 digits are used in the løbenr ; negative numbers are not transformed, ; but their occurrence is reflected in ; the value of numbertype. the termi- ; nator m switches to geotype with the ; typedec packed in numbertype and ; with mtr=true. ; z (call and return, zone) open for char input ; numbertype (return, integer) the type of the number input ; 1 : landsnummmer (ddd-dd-dddd) ; 2 : station number ; 3 : neg number term by x ; 4 : neg number term by z ; 5 : neg nmb term by anything else ; >=8 shift 6 : geotype (mtr=true); ; ; boolean procedure read_nl( z, b ); ; __________________________________ ; zone z; ; boolean b; ; ; read_nl (return, boolean) true if the line contains ; information sensed by aid of the ; boolean b, ; false if nl, ff or em is met. ; em gives not_eof=false ; z (call and return, zone) open for char input ; b (call, boolean) variable for use of jensens de- ; vice in control of exit from ; the procedure. i.e. reading ; stops when b == false; ; ; ; boolean procedure m_i_l( z, b ); ; ________________________________ ; zone z; ; boolean b; ; ; m_i_l (return, boolean) true if the line contains digi- ; tal info or information sensed ; by aid of the boolean b, ; false if nl, ff or em is met. ; em gives not_eof=false ; z (call and return, zone) open for char input ; b (call, boolean) variable for use of jensens de- ; vice in control of exit from ; the procedure. i.e. reading ; stops when b == false; ; \f ; read_geo_tx * page 4 13 09 77, 10.35; b. g1, e9 ; block with names for tail and insertproc w. k=10000 ; load addr s. g10, j70, d15, f1 ; start of slang segm h. g0=9 ; number of extern. e5: g1: g3, g2 ; headword, rel of last point, absword g2=k-2-g1 ; fin of abswords ; points: g3=k-2-g1 ; fin of points ; fill with aw 0 : w. aw 0 , r. 250-(:+12*g0+4:)>1; ; extern. list: w. e0: g0 ; number of extern.; g10 ; number of bytes to be initialized g10=k-e0-4 <:rg:>, 0,0,0 ; rg 10<18+0, 0 ; own real <:readgeot:>, 0 ; readgeot 5<18+2<12+8<6+13, 0; long proc, bool, zone, int.val <:tchar:>, 0, 0 ; 9<18+0, 0 ; own integer <:mtr<0>:>, 0, 0 ; mtr 8<18+0, 0 ; own boolean <:readnmb:>, 0 ; 5<18+3<12+8<6+0, 0 ; long proc, integer zone <:readchar:>, 0 ; 3<18+19<12+8<6+0, 0 ; integer proc, integer, zone <:noteof<0>:>, 0 ; 8<18+0, 0 ; own boolean <:inclass:>, 0 ; 9<18+0, 0 ; own integer <:repeatchar:> ; 1<18+8<12+0, 0 ; procedure, zone; \f ; read_geo_tx * page 5 13 09 77, 10.35; ; continuation-address on next segm of ext.list g9 g4: c.g4-e5-506 m.code readgeo too long z. c.502-g4+e5 jl -1 , r.252-(:g4-e5:)>1; fill whith -1 z. <:readgeo<0>:>, 0 ; slut første segm; ; start andet segm; h. e8: g5: g7, g6 ; headword, rel of last point, absword ; abswords: j3: g0+3 , 0 ; RS entry 3: reserve j4: g0+ 4, 0 ; do 4: take expression j6: g0+ 6, 0 ; do 6: stop reg expression j13: g0+13, 0 ; do 13: last used j30: g0+30, 0 ; do 30: saved stack ref. saved w3 j46: g0+46, d15 ; do 46: convert long to real j60: 1, 0 ; first of extern. rg j61: 2, d0 ; second do read_geo_t j62: 3, 0 ; third do t_char j63: 4, 0 ; fourth do mtr j64: 5, d6 ; fifth of extn. read_nmb j65: 6, d9 ; sixth do read_char j66: 7, 0 ; seventh do not_eof j67: 8, 0 ; eighth do in_class j68: 9, d12 ; nineth do repeat_char g6=k-2-g5 ; fin of abswords ; points: g7=k-2-g5 ; fin of points ; continuation ext.list : w. g9=k-g5 s3 ; date s4 ; time \f ; read_geo_tx * page 6 13 09 77, 10.35; f. f1: '-6 ; constant used in geo_t_r and r_t_geo w. h. d2: 12, d1 ; appetite, rel return from read_geo_t d5: 10, d4 ; appetite, rel return from mil d11: 8, d10 ; appetitte, rel return from read_char d14: 4, d13 ; appetite, rel return from repeatchar w. b. a20, c2 ; start of read_geo w. a3: ; entrypoint read_cmt_2 ; ********** am 5-4 ; proc_info e7: ; entrypoint read_cmt ; ******** am 4-3 ; proc_info e6: ; entrypoint read_ident ; ********** am 3-2 ; proc_info e1: ; entrypoint read_geo_r ; ********** am 2-1 ; proc_info e2: ; entrypoint read_geo ; ******** al w0 1 ; proc_info al w1 -26 ; work + stack to readgeot jl. w3 (j3.) ; reserve 26 bytes sn w0 5 ; only 18 bytes are released am 8 ; on return from read_geo_t; al w2 x1+26 ; w2:= last used ds. w3 (j30.) ; saved w3 rs w0 x2-2 ; save proc info \f ; read_geo_tx * page 7 13 09 77, 10.35; ; set kind sn w0 5 ; al w0 4 ; sn w0 2 ; al w0 1 ; rs w0 x2-4 ; rs w2 x1 ; stack ref of readgeot stack rl. w3 g5. ; segm. table of this segm. rl. w0 d2. ; appetite, rel. return ds w0 x1+4 ; ; set kind : al w3 26 ; formals kind = integer al w0 x2-4 ; addr of readgeot kind ds w0 x1+8 ; save formals ; move formals : dl w0 x2+12 ; tpd ds w0 x1+16 ; save formals dl w0 x2+8 ; z ds w0 x1+12 ; save formals ; read_geo_t( kind, z, typedec ); rl. w3 (j61.) ; addr read_geo_t d0=k+1-e8 ; rel chain jl w3 x3+0 ; goto read_geo_t d1=k-e8 ; rel. return ds. w3 (j30.) ; save stack ref dl w1 x1 ; w0w1 := read_geo_t; rl w3 x2-2 ; load procinfo as w3 1 ; ; goto proc. rl. w3 x3+c1. ; rel addr. c0: jl. x3 ; ; read_geo_r ; ========== a10: rl. w3 (j46.) ; load addr of conv long to real d15=k+1-e8 ; rel chain jl w3 x3+0 ; goto conv long to real ds w1 x2+8 ; save real dl w1 x2+12 ; load formals tpd so w0 16 ; if expr then jl. w3 (j4.) ; take this bz w3 x1 ; load tpd dl w1 x2+8 ; load load real sl w3 512 ; if (tpd shift(-6))extract 6 < 8 jl. a1. ; then fm. w1 (j60.) ; geo_r:= geo_r * rg jl. a2. ; else a1: fm. w1 f1. ; geo_r:= geo_r * '-6 ; stop: a2: rs. w2 (j13.) ; release stack jl. (j6.) ; stop reg expr \f ; read_geo_tx * page 8 13 09 77, 10.35; ; read_cmt ; ======== a4: bl. w3 (j63.) ; load mtr sz w3 1 ; if mtr jl. a2. ; then goto stop; ds w1 x2-6 ; save icmt rl. w3 (j62.) ; load t_char sn w3 44 ; if t_char = 44 then jl. a6. ; goto read more; dl w1 x2+12 ; load formals of typedec; so w0 16 ; if expression then jl. w3 (j4.) ; take this; ds. w3 (j30.) ; bz w1 x1 ; w1:= typedec; ; scmt a8: rs w1 x2-2 ; save this; dl w1 x2+16 ; load formals scmt; so w0 16 ; if expression then jl. w3 (j4.) ; take this; ds. w3 (j30.) ; rl w3 x2-2 ; w3:= typedec; sz w3 1 ; if -, typedec jl. a5. ; then rl w3 2 ; beginnn dl w1 x2-6 ; load icmt ds w1 x3 ; save in scmt jl. a2. ; enddddd else a5: dl w1 x1 ; load scmt; jl. a2. ; goto stop. ; read more a6: ; long mult ad w1 8 ; icmt := ds w1 x2-2 ; ad w1 -4 ; 16 * icmt ss w1 x2-2 ; -256 * icmt ds w1 x2-6 ; dl w1 x2-2 ; ad w1 3 ; ds w1 x2-2 ; ad w1 2 ; +8192 * icmt aa w1 x2-2 ; +2048 * icmt aa w1 x2-6 ; <* = 10000 * icmt *> ; ds w1 x2-6 ; save icmt; jl. a3. ; goto read_cmt_2; ; read_cmt_2 ; ========== a7: aa w1 x2-6 ; scmt := ds w1 x2-6 ; read_cmt := al w1 0 ; icmt + read_geo_t; jl. a8. ; goto scmt; \f ; read_geo_tx * page 9 13 09 77, 10.35; c2: ; goto addresses after call of read_geo_t : a2-c0 ; read_geo a10-c0 ; read_geo_r a2-c0 ; read_ident a4-c0 ; read_cmt a7-c0 ; read_cmt_2 c1=c2-2 i. e. ; slut read_geo b. a20, b3, c1 ; start of read_stn w. e3: ; entrypoint read_stn ; ******************* al w1 -16 ; jl. w3 (j3.) ; save stack + stack to mil call al w2 x1+16 ; last used ds. w3 (j30.) ; al w0 -1 ; b <*in mil_call*> := true; rs w0 x2-2 ; save this rs w2 x1 ; save stack info to call of mil rl. w3 g5. ; rl. w0 d5. ; ds w0 x1+4 ; dl w0 x2+8 ; move formals of z ds w0 x1+8 ; al w3 25 ; kind = boolean al w0 x2-2 ; addr(b) ds w0 x1+12 ; save formals(b) ; read_nl( z, b ); d3=k+1-e8 jl. w3 a0. ; subentry mil with inclass_lim = 0; d4=k-e8 ds. w3 (j30.) ; ; read_nmb( z, tpd ); <* return from there *> rl. w3 (j64.) ; d6=k+1-e8 jl x3+0 ; goto read_nmb , return from there; \f ; read_geo_tx * page 10 13 09 77, 10.35; a0: e9: ; entrypoint read_nl ; ****************** am -4 ; inclass_lim := 0; e4: ; entrypoint mil ; ************** al w0 4 ; inclass_lim := 4; al w1 -4 ; jl. w3 (j3.) ; save work to inbranckets and classlim al w2 x1+4 ; last used ds. w3 (j30.) ; rs w0 x2-2 ; save inclasslim al w0 0 ; in_branckets := false; ; read next char: b0: rs w0 x2-4 ; save inbranckets; al w1 -14 ; save stack read_char(z, t_char ); jl. w3 (j3.) ; ds. w3 (j30.) ; rs w2 x1 ; return info rl. w3 g5. ; rl. w0 d11. ; ds w0 x1+4 ; dl w0 x2+8 ; move formals(z) ds w0 x1+8 ; al w3 26 ; kind = integer rl. w0 j62. ; addr( t_char ); ds w0 x1+12 ; save formals( t_char ) ; read_char( z, t_char ); rl. w3 (j65.) ; d9=k+1-e8 jl w3 x3+0 ; goto read_chat( z, t_char ); d10=k-e8 ds. w3 (j30.) ; rl w1 x1 ; w1 := read_char; rs. w1 (j67.) ; save inclass rl. w0 (j62.) ; load t_char sn w0 25 ; if t_char = 25 jl. b3. ; then goto set not_eof; dl w1 x2+12 ; load formals b so w0 16 ; if expression then jl. w3 (j4.) ; take this ds. w3 (j30.) ; rl. w0 (j62.) ; w0:= t_char rl w3 x2-4 ; w3:= in_branckets; sz w3 1 ; if in_branckets then jl. b2. ; goto set in_branckets; bl w1 x1 ; w1:= b; sz w1 1 ; if -, b sn w0 10 ; or t_char = 10 then jl. b3. ; goto set not_eof; \f ; read_geo_tx * page 11 13 09 77, 10.35; rl. w1 (j67.) ; w1:= in_class; se w0 12 ; if t_char = 12 sh w1 (x2-2) ; or inclass <= inclass_lim then jl. b3. ; goto set not_eof; ; set in_branckets: b1: se w0 42 ; if t_char = 42 jl. b2. ; then al w0 -1 ; in_branckets := true jl. b0. ; goto read next char ; b2: se w0 59 ; in_branckets := if t_char <> 59 am x3 ; then in_branchets al w0 0 ; else false; jl. b0. ; goto read next char; ; set not_eof: b3: sn w0 25 ; not_eof := am 1 ; t_char <> 25; al w3 -1 ; hs. w3 (j66.) ; save not_eof; se w0 10 ; mil := sn w0 12 ; t_char <> 10 am 1 ; and t_char <> 12 al w1 -1 ; la w1 6 ; and not_eof; rs w1 x2-4 ; save mil; al w1 -10 ; save stack to repeat_char jl. w3 (j3.) ; ds. w3 (j30.) ; rs w2 x1 ; return info; rl. w3 g5. ; rl. w0 d14. ; ds w0 x1+4 ; dl w0 x2+8 ; move formals(z); ds w0 x1+8 ; ; repeat_char( z ); rl. w3 (j68.) ; d12=k+1-e8 jl w3 x3+0 ; d13=k-e8 ds. w3 (j30.) ; rl w1 x2-4 ; load mil rs. w2 (j13.) ; release stack; al w0 0 ; jl. (j6.) ; stop by reg expr; g8: c.g8-e8-506 m. code readstn too long z. c.502-g8+e8 jl -1 , r.252-(:g8-e8:)>1; fill with -1 z. <:readgeo<0>:>, 0 i. e. \f ; read_geo_tx * page 12 13 09 77, 10.35; i. e. ; entry tail: ; read_geo g0: 2 ; first tail: 2 segm 0, 0, 0, 0 ; fill 1<23+0<12+e2-e8 ; entrypoint 5<18+2<12+8<6+0, 0 ; long proc, boolean, zone 4<12 + e0-e5 ; code proc start of extern. list 1<12 + 0 ; 1 code segm. 0 bytes in perm core ; read_geo_r 1<23 + 4 ; modekind = backing storage 0, 0, 0, 0 ; fill 1<23+0<12+e1-e8 ; entrypoint 4<18+2<12+8<6+0, 0 ; real proc, boolean, zone 4<12 + e0-e5 ; code proc start of extern. list 1<12 + 0 ; 1 segm, 0 bytes in perm core ; read_ident 1<23 + 4 ; modekind = backing storage 0, 0, 0, 0 ; fill 1<23+0<12+e6-e8 ; entrypoint 5<18+2<12+8<6+0, 0 ; long proc, boolean, zone 4<12 + e0-e5 ; code proc start of extern. list 1<12 + 0 ; 1 segm, 0 bytes in perm core ; read_cmt 1<23 + 4 ; modekind = backing storage 0, 0, 0, 0 ; fill 1<23+0<12+e7-e8 ; entrypoint 5<18+5<12+2<6+8, 0 ; long proc, long, boolean, zone 4<12 + e0-e5 ; code proc start of extern. list 1<12 + 0 ; 1 segm, 0 bytes in perm core ; read_stn 1<23 + 4 ; modekind = backing storage 0, 0, 0, 0 ; fill 1<23+0<12+e3-e8 ; entrypoint 5<18+3<12+8<6+0, 0 ; long proc, integer, zone 4<12 + e0-e5 ; code proc start of extern. list 1<12 + 0 ; 1 segm, 0 bytes in perm core ; read_nl 1<23 + 4 ; modekind = backing storage 0, 0, 0, 0 ; fill 1<23+0<12+e9-e8 ; entrypoint 2<18+2<12+8<6+0, 0 ; boolean proc, boolean, zone 4<12 + e0-e5 ; code proc start of extern. list 1<12 + 0 ; 1 segm, 0 bytes in perm core ; mil g1: 1<23 + 4 ; modekind = backing storage 0, 0, 0, 0 ; fill 1<23+0<12+e4-e8 ; entrypoint 2<18+2<12+8<6+0, 0 ; boolean proc, boolean, zone 4<12 + e0-e5 ; code proc start of extern. list 1<12 + 0 ; 1 segm, 0 bytes in perm core p.<:insertproc:> e. ; stop outermost block \f ; read_geo_tx * page 13 13 09 77, 10.35; if ok.no ( mode 0.yes message readgeo not ok lookup readgeo ) end ▶EOF◀