DataMuseum.dk

Presents historical artifacts from the history of:

CR80 Hard and Floppy Disks

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

See our Wiki for more about CR80 Hard and Floppy Disks

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦ba21a62c3⟧ TextFile

    Length: 3424 (0xd60)
    Types: TextFile
    Names: »INPARAMS.S«

Derivation

└─⟦b8af24a88⟧ Bits:30005796 CR80 Disc Pack ( MINICAMPS )
    └─ ⟦this⟧ »GENS.D!SWELLLIB.D!INPARAMS.S« 

TextFile


submodule inparams;


%SOURCE @**GENS.D*SWELLPREFIX.D*GENERALPARAMS.S
%SOURCE @**GENS.D*SWELLPREFIX.D*MONITORNAMES.S
%SOURCE @**GENS.D*SWELLPREFIX.D*IOSPARAMS.S
%SOURCE @**GENS.D*UTILITYHELP.D*UTH.I


export var
  ifiletype: filetype;           "input file descr
  ofiletype: filetype;           "output file descr


export procedure readparams(r6); "all registers destroyed
"============================"
" read the second line of the parameter file
var
  link: integer;
  i_open, o_open: boolean;
init
  i_open= false;
  o_open= false;

const
  namelistmax= 10;
const
  kwsize= 1; "in words"
type
  keywords= (k_error,
             k_i,
             k_o,
             k_top);

var
  keyword: array [0..k_top*kwsize-1] of integer;
  keywordindex: keywords;
  nameno: integer;
  fromadam: integer;
  fsn: file_system_name;
  vol: volume_name;
  namelist: array [0..size(file_name)*namelistmax-1] of integer;
  workarea: array [0..15] of integer;

init
  keyword[k_i     *kwsize..(k_i     +1)*kwsize-1]= 'I';
  keyword[k_o     *kwsize..(k_o     +1)*kwsize-1]= 'O';

begin
  r6=> link;

  address(pfiletype)=> r4;

  repeat
    readkeyword(kwsize,1,k_top,r0,address(keyword)=>r4,r6);
    r0=> keywordindex;

    pfiletype.s=> r4;
    case r0:keywords of
    k_error:
      fileerror(address(pfiletype)=>r4, address('illegal keyword(:0:)')=>r5, 0=>r7, r6);
    k_i, k_o:
      begin " read file id "
        address(default_fsn)=> r6;
        address(fsn)=> r7;
        movm(size(file_system_name), r6@file_system_name, r7@file_system_name);
        address(default_vol)=> r6;
        address(vol)=> r7;
        movm(size(volume_name), r6@volume_name, r7@volume_name);
        switch mon(infileid, address(fsn)=>r0, address(vol)=>r1, r2, r3, r4, address(namelist)=>r5,
                   address(workarea)=>r6, r7): infileid_exits to
        if_error:
          fileerror(address(pfiletype)=>r4, address('infileid(:0:)')=>r5, r7, r6);
        if_syntax:
          fileerror(address(pfiletype)=>r4, address('fileid syntax(:0:)')=>r5, r7, r6);
        end;
        r2=> nameno;
        r3=> fromadam;
      end;
    end;

    keywordindex=> r6;
    case r6:keywords of
    k_i:
      if i_open =>r6 = false then
      begin
        openfile(address(ifiletype)=>r4, address(fsn)=>r0, address(vol)=>r1, nameno=>r2,
          fromadam=>r3, address(namelist)=>r5, dfiletype.f=>r7, r6);
        openstream(r4, input_mode=>r3, r6);
        true =>r6 =>i_open;
      end;
    k_o:
      if o_open =>r6 = false then
      begin
        openfile(address(ofiletype)=>r4, address(fsn)=>r0, address(vol)=>r1, nameno=>r2,
          fromadam=>r3, address(namelist)=>r5, dfiletype.f=>r7, r6);
        switch mon(io,reset,ofiletype.f=>r4,r7): error_done to
          err:
            fileerror(address(ofiletype)=>r4,
              address('reset output(:0:)')=>r5,r7,r6);
        end;
        openstream(address(ofiletype)=>r4, output_mode=>r3, r6);
        true =>r6 =>o_open;
      end;
    end;
  until keywordindex=>r0 = k_top;

  if i_open =>r6 = false then
  begin
    movm(size(filetype),
      (address(cinfiletype)=>r0)@filetype,
      (address(ifiletype)=>r1)@filetype);
    openstream(address(ifiletype) =>r4, input_mode =>r3, r6);
  end;
  if o_open =>r6 = false then
    movm(size(filetype),
      (address(coutfiletype)=>r0)@filetype,
      (address(ofiletype)=>r1)@filetype);

  exit(link);
end "readparams";

endmodule

"page«ff»