|
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: 27648 (0x6c00) Types: TextFile Names: »comprlib3tx «
└─⟦01e83a425⟧ Bits:30008166 Bånd med SW8010 og SW8500 source code └─⟦75ff9bef3⟧ └─⟦this⟧ »comprlib3tx «
; fgs 1986.07.04 compress algol library page 1 s. b20, c20, f20, g20, w. ; start segment... d. p.<:fpnames:> l. k = h55 g0. , 0 ; length, not used jl. g1. ; entry: goto initialize; ; definitions of zones and shares: b. a5, w. ; a-names used for initialization-chain... ; b0 = inputzone , b1 = input share h.a0:4 , g2. ; h0+0: base buffer area = g2 0 , 0 ; +2: last of buffer = last of process = h8 2 , b1. ; +4: used share = 2 , b1. ; +6: first share = a1. , b1. ; +8: last share = b1 0 , r.18 ; h1+0: process description 0 , 0 ; h2+0: give up mask = 0 a1:4 , f0. ; +2: give up action = f0 0 , 0 ; +4 a2. , h22. ; +6: free parameter = abs addr of fp inblock b0: 0 , r.6 ; h3+0: record description b1: 0 , 0 ; s+0: share state = 0 a2:a3. , g3. ; +2: first shared = g3 0 , r.20 ; +4 ; b2 = output zone , b3 = output share a3:4 , g2. ; h0+0: base buffer area = g2 0 , 0 ; +2: last of buffer = last of process = h8 2 , b3. ; +4: used share = 2 , b3. ; +6: first share = a4. , b3. ; +8: last share = b2 0 , r.18 ; h1+0: process description 0 , 0 ; h2+0: give up mask = 0 a4:4 , f1. ; +2: give up action = f1 0 , 0 ; +4 a5. , h23. ; +6: free parameter = abs addr of fp outblock b2: 0 , r.6 ; h3+0: record description b3: 0 , 0 ; s+0: share state = 0 a5:a0. , g3. ; +2: first shared = g3 0 , r.20 ; +4 e. w. ; end a-names \f ; fgs 1986.07.04 compress algol library page 2 ; other variables b4: 0 , r.17 ; lookup area, b5: 0 ; parameter pointer (points at item before ; current parameter, right byte) b6: 1<23 + 4 ; constant = <bs> 0, r.9 ; room for tail in connect; b7: 4095-32 ; largest byte value - 32; b8: 0 ; saved return from c7 b9: 0 ; fp result b11: 0 ; saved object entry base (1); b12: 0 ; - - - - (2); b13: 0 , r.4 ; - - doc name (1:4); ; remove parameter from parameter list c6: rl. w3 b5. ; remove from area list: ba w3 x3 ; ba w3 x3 ; ws. w3 b5. ; hs. w3 (b5.) ; ; find the next legal item (i.e. a name not followed by a ; point) in the parameter list. ; (illegal items are removed from the parameter-chain) c0: rl. w3 b5. ; next param: ba w3 x3 ; w3 := item head(param); bl w0 x3-1 ; w0 := preceding separator; sh w0 3 ; if end param-list then jl. c1. ; goto change descriptors; bl w0 x3 ; if parameter <> <name> then se w0 10 ; alarm(parameter); jl. f2. ; ba w3 x3 ; w3 := item head(following); bl w0 x3-1 ; w0 := following separator; sn w0 8 ; if point then jl. f2. ; alarm(parameter); ; the parameter must describe a bs-area, with content = 4 ; and with an entry interval equal to the catalog base. al w3 x3-9 ; w3 := addr of parameter name; jl. w2 c7. ; check param(w2,w3); <*w0 never zero*> se w1 0 ; if result <> ok then jl. f5. ; alarm(error on input, w1); rl. w0 b2.+h1+16 ; move segment count in output zone into sl. w0 (b7.) ; if segment > max possible jl. f11. ; then goto alarm(too many); rs. w0 b2.+h1+14 ; blockcount of output zone rl. w3 b5. ; ...and into separator byte of current ba w3 x3 ; parameter head; hs w0 x3-1 ; \f ; rc 27.03.73 compress algol library page 3 dl w1 x3+3 ; move name of area ds. w1 b6.+4 ; to connection tail; dl w1 x3+7 ; ds. w1 b6.+8 ; al. w3 g3. ; input.first shared:= rs. w3 b1.+2 ; first buffer; al. w1 b0. ; zone:= input; al. w2 b6. ; descr:= connection tail; jl. w3 h27. ; connect input (zone, descr); se w0 0 ; if not ok jl. f6. ; then connect alarm; bz. w3 b4.+32 ; ls w3 9 ; last transport:= wa. w3 b1.+2 ; segments*512+first shared; al w3 x3-2 ; sl. w3 (b0.+h0+2) ; if last transport > last buffer jl. f4. ; then goto alarm(processes too small); rs. w3 b1.+4 ; input. last shared:= rs. w3 b1.+10 ; input.last transf:= rs. w3 b3.+10 ; output.last transf:= last transport; jl w3 (x1+h2+6) ; inblock (zone); jl. w3 c2. ; ps processes ext list; al. w1 b0. ; jl. w3 h79. ; terminate inputzone; al. w1 b2. ; zone:= output; jl w3 (x1+h2+6) ; outblock (zone); ; increase param pointer... ; and goto next param... rl. w3 b5. ; increase parameter pointer; ba w3 x3 ; rs. w3 b5. ; jl. c0. ; goto next param; \f ; fgs 1986.07.04 compress algol library page 4 ; at end of parameter list: terminate the output zone and ; change the output entry so that it describes all the output b. a5 w. ; local block; c1: al w3 x3-1 ; change descriptors: rs. w3 b5. ; save end param address... al. w1 b2. ; jl. w3 h79. ; terminate outputzone; al. w1 b4. ; w1 := lookup area; al. w3 b2.+h1+2 ; w3 := output area name; jd 1<11+42 ; lookup entry(w1,w3); rl. w0 b2.+h1+16 ; length in tail := rs w0 x1 ; segm count; jd 1<11+44 ; change entry(w1,w3); a2: rl. w3 h8. ; w3 := start of area chain; ba w3 x3+1 ; sn. w3 (b5.) ; if start = end param addr then jl. c5. ; goto finis program; rs. w3 h8. ; area chain start:= this area; al w3 x3+2 ; w3:= name addr; al w0 1 ; ensure w0 <> 0; jl. w2 c7. ; check entry; se w1 0 ; if not ok jl. f9. ; then goto alarm; al. w3 b4.+6 ; w3:= entry.name addr; jd 1<11+48 ; remove entry; al. w1 b4.+14 ; w1:= tail addr; dl w0 x1+4 ; move document name ds. w0 b13.+2 ; from tail dl w0 x1+8 ; to saved object docname ds. w0 b13.+6 ; for use by permanent into auxcat; dl. w0 b2.+h1+4 ; move name of output ds w0 x1+4 ; to document name; dl. w0 b2.+h1+8 ; ds w0 x1+8 ; bz. w2 (h8.) ; al w2 x2+32 ; content:= startsegm + 32; hs w2 x1+16 ; rl. w0 b6. ; modekind:= bs; rs w0 x1+0 ; al. w3 b4.+6 ; w3:=address of entry name; jd 1<11+40 ; create entry; se w0 0 ; if result <> 0 then jl. a5. ; goto alarm; al. w2 b13. ; w2 := addr old document name; al w1 2.111 ; la. w1 b4. ; se w1 0 ; if key <> 0 jd 1<11+90 ; then permanent entry into auxcat; se w0 0 ; if result <> 0 then jl. a4. ; goto alarm; dl. w1 b12. ; jd 1<11+74 ; set entry base (saved base); se w0 0 ; if result <> 0 then jl. a3. ; goto alarm; jl. a2. ; goto next entry; a3: am 1 ; alarm set entry base: a4: am 1 ; alarm permanent into auxcat a5: al w1 10 ; alarm create entry: jl. f5. ; goto alarm; e. ; end a-names of catalog scan \f ; fgs 1986.07.03 compress algol library page ...5... ; finis program: set result and return to fp... b. a1 w. ; begin block finis program; c5: rl. w3 h8. ; for all parameters left in al w0 4 ; paramlist do a0: hs w0 x3 ; preceding separator (param) := <s>; am (x3+1) ; sn w3 x3 ; if separator = 0 then jl. a1. ; goto finis; ea w3 x3+1 ; se. w3 (b5.) ; jl. a0. ; a1: rl. w2 b9. ; w2 := fp result; jl. h7. ; goto fp end program; e. ; end block finis program; ; procedure pseudo process external list; ; call: jl. w3 c2. ; return: all registers spoiled. ; the procedure inputs one extra segment ; for each segment occupied by the external list, ; and corrects the output zone accordingly; b. a5, d10 w. ; c2: rs. w3 d0. ; entry: save return c4: bz. w3 b4.+31 ; entry, return saved: k:= rel start ext list; al. w2 g3. ; j:= first segm start; sl w3 502 ; if k >= 502 jl. w3 c3. ; then input extra segm; am x2 ; rl w0 x3 ; bz w1 0 ; ne:= byte(k+j+1); bz w0 1 ; ng:= byte(k+j); ds. w1 d2. ; al w3 x3+2 ; k:= k + 2; sl w3 502 ; if k >= 502 jl. w3 c3. ; then input extra segm; am x2 ; rl w1 x3 ; nb := word (k + j); rl. w0 b4.+26 ; w0 := kind and spec (1); sl w0 0 ; if fortran subroutine then jl. a1. ; begin rs. w1 d3. ; save nc, nz; zl w1 2 ; nb := wm. w1 d5. ; nc * 12; rx. w1 d3. ; nb := zl w1 3 ; nz * wm. w1 d6. ; 18 + wa. w1 d3. ; nb; a1: rx. w1 d1. ; end <*fortran subroutine*>; wm. w1 d4. ; wa. w1 d2. ; i:= (ne*6+ng)*2+nb; ls w1 1 ; comment i + 6 is wa. w1 d1. ; number of unprocessed al w0 x1 ; bytes in ext list; a0: wa w0 6 ; rep: i:= i + k; sh w0 502-7 ; if i + 6 < 502 - 2 jl. (d0.) ; then return; ; comment if there is only one word left ; then it is used as continuation word jl. w3 c3. ; input extra segm; al w3 x3-502 ; i:= i - 502; jl. a0. ; goto rep; b10: d0: 0 ; saved return; d1: 0 ; ne d2: 0 ; ng d3: 0 ; work for nc, nz d4: 6 ; constant 6 d5: 12 ; - 12 d6: 18 ; - 18 e. ; end ps process ext list; \f ; fgs 1986.07.04 compress algol library page 6 ; procedure input extra segment; ; the procedure inputs one extra segment after ; the last and sets the zone variables: ; k:= input.first shared:= input.first transfer:= input.last transfer+2; ; input.last shared:= output.last transfer:= input.last transfer:= k + 510; ; call: w2 : some machine address ; w3 : return address; ; return w0 : unchanged; w1: spoiled ; w2 : w2(entry)+512; w3: byte(x2(entry)+503); b. d1 w. ; c3: ds. w3 d1. ; entry: save registers; al. w1 b0. ; rl. w2 b1.+10 ; set share variables; al w2 x2+2 ; al w3 x2+510 ; ds. w3 b1.+4 ; ds. w3 b1.+10 ; rs. w3 b3.+10 ; sl w3 (x1+h0+2) ; if k + 510 > last buffer jl. f4. ; then alarm (process too small); jl w3 (x1+h2+6) ; rl. w2 d0. ; w2:= saved w2; bz w3 x2+503 ; w3:= byte(x2+503); al w2 x2+512 ; w2:= w2 + 512; jl. (d1.) ; return d0: 0 , d1: 0 ; saved w2, return; e. ; end input extra segm; ; procedure check entry. ; call: jl. w2 c7. ; w3 = addr of entry name. ; ; w0 = 0 => check and save object entry base ; the procedure checks that the entry is a legal compress-parameter. ; at return w1 is the result of the check: ; w1 = 0 == normal return, entry is ok ; w1 = 1 == entry is unknown ; w1 = 2 == wrong interval ; w1 = 3 == illegal content ; w1 = 4 == not area b. a5, d1 w. c7: rs. w2 b8. ; entry: save return; rl w2 0 ; w2 := w0; al. w1 b4. ; w1 := lookup area; jd 1<11+76 ; check single entry: se w0 0 ; if unknown then jl. a4. ; result := 1 else se w2 0 ; if object entry then jl. a5. ; begin dl w1 x1+4 ; al w3 0 ; w3 := own process; rs. w3 d1. ; al. w3 d1. ; jd 1<11+72 ; set catalog base (entry base); se w0 0 ; if catbase not set then jl. a3. ; result := 2 al. w1 b4. ; else dl w0 x1+4 ; begin ds. w0 b12. ; save entry base; am -2000 ; am. (h16.+2000) ; set catbase (std base); dl w1 +78 ; al. w3 d1. ; w3 := own process; jd 1<11+72 ; end; a5: al. w1 b4. ; end; dl. w0 b12. ; if entry interval is not equal to sn w3 (x1+2) ; the saved base then se w0 (x1+4) ; result := 2 else jl. a3. ; bz w0 x1+30 ; if content <> 4 then se w0 4 ; result := 3 else jl. a2. ; rl w0 x1+14 ; if size > 0 then sl w0 1 ; result := 0 else am 0-4 ; result := 4 am 4-3 ; ; a2: am 3-2 ; a3: am 2-1 ; a4: al w1 1 ; jl. (b8.) ; return; d1: 0 ; work; e. \f ; fgs 1986.07.04 compress algol library page 7 ; alarms .......... ; procedure alarm head. ; ; the procedure writes <:***<program name> :> on current out... ; ; call: jl. w2 f10. ; b. a1 w. f10: al. w0 a0. ; w0 := <:***<0>:>; jl. w3 h31.-2 ; outtext; am -2000 ; rl. w3 h8.+2000 ; al w0 x3+2 ; jl. w3 h31. ; outtext(program name); al. w0 a1. ; jl. w3 h31. ; outtext(<: :>); al w0 1 ; fp result := sorry; rs. w0 b9. ; jl x2 ; return; a0: <:***<0>:> a1: <: :> e. ; alarmtexts............. b. a20 w. a0: h. a1 ; result = 0 , connect error a2 ; 1 , unknown a3 ; 2 , interval a4 ; 3 , content a5 ; 4 , not area a6 ; 5 , intervals a7 ; 6 , no collection area a8 ; 7 , transport error a9 ; 8 , process too small a11 ; 9 , too many segments a12 ; 10, create entry a13 ; 11, permanent into auxcat a14 ; 12, setentry base w. a1=k-a0 , <: connect error<10><0>:> a2=k-a0 , <: unknown<10><0>:> a3=k-a0 , <: interval<10><0>:> a4=k-a0 , <: content<10><0>:> a5=k-a0 , <: not area<10><0>:> a6=k-a0 , <: intervals<10><0>:> a7=k-a0 , <: no collection area<10><0>:> a8=k-a0 , <: transport error<10><0>:> a9=k-a0 , <: process too small<10><0>:> a11=k-a0, <: too many segments<10><0>:> a12=k-a0, <: create entry<10><0>:> a13=k-a0, <: permanent into auxcat<10><0>:> a14=k-a0, <: set entry base<10><0>:> a10: 0 ; saved errortext \f ; rc 06.03.73 compress algol library page 8 ; process too small... f4: am 1 ; process too small: result := 8; ; transport error on input... f0: al w2 -2 ; result:=7 al. w1 b0. ; terminate input zone... jl. w3 h79. ; am x2 ; ; alarms on input parameters... f11: am 9 ; too many segments: result:=9; f6: al w1 0 ; connect error: result := 0; f5: bl. w1 x1+a0. ; other error, result is in w1... al. w0 x1+a0. ; w0 := alarmtext rs. w0 a10. ; jl. w2 f10. ; alarm head... rl. w3 b5. ; ba w3 x3 ; w0 := parameter address; al w0 x3+1 ; jl. w3 h31. ; outtext(parameter); rl. w0 a10. ; w0 := saved alarmtext; jl. w3 h31. ; outtext. jl. c6. ; goto remove item... ; alarms on output parameter... f1: am 7 ; transport error: result:=7; f3: al w1 0 ; connect error: result := 0; f9: bl. w1 x1+a0. ; other error: result is in w1... al. w0 x1+a0. ; w0 := alarmtext; rs. w0 a10. ; jl. w2 f10. ; alarm head al. w0 b2.+h1+2 ; w0 := outfile name; jl. w3 h31. ; outtext; rl. w0 a10. ; w0 := saved alarmtext; jl. w3 h31. ; jl. c5. ; goto finis program; \f ; rc 01.03.73 compress algol library page 9 ; other alarms... f7: am 1 ; no left side: result := 6; f8: al w1 5 ; intervals: result := 5; al w0 0 ; rs. w0 b2.+h1+2 ; outfilename := 0; jl. f9. ; goto other error on output parameter... e. ; end a-names for alarms... ; parameter error... b. a10 w. f2: jl. w2 f10. ; alarm head... al. w0 a0. ; jl. w3 h31. ; outtext (<:param :>); a1: rl. w2 b5. ; next: w2 := param pointer; ba w2 x2 ; bl w1 x2 ; w1 := parameter kind; se w1 10 ; if <name> then jl. a2. ; al w0 x2+1 ; outtext(param name) jl. w3 h31.-2 ; jl. a3. ; else a2: rl w0 x2+1 ; jl. w3 h32.-2 ; outinteger(param); 0 ; ...layout... a3: ba w2 x2 ; bl w1 x2-1 ; w1 := following separator; ws. w2 b5. ; remove item from parameterlist... hs. w2 (b5.) ; al w2 46 ; w2 := point-character; al. w3 a1. ; set return to next; sn w1 8 ; if separator is point then jl. h26.-2 ; outchar(point); al w2 10 ; jl. w3 h26.-2 ; outchar(<10>); jl. c0. ; goto next param; a0: <:param <0>:> e. \f ; rc 03.04.74 compress algol library page 10 ; initialisation of program ....... c8: bz. w2 b4.+32 ; finish init: wa. w2 b0.+h1+16 ; al w2 x2-1 ; output.segmentcount := rs. w2 b2.+h1+16 ; codesegments + length of extlist - 1; jl. c0. ; goto next praram; ; define the copy-buffer: g2 = k-1 ; base buffer area g3 = k ; first shared 0 , r.17 ; secondary lookup area ; initialize outputname b. a20, d20 w. d0: <:catalog:>, 0, 0 ; name of catalog, name tab addr 0 ; message buffer address(first); d1: 3<12 ; first message(input) 0 ;g0 ; first buff(first); 0 ;g0+510 ; last buff(first); 0 ; segment(first); 0 ; mess buff addr(second); d2: 3<12 ; second message(input); 0 ;g0+512 ; first buff(second); 0 ;g0+512+510 ; last buff(second); -1 ; segment(second); init to -1; d3: 0, r. 8 ; answer area d4: 0 ; current message d5: 0 ; other message d6: -1<2 ; dangerous bits in status d7: 1<18 + 1<1 ; end document+normal answer d8: 0 ; last entry(current buffer); \f ; fgs 1986.07.04 compress algol library page 11 g1: am -1000 ; initialize: rs. w3 h8.+1000 ; current command := program name... al w0 x3+1 ; param pointer:= rs. w0 b5. ; byte before program; sn w2 x3 ; if no leftside then jl. f7. ; alarm (no leftside) al w3 x3-8 ; w3 := outfile name; dl w1 x3+2 ; move outfile name to output zone... ds. w1 b2.+h1+4 ; ds. w1 b6.+4 ; and connection tail; dl w1 x3+6 ; ds. w1 b2.+h1+8 ; ds. w1 b6.+8 ; al w0 0 ; check entry base and save it; jl. w2 c7. ; check entry(w3); se w1 0 ; if not ok then jl. f9. ; alarm(error on output); ; initialize abs addresses in zones... al. w1 b0.+h0+1 ; w1 := chain start; bl w0 x1-1 ; a1: wa w1 0 ; next: w1 := next element; bl w2 x1 ; bl w0 x1-1 ; wa w2 2 ; w2 := abs address of element; rs w2 x1 ; se. w1 b0.+h0+1 ; if not chain start then jl. a1. ; goto next; rl. w3 b5. ; al w3 x3-3 ; initialize last of buffer in zones... rs. w3 b0.+h0+2 ; rs. w3 b2.+h0+2 ; ; connect output zone... al w0 0 ; define area-size; al. w1 b2. ; w1 := output zone; al. w2 b6. ; w2 := outfile; jl. w3 h28. ; connect output; se w0 0 ; if not ok then jl. f3. ; alarm(connect error); al. w1 b0. ; jl. w3 h27. ; connect input (outfile); se w0 0 ; if not ok then jl. f9. ; alarm (error on output) \f ;fgs 1986.07.04 compress algol library, page 12 ;scan catalog to see if left side already compressed ... al. w3 d0. ;start cat scan: jd 1<11+52 ; create area process al. w1 g0. ; (<:catalog:>); al w2 x1+510 ; ds. w2 d1.+4 ; initialize buffer addresses(first); al w1 x1+512 ; al w2 x1+510 ; ds. w2 d2.+4 ; initialize buffer addresses(second); sl. w2 (b0.+h0+2) ; if last buf(catscan) > last buf(input) then jl. f4. ; alarm(process too small); al. w1 d1. ; current message:=first; al. w2 d2. ; other message:=second; ds. w2 d5. ; al. w1 d1. ; send message(first buffer); jd 1<11+16 ; rs w2 x1-2 ; save mess buff addr(first); al. w1 d2. ; message:=second; a3: rl w2 x1+6 ; next segment: comment throughout this loop al w2 x2+2 ; w3 points at <:catalog:>; rs w2 x1+6 ; segment(message):=segment(message)+2; jd 1<11+16 ; send message(message); rs w2 x1-2 ; save mess buff addr; rl. w2 d4. ; message buffer address := rl w2 x2-2 ; mess buff addr(current); a4: al. w1 d3. ; wait and check: jd 1<11+18 ; wait answer(answer area, buff); al w2 1 ; ls w2 (0) ; logical status:= lo w2 x1 ; status + 1<result; sz. w2 (d6.) ; if dangerous bits then jl. a8. ; goto end catscan; rl w2 x1+2 ; if bytes transferred <> 512 sn w2 512 ; then jl. a5. ; begin rl. w1 d4. ; send message(current); jd 1<11+16 ; goto wait and check; jl. a4. ; end; a5: rl. w2 d4. ; entry := first of entry; rl w2 x2+2 ; al w1 x2+15*34-34; last entry:=(entries per segment - 1) rs. w1 d8. ; * entry length + first of buffer; a6: bl w0 x2+0 ; test entry: sn w0 -1 ; if entry = free then jl. a7. ; goto next entry; dl. w1 b12. ; sn w0 (x2+2) ; if entry base <> saved entry base then se w1 (x2+4) ; goto next entry; jl. a7. ; dl. w1 b0.+h1+4 ; if entry. docname (1:2) <> sn w0 (x2+16) ; input.procname (1:2) then se w1 (x2+18) ; goto next_entry; jl. a7. ; dl. w1 b0.+h1+8 ; if entry. docname (3:4) <> sn w0 (x2+20) ; input.procname (3:4) then se w1 (x2+22) ; goto next_entry; jl. a7. ; bz w1 x2+30 ; al w1 x1-32 ; first segm := entry.content - 32; sl w1 1 ; if first segm <=0 sh. w1 (b0.+h1+16) ; or first segm < input zone.segment count jl. a7. ; then goto next entry; rs. w1 b0.+h1+16 ; input zone.segm:=first segm; bz w1 x2+32 ; input entry.code length := hs. w1 b4.+32 ; entry.code length; \f ; rc 24.03.83 compress algol library, page 13 a7: al w2 x2+34 ; next entry: entry:=entry + entry length; sh. w2 (d8.) ; if entry <= last entry jl. a6. ; then goto test entry; rl. w1 d5. ; message := current message; rx. w1 d4. ; current message := other message; rs. w1 d5. ; other message := message; jl. a3. ; goto next segment; a8: al. w1 d0. ; end catscan: al w3 -2000 ; comment stepping stone; so. w2 (d7.) ; if status <> end of document jl. x3+h7.+2000; then goto giveup the run; rl. w2 d5. ; rl w2 x2-2 ; w2:= buff address of other message; al. w1 d3. ; jd 1<11+18 ; fetch answer to other message; al. w1 b0. ; al. w3 c8. ; set return addresses to go rs. w3 b10. ; via pseudo process ext list al. w3 c4. ; to finish init and then call jl (x1+h2+6) ; inblock; e. ; end a-names of initialization. g0: 0 ; length of segment, length of next segment... e. ; end block for fpnames m.compresslib 1986.07.04 i. e. ; end segment ▶EOF◀