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

⟦86d4c5284⟧ TextFile

    Length: 13460 (0x3494)
    Types: TextFile
    Names: »NEDP.S«

Derivation

└─⟦ffe699cee⟧ Bits:30005101 8" CR80 Floppy CR80FD_0060 ( VOL: SCC.V NSC Directories: EVR.D OCP.D SCCINIT.D )
    └─⟦9c1658a4c⟧ 
        └─ ⟦this⟧ »EVR.D!NEDP.S« 

TextFile

MAINMODULE NEDP;

LABEL TERM;

CONST
ESCC_STA_E    = #0010;
ESCC_STA_S    = #0011;
ESCC_SCCM     = #0012;
ESCC_NDIS     = #0013;

ENODE_STA_E   = #0020;
ENODE_STA_S   = #0021;
ENODE_SCCM    = #0022;
ENODE_NDIS    = #0023;

ETR_STA_E     = #0030;
ETR_STA_S     = #0031;
ETR_NDIS      = #0032;

ENNH_STA_E    = #0040;
ENNH_STA_S    = #0041;
ENNH_NDIS     = #0042;

ENTL_STA_E    = #0050;
ENTL_STA_S    = #0051;
ENTL_NDIS     = #0052;

%NOLIST
%SOURCE @**GENS.D*SWELLPREFIX.D*GENERALPARAMS.S
%SOURCE @**GENS.D*SWELLPREFIX.D*MONITORNAMES.S
%SOURCE @**GENS.D*SWELLPREFIX.D*IOSPARAMS.S
%SOURCE @**SCCNAMES.D*SCCNAME.N
%SOURCE @**SCCNAMES.D*SCCDATA.N
%SOURCE @**SCCNAMES.D*SCCHEAD.N
%SOURCE @**SCCNAMES.D*SCCREC.N
%SOURCE @**SCCNAMES.D*SCC_MON.N
%SOURCE @**NSCNAMES.D*NSC.N
%LIST
%SOURCE FDT.N
%SOURCE DIS_DATA.N
%SOURCE DISPLAY.N

VAR
ND_STATUS     : STAW;
MEDE_STA      : M_ST;
NODE_STA      : N_ST;
TR_STA        : ARRAY[0..39] OF INTEGER;
SCC_STA       : FST_HD;
MSG           : ARRAY[0..4] OF INTEGER;

CONST
FST_OP        = (IF_REL + SREAD + SWAIT + FST);

"*****************************************************************

PROCEDURE DISPLAY_SCC (R3; "SCC ID - IN BINARY
                       R6): ERROR_DONE;
VAR
LINK          : INTEGER;

BEGIN
R6 => LINK;
ADDRESS(ND_STATUS) => R4;
HEADFST => R0 => R4@STAW.U.REC_D;
R3 => R4@STAW.U.ENT_D;
ADDRESS(SCC_STA) => R6 => R4@STAW.U.BUFA_D;
SIZE(SCC_STA) => R0 => R4@STAW.U.BUFZ_D;
SWITCH MON(STA,FST_OP, R4, R5, R7): ERR_SEM_OK  TO
  ERRS: BEGIN
        ESCC_STA_E => R0;
        EXIT(LINK=>R6, ERR);
        END;
  SEM : BEGIN
        ESCC_STA_S => R0;
        EXIT(LINK=>R6, ERR);
        END;
  END; "SWITCH
IF R3 = 0 THEN
  BEGIN
  R6@FST_HD.SCC_STC.SCC_STATE => R4;
  ADDRESS(FIKS_D.COL_SCC) => R5;
  END
  ELSE BEGIN
  R6@FST_HD.SCC_STR.SCC_STATE => R4;
  ADDRESS(FIKS_D.REM_SCC) => R5;
  END;
