DataMuseum.dkPresents historical artifacts from the history of: CR80 Hard and Floppy Disks |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about CR80 Hard and Floppy Disks Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 9664 (0x25c0) Types: TextFile Names: »FDT.N«
└─⟦ffe699cee⟧ Bits:30005101 8" CR80 Floppy CR80FD_0060 ( VOL: SCC.V NSC Directories: EVR.D OCP.D SCCINIT.D ) └─⟦9c1658a4c⟧ └─ ⟦this⟧ »EVR.D!FDT.N«
CONST UPDATE_REQ_ON = #8000; BLINK_REQ_ON = #4000; BLINK_ON = #0040; F_BLACK = #0000; F_RED = #0008; F_GREEN = #0010; F_YELLOW = #0018; F_BLUE = #0020; F_MAGENTA = #0028; F_CYAN = #0030; F_WHITE = #0038; B_BLACK = #0000; B_RED = #0001; B_GREEN = #0002; B_YELLOW = #0003; B_BLUE = #0004; B_MAGENTA = #0005; B_CYAN = #0006; B_WHITE = #0007; P_SCC_X = 4; P_SCC_Y = 16; Q_SCC_X = 66; Q_SCC_Y = 11; TYPE COORDINATE = RECORD X : INTEGER; Y : INTEGER; END; DISPLAY_CMD_TABLE = ARRAY[0..9] OF INTEGER; SCC_DT = RECORD D_BODY : DISPLAY_CMD_TABLE; D_ID : DISPLAY_CMD_TABLE; D_NT : DISPLAY_CMD_TABLE; END; NODE_DT = RECORD D_BODY : DISPLAY_CMD_TABLE; D_ID : DISPLAY_CMD_TABLE; D_TRUNK : DISPLAY_CMD_TABLE; D_NEIGHBOR: DISPLAY_CMD_TABLE; END; SCC_DISPLAY = RECORD CENTER : COORDINATE; BODY_USE : INTEGER; ID_USE : INTEGER; NT_CONNECT : COORDINATE; NT_BEND1 : COORDINATE; NT_BEND2 : COORDINATE; NT_TERM : COORDINATE; NT_DCMD_USE : INTEGER; END; BODY_TYPE = RECORD CENTER : COORDINATE; BODY_USE : INTEGER; ID_USE : INTEGER; END; NM_DISPLAY = RECORD BODY : BODY_TYPE; TR_CONNECT : ARRAY[0..7] OF COORDINATE; TR_BEND : ARRAY[0..7] OF COORDINATE; NNH_CONNECT : ARRAY[0..7] OF COORDINATE; NNH_BEND : ARRAY[0..7] OF COORDINATE; TRUNK_USE : ARRAY[0..7] OF INTEGER; NNH_USE : ARRAY[0..7] OF INTEGER; END; FIKS_DISPLAY = RECORD SCC_TABLE : SCC_DT; COL_SCC : SCC_DISPLAY; REM_SCC : SCC_DISPLAY; NODE_TABLE : NODE_DT; NODEA : NM_DISPLAY; NODEB : NM_DISPLAY; NODEE : NM_DISPLAY; NODEF : NM_DISPLAY; NODEH : NM_DISPLAY; NODEK : NM_DISPLAY; NODEL : NM_DISPLAY; NODEN : NM_DISPLAY; END; VAR FIKS_D : FIKS_DISPLAY; P_OFFSET : ARRAY [0..3] OF COORDINATE; Q_OFFSET : ARRAY [0..3] OF COORDINATE; NODE_COFFS : ARRAY [0..7] OF COORDINATE; NODE_BOFFS : ARRAY [0..7] OF COORDINATE; FNC_T : STAW; CONF_T : FIKS_CONF; CONST FNC_OP = (SREAD + FNC); INIT FIKS_D.SCC_TABLE.D_BODY[0] = B_MAGENTA; FIKS_D.SCC_TABLE.D_BODY[1] = B_YELLOW; FIKS_D.SCC_TABLE.D_BODY[2] = B_YELLOW; FIKS_D.SCC_TABLE.D_BODY[3] = B_YELLOW; FIKS_D.SCC_TABLE.D_BODY[4] = B_GREEN; FIKS_D.SCC_TABLE.D_BODY[5] = B_GREEN; FIKS_D.SCC_TABLE.D_BODY[6] = B_RED; FIKS_D.SCC_TABLE.D_ID[0] = B_MAGENTA; FIKS_D.SCC_TABLE.D_ID[1] = B_YELLOW; FIKS_D.SCC_TABLE.D_ID[2] = B_GREEN; FIKS_D.SCC_TABLE.D_ID[3] = B_MAGENTA; FIKS_D.SCC_TABLE.D_ID[4] = B_GREEN; FIKS_D.SCC_TABLE.D_ID[5] = B_YELLOW; FIKS_D.SCC_TABLE.D_ID[6] = B_RED; FIKS_D.SCC_TABLE.D_NT[0] = B_GREEN; FIKS_D.SCC_TABLE.D_NT[1] = B_GREEN; FIKS_D.SCC_TABLE.D_NT[2] = B_YELLOW; FIKS_D.SCC_TABLE.D_NT[3] = B_YELLOW; FIKS_D.SCC_TABLE.D_NT[4] = B_RED; FIKS_D.NODE_TABLE.D_BODY[0] = B_GREEN; FIKS_D.NODE_TABLE.D_BODY[1] = B_MAGENTA; FIKS_D.NODE_TABLE.D_BODY[2] = B_RED; FIKS_D.NODE_TABLE.D_BODY[3] = B_BLACK; FIKS_D.NODE_TABLE.D_ID[0] = B_BLACK; FIKS_D.NODE_TABLE.D_ID[1] = B_BLACK; FIKS_D.NODE_TABLE.D_ID[2] = BLINK_ON; FIKS_D.NODE_TABLE.D_ID[3] = B_BLACK; FIKS_D.NODE_TABLE.D_ID[4] = B_BLACK; FIKS_D.NODE_TABLE.D_ID[5] = BLINK_ON; FIKS_D.NODE_TABLE.D_TRUNK[0] = B_BLACK; FIKS_D.NODE_TABLE.D_TRUNK[1] = B_RED; FIKS_D.NODE_TABLE.D_TRUNK[2] = B_RED; FIKS_D.NODE_TABLE.D_TRUNK[3] = (BLINK_ON + F_YELLOW + B_RED); FIKS_D.NODE_TABLE.D_TRUNK[4] = (BLINK_ON + F_GREEN + B_RED); FIKS_D.NODE_TABLE.D_TRUNK[5] = (F_GREEN + B_YELLOW); FIKS_D.NODE_TABLE.D_TRUNK[6] = (BLINK_ON + F_RED + B_YELLOW); FIKS_D.NODE_TABLE.D_TRUNK[7] = (F_RED + B_GREEN); FIKS_D.NODE_TABLE.D_TRUNK[8] = (BLINK_ON + F_RED + B_GREEN); FIKS_D.NODE_TABLE.D_NEIGHBOR[0] = B_BLACK; FIKS_D.NODE_TABLE.D_NEIGHBOR[1] = (BLINK_ON + F_RED ); FIKS_D.NODEA.BODY.CENTER.X = 74; FIKS_D.NODEA.BODY.CENTER.Y = 2; FIKS_D.NODEB.BODY.CENTER.X = 10; FIKS_D.NODEB.BODY.CENTER.Y = 2; FIKS_D.NODEE.BODY.CENTER.X = 10; FIKS_D.NODEE.BODY.CENTER.Y = 20; FIKS_D.NODEF.BODY.CENTER.X = 30; FIKS_D.NODEF.BODY.CENTER.Y = 18; FIKS_D.NODEH.BODY.CENTER.X = 20; FIKS_D.NODEH.BODY.CENTER.Y = 38; FIKS_D.NODEK.BODY.CENTER.X = 58; FIKS_D.NODEK.BODY.CENTER.Y = 14; FIKS_D.NODEL.BODY.CENTER.X = 74; FIKS_D.NODEL.BODY.CENTER.Y = 20; FIKS_D.NODEN.BODY.CENTER.X = 58; FIKS_D.NODEN.BODY.CENTER.Y = 38; P_OFFSET[0].X = -1; P_OFFSET[0].Y = 8; P_OFFSET[1].X = -1; P_OFFSET[1].Y = 15; P_OFFSET[2].X = 2; P_OFFSET[2].Y = 12; P_OFFSET[3].X = 2; P_OFFSET[3].Y = 19; Q_OFFSET[0].X = 4; Q_OFFSET[0].Y = -1; Q_OFFSET[1].X = 11; Q_OFFSET[1].Y = -1; Q_OFFSET[2].X = 8; Q_OFFSET[2].Y = -4; Q_OFFSET[3].X = 15; Q_OFFSET[3].Y = -4; NODE_COFFS[0].X = 2; NODE_COFFS[0].Y = 8; NODE_COFFS[1].X = 4; NODE_COFFS[1].Y = 4; NODE_COFFS[2].X = 4; NODE_COFFS[2].Y = -1; NODE_COFFS[3].X = 2; NODE_COFFS[3].Y = -5; NODE_COFFS[4].X = -1; NODE_COFFS[4].Y = -5; NODE_COFFS[5].X = -3; NODE_COFFS[5].Y = -1; NODE_COFFS[6].X = -3; NODE_COFFS[6].Y = 4; NODE_COFFS[7].X = -1; NODE_COFFS[7].Y = 8; NODE_BOFFS[0].X = 2; NODE_BOFFS[0].Y = 15; NODE_BOFFS[1].X = 11; NODE_BOFFS[1].Y = 4; NODE_BOFFS[2].X = 11; NODE_BOFFS[2].Y = -1; NODE_BOFFS[3].X = 2; NODE_BOFFS[3].Y = -12; NODE_BOFFS[4].X = -1; NODE_BOFFS[4].Y = -12; NODE_BOFFS[5].X = -11; NODE_BOFFS[5].Y = -1; NODE_BOFFS[6].X = -11; NODE_BOFFS[6].Y = 4; NODE_BOFFS[7].X = -1; NODE_BOFFS[7].Y = 15; PROCEDURE INIT_SCC_COOR (R4; "ADDRESS OF FIKS_D.SCC R6); VAR LINK : INTEGER; BEGIN R6 => LINK; R4@SCC_DISPLAY.CENTER.X => R0; R4@SCC_DISPLAY.CENTER.Y => R1; R0 SHIFTLL 2; 40 => R2 - R1; R2 SHIFTLL 4; ADDRESS(FIKS_D) => R5; IF R0 = 0 THEN ADDRESS(P_OFFSET) => R5 ELSE ADDRESS(Q_OFFSET) => R5; R5@INTEGER => R3 + R0 => R4@SCC_DISPLAY.NT_CONNECT.X; (R5+1)@INTEGER => R3 + R2 => R4@SCC_DISPLAY.NT_CONNECT.Y; (R5+1)@INTEGER => R3 + R0 => R4@SCC_DISPLAY.NT_BEND1.X; (R5+1)@INTEGER => R3 + R2 => R4@SCC_DISPLAY.NT_BEND1.Y; (R5+1)@INTEGER => R3 + R0 => R4@SCC_DISPLAY.NT_BEND2.X; (R5+1)@INTEGER => R3 + R2 => R4@SCC_DISPLAY.NT_BEND2.Y; (R5+1)@INTEGER => R3 + R0 => R4@SCC_DISPLAY.NT_TERM.X; (R5+1)@INTEGER => R3 + R2 => R4@SCC_DISPLAY.NT_TERM.Y; EXIT (LINK); END; PROCEDURE INIT_COOR (R4; "ADDRESS OF FIKS_D.NODE R6);"LINK VAR LINK : INTEGER; BEGIN R6 => LINK; R4@NM_DISPLAY.BODY.CENTER.X => R0; R4@NM_DISPLAY.BODY.CENTER.Y => R1; R0 SHIFTLL 2 ; 40 => R2 - R1; R2 SHIFTLL 4; 0 => R5; REPEAT NODE_COFFS[R5].X => R3 + R0 => R4@NM_DISPLAY.TR_CONNECT[R5].X; NODE_COFFS[R5].Y => R3 + R2 => R4@NM_DISPLAY.TR_CONNECT[R5].Y; R5 + 1; UNTIL R5 = 8; 0 => R5; REPEAT NODE_BOFFS[R5].X => R3 + R0 => R4@NM_DISPLAY.TR_BEND[R5].X; NODE_BOFFS[R5].Y => R3 + R2 => R4@NM_DISPLAY.TR_BEND[R5].Y; R5 + 1; UNTIL R5 = 8; EXIT(LINK); END; PROCEDURE FDT (R6); VAR LINK : INTEGER; BEGIN R6 => LINK; ADDRESS(FIKS_D) => R5; "MON CALL FOR SCC ID "ID => R0; IF R0 = 0 THEN BEGIN P_SCC_X => R0 => R5@FIKS_DISPLAY.COL_SCC.CENTER.X; P_SCC_Y => R0 => R5@FIKS_DISPLAY.COL_SCC.CENTER.Y; Q_SCC_X => R0 => R5@FIKS_DISPLAY.REM_SCC.CENTER.X; Q_SCC_Y => R0 => R5@FIKS_DISPLAY.REM_SCC.CENTER.Y END ELSE BEGIN Q_SCC_X => R0 => R5@FIKS_DISPLAY.COL_SCC.CENTER.X; Q_SCC_Y => R0 => R5@FIKS_DISPLAY.COL_SCC.CENTER.Y; P_SCC_X => R0 => R5@FIKS_DISPLAY.REM_SCC.CENTER.X; P_SCC_X => R0 => R5@FIKS_DISPLAY.REM_SCC.CENTER.Y END; INIT_SCC_COOR (ADDRESS(FIKS_D.COL_SCC) => R4, R6); INIT_SCC_COOR (ADDRESS(FIKS_D.REM_SCC) => R4, R6); INIT_COOR (ADDRESS(FIKS_D.NODEA)=> R4, R6); INIT_COOR (ADDRESS(FIKS_D.NODEB)=> R4, R6); INIT_COOR (ADDRESS(FIKS_D.NODEE)=> R4, R6); INIT_COOR (ADDRESS(FIKS_D.NODEF)=> R4, R6); INIT_COOR (ADDRESS(FIKS_D.NODEH)=> R4, R6); INIT_COOR (ADDRESS(FIKS_D.NODEK)=> R4, R6); INIT_COOR (ADDRESS(FIKS_D.NODEL)=> R4, R6); INIT_COOR (ADDRESS(FIKS_D.NODEN)=> R4, R6); ADDRESS(FNC_T) => R4; ALLFNC => R1 => R4@STAW.U.REC_D; ADDRESS(CONF_T) => R1 => R4@STAW.U.BUFA_D; SIZE(CONF_T) => R1 => R4@STAW.U.BUFZ_D; MON(STA, FNC_OP, R4, R5, R7); 0 => R2; "NODE COUNT ADDRESS(FIKS_D.NODEA) => R7 => R1; SIZE(NM_DISPLAY) => R3; REPEAT 0 => R4; REPEAT R2 => R5; R5 SHIFTLL 3 + R4; CONF_T[R5] => R0; IF R0[15] THEN BEGIN R0 => R6 SHIFTRL 4 EXTRACT 4; R0 EXTRACT 4; R0@LONG * R3; R1 => R5 + R0; R5@NM_DISPLAY.TR_BEND[R6].X => R1 => R7@NM_DISPLAY.NNH_BEND[R4].X; R5@NM_DISPLAY.TR_BEND[R6].Y => R1 => R7@NM_DISPLAY.NNH_BEND[R4].Y; R5@NM_DISPLAY.TR_CONNECT[R6].X => R1 => R7@NM_DISPLAY.NNH_CONNECT[R4].X; R5@NM_DISPLAY.TR_CONNECT[R6].Y => R1 => R7@NM_DISPLAY.NNH_CONNECT[R4].Y; END; UNTIL (R4 + 1) = 8; R7 + R3; UNTIL (R2 +1) = 8; EXIT(LINK); END;