|
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: 2425 (0x979) Types: TextFile Names: »MUTEX.S«
└─⟦a3edd706e⟧ Bits:30005202 8" Zilog MCZ/1 Floppy CR80FD_0028 ( TC 500 SEC. PROTOCOL BACK UP ! (V1) BB A1 820907 NCJ ) └─ ⟦this⟧ »MUTEX.S« └─⟦e12128f26⟧ Bits:30005200 8" Zilog MCZ/1 Floppy CR80FD_0026 ( TC 500 SEC. PROTOCOL BB V1 830407 NCJ ) └─ ⟦this⟧ »MUTEX.S«
!****************************************************************** * * MUTUAL_EXCLUSION MODULE * ******************************************************************! MUTUAL_EXCLUSION 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 CONF_TABLE ARRAY [10,1 BYTE] CONF_TAB_PTR ^CONF_TABLE PARAM_TABLE RECORD [B ARRAY[20 BYTE] W WORD P CONFIG_TAB_PTR C CONF_TAB_PTR CL_MESS BYTE] DATA_PTR ^PARAM_TABLE CONSTANT IN_USE :=%FF FALSE := 0 NOT_USED := 0 ! 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 EXTERNAL WAIT PROCEDURE (QUEU_NO BYTE) SIGNAL PROCEDURE (QUEU_NO BYTE) ! ECHO \f ! GLOBAL !*********************************************************************** * PROCEDURE : ENTER_CRITICAL_SECTION * * FUNCTION : IF CRITICAL SECTION IS USED BY ANOTHER PROCESS, THE * CALLING PROCESS IS DELAYED UNTIL THE CRITICAL SECTION * IS UNUSED. THE CALLING PROCESS IS THEN ALLOCATED THE * CRITICAL SECTION * * INPUTS : P : POINTER TO PARAMETER TABLE * * OUTPUTS : NONE **********************************************************************! ENTER_CRITICAL_SECTION PROCEDURE (P DATA_PTR) ENTRY DO IF P^.B[MONITOR_STATUS] = IN_USE THEN WAIT (P^.B[MONITOR_QUEU]) FI IF P^.B[MONITOR_STATUS] = FALSE THEN EXIT FI OD P^.B[MONITOR_STATUS] := IN_USE END ENTER_CRITICAL_SECTION !*********************************************************************** * PROCEDURE : EXIT_CRITICAL_SECTION * * FUNCTION : THE CALLING PROCESS DEALLOCATES THE CRITICAL SECTION * AND SIGNALS THE CRITICAL SECTION-SEMAPHORE * * INPUTS : P : POINTER TO PARAMETER TABLE * * OUTPUTS : NONE **********************************************************************! EXIT_CRITICAL_SECTION PROCEDURE (P DATA_PTR) ENTRY P^.B[MONITOR_STATUS] := FALSE SIGNAL (P^.B[MONITOR_QUEU]) END EXIT_CRITICAL_SECTION END MUTUAL_EXCLUSION !ECHO \f !