ADDRESS(FIKS_D) => R7;
R7@FIKS_DISPLAY.SCC_TABLE.D_BODY[R4] => R0 => R5@SCC_DISPLAY.BODY_USE;
R0 => N_DIS[2];
R7@FIKS_DISPLAY.SCC_TABLE.D_ID[R4] => R0 => R5@SCC_DISPLAY.ID_USE;
R0 => N_DIS[34];
SWITCH MON(SCCM, GET_NM_IDA, R0, R3, R7) TO
  ERRS : BEGIN
        ESCC_SCCM => R0;
        EXIT(LINK=>R6, ERR);
        END;
  END; "SWITCH
R0 => N_DIS[35];
R5@SCC_DISPLAY.CENTER.X => R2 - 1 => N_DIS[4];
R5@SCC_DISPLAY.CENTER.Y => R2 - 1 => N_DIS[5];
SWITCH NET_DISPLAY(ADDRESS(N_DIS)=>R1, SIZE(N_DIS)=>R2, TV_FD=>R3, R6) TO
  ERR : BEGIN
        ESCC_NDIS => R0;
        EXIT(LINK=>R6, ERR);
        END;
  END; "SWITCH
EXIT(LINK);
END;

"*****************************************************************

PROCEDURE DISPLAY_NODE (R3; "ENTRY NO.
                        R6): ERROR_DONE;
VAR
LINK          : INTEGER;

BEGIN
R6 => LINK;
ADDRESS(ND_STATUS) => R4;
ENTFST_MEDE => R0 => R4@STAW.U.REC_D;
R3 => R4@STAW.U.ENT_D;
ADDRESS(MEDE_STA) => R6 => R4@STAW.U.BUFA_D;
SIZE(MEDE_STA) => R0 => R4@STAW.U.BUFZ_D;
SWITCH MON(STA,FST_OP, R4, R5, R7):ERR_SEM_OK TO
  ERRS: BEGIN
        ENODE_STA_E => R0;
        EXIT(LINK=>R6, ERR);
        END;
  SEM : BEGIN
        ENODE_STA_S => R0;
        EXIT(LINK=>R6, ERR);
        END;
  END; "SWITCH
R6@M_ST.M_STATE => R4;
ADDRESS(FIKS_D) => R7;
ADDRESS(FIKS_D.NODEA) => R1;
SIZE(NM_DISPLAY) => R5;
R5@LONG * R3;
R5 + 1;
R7@FIKS_DISPLAY.NODE_TABLE.D_BODY[R4] => R0 => R5@NM_DISPLAY.BODY.BODY_USE;
R0 => N_DIS[2];
R7@FIKS_DISPLAY.NODE_TABLE.D_ID[R4] => R1 AND R0 => R5@NM_DISPLAY.BODY.ID_USE;
R1 => N_DIS[34];
R5@NM_DISPLAY.BODY.CENTER.X => R2 -1 => N_DIS[4];
R5@NM_DISPLAY.BODY.CENTER.Y => R2 -1 => N_DIS[5];
SWITCH MON(SCCM, GET_NM_IDA, R0, R3, R7) TO
  ERRS : BEGIN
        ENODE_SCCM => R0;
        EXIT(LINK=>R6, ERR);
        END;
END; "SWITCH
R0 => N_DIS[35];
SWITCH NET_DISPLAY(ADDRESS(N_DIS)=>R1, SIZE(N_DIS)=>R2, TV_FD=>R3, R6) TO
  ERR : BEGIN
        ENODE_NDIS => R0;
        EXIT(LINK=>R6, ERR);
        END;
  END; "SWITCH
EXIT(LINK);
END;

"*****************************************************************

PROCEDURE DISPLAY_TRUNK( R2; "TRUNK NO. OR ALL TRUNK
                         R3; "ENTRY NO.
                         R6): ERROR_DONE;
VAR
LINK          : INTEGER;

CONST
TR_SIZE       = 5;


