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: 2670 (0xa6e) Types: TextFile Names: »INITREAD.S«
└─⟦f81e11cf7⟧ Bits:30005196 8" CR80 Floppy CR80FD_0194 ( CR/D/2497 TEST-TDX VS0102 Source moduler Att. Holger Bay 820208/AEK ) └─⟦d066df9e9⟧ └─ ⟦this⟧ »INITREAD.S«
«ff» "INITREAD.S" "----------------" PROCEDURE INT_INITREAD(PC, SP : INTEGER;VAR CC : COMPLETION_CODE); "********************************************************************** AUTHOR: TLM DATE: 810323 *********************************************************************** COMMENTS: **********************************************************************" VAR CRID : INTEGER; NOOFBYTES : INTEGER; PATTERNNO : INTEGER; BUFFERNO : INTEGER; OPREF : OPERATION_REFERENCE; I : INTEGER; FOUND : BOOLEAN; DUMP_AT_COMPLETION : INTEGER; MEMORY : MEMORY_PARM; ADDR : WORD_ADDRESS; WORDS : INTEGER; OK : BOOLEAN; BEGIN VM := CODE[PC + XVARMASK]; GET_PARAMETER(VM, 1, PC, SP, CRID); GET_PARAMETER(VM, 2, PC, SP, NOOFBYTES); BUFFERNO := CODE[PC + XPARAMS + 3]; GET_PARAMETER(VM, 4, PC, SP, PATTERNNO); GET_PARAMETER(VM, 5, PC, SP, DUMP_AT_COMPLETION); GET_FD(CRID, F); BLEP@.LINK := NIL; BLEP@.XL := EXTERNAL; I := 0; FOUND := FALSE; REPEAT I := SUCC(I); IF NOT INIT_OPERATIONS[I].OCCUPIED THEN BEGIN GET_BUFFER(NOOFBYTES DIV 2 + 1, MEMORY, ADDR, WORDS, OK); IF OK THEN BEGIN BLEP@.MEMORY := MEMORY; INIT_OPERATIONS[I].FILE_ADR.FIRST_BYTE := 0L; INIT_OPERATIONS[I].FILE_ADR.BYTE_COUNT := LONG(NOOFBYTES); INIT_OPERATIONS[I].FILE_ADR.TRANSFERRED_BYTES := 0L; INIT_READ_BYTES(F, INIT_OPERATIONS[I].FILE_ADR, BLEP, OPREF, CC); IF CC = IO_OK THEN BEGIN INIT_OPERATIONS[I].OCCUPIED := TRUE; INIT_OPERATIONS[I].OPREF := OPREF; INIT_OPERATIONS[I].KIND := INIT_READ_KD; INIT_OPERATIONS[I].CRID := CRID; INIT_OPERATIONS[I].ORIGINATOR_LINE := 0; INIT_OPERATIONS[I].BUFFER_NO:= BUFFERNO; INIT_OPERATIONS[I].EXPECTED_PATTERN := PATTERNNO; INIT_OPERATIONS[I].BYTELENGTH := NOOFBYTES; INIT_OPERATIONS[I].MEMORY := MEMORY; INIT_OPERATIONS[I].DUMP_AT_COMPLETION := DUMP_AT_COMPLETION = 1; FOUND := TRUE; END ELSE RELEASE_BUFFER(MEMORY, OK); END ELSE BEGIN WRITETEXT('FAILED TO ALLOCATE INIT_READ BUFFER (:0:)'); WRITENL; END; END; UNTIL FOUND OR (I >= MAX_INIT_OPS); END; " INT_INITREAD " «a5»