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: 10392 (0x2898) Types: TextFile Names: »SOPP.S«
└─⟦ffe699cee⟧ Bits:30005101 8" CR80 Floppy CR80FD_0060 ( VOL: SCC.V NSC Directories: EVR.D OCP.D SCCINIT.D ) └─⟦9c1658a4c⟧ └─ ⟦this⟧ »OCP.D!SOPP.S«
MAINMODULE SOPP; LABEL TERM; LABEL OUT1; LABEL OUT2; CONST ESO_CMD = #0000; ESO_0_ERR = #0001; ESO_1_RER = #0002; ESO_1_RSE = #0003; ESO_1_WER = #0004; ESO_1_WSE = #0005; ESO_2_ER0 = #0006; ESO_2_ER1 = #0007; ESO_ID = #0008; ESO_2_RER = #0009; ESO_2_RSE = #000A; ESO_SUB3 = #000B; ESO_SUB4 = #000C; ESO_2_WER = #000D; ESO_2_WSE = #000E; ESO_3_RER = #000F; ESO_3_RSE = #0010; ESO_SUB5 = #0011; ESO_SUB6 = #0012; ESO_SUB7 = #0013; ESO_SUB8 = #0014; ESO_SUB9 = #0015; ESO_3_WER = #0016; ESO_3_WSE = #0017; ESO_4_ERR = #0018; ESO_4_RER = #0019; ESO_4_RSE = #001A; ESO_4_WER = #001B; ESO_4_WSE = #001C; ESO_INSMTCB = #001D; ESO_INSQE = #001E; MDST = 0; CCOK = 0; CCEE = 1; %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*QACCESS_TYPES.S %SOURCE @**SCCNAMES.D*SCC_MON.N %SOURCE @**SCCNAMES.D*SCCNAME.N %SOURCE @**SCCNAMES.D*SCCDATA.N %SOURCE @**SCCNAMES.D*SCCHEAD.N %SOURCE @**SCCNAMES.D*SCCREC.N %SOURCE @**NSCNAMES.D*NSC.N %SOURCE @**SCCNAMES.D*SCCMTCB.N IMPORT PROCEDURE INSERT_MTCB (R0;R4;R6); IMPORT PROCEDURE INSERT_QE (R0;R1;R2;R6); %LIST VAR MSG : ARRAY[0..4] OF INTEGER; EPM : ARRAY[0..11] OF INTEGER; STD_OP_CMD : STD_OP_C_PMX; FST_STATUS : STAW; HD_BUF : FST_HD; TR_CBUF : TRUNK_CONN; TR_SBUF : ARRAY[0..39] OF INTEGER; M_BUF : M_ST; DTG_AREA : ARRAY[0..12] OF INTEGER; MTCBX : INTEGER; CMD : INTEGER; MEVENT : INTEGER; M_BLOCK : REAL; TO_NODE : INTEGER; CONST FST_WOP = (IF_RES + SWRITE + SWAIT + FST); FST_ROP = (IF_REL + SREAD + SWAIT + FST); FNC_OP = (SREAD + FNC); BEGIN MON(WAITEVENT, ADDRESS(MSG)=>R1, BMMESSAGE=>R2, R7); R2 => MEVENT; R1@INTEGER => R0 => R2; R0 EXTRACT 8; IF R0 <> MDST THEN BEGIN ESO_CMD => R0; GOTO TERM; END; R2 SHIFTRL 8; ADDRESS(STD_OP_CMD) => R4; TYCE => R1=> R4@STD_OP_C_PMX.HEAD.MTY; CSU => R1 => R4@STD_OP_C_PMX.HEAD.SCA; ADDRESS(FST_STATUS) => R5; CASE R2 OF 0: BEGIN SUDP => R1 => R4@STD_OP_C_PMX.HEAD.MCC; SWITCH MON(SCCM, GET_NM_IDB, R0, MSG[1]=>R3, R7):ERROR_DONE TO ERR : BEGIN ESO_0_ERR => R0; GOTO TERM; END; END; "SWITCH R3 => R4@STD_OP_C_PMX.N_M_ID; MSG[2] => R1 => R4@STD_OP_C_PMX.DUSER; END; 1: BEGIN SUSR => R1 => R4@STD_OP_C_PMX.HEAD.MCC; MSG[1] => R1 => R4@STD_OP_C_PMX.PAR; HEADFST => R1 => R5@STAW.U.REC_D; SIZE(HD_BUF) => R1 => R5@STAW.U.BUFZ_D; ADDRESS(HD_BUF) => R1 => R5@STAW.U.BUFA_D; SWITCH MON(STA, FST_ROP, R4, R5, R7):ERR_SEM_OK TO ERRS : BEGIN ESO_1_RER => R0; GOTO TERM; END; SEM : BEGIN ESO_1_RSE => R0; GOTO TERM; END; END; "SWITCH ADDRESS(HD_BUF.NET_STR) => R6; MSG[1] => R1 => R6@NET_ST.RETR_RATE; SWITCH MON(STA, FST_WOP, R4, R5, R7):ERR_SEM_OK TO ERRS : BEGIN ESO_1_WER => R0; GOTO TERM; END; SEM : BEGIN ESO_1_WSE => R0; GOTO TERM; END; END; "SWITCH END; 2,3,4: BEGIN R2 => CMD; CASE R2 OF 2 : SUST => R1; 3 : SUCT => R1; 4 : SUOT => R1; END; R1 => R4@STD_OP_C_PMX.HEAD.MCC; MSG[1] => R3 SHIFTRL 8; SWITCH MON(SCCM, GET_NM_IDB, R0, R3, R7):ERROR_DONE TO ERR : BEGIN ESO_2_ER0 => R0; GOTO TERM; END; END; "SWITCH R3 => R4@STD_OP_C_PMX.N_M_ID; ENTFNC => R1 => R5@STAW.U.REC_D; R3 => R5@STAW.U.ENT_D; SIZE(TR_CBUF) => R1=> R5@STAW.U.BUFZ_D; ADDRESS(TR_CBUF) =>R1 => R5@STAW.U.BUFA_D; MON(STA,FNC_OP, R4, R5, R7):ERR_SEM_OK; MSG[1] => R3 EXTRACT 8; SWITCH MON(SCCM, GET_NM_IDB, R0, R3, R7):ERROR_DONE TO ERR : BEGIN ESO_2_ER1 => R0; GOTO TERM; END; END; "SWITCH R3 => TO_NODE; 0 => R2; REPEAT R1@INTEGER => R0; IF R0[15] THEN BEGIN R0 => R6 EXTRACT 4; IF R6 = R3 THEN BEGIN IF R0[11] THEN BEGIN R0 SHIFTRL 8 EXTRACT 3; IF R0 = MSG[2] THEN GOTO OUT1 ELSE GOTO OUT2; END ELSE GOTO OUT1; END; END; R1 + 1; UNTIL R2 + 1 = 8; OUT2 : ESO_ID => R2; GOTO TERM; OUT1: R2 => R4@STD_OP_C_PMX.HEAD.MCC; IF CMD => R2 = 2 THEN MSG[3] => R1 => R4@STD_OP_C_PMX.PAR; ENTFST_TRUNK => R1 => R5@STAW.U.REC_D; R3 => R5@STAW.U.ENT_D; SIZE(TR_SBUF) => R1 => R5@STAW.U.BUFZ_D; ADDRESS(TR_SBUF) => R1 => R5@STAW.U.BUFA_D; SWITCH MON(STA, FST_ROP, R4, R5, R7):ERR_SEM_OK TO ERRS : BEGIN ESO_2_RER => R0; GOTO TERM; END; SEM : BEGIN ESO_2_RSE => R0; GOTO TERM; END; END; "SWITCH 5 => R0; R2@LONG * R0; R2 + R1; IF CMD => R1 = 2 THEN BEGIN R2 + 4; MSG[3] => R1; END; IF R1 = 3 THEN BEGIN R2@INTEGER => R0; IF R0 <> RSON LOGOR R0 <> RSOP THEN BEGIN ESO_SUB3 => R3; GOTO TERM; END ELSE IF R0 = RSON THEN RSNC => R1 ELSE RSPC => R1; END ELSE BEGIN IF R0 <> RSCL THEN BEGIN ESO_SUB4 => R0; GOTO TERM; END; RSCO => R1; END; R1 => R2@INTEGER; SWITCH MON(STA, FST_WOP, R4, R5, R7):ERR_SEM_OK TO ERRS : BEGIN ESO_2_WER => R0; GOTO TERM; END; SEM : BEGIN ESO_2_WSE => R0; GOTO TERM; END; END; "SWITCH END; "2,3,4 5,6,7,8,9 : BEGIN CASE R2 OF 5 : SUCL => R1; 6 : SUOL => R1; 7 : SUAS => R1; 8 : SUSA => R1; 9 : SUSO => R1; END; "CASE R1 => R4@STD_OP_C_PMX.HEAD.MCC; HEADFST => R1 => R5@STAW.U.REC_D; SIZE(HD_BUF) => R1 => R5@STAW.U.BUFZ_D; ADDRESS(HD_BUF) => R1 => R5@STAW.U.BUFA_D; SWITCH MON(STA, FST_ROP, R4, R5, R7):ERR_SEM_OK TO ERRS : BEGIN ESO_3_RER => R0; GOTO TERM; END; SEM : BEGIN ESO_3_RSE => R0; GOTO TERM; END; END; "SWITCH CASE R2 OF 5 : BEGIN (R1 + 1)@INTEGER => R0; IF R0 <> LSOP THEN BEGIN ESO_SUB5 => R0; GOTO TERM; END; LSOC => R3 => R1@INTEGER; END; 6 : BEGIN (R1 + 1)@INTEGER => R0; IF R0 <> LSCL THEN BEGIN ESO_SUB6 => R0; GOTO TERM; END; LSCO => R3 => R1@INTEGER; END; 7 : BEGIN R1@INTEGER => R0; IF R0 <> STAC THEN BEGIN ESO_SUB7 => R0; GOTO TERM; END; END; 8 : BEGIN R1@INTEGER => R0; IF R0 <> STST THEN BEGIN ESO_SUB8 => R0; GOTO TERM; END; STSA => R3 => R1@INTEGER; END; 9 : BEGIN R1@INTEGER => R0; IF R0 <> STST THEN BEGIN ESO_SUB9 => R0; GOTO TERM; END; STSO => R3 => R1@INTEGER; END; END; "CASE SWITCH MON(STA, FST_WOP, R4, R5, R7):ERR_SEM_OK TO ERRS : BEGIN ESO_3_WER => R0; GOTO TERM; END; SEM : BEGIN ESO_3_WSE => R0; GOTO TERM; END; END; "SWITCH END; "5,6,7,8,9 10 : BEGIN SURD => R1 => R4@STD_OP_C_PMX.HEAD.MCC; SWITCH MON(SCCM, GET_NM_IDB, R0, MSG[1]=>R3, R7):ERROR_DONE TO ERR : BEGIN ESO_4_ERR => R0; GOTO TERM; END; END; "SWITCH R3 => R4@STD_OP_C_PMX.N_M_ID; ENTFST_MEDE => R1 => R5@STAW.U.REC_D; R3 => R5@STAW.U.ENT_D; SIZE(M_BUF) => R1 => R5@STAW.U.BUFZ_D; ADDRESS(M_BUF) => R1 => R5@STAW.U.BUFA_D; SWITCH MON(STA, FST_ROP, R4, R5, R7):ERR_SEM_OK TO ERRS : BEGIN ESO_4_RER => R0; GOTO TERM; END; SEM : BEGIN ESO_4_RSE => R0; GOTO TERM; END; END; "SWITCH R1 => R6; DSRO => R1 => R6@M_ST.DIRQ_ST; SWITCH MON(STA, FST_WOP, R4, R5, R7):ERR_SEM_OK TO ERRS : BEGIN ESO_4_WER => R0; GOTO TERM; END; SEM : BEGIN ESO_4_WSE => R0; GOTO TERM; END; END; "SWITCH END; END; "CASE MON(GETDTG, ADDRESS(DTG_AREA)=>R5, R7); DTG_AREA[11] => R1 => R4@STD_OP_C_PMX.LOG_DTG.LEAST; DTG_AREA[12] => R1 => R4@STD_OP_C_PMX.LOG_DTG.MOST; "CREATE EVENT PSUDO MTCB AND INSERT IT INTO 'EV' QUEUE SWITCH INSERT_MTCB(R0, R4, R6) :ERROR_DONE TO 0 : BEGIN ESO_INSMTCB => R0; GOTO TERM; END; END; "SWITCH R0 => R2; SWITCH INSERT_QE(34=>R0, 0=>R1, R2, R6) :ERROR_DONE TO 0 : BEGIN ESO_INSQE => R0; GOTO TERM; END; END; "SWITCH 0 => R0; TERM : IF R0 = 0 THEN CCOK => R2 => MSG[1] ELSE CCEE =>R2 => MSG[1]; MON(SENDANSWER, ADDRESS(MSG)=>R1, MEVENT=>R2, R7); MON(TERMINATE, R0 , R1, R7); END; ENDMODULE C