BEGIN
R6 => LINK;
ADDRESS(ND_STATUS) => R4;
ENTFST_TRUNK => R0 => 4@STAW.U.REC_D;
R3 => R4@STAW.U.ENT_D;
ADDRESS(TR_STA) => R0 => R4@STAW.U.BUFA_D;
SIZE(TR_STA) => R0 => R4@STAW.U.BUFZ_D;
SWITCH MON(STA, FST_OP,R4,R5,R7):ERR_SEM_OK TO
  ERRS: BEGIN
        ETR_STA_E => R0;
        EXIT(LINK=>R6, ERR);
        END;
  SEM : BEGIN
        ETR_STA_S => R0;
        EXIT(LINK=>R6, ERR);
        END;
  END; "SWITCH
0 => R1;
ADDRESS(FIKS_D) => R7;
ADDRESS(FIKS_D.NODEA) => R1;
SIZE(NM_DISPLAY) => R5;
R5@LONG * R3;
R5 + R1;
REPEAT
TR_SIZE => R6;
IF R2 >= 0 THEN
  R6@LONG * R2
  ELSE BEGIN
    R6@LONG * R1;
    R1 + 1;
    END;
TR_STA[R6] => R4;
IF R2 >= 0 THEN
  R2 => R6
  ELSE R1 => R6;
R7@FIKS_DISPLAY.NODE_TABLE.D_TRUNK[R4] => R0 => R5@NM_DISPLAY.TRUNK_USE[R6];
R0 => TR_DIS[1];
R5@NM_DISPLAY.TR_CONNECT[R6].X => R0 => TR_DIS[2];
R5@NM_DISPLAY.TR_CONNECT[R6].Y => R0 => TR_DIS[3];
R5@NM_DISPLAY.TR_BEND[R6].X => R0 => TR_DIS[5];
R5@NM_DISPLAY.TR_BEND[R6].Y => R0 => TR_DIS[6];
R5@NM_DISPLAY.NNH_BEND[R6].X => R0 => TR_DIS[7];
R5@NM_DISPLAY.NNH_BEND[R6].Y => R0 => TR_DIS[8];
SWITCH NET_DISPLAY(ADDRESS(TR_DIS)=>R1, SIZE(TR_DIS)=>R2, TV_FD=>R3, R6) TO
  ERR : BEGIN
        ETR_NDIS => R0;
        EXIT(LINK=>R6, ERR);
        END;
  END; "SWITCH
UNTIL R2 + 1 >= 0;
EXIT(LINK);
END;

"*****************************************************************

PROCEDURE DISPLAY_NNH  ( R2; "TRUNK NO. OR ALL TRUNK
                         R3; "ENTRY NO.
                         R6): ERROR_DONE;
VAR
LINK          : INTEGER;

CONST
TR_SIZE       = 5;


BEGIN
R6 => LINK;
ADDRESS(ND_STATUS) => R4;
ENTFST_TRUNK => R0 => 4@STAW.U.REC_D;
R3 => R4@STAW.U.ENT_D;
ADDRESS(TR_STA) => R0 => R4@STAW.U.BUFA_D;
SIZE(TR_STA) => R0 => R4@STAW.U.BUFZ_D;
SWITCH MON(STA,FST_OP,R4,R5,R7):ERR_SEM_OK TO
  ERRS: BEGIN
        ENNH_STA_E => R0;
        EXIT(LINK=>R6, ERR);
        END;
  SEM : BEGIN
        ENNH_STA_S => R0;
        EXIT(LINK=>R6, ERR);
        END;
  END; "SWITCH

0 => R1;
ADDRESS(FIKS_D) => R7;
ADDRESS(FIKS_D.NODEA) => R1;
SIZE(NM_DISPLAY) => R5;
R5@LONG * R3;
R5 + R1;
REPEAT
TR_SIZE => R6;
IF R2 >= 0 THEN
  R6@LONG * R2
  ELSE BEGIN
    R6@LONG * R1;
    R1 + 1;
    END;
TR_STA[R6 + 2] => R4;
IF R2 >= 0 THEN
  R2 => R6
  ELSE R1 => R6;
