|
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: 9984 (0x2700) Types: TextFile Names: »writegeotx«
└─⟦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⟧
; write_geo_tx * page 1 13 09 77, 10.36; ( write_geo = set 1 write_geo_r = set bs write_geo write_geo_c = set bs write_geo write_geo_c_r = set bs write_geo write_geo = slang entry.no writegeo writegeor writegeoc writegeocr scope project write_geo write_geo_r writegeo_c write_geo_c_r lookup write_geo write_geo_r write_geo_c write_geo_c_r if 11.yes (message write_geo interim login scope scope login write_geo) ) b. ; outermost block p. <:fpnames:> m. girc 4000 write_geo 14.05.77 \f ; write_geo_tx * page 2 13 09 77, 10.36; ; integer procedure write_geo( z, obs, typedec ); ; _______________________________________________ ; ; write_geo (return) integer ; the number of characters output by the procedure ; ; z (call and return) zone ; the zone used for buffering, open and ready for char output ; ; obs (call) long ; the angle or distance output. angles are counted in the ; interval 0, 2 pi and output according to the typedec ; ; typedec (call) boolean ; the type and number of decimals of obs (see write_geo_t); ; ; integer procedure write_geo_c( z, obs, typedec ); ; _________________________________________________ ; ; write_geo_c (return) integer ; the number of characters output by the procedure ; ; z (call and return) zone ; the zone used for buffering, open and ready for char output ; ; obs (call) long ; the angle or distance output. angles are counted in the ; interval -pi, pi and output according to the typedec ; ; typedec (call) boolean ; the type and number of decimals of obs (see write_geo_t); ; ; integer procedure write_geo_r( z, obs, typedec ); ; _________________________________________________ ; ; write_geo_r (return) integer ; the number of characters output by the procedure ; ; z (call and return) zone ; the zone used for buffering, open and ready for char output ; ; obs (call) real ; the angle or distance output. angles are counted in the ; interval 0, 2 pi and output according to the typedec ; ; typedec (call) boolean ; the type and number of decimals of obs (see write_geo_t); ; \f ; write_geo_tx * page 3 13 09 77, 10.36; ; integer procedure write_geo_c_r( z, obs, typedec ); ; ___________________________________________________ ; ; write_geo_c_r (return) integer ; the number of characters output by the procedure ; ; z (call and return) zone ; the zone used for buffering, open and ready for char output ; ; obs (call) real ; the angle or distance output. angles are counted in the ; interval -pi, pi and output according to the typedec ; ; typedec (call) boolean ; the type and number of decimals of obs (see write_geo_t); ; \f ; write_geo_tx * page 4 13 09 77, 10.36; 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=2 ; 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 <:writegeot:>, 0 ; writegeot 3<18+12<12+15<6+8 ; integer proc, bool val, long val, zone 13<18 ; int val. \f ; write_geo_tx * page 5 13 09 77, 10.36; ; 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. <:writegeo<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 j43: g0+47, d15 ; do 47: convert real to long j60: 1, 0 ; first of extern. rg j61: 2, d0 ; second do write_geo_t 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. f1: '-6 ; constant used in geo_t_r and r_t_geo w. d2: 12<12 ; appetite increase constant \f ; write_geo_tx * page 6 13 09 77, 10.36; b. a20, c2 ; start of write_geo w. e7: ; entrypoint write_geo_c_r ; ************* am 4-3 ; proc_info e6: ; entrypoint write_geo_c ; *********** am 3-2 ; proc_info e1: ; entrypoint write_geo_r ; *********** am 2-1 ; proc_info e2: ; entrypoint write_geo ; ********* al w0 1 ; proc_info al w1 -12 ; work + stack to readgeot jl. w3 (j3.) ; reserve 12 bytes al w2 x1 ; w2:= last used ds. w3 (j30.) ; saved w3 rl w3 0 ; move procinfo rl w0 x2+12 ; move return point rs w0 x2 ; to new stack top dl w1 x2+16 ; wa. w1 d2. ; new appetite := app. + 12 ds w1 x2+4 ; dl w1 x2+20 ; move formals z ds w1 x2+12 ; dl w1 x2+24 ; obs ds w1 x2+16 ; ; set kind sl w3 3 ; am 1 ; al w0 1 ; rs w0 x2+22 ; ; set kind : al w0 26 ; formals kind = integer al w1 x2+22 ; addr of readgeot kind ds w1 x2+8 ; save formals dl w1 x2+28 ; move formals tpd ds w1 x2+20 ; \f ; write_geo_tx * page 7 13 09 77, 10.36; so w3 1 ; if _r then jl. a1. ; goto conv. obs. a0: ; write_geo_t( kind, z, obs, typedec ); rl. w3 (j61.) ; addr write_geo_t d0=k+1-e8 ; rel chain jl w3 x3 ; goto write_geo_t ; return from there. a1: ; if _r proc_info then convert obs long : so w0 16 ; if expr then jl. w3 (j4.) ; take this; bz w3 x1 ; rs w3 x2+24 ; save value tpd; al w0 25 ; new formals al w1 x2+25 ; tpd; ds w1 x2+20 ; dl w1 x2+16 ; load formals obs so w0 16 ; if expr then jl. (j4.) ; take this; dl w1 x1 ; load obs rl w3 x2+14 ; load first formal obs so w3 1 ; if integer then ci w0 0 ; convert this rl w3 x2+24 ; load tpd sl w3 512 ; obs := obs / jl. a2. ; ( fd. w1 (j60.) ; if tpd shift (-6) extract 6 < 8 then jl. a3. ; rg a2: fd. w1 f1. ; else '-6 ); a3: rl. w3 (j43.) ; convert to long d15=k+1-e8 ; jl w3 x3+0 ; ds w1 x2+28 ; save obs al w0 28 ; new formals obs al w1 x2+28 ; ds w1 x2+16 ; jl. a0. ; goto call write_geo_t 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. <:writegeo<0>:>, 0 i. e. \f ; write_geo_tx * page 8 13 09 77, 10.36; i. e. ; entry tail: ; write_geo g0: 2 ; first tail: 2 segm 0, 0, 0, 0 ; fill 1<23+0<12+e2-e8 ; entrypoint 3<18+12<12+15<6+8, 0 ; integer proc, bool val, long val, zone 4<12 + e0-e5 ; code proc start of extern. list 1<12 + 0 ; 1 code segm. 0 bytes in perm core ; write_geo_r 1<23 + 4 ; modekind = backing storage 0, 0, 0, 0 ; fill 1<23+0<12+e1-e8 ; entrypoint 3<18+12<12+14<6+8, 0 ; integer proc, bool val, real val, zone 4<12 + e0-e5 ; code proc start of extern. list 1<12 + 0 ; 1 segm, 0 bytes in perm core ; write_geo_c 1<23 + 4 ; modekind = backing storage 0, 0, 0, 0 ; fill 1<23+0<12+e6-e8 ; entrypoint 3<18+12<12+15<6+8, 0 ; integer proc, bool val, long val, zone 4<12 + e0-e5 ; code proc start of extern. list 1<12 + 0 ; 1 segm, 0 bytes in perm core ; write_geo_c_r g1: 1<23 + 4 ; modekind = backing storage 0, 0, 0, 0 ; fill 1<23+0<12+e7-e8 ; entrypoint 3<18+12<12+14<6+8, 0 ; integer proc, bool val, real val, 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 ; write_geo_tx * page 9 13 09 77, 10.36; if ok.no ( mode 0.yes message writegeo not ok lookup writegeo ) end ▶EOF◀