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

⟦8b170955f⟧ TextFile

    Length: 3900 (0xf3c)
    Types: TextFile
    Names: »READUSERPARAMS.S«

Derivation

└─⟦881c1028e⟧ Bits:30005102 8" CR80 Floppy CR80FD_0061 ( VOL: SCC.V NSC Directory: Queue_test.D )
    └─⟦4f56469eb⟧ 
        └─ ⟦this⟧ »QUEUE_TEST.D!READUSERPARAMS.S« 

TextFile

EXPORT PROCEDURE READUSERPARAMS(R6); "ALL REGISTERS DESTROYED
"============================"
"     READS MSGFILEID FROM PARAMETERFILE. OPENS THE MESSAGEFILE
"     AND THE MTCB FILE.
"     READS THE TERMINAL NO. AND THE QUEUE NO. CONVERTS TO
"     BINARY AND STORES IN TER_NO,QUE_NO RESPECTIVELY.
"
VAR
  LINK: INTEGER;

CONST
  NAMELISTMAX= 10;
  KWSIZE= 2; "IN WORDS"
  DEFAULT_QUENO = -1;
TYPE
  KEYWORDS= (K_ERROR,
             K_MTCB,
             K_MSG,
             K_TER,
             K_QUE,
             K_SIG,
             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;

  Q_NO  :INTEGER;                 " NO. READ FROM PFILE

INIT
  KEYWORD[K_MTCB  *KWSIZE..(K_MTCB  +1)*KWSIZE-1]= 'MTCB';
  KEYWORD[K_MSG   *KWSIZE..(K_MSG   +1)*KWSIZE-1]= 'MSG';
  KEYWORD[K_TER   *KWSIZE..(K_TER   +1)*KWSIZE-1]= 'TER';
  KEYWORD[K_QUE   *KWSIZE..(K_QUE   +1)*KWSIZE-1]= 'QUE';
  KEYWORD[K_SIG  *KWSIZE..(K_SIG  +1)*KWSIZE-1]= 'SIG';

BEGIN
  R6=> LINK;
  DEFAULT_QUENO => R6;
  R6 => TER_NO;
  R6 => QUE_NO;
  0 => R1;
  ADDRESS(SIGNAL_NAME1) => R0;
  PNAMELENGTH => R5;
  WHILE R5-1 >= 0 DO
    R1 => R0@B[R5];

  ADDRESS(PFILETYPE)=> R4;


  REPEAT
    READKEYWORD(KWSIZE,4,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_MTCB,K_MSG:
      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): INFID_EXIT TO
        INFIOERROR:
          FILEERROR(ADDRESS(PFILETYPE)=>R4, ADDRESS('INFILEID(:0:)')=>R5, R7, R6);
        INFSYNTAX:
          FILEERROR(ADDRESS(PFILETYPE)=>R4, ADDRESS('FILEID SYNTAX(:0:)')=>R5, R7, R6);
        END;
        R2=> NAMENO;
        R3=> FROMADAM;
      END;
    K_TER,K_QUE:
      BEGIN " READ TERMINAL OR QUEUE NO.
        SWITCH MON(STREAM, INELEMENT, 2=>R1, R3, R5, ADDRESS(Q_NO)=>R6, R7): INEL_EXIT TO
        INELERROR:
          FILEERROR(ADDRESS(PFILETYPE)=>R4, ADDRESS('INELEMENT(:0:)')=>R5,R7, R6);
        INELID, INELSPECIAL:
          FILEERROR(ADDRESS(PFILETYPE)=>R4, ADDRESS('SYNTAX(:0:)')=>R5, R7, R6);
        END;
      END;
    K_SIG:
      BEGIN " READ PROCESSNAME OF PROCESS TO SIGNAL
        SWITCH MON(STREAM, INELEMENT, 6=>R1, R3, R5, ADDRESS(SIGNAL_NAME1)=>R6, R7): INEL_EXIT TO
        INELERROR:
          FILEERROR(ADDRESS(PFILETYPE)=>R4, ADDRESS('IN SIG NAME(:0:)')=>R5,R7, R6);
        INELNUMBER, INELSPECIAL:
          FILEERROR(ADDRESS(PFILETYPE)=>R4, ADDRESS('SIG SYNTAX(:0:)')=>R5, R7, R6);
        END;
      END;
    END;

    KEYWORDINDEX=> R6;
    CASE R6:KEYWORDS OF
    K_MTCB:
      BEGIN
        OPENFILE(ADDRESS(MTCBFILETYPE)=>R4, ADDRESS(FSN)=>R0, ADDRESS(VOL)=>R1, NAMENO=>R2,
          FROMADAM=>R3, ADDRESS(NAMELIST)=>R5, DFILETYPE.F=>R7, R6);
      END;
    K_MSG:
      BEGIN
        OPENFILE(ADDRESS(MSGFILETYPE)=>R4, ADDRESS(FSN)=>R0, ADDRESS(VOL)=>R1, NAMENO=>R2,
          FROMADAM=>R3, ADDRESS(NAMELIST)=>R5, DFILETYPE.F=>R7, R6);
      END;
    K_TER:
      Q_NO => R6 => TER_NO;

    K_QUE:

      Q_NO => R6 => QUE_NO;


    END;
  UNTIL KEYWORDINDEX=>R0 = K_TOP;

  TER_NO => R6;
  IF R6 = DEFAULT_QUENO
    THEN
      FILEERROR(ADDRESS(PFILETYPE)=>R4,ADDRESS('ILL. TERM. NO. (:0:)')=>R5,R7,R6);
  EXIT(LINK);
END "READUSERPARAMS";

 ;