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: 3904 (0xf40) Types: TextFile Names: »CHECK_INIT_OPS.S«
└─⟦f81e11cf7⟧ Bits:30005196 8" CR80 Floppy CR80FD_0194 ( CR/D/2497 TEST-TDX VS0102 Source moduler Att. Holger Bay 820208/AEK ) └─⟦d066df9e9⟧ └─ ⟦this⟧ »CHECK_INIT_OPS.S«
«ff» "CHECK_INIT_OPS.S" "----------------" PROCEDURE CHECK_INIT_OPS(REPEATING : BOOLEAN; VAR ANY_FINISHED : BOOLEAN); "********************************************************************** AUTHOR: TLM DATE: 810323 *********************************************************************** COMMENTS: This procedure runs through all INIT operations hanging out. If any of them have finished they are logged to the output file. In the read case: maybe a data check is performed. mayby the input buffer is dumped. the input buffer is released. *********************************************************************** CHANGE RECORD: VERSION AUTHOR/DATE DESCRIPTION OF CHANGE ------- ----------- --------------------- **********************************************************************" VAR I : INTEGER; OPREF : OPERATION_REFERENCE; FINISHED : BOOLEAN; CC : COMPLETION_CODE; LOCAL_ADR, EXTERNAL_ADR : BYTE_ADDRESS; SIZE_IN_WORDS : INTEGER; OK : BOOLEAN; BYTES : INTEGER; BEGIN ANY_FINISHED := FALSE; FOR I := 1 TO MAX_INIT_OPS DO BEGIN IF INIT_OPERATIONS[I].OCCUPIED THEN BEGIN TEST_OPERATION(INIT_OPERATIONS[I].OPREF, FINISHED, CC); IF FINISHED THEN BEGIN ANY_FINISHED := TRUE; INIT_OPERATIONS[I].OCCUPIED := FALSE; IF (NOT REPEATING) OR (CC <> IO_OK) OR ((INIT_OPERATIONS[I].KIND = INIT_READ_KD) AND (INIT_OPERATIONS[I].DUMP_AT_COMPLETION)) THEN BEGIN WRITENL; WRITETEXT('*** INIT-(:0:)'); CASE INIT_OPERATIONS[I].KIND OF INIT_READ_KD : WRITETEXT('READ (:0:)'); INIT_APPEND_KD : WRITETEXT('APPEND(:0:)') END; WRITETEXT(' COMPLETED ***(:0:)'); WRITETEXT(' CRID = (:0:)'); WRITEHEX (INIT_OPERATIONS[I].CRID); WRITENL; END; CHECK_TRANSFER(INIT_OPERATIONS[I].FILE_ADR, CC); IF CC <> IO_OK THEN BEGIN WRITETEXT('*** BAD COMPLETION CODE *** CC = (:0:)'); WRITEHEX(CC); WRITENL; END ELSE BEGIN IF INIT_OPERATIONS[I].KIND = INIT_READ_KD THEN BEGIN BYTES := SHORT(INIT_OPERATIONS[I]. FILE_ADR.TRANSFERRED_BYTES); GET_ABS_ADDR(BUFFERS[3].BUFFER[0], LOCAL_ADR.WORD_ADDR); GET_BUFFER_ADDR(INIT_OPERATIONS[I].MEMORY, EXTERNAL_ADR.WORD_ADDR, SIZE_IN_WORDS, OK); LOCAL_ADR.BYTE_DISPLACEMENT := 0; EXTERNAL_ADR.BYTE_DISPLACEMENT := 0; COPY(EXTERNAL_ADR, LOCAL_ADR, BYTES); IF INIT_OPERATIONS[I].EXPECTED_PATTERN <> 0 THEN CHECK_DATA(BYTES, INIT_OPERATIONS[I].EXPECTED_PATTERN, "BUFFER" 3); IF INIT_OPERATIONS[I].DUMP_AT_COMPLETION THEN PERFORM_DUMP("BUFFER" 3, 0, "FROM " 0, "TO " (BYTES DIV 2) + (BYTES MOD 2)); END; END; RELEASE_BUFFER(INIT_OPERATIONS[I].MEMORY, OK); IF NOT OK THEN BEGIN WRITETEXT('RELEASE BUFFER NOT OK (:0:)'); WRITENL; END; END; END; END; END; " CHECK_INIT_OPS "