R7@FIKS_DISPLAY.NODE_TABLE.D_NEIGHBOR[R4] => R0 => R5@NM_DISPLAY.NNH_USE[R6];
R0 => TR_DIS[1];
R5@NM_DISPLAY.NNH_CONNECT[R6].X => R0 => TR_DIS[2];
R5@NM_DISPLAY.NNH_CONNECT[R6].Y => R0 => TR_DIS[3];
R5@NM_DISPLAY.NNH_BEND[R6].X => R0 => TR_DIS[5];
R5@NM_DISPLAY.NNH_BEND[R6].Y => R0 => TR_DIS[6];
SWITCH NET_DISPLAY(ADDRESS(NNH_DIS)=>R1, SIZE(NNH_DIS)=>R2, TV_FD=>R3, R6) TO
  ERR : BEGIN
        ENNH_NDIS => R0;
        EXIT(LINK=>R6, ERR);
        END;
  END; "SWITCH
UNTIL R2 + 1 >= 0;
EXIT(LINK);
END;

"*****************************************************************

PROCEDURE DISPLAY_NTL (R3; "ENTRY NO.
                       R6): ERROR_DONE;
VAR
LINK          : INTEGER;

BEGIN
R6 => LINK;
ADDRESS(ND_STATUS) => R4;
HEADFST => R0 => R4@STAW.U.REC_D;
R3 => R4@STAW.U.ENT_D;
ADDRESS(SCC_STA) => R6 => R4@STAW.U.BUFA_D;
SIZE(SCC_STA) => R0 => R4@STAW.U.BUFZ_D;
SWITCH MON(STA, FST_OP, R4, R5, R7):ERR_SEM_OK TO
  ERRS: BEGIN
        ENTL_STA_E => R0;
        EXIT(LINK=>R6, ERR);
        END;
  SEM : BEGIN
        ENTL_STA_S => R0;
        EXIT(LINK=>R6, ERR);
        END;
  END; "SWITCH
IF R3 = 0 THEN
  BEGIN
  R6@FST_HD.SCC_STC.NL_ST => R4 ;
  ADDRESS(FIKS_D.COL_SCC) => R5;
  END
  ELSE BEGIN
  R6@FST_HD.SCC_STR.NL_ST => R4;
  ADDRESS(FIKS_D.REM_SCC) => R5;
  END;
R7@FIKS_DISPLAY.SCC_TABLE.D_NT[R4] => R0 => R5@SCC_DISPLAY.NT_DCMD_USE;
R0 => NT_DIS[1];
R5@SCC_DISPLAY.NT_CONNECT.X => R0 => NT_DIS[2];
R5@SCC_DISPLAY.NT_CONNECT.Y => R0 => NT_DIS[3];
R5@SCC_DISPLAY.NT_BEND1.X => R0 => NT_DIS[5];
R5@SCC_DISPLAY.NT_BEND1.Y => R0 => NT_DIS[6];
R5@SCC_DISPLAY.NT_BEND2.X => R0 => NT_DIS[7];
R5@SCC_DISPLAY.NT_BEND2.Y => R0 => NT_DIS[8];
R5@SCC_DISPLAY.NT_TERM.X => R0 => NT_DIS[9];
R5@SCC_DISPLAY.NT_TERM.Y => R0 => NT_DIS[10];
SWITCH NET_DISPLAY(ADDRESS(NT_DIS)=>R1, SIZE(NT_DIS)=>R2, TV_FD=>R3, R6) TO
  ERR : BEGIN
        ENTL_NDIS => R0;
        EXIT(LINK=>R6, ERR);
        END;
  END; "SWITCH
EXIT(LINK);
END;

"*****************************************************************

PROCEDURE DIS_SCC (R6): ERROR_DONE;
VAR
LINK          : INTEGER;

BEGIN
R6 => LINK;
SWITCH DISPLAY_SCC(0=>R3, R6) TO
  ERR : EXIT(LINK=>R6, ERR);
  END;
SWITCH DISPLAY_SCC(1=>R3, R6) TO
  ERR : EXIT(LINK=>R6, ERR);
  END;
EXIT(LINK);
END;

"*****************************************************************

PROCEDURE DIS_NODE (R6): ERROR_DONE;
VAR
LINK          : INTEGER;

