DataMuseum.dk

Presents historical artifacts from the history of:

RC4000/8000/9000

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about RC4000/8000/9000

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦77f713eca⟧ TextFile

    Length: 13056 (0x3300)
    Types: TextFile
    Names: »retsave3tx  «

Derivation

└─⟦01e83a425⟧ Bits:30008166 Bånd med SW8010 og SW8500 source code
    └─⟦75ff9bef3⟧ 
        └─⟦this⟧ »retsave3tx  « 

TextFile

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◀