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: 2950 (0xb86) Types: TextFile Names: »INITAPPEND.S«
└─⟦f81e11cf7⟧ Bits:30005196 8" CR80 Floppy CR80FD_0194 ( CR/D/2497 TEST-TDX VS0102 Source moduler Att. Holger Bay 820208/AEK ) └─⟦d066df9e9⟧ └─ ⟦this⟧ »INITAPPEND.S«
«ff» "INITAPPEND.S" "----------------" PROCEDURE INT_INITAPPEND(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; MEMORY : MEMORY_PARM; ADDR : WORD_ADDRESS; WORDS : INTEGER; OK : BOOLEAN; LOCAL_ADR, EXTERNAL_ADR : BYTE_ADDRESS; 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); GENERATE_DATA(PC, NOOFBYTES, PATTERNNO, BUFFERNO); 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; GET_ABS_ADDR(BUFFERS[4].BUFFER[0], LOCAL_ADR.WORD_ADDR); GET_BUFFER_ADDR(MEMORY, EXTERNAL_ADR.WORD_ADDR, WORDS, OK); LOCAL_ADR.BYTE_DISPLACEMENT := 0; EXTERNAL_ADR.BYTE_DISPLACEMENT := 0; COPY(LOCAL_ADR, EXTERNAL_ADR, NOOFBYTES); 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_APPEND_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_APPEND_KD; INIT_OPERATIONS[I].CRID := CRID; INIT_OPERATIONS[I].ORIGINATOR_LINE := 0; INIT_OPERATIONS[I].BUFFER_NO:= BUFFERNO; INIT_OPERATIONS[I].BYTELENGTH := NOOFBYTES; INIT_OPERATIONS[I].MEMORY := MEMORY; FOUND := TRUE; END ELSE RELEASE_BUFFER(MEMORY, OK); END ELSE BEGIN WRITETEXT('FAILED TO ALLOCATE INIT_APPEND BUFFER (:0:)'); WRITENL; END; END; UNTIL FOUND OR (I >= MAX_INIT_OPS); END; " INT_INITAPPEND " «a5»