BEGIN
R6 => LINK;
SWITCH DISPLAY_NODE(0=>R3, R6) TO
  ERR : EXIT(LINK=>R6, ERR);
  END;
SWITCH DISPLAY_NODE(1=>R3, R6) TO
  ERR : EXIT(LINK=>R6, ERR);
  END;
SWITCH DISPLAY_NODE(2=>R3, R6) TO
  ERR : EXIT(LINK=>R6, ERR);
  END;
SWITCH DISPLAY_NODE(3=>R3, R6) TO
  ERR : EXIT(LINK=>R6, ERR);
  END;
SWITCH DISPLAY_NODE(4=>R3, R6) TO
  ERR : EXIT(LINK=>R6, ERR);
  END;
SWITCH DISPLAY_NODE(5=>R3, R6) TO
  ERR : EXIT(LINK=>R6, ERR);
  END;
SWITCH DISPLAY_NODE(6=>R3, R6) TO
  ERR : EXIT(LINK=>R6, ERR);
  END;
SWITCH DISPLAY_NODE(7=>R3, R6) TO
  ERR : EXIT(LINK=>R6, ERR);
  END;
EXIT(LINK);
END;

"*****************************************************************

PROCEDURE DIS_NTL(R6): ERROR_DONE;
VAR
LINK          : INTEGER;

BEGIN
R6 => LINK;
SWITCH DISPLAY_NTL(0=>R3, R6) TO
  ERR : EXIT(LINK=>R6, ERR);
  END;
SWITCH DISPLAY_NTL(1=>R3, R6) TO
  ERR : EXIT(LINK=>R6, ERR);
  END;
EXIT(LINK);
END;

"*****************************************************************

PROCEDURE DIS_TR (R6):ERROR_DONE;
VAR
LINK          : INTEGER;

BEGIN
R6 => LINK;
SWITCH DISPLAY_TRUNK(-8=>R2, 0=>R3, R6) TO
  ERR : EXIT(LINK=>R6, ERR);
  END;
SWITCH DISPLAY_TRUNK(-8=>R2, 1=>R3, R6) TO
  ERR : EXIT(LINK=>R6, ERR);
  END;
SWITCH DISPLAY_TRUNK(-8=>R2, 2=>R3, R6) TO
  ERR : EXIT(LINK=>R6, ERR);
  END;
SWITCH DISPLAY_TRUNK(-8=>R2, 3=>R3, R6) TO
  ERR : EXIT(LINK=>R6, ERR);
  END;
SWITCH DISPLAY_TRUNK(-8=>R2, 4=>R3, R6) TO
  ERR : EXIT(LINK=>R6, ERR);
  END;
SWITCH DISPLAY_TRUNK(-8=>R2, 5=>R3, R6) TO
  ERR : EXIT(LINK=>R6, ERR);
  END;
SWITCH DISPLAY_TRUNK(-8=>R2, 6=>R3, R6) TO
  ERR : EXIT(LINK=>R6, ERR);
  END;
SWITCH DISPLAY_TRUNK(-8=>R2, 7=>R3, R6) TO
  ERR : EXIT(LINK=>R6, ERR);
  END;
EXIT(LINK);
END;

"*****************************************************************

PROCEDURE DIS_NNH (R6): ERROR_DONE;
VAR
LINK          : INTEGER;

BEGIN
R6 => LINK;
SWITCH DISPLAY_NNH(-8=>R2, 0=>R3, R6) TO
  ERR : EXIT(LINK=>R6, ERR);
  END;
SWITCH DISPLAY_NNH(-8=>R2, 1=>R3, R6) TO
  ERR : EXIT(LINK=>R6, ERR);
  END;
SWITCH DISPLAY_NNH(-8=>R2, 2=>R3, R6) TO
  ERR : EXIT(LINK=>R6, ERR);
  END;
SWITCH DISPLAY_NNH(-8=>R2, 3=>R3, R6) TO
  ERR : EXIT(LINK=>R6, ERR);
  END;
