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: 9673 (0x25c9) Types: TextFile Names: »CH.PROC.S«
└─⟦a3edd706e⟧ Bits:30005202 8" Zilog MCZ/1 Floppy CR80FD_0028 ( TC 500 SEC. PROTOCOL BACK UP ! (V1) BB A1 820907 NCJ ) └─ ⟦this⟧ »CH.PROC.S« └─⟦e12128f26⟧ Bits:30005200 8" Zilog MCZ/1 Floppy CR80FD_0026 ( TC 500 SEC. PROTOCOL BB V1 830407 NCJ ) └─ ⟦this⟧ »CH.PROC.S«
!***************************************************************************** * * CHANNEL PROCESS MODULE * *****************************************************************************! CHANNEL_PROCESS MODULE TYPE BUFFER RECORD [BUFF_HEAD ARRAY[4 WORD] STAADR ^BYTE DATA ARRAY[504 BYTE]] REC_PTR ^BUFFER CONFIG_TABLE ARRAY [10,4 BYTE] CONFIG_TAB_PTR ^CONFIG_TABLE QUEU_HEAD ARRAY [8 BYTE] QUEU_HEAD_PTR ^QUEU_HEAD PWQ_HEAD ARRAY [8 BYTE] PWQ_PTR ^PWQ_HEAD TRQ_HEAD ARRAY [8 BYTE] TRQ_PTR ^TRQ_HEAD PARAM_TABLE RECORD [B ARRAY[20 BYTE] W QUEU_HEAD_PTR P CONFIG_TAB_PTR PWQ PWQ_PTR TRQ TRQ_PTR] DATA_PTR ^PARAM_TABLE PROCESS_TABLE RECORD [B ARRAY[4 BYTE] POLL_RATE WORD] TABLE_PTR ^PROCESS_TABLE CONSTANT FALSE := 0 DELAY := 0 CH1_CR80_MESSAGE_QUEU := 0 CH2_CR80_MESSAGE_QUEU := 10 CH3_CR80_MESSAGE_QUEU := 20 CH4_CR80_MESSAGE_QUEU := 30 CH_RATE := 2400 ! 2400 UNITS OF 12.5 mSEC = 30 SEC ! IN_USE := %FF ! CONSTANTS REFERRING TO OFFSET IN PARAM_TABLE ! CR80_RESP_QUEU := 0 SIO_OUTPUT_QUEU := 1 SIO_INPUT_QUEU := 2 RETRANS_QUEU := 3 MONITOR_QUEU := 4 LINE_NO := 5 CH_NO := 6 MONITOR_STATUS := 7 CR80_RESP := 8 CR80_COMM := 9 TABLE_STATUS := 10 TABLE_MONITOR := 11 TAD1 := 12 TAD2 := 13 MULTI_TEXT := 14 EXTERNAL COMMAND_HANDLER PROCEDURE (BUF_PTR REC_PTR,T TABLE_PTR,P DATA_PTR) GETMES PROCEDURE (QUEU_NO BYTE) RETURNS (BUF_PTR REC_PTR) CHANNEL_IO PROCEDURE (BUF_PTR REC_PTR,T TABLE_PTR,P DATA_PTR) ENTER_CRITICAL_SECTION PROCEDURE (P DATA_PTR) EXIT_CRITICAL_SECTION PROCEDURE (P DATA_PTR) CAD_STATUS PROCEDURE (PCT CONFIG_TAB_PTR,P DATA_PTR) RECX PROCEDURE (QUEU_NO,DELAY,CH_NO BYTE) RETURNS (BUF_PTR REC_PTR) LINE_MON PROCEDURE (P DATA_PTR) REST PROCEDURE IYSEL PROCEDURE (CH_NO BYTE) RECEIV PROCEDURE (CH_NO BYTE) TRAXST PROCEDURE EMP1QU,EMP2QU,EMP3QU,EMP4QU QUEU_HEAD POL1QU,POL2QU,POL3QU,POL4QU PWQ_HEAD TRS1QU,TRS2QU,TRS3QU,TRS4QU TRQ_HEAD GLOBAL CH1TAB PROCESS_TABLE := [[FALSE,6,7,0]0008] CT1 CONFIG_TABLE := [0,...] PT1 PARAM_TABLE := [[1,2,3,4,5,?,1,0,%11,%80,0,8,?,?,0,0,0,0,0,0],#EMP1QU,#CT1,#POL1QU,#TRS1QU] CH2TAB PROCESS_TABLE := [[FALSE,16,17,0]0008] CT2 CONFIG_TABLE := [0,...] PT2 PARAM_TABLE := [[11,12,13,14,15,?,2,0,%11,%80,0,18,?,?,0,0,0,0,0,0],#EMP2QU,#CT2,#POL2QU,#TRS2QU] CH3TAB PROCESS_TABLE := [[FALSE,26,27,0]0008] CT3 CONFIG_TABLE := [0,...] PT3 PARAM_TABLE := [[21,22,23,24,25,?,3,0,%11,%80,0,28,?,?,0,0,0,0,0,0],#EMP3QU,#CT3,#POL3QU,#TRS3QU] CH4TAB PROCESS_TABLE := [[FALSE,36,37,0]0008] CT4 CONFIG_TABLE := [0,...] PT4 PARAM_TABLE := [[31,32,33,34,35,?,4,0,%11,%80,0,38,?,?,0,0,0,0,0,0],#EMP4QU,#CT4,#POL4QU,#TRS4QU] INTERNAL P1 DATA_PTR := #PT1 P2 DATA_PTR := #PT2 P3 DATA_PTR := #PT3 P4 DATA_PTR := #PT4 BUF1_PTR,BUF2_PTR,BUF3_PTR,BUF4_PTR REC_PTR INPUT1_BUF_PTR,INPUT2_BUF_PTR,INPUT3_BUF_PTR,INPUT4_BUF_PTR REC_PTR GLOBAL !ECHO \f ! NTIME1 WORD := CH_RATE STIME1 WORD := %00 !****************************************************************************** * COM1PR PROCEDURE ******************************************************************************! COM1PR PROCEDURE ENTRY ! DO FOREVER ! DO ! GET BUFFER FROM CR80_INTERFACE PROCESS ! BUF1_PTR := GETMES (CH1_CR80_MESSAGE_QUEU) ! ACTIVATE COMMAND_HANDLER ! COMMAND_HANDLER (BUF1_PTR,#CH1TAB,P1) OD END COM1PR !***************************************************************************** * C1REC PROCEDURE *****************************************************************************! C1REC PROCEDURE ENTRY ! DO FOREVER ! DO RECEIV (P1^.B[CH_NO]) ! WAIT FOR BUFFER POINTER FROM SIO DRIVER ! INPUT1_BUF_PTR := RECX (P1^.B[SIO_OUTPUT_QUEU], DELAY, P1^.B[CH_NO]) ! ACTIVATE CHANNEL_IO ! ENTER_CRITICAL_SECTION (P1) CHANNEL_IO (INPUT1_BUF_PTR,#CH1TAB,P1) EXIT_CRITICAL_SECTION (P1) OD END C1REC !****************************************************************************** * N1TIME PROCEDURE ******************************************************************************! N1TIME PROCEDURE ENTRY ! DO FOREVER ! DO IF NTIME1 = 0 THEN IF P1^.B[MONITOR_STATUS] <> IN_USE THEN ENTER_CRITICAL_SECTION (P1) LINE_MON (P1) EXIT_CRITICAL_SECTION (P1) CAD_STATUS (#CT1,P1) NTIME1 := CH_RATE FI FI IYSEL (P1^.B[CH_NO]) TRAXST REST OD END N1TIME !ECHO \f ! NTIME2 WORD := CH_RATE STIME2 WORD := %00 !****************************************************************************** * COM2PR PROCEDURE ******************************************************************************! COM2PR PROCEDURE ENTRY ! DO FOREVER ! DO ! GET BUFFER FROM CR80_INTERFACE PROCESS ! BUF2_PTR := GETMES (CH2_CR80_MESSAGE_QUEU) ! ACTIVATE COMMAND_HANDLER ! COMMAND_HANDLER (BUF2_PTR,#CH2TAB,P2) OD END COM2PR !****************************************************************************** * C2REC PROCEDURE ******************************************************************************! C2REC PROCEDURE ENTRY ! DO FOREVER ! DO RECEIV (P2^.B[CH_NO]) ! WAIT FOR BUFFER POINTER FROM SIO DRIVER ! INPUT2_BUF_PTR := RECX (P2^.B[SIO_OUTPUT_QUEU], DELAY, P2^.B[CH_NO]) ! ACTIVATE CHANNEL_IO ! ENTER_CRITICAL_SECTION (P2) CHANNEL_IO (INPUT2_BUF_PTR,#CH2TAB,P2) EXIT_CRITICAL_SECTION (P2) OD END C2REC !****************************************************************************** * N2TIME PROCEDURE ******************************************************************************! N2TIME PROCEDURE ENTRY ! DO FOREVER ! DO IF NTIME2 = 0 THEN IF P2^.B[MONITOR_STATUS] <> IN_USE THEN ENTER_CRITICAL_SECTION (P2) LINE_MON (P2) EXIT_CRITICAL_SECTION (P2) CAD_STATUS (#CT2,P2) NTIME2 := CH_RATE FI FI IYSEL (P2^.B[CH_NO]) TRAXST REST OD END N2TIME !ECHO \f ! NTIME3 WORD := CH_RATE STIME3 WORD := %00 !**************************************************************************** * COM3PR PROCEDURE ****************************************************************************! COM3PR PROCEDURE ENTRY ! DO FOREVER ! DO ! GET BUFFER FROM CR80_INTERFACE PROCESS ! BUF3_PTR := GETMES (CH3_CR80_MESSAGE_QUEU) ! ACTIVATE COMMAND_HANDLER ! COMMAND_HANDLER (BUF3_PTR,#CH3TAB,P3) OD END COM3PR !***************************************************************************** * C3REC PROCEDURE *****************************************************************************! C3REC PROCEDURE ENTRY ! DO FOREVER ! DO RECEIV (P3^.B[CH_NO]) ! WAIT FOR BUFFER POINTER FROM SIO DRIVER ! INPUT3_BUF_PTR := RECX (P3^.B[SIO_OUTPUT_QUEU], DELAY, P3^.B[CH_NO]) ! ACTIVATE CHANNEL_IO ! ENTER_CRITICAL_SECTION (P3) CHANNEL_IO (INPUT3_BUF_PTR,#CH3TAB,P3) EXIT_CRITICAL_SECTION (P3) OD END C3REC !**************************************************************************** * N3TIME PROCEDURE ****************************************************************************! N3TIME PROCEDURE ENTRY ! DO FOREVER ! DO IF NTIME3 = 0 THEN IF P3^.B[MONITOR_STATUS] <> IN_USE THEN ENTER_CRITICAL_SECTION (P3) LINE_MON (P3) EXIT_CRITICAL_SECTION (P3) CAD_STATUS (#CT3,P3) NTIME3 := CH_RATE FI FI IYSEL (P3^.B[CH_NO]) TRAXST REST OD END N3TIME !ECHO \f ! NTIME4 WORD := CH_RATE STIME4 WORD := %00 !****************************************************************************** * COM4PR PROCEDURE ******************************************************************************! COM4PR PROCEDURE ENTRY ! DO FOREVER ! DO ! GET BUFFER FROM CR80_INTERFACE PROCESS ! BUF4_PTR := GETMES (CH4_CR80_MESSAGE_QUEU) ! ACTIVATE COMMAND_HANDLER ! COMMAND_HANDLER (BUF4_PTR,#CH4TAB,P4) OD END COM4PR !***************************************************************************** * C4REC PROCEDURE *****************************************************************************! C4REC PROCEDURE ENTRY ! DO FOREVER ! DO RECEIV (P4^.B[CH_NO]) ! WAIT FOR BUFFER POINTER FROM SIO DRIVER ! INPUT4_BUF_PTR := RECX (P4^.B[SIO_OUTPUT_QUEU], DELAY, P4^.B[CH_NO]) ! ACTIVATE CHANNEL_IO ! ENTER_CRITICAL_SECTION (P4) CHANNEL_IO (INPUT4_BUF_PTR,#CH4TAB,P4) EXIT_CRITICAL_SECTION (P4) OD END C4REC !***************************************************************************** * N4TIME PROCEDURE *****************************************************************************! N4TIME PROCEDURE ENTRY ! DO FOREVER ! DO IF NTIME4 = 0 THEN IF P4^.B[MONITOR_STATUS] <> IN_USE THEN ENTER_CRITICAL_SECTION (P4) LINE_MON (P4) EXIT_CRITICAL_SECTION (P4) CAD_STATUS (#CT4,P4) NTIME4 := CH_RATE FI FI IYSEL (P4^.B[CH_NO]) TRAXST REST OD END N4TIME END CHANNEL_PROCESS !ECHO \f !