|
|
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: 13056 (0x3300)
Types: TextFile
Names: »retsave3tx «
└─⟦01e83a425⟧ Bits:30008166 Bånd med SW8010 og SW8500 source code
└─⟦75ff9bef3⟧
└─⟦this⟧ »retsave3tx «
mode list.yes
save4tx=edit save3tx
; remove process udskydes til senere i save entries
; check af write access counter og area size genindføres nu da ida er enkbufret
; "covered by a better entry" => "area process inaccessible"
; "area size changed during save" laves om fra alarm til warning
; parameter array til system med lower bound = 0
; high speed bit til og fra i save entries
; connect output : segm < 2 + 0
l./page ... 36/, l./message stack current output/, l-1, r/81.12.07/88.09.08/
l./result := 2;/, r/2/1 shift 2/, r/1<1/1<2/, r/preferably on drum/temporary/
l./page ...38/, l./message connect output/, l-1, r/84.04.25/88.09.08/
l./1 shift 1/, r/1 shift 1/1 shift 2/, r/pref drum/temporary/
;********************************************
l./message decl. second level/, l./page 2;/, l-1, r/85.02.08/88.02.04/
l./dummy,/, i/
speedlimit ,
monrelease ,
/, p1
;********************************************
l./message mount param page 1;/, l-1, r/81.12.04/88.08.21/
l./<********/, d, d./<*******/, i/
<***************************************************************>
<* *>
<* The procedure returns the kind of the item given. *>
<* *>
<* Call : mount_param (seplength, item); *>
<* *>
<* mount_param (return value, integer). The kind of the *>
<* item : *>
<* 0 seplength<> <s> or ., item not below *>
<* 1 seplength = <s> or ., item = mountspec *>
<* 2 -"- , -"- release *>
<* 3 -"- , -"- mt62, mtlh, mto *>
<* 4 -"- , -"- mte *>
<* 5 -"- , -"- mt16, mtll, nrz *>
<* 6 -"- , -"- nrze *>
<* 7 -"- , -"- mt32 *>
<* 8 -"- , -"- mt08 *>
<* 9 -"- , -"- mthh *>
<* 10 -"- , -"- mthl *>
<* seplength (call value, integer). Separator < 12 + *>
<* length as for system (4, ...). *>
<* item (call value, array). An item in *>
<* item (1:2) as for system (4, ...). *>
<* *>
<***************************************************************>
/
l./message mount param page 2;/, l-1, r/84.05.30/88.08.21/
l./for i := 1 step 1/, d./i := 8/, i/
for i := 1 step 1 until
(if seplength <> space_txt and
seplength <> point_txt then 0 else 10) do
if item (1) = real ( case i of (
<:mount:> add 's',
<:relea:> add 's',
<:mt62:> ,
<::> ,
<:mt16:> ,
<::> ,
<:mt32:> ,
<:mt08:> ,
<::> ,
<::> ) ) and
item (2) = real ( case i of (
<:pec:> ,
<:e:> ,
<::> ,
<::> ,
<::> ,
<::> ,
<::> ,
<::> ,
<::> ,
<::> ) )
or item (1) = real ( case i of (
<::> ,
<::> ,
<:mtlh:> ,
<::> ,
<:mtll:> ,
<::> ,
<::> ,
<::> ,
<:mthh:> ,
<:mthl:> ) ) and
item (2) = real ( case i of (
<::> ,
<::> ,
<::> ,
<::> ,
<::> ,
<::> ,
<::> ,
<::> ,
<::> ,
<::> ) )
or item (1) = real ( case i of (
<::> ,
<::> ,
<:mto:> ,
<:mte:> ,
<:nrz:> ,
<:nrze:> ,
<::> ,
<::> ,
<::> ,
<::> ) ) and
item (2) = real ( case i of (
<::> ,
<::> ,
<::> ,
<::> ,
<::> ,
<::> ,
<::> ,
<::> ,
<::> ,
<::> ) ) then
begin j := i; i := 10; end;
/
l./message prepare cat scan page 2/, l-1, r/85.07.09/88.02.01/
l./integer field/, l1, i/
integer array field iaf;
/, p-1
l./result :=/, i/
iaf := -2;
/, p1
l./system (5 )/, r/proc_descr)/proc_descr.iaf)/
l./message save entries page 8;/, l-1, r/85.07.09/88.02.01/
l./close (zhelp/, d1, i/
close (zhelp, false); <*process will be removed later*>
/, p1
l./message save entries page 12/, l-1, r/85.07.02/88.11.03/
l.#if (entry_kind (j) // segm) > 4#, d6, i#
for copy_count := 1 step 1 until copies do
if modekind (copy_count) shift 4 < 0 then
begin <*high speed bit specified*>
getzone6 (za (copy_count), zdescr);
zdescr (1):=
if entry_kind (j) <
speedlimit /
(if modekind (copy_count) shift 9 < 0 then 4 else 1) then
logand (modekind (copy_count),
-(1 shift 19 + 1)) extract 23 <*clear*>
else
logor (modekind (copy_count),
1 shift 19 ) extract 23;<*set *>
if test then
write (out,
"nl", 1, <:high speed bit zone (:>, copycount,<:) = :>,
zdescr (1) shift (-19) extract 1,
"nl",1,<:size = :>, entry_kind (j),
"nl", 1, <:speedlimit/dens = :>, speedlimit/
(if modekind (copycount) shift 9 < 0 then 4 else 1));
setzone6 (za (copy_count), zdescr);
end;
#, p1
l./<. write acces counter again/, r/<*/ /, g 18/<./<*/, g -18/.>/*>/
l-19,
l./<*write acces counter again*>/, d2, i/
<* write access counter again*>
system (5) move core :( entry_nta (j) , proc);
system (5) move core :( proc (1) - 4, proc);
if test then
write (out,
"nl", 1, <:entry_nta (j) = :>, entry_nta (j) ,
"nl", 1, <:proc (17) = :>, proc (17) ,
"nl", 1, <:write acc = :>, entry_wr_acc (j));
/
l./true, 9/, g/, 9,/, 10,/
l./*** alarm : area size changed during save/, r/alarm/warning/
l./true, 9/, g/, 9,/, 10,/
l2, r/trap (-1)/errorbits := 2/, r/;/; <*warning.yes, ok.yes*>/
l2, r/*>/ /
l./begin <*remove highspeed bit in modekind*>/, l-1, d./if ida_copy/, d./end;/
i#
getzone6 (za (copy_count), zd);
zd (1) := logand (modekind (copy_count),
-(1 shift 19 + 1)) extract 23 <*clear high speed*>;
if ida_copy then
begin <*update position in tape zone*>
getposition (zida ,
fileno (copy_count),
blockno (copy_count));
zd (7) := fileno (copy_count);
zd (8) := blockno (copy_count);
end;
setzone6 (za (copy_count), zd);
#, p1
l./end <*next entry*>/, l./if entry_kind (j) > 0/, r/>/>=/, p1
l./monitor (64/, d, i/
area_proc := monitor (4) proc :(zhelp, 0, proc <*dummy*>);
if area_proc <> outproc and
area_proc <> catproc then
monitor (64) remove process :(zhelp, 0, zdescr);
/, p-4
l./message list entry page 2;/, l-1, r/81.12.30/88.08.11/
l./write (z, "sp", 3, true, 7, case modekind/, d./<:mte:>/, i/
if monrelease < 80 shift 12 + 0 then
write (z, "sp", 3, true, 7, case modekind of (
<: ip:>, <: bs:>, <: tw:>, <: tro:>, <: tre:>, <: trn:>,
<: trf:>, <: trz:>, <: tpo:>, <: tpe:>, <: tpn:>, <: tpf:>,
<: tpt:>, <: lp:>, <: crb:>, <: crd:>, <: crc:>, <:mtlh:>,
<: mte:>, <:mtll:>, <:nrze:>, <:mt32:>, <:mt08:>, <:mthh:>,
<:mthl:>, <: pl:> ))
else
write (z, "sp", 3, true, 7, case modekind of (
<: ip:>, <: bs:>, <: tw:>, <: tro:>, <: tre:>, <: trn:>,
<: trf:>, <: trz:>, <: tpo:>, <: tpe:>, <: tpn:>, <: tpf:>,
<: tpt:>, <: lp:>, <: crb:>, <: crd:>, <: crc:>, <:mt62:>,
<: mte:>, <:mt16:>, <:nrze:>, <:mt32:>, <:mt08:>, <:mthh:>,
<:mthl:>, <: pl:> ));
/
l./message skip entry page 1;/, l-1, r/85.07.08/88.09.02/
l./<:covered by a better entry/,
r/covered by a better entry/area process inaccessible/
l./errorbits := 2/, d, i/
if result extract 12 < 4 then
errorbits := 2; <*warning.yes, ok.yes*>
/, p-2
l./message modekind case page 1;/, l-1, r/81.12.30/88.08.11/
l./until 24/, r/24/26/
l./<*mto, mtlh*>/, d./<*mthl*>/, i/
1 shift 23 + 0 shift 12 + 18, <* mt62, mto, mtlh*>
1 shift 23 + 2 shift 12 + 18, <* mte*>
1 shift 23 + 4 shift 12 + 18, <* mt16, nrz, mtll*>
1 shift 23 + 6 shift 12 + 18, <* nrze*>
1 shift 23 + 8 shift 12 + 18, <* mt32*>
1 shift 23 + 12 shift 12 + 18, <* mt08*>
1 shift 23 +128 shift 12 + 18, <* mthh*>
1 shift 23 +132 shift 12 + 18, <* mthl*>
/, p-8
l./i := 24/, r/24/26/
l./message program/, l./page 2;/, l-1, r/85.01.16/88.08.11/
l./<*obtain area and buffer claim*>/, i/
<*get monitor release*>
system (5) move core :(64, dummyia);
monrelease := dummyia (1); <*rel shift 12 + subrel*>
/, p-3
l./message program/, l./page 3;/, l-1, r/84.05.30/88.02.04/
;*********************************************
l./tape_param_ok :=/, l1, i/
<*
write (out, "nl", 1, <:speed limit : :>, "<", 1);
*>
<*stopzone (out, false);*>
<*read (in, speedlimit);
write (out, "nl", 1, <:speed limit : :>, speedlimit, "nl", 1);
*>
<*stopzone (out, false);*>
speedlimit := 100;
/
;**********************************************
l./message program page 4/, l-1, r/81.12.15/88.09.16/
l./1 shift 23 + 18/, d./1 shift 23+132/, i/
modekind (copycount) := 1 shift 23 + 18; <*mto, mtlh, mt62*>
modekind (copycount) := 1 shift 23 + 2 shift 12 + 18; <*mte*>
modekind (copycount) := 1 shift 23 + 4 shift 12 + 18; <*nrz, mtll, mt16*>
modekind (copycount) := 1 shift 23 + 6 shift 12 + 18; <*nrze*>
modekind (copycount) := 1 shift 23 + 8 shift 12 + 18; <*nr32*>
modekind (copycount) := 1 shift 23 +12 shift 12 + 18; <*mt08*>
modekind (copycount) := 1 shift 23+128 shift 12 + 18; <*mthh*>
modekind (copycount) := 1 shift 23+132 shift 12 + 18; <*mthl*>
/
l./message declare zones page 1;/, l-1, r/85.01.16/88.08.11/
l./ida_copy :=/, i/
ida_copy := monrelease < 80 shift 12 + 0; <*monitor release 80*>
/, l1, r/ida_copy :=/idacopy :=
idacopy and/,
p-2
f
end
▶EOF◀