|
|
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: 24576 (0x6000)
Types: TextFile
Names: »retlook3tx «
└─⟦01e83a425⟧ Bits:30008166 Bånd med SW8010 og SW8500 source code
└─⟦75ff9bef3⟧
└─⟦this⟧ »retlook3tx «
mode list.yes
lookup4tx=edit lookup3tx
; nye modekind abbrev.
; filters as search parameters
; nyt program delete
; base interval parameter til search og delete
; connect output : segm < 2 + key
;
l./cat adm 2/, r/adm 2/adm 2 ...0.../
l./lookup, search/, r/scope/delete, scope/
l./lookup search/, r/scope/delete scope/
l./...06/, r/rc 1976.05.25 / fgs 1988.08.04/
l./b9:/,
l./ds w1 x3+2/, d, i/
am. a50. ;
ds w1 +2 ; and save it in work name;
/, p1
l./ds w1 x3+6/, d, i/
am. a50. ;
ds w1 +6 ; and save it in work name;
/, p1
l./jl. b50./, i/
al. w0 a50. ; w0 := addr (work name);
/, p1
l./al w0 1<1+1/, r/1<1+1/1<2+0/
l./...08/, r/rc 76.05.25 / fgs 1988.08.02/
l./b15:/, l1, i/
sh w1 -2 ; if scope illegal, in max then
al w1 -2 ; scope := illegal, in std;
/, p-2
l./...10/, i#
\f
; fgs 1988.08.02 fp utility, system 3, cat adm 2 ...9a...
;procedure remove entry.
;
;removes the entry addressed by w2
;and returns to link + 2 if removed, to link if not removed
;at return the link b16 is different from zero.
;
;w0 destroyed
;w1 unchanged
;w2 addr of entry unchanged
;w3 link destroyed
;
b. j20 w.
j0: 0 ; saved w0
b66: ds. w3 b16. ; entry: save link, entry;
al w3 x2+6 ; w3 := entry.name;
jd 1<11+48 ; remove entry;
sn w0 0 ; if removed then
jl. j6. ; goto link + 2;
rs. w0 j0. ; save w0;
jl. w3 b26. ; outtext(<:***<prog> <scope>:>,
rl. w0 j0. ; restore w0;
se w0 2 ; if catalog error, document not ready then
jl. j1. ; begin
jl. w3 b43. ; outtext (<:bs device not ready<10>:>);
jl. j5. ; end else to link;
j1: jl. w3 b33. ; outtext (<: :>);
dl. w3 b16. ; restore entry;
al w0 x2+6 ; name := entry.name;
jl. w3 b30. ; outtext (name);
rl. w0 j0. ; restore w0;
se w0 3 ; if not found then
jl. j2. ; begin
jl. w3 b37. ; outtext (<: unknown<10>:>);
jl. j5. ; end else
j2: se w0 4 ; if entry protected then
jl. j3. ; begin
jl. w3 b47. ; outtext (<: entry protected<10>:>);
jl. j5. ; end else
j3: se w0 5 ; if used by another then
jl. j4. ; begin
jl. w3 b46. ; outtext(<: entry in use<10>:>);
jl. j5. ; end else
j4: jl. w3 b45. ; outtext (<: catalog error<10>:>);
j5: jl. (b16.) ; goto link;
j6: am. (b16.) ; return to link + 2:
jl +2 ;
e.
#
l./...11/, r/rc 16.02.72 / fgs 1988.08.02/
l./-2/, r/-2/-4/, l1, i/
; -2: illegal scope, interval contained in std, equals interval in scope
/, p1
l./b. j13/, r/j13/j14/
l./...12/, r/rc 11.02.72 / fgs 1988.08.02/
l./j4:/, i/
/
l./j13:/, l-1, d, i/
al w1 x1+1 ; else
sn. w0 (a12.) ; if int.low <> int in scope.low and
se. w1 (a13.) ; int.up <> int in scope.up then
jl. j11. ; goto inside max else
jl. j14. ; goto inside std, equals int in scope;
/, p1
l./j11:/, r/-2/-4/, i/
j14: am 2 ; inside std, equals int in scope
/, p1
l./...16/, r/82.11.24/88.07.10/
l./a102:/, l1, i/
a104: 0 ; addr of parameter after <scope>).<device>) in search
a105: 0 ; addr of catalog entry in filter algorithm in search
/, p-2
l./a29:/, l1, i/
a30: 4<12+ 4 ; space,integer
a50: 0, r.8 ; work name used in output entry
/, p-1
l./...18/, i#
; dh 1987.05.06 fp system, system 3, cat adm 2 ...17a...
b. a20, b3, c1, d5 w.
;This algorithm enables search to filter the output of catalog entries
;found according to a given scope specification. The filter works on
;the entry name and the document name of an entry.
;
;Syntax (augments):
;------------------
;( )1 ( )*
;(<out file> = ) search <scope spec> (<filter>)
;( )0 ( )0
;
; ( )*
;<filter> ::= <substring>(.<substring>)
; ( )0
;
; ( <generalized name> )
;<substring> ::= ( <name> )
; (<apostrophized name>)
;
;Function:
;---------
; The main catalog is scanned, and a subset of it is listed with an
;output format as for lookup. If an outfile is specified, the list of
;catalog entries is printed on that file, otherwise current output is
;used. Messages from search are always printed on current output.
; If no filters are given, all entries from the main catalog accor-
;ding to the scope spec (see Scope specification) are listed, other-
;wise, the set of catalog entries is further delimited by means of
;filters (see Filter specification below).
;
;Filter specification:
;---------------------
; A filter consists of one or more substrings concatenated by period.
;If a list of filters exists, an entry selected for listing will only
;be listed if either its name or its document name contain all the sub-
;strings of at least one of the filters. The order of the substrings
;in a filter is irrellevant.
; Thus, in a possible list of filters, you may consider space as "or"
;and period as "and", where the precedence of "and" and "or" is as in
;Algol.
\f
; dh 87.05.07 fp system, system 3, cat adm 2 ...17b...
;requirements:
; w0 w1 w2 w3 a104 a105
;
;entry: irr. irr. irr. return item after catalog
; scope spec entry
;
;exit: all registers and variables unchanged.
;
; the procedure returns to return+0 in case of failure
; and to return+2 in case of success.
;
b27: ds. w3 b3. ; save registers
rs. w2 a105. ; save addr entry;
rl. w3 a104. ;
el w2 x3 ; if item after scope spec = end command
sh w2 2 ; then goto letitpass1;
jl. a11. ;
ds. w1 b2. ;
rl. w2 a105. ; save addr entry;
al w2 x2+6 ; name in entry := entry name;
c1: al w3 x3+2 ; repeat <* entry- and document-name *>
ds. w3 d1. ; text part(item) := first item addr + 2;
al w3 10 ; x := 10;
; string := name in entry;
a0: rs. w3 d2. ;
al w1 x3 ; repeat
jl. w3 c0. ; namelength := x;
rl. w3 d2. ; l := takechar(x, string);
al w3 x3-1 ; x := namelength - 1;
sn w1 0 ; until l <> 0;
jl. a0. ;
a1: ; repeat <* all possibillities of filter *>
\f
; dh 87.05.05 fp system, system 3, cat adm 2 ...17c...
;a1: ; repeat <* items in a filter *>
rl. w0 d2. ; j := namelength; <* charcount in an entry *>
a2: rs. w0 d3. ; repeat <* stepping backward through the
; name in the entry *>
al w3 0 ;
jl. a4. ; for i := 0,
a3: rl. w3 d4. ; <*i controls pos in an item *>
al w3 x3+1 ; i+1 while l = k do
se. w1 (d5.) ; begin
jl. a5. ;
a4: rs. w3 d4. ;
am. (d3.) ; k := takechar
al w1 x3 ; (j+i, name in entry);
rl. w2 d0. ;
jl. w3 c0. ;
rs. w1 d5. ;
rl. w1 d4. ; l := takechar
rl. w2 d1. ; (i, item);
jl. w3 c0. ;
sn w1 0 ; if l = 0
jl. a6. ; then goto found;
jl. a3. ; end while loop;
a5: rl. w0 d3. ;
es. w0 1 ; j := j - 1;
sl w0 0 ; until j < 0 <* end backward stepping *>;
jl. a2. ; comment when the loop is exhausted, l<>0;
a6: ;found:
ba w2 x2-1 ; nopass := l <> 0; <* variable kept in w1 *>
rs. w2 d1. ; item := next item;
el w0 x2-2 ; sep := item separator;
se w0 8 ; until sep (item) <> '.'
jl. a7. ;
el w0 x2-1 ; or length (item) = 4 <*integer*>
sh w0 4 ;
jl. a12. ; or nopass <* end items in a filter *>;
al w0 8 ;
sn w1 0 ; comment hereafter either all substrings in a
jl. a1. ; filter have suceeded, or a filter failed;
\f
; dh 87.05.07 fp system, system 3, cat adm 2 ...17d...
a7: sn w1 0 ; if -,nopass <* i.e. a filter suceeded *>
jl. a10. ; then goto letitpass;
a8: se w0 8 ; comment a filter failed, therfore: ;
jl. a9. ; while sep = '.' do
a12: ba w2 x2-1 ; begin
el w0 x2-2 ; item := next item; sep := item separator;
jl. a8. ; end;
a9: rs. w2 d1. ; comment we may now examine the next filter;
sl w0 4 ; until sep = end command;
jl. a1. ; comment all filters have failed on this name;
rl. w2 a105. ; name in entry := document name;
al w2 x2+16 ; item := item after scope spec;
rl. w3 a104. ;
se. w2 (d0.) ; until document name tested once before;
jl. c1. ; comment the names have been tested with all fltrs;
dl. w1 b2. ;failure:
dl. w3 b3. ; restore registers;
jl x3 ; return failure;
a10: dl. w1 b2. ;letitpass:
a11: dl. w3 b3. ;letitpass1: restore registers;
jl x3+2 ; return success;
\f
; dh 87.05.05 fp system, system 3, cat adm 2 ...17e...
c0: ;subprocedure takechar(pos, string);
; call: w0: -; w1: pos; w2: string; w3: return
al w0 0 ; exit: w0: -; w1: char; w2: unch; w3: unch
wd. w1 b0. ; addr := pos // 3;
am x1 ; subpos := pos mod 3;
am x1 ;
rl w1 x2 ; substring := word(2*addr + string);
ls w0 3 ;
am (0) ; char := substring shift(subpos*8 -16)
ls w1 -16 ; extract 7;
la. w1 b1. ;
jl x3 ; return;
b0: 3 ; constant 3 <* chars per word *>
b1: 8.177 ; constant: last 7 bits;
0, b2: 0, 0, b3: 0 ; room for registers;
d0: 0 ; addr of name in an entry;
d1: 0 ; addr of text part of an item;
d2: 0 ; namelength, i.e. length of name part in an entry
d3: 0 ; var: j <* stepping through name in an entry *>
d4: 0 ; var: i <* stepping through an item *>
d5: 0 ; var: k <* char from an entry *>
e. ; end block
#
l./...18/, l./a62:/, l1, i/
i0: jl. b0. ; stepping stone:
i2: jl. b2. ; -
i3: jl. b3. ; -
i4: jl. b4. ; -
/, p-4
l./...19/, r/84.06.18/88.05.06/
l./<:mtlh:>/, d./<:mthl:>/, i#
<:mt62:> , 1<23+ 0<12+18; mt, low speed, 6250 bpi , odd parity
<:mte:>,0 , 1<23+ 2<12+18; , - - , high density, even -
<:mt16:> , 1<23+ 4<12+18; , - - , 1600 bpi , odd -
<:nrze:> , 1<23+ 6<12+18; , - - , low density, even -
<:mt32:> , 1<23+ 8<12+18; , - - , 3200 bpi , odd -
<:mt08:> , 1<23+ 12<12+18; , - - , 800 bpi , - -
<:mthh:> , 1<23+128<12+18; , high - , high density, odd -
<:mthl:> , 1<23+132<12+18; , - - , low - , - -
#, p1
l./...22/, r/rc 78.04.11 / fgs 1988.07.08/
l./c3:/, l./jl. w3 b15./, i/
jl. w3 b27. ; test filters;
jl. c4. ; if failure then goto step entry;
/, p-2
l./b64:/, i#
\f
; fgs 1988.12.19 fp utility, system 3, cat adm 2 ...23...
;the program delete
b. c6 w.
g7: jl. w1 b0. ; start: initialize program;
jl. w3 b8. ; if left side then connect;
rs. w1 a16. ; save output zone address;
jl. w3 b22. ; read scope parameter;
sn w3 8 ; if scope = system then
jl. b14. ; goto scope error;
sl w3 10 ; if scope=own
jl. c5. ; then goto change criteria;
c1: jl. w3 b17. ; prepare cat. scan;
jl. w3 b19. ; start cat. scan;
c2: jl. w3 b23. ; check entry: find entry scope;
c3: se. w1 (a14.) ; if entry(scope) <> actual
jl. c4. ; then goto step entry;
jl. w3 b24. ; test bs device spec.;
jl. w3 b27. ; test filters;
jl. c4. ; if failure then goto step entry;
jl. w3 b15. ; ok: output entry;
dl w1 x2+4 ; interval := entry.interval;
al. w3 a15. ; w3 := addr <::>; <*own process*>
jd 1<11+72 ; set catbase;
jl. w3 b66. ; remove entry;
jl. c0. ; if not removed then goto reset catbase;
c0: jl. w3 i3. ; reset catbase;
c4: jl. w3 b21. ; step entry: next entry;
jl. c2. ; more in buf: goto check entry;
jl. w3 b20. ; buf empty: input cat. segments;
jl. c2. ; more in cat: goto check entry;
rl. w0 b16. ; end search:
se w0 0 ; if some output
jl. b2. ; then goto end program;
jl. w3 b26. ; error text:
jl. w3 b40. ; outtext(***<prog.name> <scope>
jl. b2. ; no entries found); goto end prog;
c5: rl. w0 c6. ; change criteria:
rs. w0 c3. ; change crit. to: if entry
jl. c1. ; not visible ;
c6: sl w1 8 ; new instruction
e. ; end program delete
\f
; fgs 1988.07.08 fp utility, system 3, cat adm 2 ...24...
#
l1,
l./...22a/, r/22a/25/
l./...22b/, r/22b/26/
l./...22c/, r/22c/27/
l./...23/ , r/23/28/
l./a95=g4/, l1, i/
jl. b11. ; stepping stone for b11:
b11 = k - 2 ;
jl. b14. ; stepping stone for b14:
b14 = k - 2 ;
jl. b26. ; stepping stone for b26:
b26 = k - 2 ;
/, p-3
l./...24/, r/rc 28.02.72 / fgs 1988.07.10/, r/24/29/
l./;a12-a13/,
l-1, r/temp/basepair temp/
l1, r/stand/base stand/
l1, r/0/-2 0/
l./b. j12/, r/j12/j20/
l./b22:/, l2, r/b2./i2./
l2, i/
al w3 x2+10 ;
rs. w3 a104. ; save addr param after <scope>;
/, p-2
l./jl. b14./, r/b14./j13./, r/scope error/maybe interval/
l./ls w3 -2/, i/
\f
; fgs 1988.07.08 fp utility, system 3, cat adm 2 ...30...
/
l./j5:/, d, i/
j5: rl. w0 (a104.) ; look for bs device spec:
/, p1
l./...25/, r/rc 10.02.72 / fgs 1988.07.10/, r/25/31/
l./sl. w0 (a29.)/, i/
al w3 x2+10 ;
rs. w3 a104. ; save addr param after <scope>.<device>;
/, p-2
l./...26/, r/rc 15.02.72 / fgs 1988.07.10/, r/26/32/
l./jl. b2./, r/b2./i2./
l./e. ;end procedure read scope parameter/, i/
j13: se. w0 (a30.) ; if del, kind <> space, integer then
jl. b14. ; goto scope error;
rl w1 x2+2 ; int in scope.low := lower :=
rs. w1 a12. ; param;
jl. w3 b11. ; next param;
jl. i2. ; if end list then end program;
se. w0 (a29.) ; if del, kind <> point, integer then
jl. b14. ; goto scope error;
rl w1 x2+2 ; int in scope.up := upper :=
rs. w1 a13. ; param;
al w3 x2+4 ;
rs. w3 a104. ; save addr param after <interval>;
rl. w0 a12. ;
al w1 x1+1 ;
sl w0 x1 ; if lower > upper then
jl. b14. ; goto scope error;
sh. w0 (a6.) ; if lower > std.lower
sh. w1 (a7.) ; or upper < std.upper then
jl. j14. ; goto check contained in std;
jl. b14. ; else
; goto scope error;
j14: al w1 x1-2 ; check contained in std:
sl. w0 (a6.) ; if lower < std.lower
sl. w1 (a7.) ; or upper > std.upper then
jl. b14. ; goto scope error;
al w3 -2 ;
rs. w3 a14. ; save value;
jl. j5. ; goto look for bs dev. spec;
/
l./;call error:/, i/
\f
; fgs 1988.07.08 fp utility, system 3, cat adm 2 ...33...
/
l./jl. b2./, r/b2./i2./
l./jl. b2./, r/b2./i2./
l./ ...27/, r/rc 78.04.10 / fgs 1988.07.10/, r/27/34/
l./jl. w1 b0/, r/b0./i0./
l./jl. b2./, r/b2./i2./
l./jl. w3 b4./, r/b4./i4./
l./c3:/, d./jl. c0./, i/
c3: jl. w3 b66. ; remove entry;
jl. c0. ; if not removed then goto set catbase;
jl. c1. ; if removed then goto next clear ;
/, p-3
l./...28/, r/82.11.24/88.07.10/, r/28/35/
l./jl. w3 b3./, r/b3/i3/
l./jl. w3 b4./, r/b4./i4./
l./...29/, r/29/36/
l./sl w3 8/, r/if/or/, i/
sl w3 0 ; if scope < 0
/, p1
l./c5:/, d, i/
c5: am -2000 ; next scope:
jl. w3 b11.+2000 ; next param;
/, p-3
l./...30/, r/30/37/
l./...31/, r/87.03.13/88.07.10/, r/31/38/
l./jl. w3 b3./, r/b3./i3./
l./jl. w3 b3./, r/b3./i3./
l./am -2048/, d
r/b3./i3./, r/+2048/ /
l./...32/, r/rc 79.08.30 / fgs 1988.07.10/, r/32/39/
l./am -2048/, d
r/b3./i3./, r/+2048/ /
l./cat adm 2 tails/, l./rc 19/, r/87.03.13/88.12.19/, r/m.rc/m. rc/
l./m. look/, r/m. look/m. look/, r/clear/clear,delete/
l./g0:/, l-1, d./<:insertproc/, i/
w.
g0: (:g2+511:) > 9 ; no of segments
0,r.4 ;
s2 ; month year
0,r.2 ;
2<12+g4-g3 ; entry lookup
g2 ;
1<23+4 ; kind = bs
0,r.4 ;
s2 ; month year
0,r.2 ;
2<12+g5-g3 ; entry search
g2 ;
1<23+4 ; kind = bs
0,r.4 ;
s2 ; month year
0,r.2 ;
2<12+g6-g3 ; entry clear
g2 ;
1<23+4 ; kind = bs
0,r.4 ;
s2 ; month year
0,r.2 ;
2<12+g7-g3 ; entry delete
g2 ;
g1: 1<23+4 ; kind = bs
0,r.4 ;
s2 ; month year
0,r.2 ;
2<12+g10-g3 ; entry scope
g2 ;
d.
p.<:insertproc:>
/
f
end
▶EOF◀