SWITCH DISPLAY_NNH(-8=>R2, 4=>R3, R6) TO
  ERR : EXIT(LINK=>R6, ERR);
  END;
SWITCH DISPLAY_NNH(-8=>R2, 5=>R3, R6) TO
  ERR : EXIT(LINK=>R6, ERR);
  END;
SWITCH DISPLAY_NNH(-8=>R2, 6=>R3, R6) TO
  ERR : EXIT(LINK=>R6, ERR);
  END;
SWITCH DISPLAY_NNH(-8=>R2, 7=>R3, R6) TO
  ERR : EXIT(LINK=>R6, ERR);
  END;
EXIT(LINK);
END;

"*****************************************************************

PROCEDURE INIT_DISPLAY (R6): ERROR_DONE;
VAR
LINK          : INTEGER;

BEGIN
R6 => LINK;
SWITCH DIS_SCC(R6) TO
  ERR : EXIT(LINK=>R6, ERR);
  END;
SWITCH DIS_NODE(R6) TO
  ERR : EXIT(LINK=>R6, ERR);
  END;
SWITCH DIS_NTL(R6) TO
  ERR : EXIT(LINK=>R6, ERR);
  END;
SWITCH DIS_TR(R6) TO
  ERR : EXIT(LINK=>R6, ERR);
  END;
EXIT(LINK);
END;

"*****************************************************************

BEGIN
MON(WAITEVENT, ADDRESS(MSG)=>R1, BMMESSAGE=>R2, R7);
MSG[2] => R0;
IF R0[13] THEN
  BEGIN
  IF R0[14] THEN
    BEGIN
    SWITCH DIS_TR(R6) TO
      ERR : GOTO TERM;
      END; "SWITCH
    END
    ELSE BEGIN
      SWITCH DISPLAY_TRUNK(MSG[1]=>R2, MSG[0]=>R3, R6) TO
        ERR : GOTO TERM;
        END; "SWITCH
      END;
  END;

IF R0[12] THEN
  BEGIN
  IF R0[14] THEN
    BEGIN
    SWITCH DIS_NODE(R6) TO
      ERR : GOTO TERM;
      END;
    END
    ELSE BEGIN
      SWITCH DISPLAY_NODE(MSG[0]=>R3, R6) TO
        ERR : GOTO TERM;
        END;
      END;
  END;

IF R0[11] THEN 
  BEGIN
  IF R0[14] THEN
    BEGIN
      SWITCH DIS_SCC(R6) TO
        ERR : GOTO TERM;
        END;
    END
    ELSE BEGIN
      IF R0[8] THEN
        BEGIN
        SWITCH DISPLAY_SCC(1=>R3, R6) TO
          ERR : GOTO TERM;
          END;
        END
        ELSE BEGIN
          SWITCH DISPLAY_SCC(0=>R3, R6) TO 
            ERR : GOTO TERM;
            END;
        END;
      END;
  END;

IF R0[10] THEN 
  BEGIN
    IF R0[14] THEN 
      BEGIN
        SWITCH DIS_SCC(R6) TO
          ERR : GOTO TERM;
          END;
      END
      ELSE IF R0[8] THEN
        BEGIN
          SWITCH DISPLAY_NTL(1=>R3, R6) TO
            ERR : GOTO TERM;
            END;
        END
        ELSE BEGIN
          SWITCH DISPLAY_NTL(0=>R3, R6) TO
            ERR : GOTO TERM;
            END;
          END;
  END;

IF R0[9] THEN
  BEGIN
    IF R0[14] THEN
      BEGIN
        SWITCH DIS_NNH(R6) TO
          ERR : GOTO TERM;
          END;
      END
      ELSE BEGIN
        SWITCH DISPLAY_NNH(MSG[1]=>R2, MSG[0]=>R3, R6) TO
          ERR : GOTO TERM;
          END;
      END;
  END;
0 => R0;

TERM :
MON(TERMINATE, R0, R1, R7);
END
ENDMODULE

"***************************************************************** P