|
|
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 - metrics - download
Length: 2456 (0x998)
Types: TextFile
Names: »IN_BYTE.S«
└─⟦f81e11cf7⟧ Bits:30005196 8" CR80 Floppy CR80FD_0194 ( CR/D/2497 TEST-TDX VS0102 Source moduler Att. Holger Bay 820208/AEK )
└─⟦d066df9e9⟧
└─⟦this⟧ »IN_BYTE.S«
«ff»
"IN_BYTE.S "
"----------------"
PROCEDURE IN_BYTE(VAR CH : CHAR);
"**********************************************************************
AUTHOR: TLM
DATE: 810323
***********************************************************************
COMMENTS:
***********************************************************************
CHANGE RECORD:
VERSION AUTHOR/DATE DESCRIPTION OF CHANGE
------- ----------- ---------------------
**********************************************************************"
CONST NOT_REPEATING = FALSE;
VAR FILE_ADR : FILE_ADDRESS;
OPREF : OPERATION_REFERENCE;
CC : COMPLETION_CODE;
FINISHED : BOOLEAN;
MSG : MESSAGE_BUFFER;
EVENT : INTEGER;
EVTTYPE : EVENT_TYPE;
NULL_CHARS : ARRAY [0..1] OF INTEGER;
PACK_LINE : ARRAY [1..66] OF INTEGER;
I : INTEGER;
ANY_FINISHED : BOOLEAN;
BEGIN
IF CH_COUNT = LINE_LENGTH THEN
BEGIN
WRITETEXT('-->(:0:)');
NULL_CHARS[0] := 0;
NULL_CHARS[1] := 0;
CH_COUNT := 0;
LINE_LENGTH := 0;
FILE_ADR.FIRST_BYTE := INFILEPOS;
FILE_ADR.BYTE_COUNT := LONG(LINELENGTH);
FILE_ADR.TRANSFERRED_BYTES := 0L;
BLEP@.LINK := NIL;
BLEP@.XL := LOCAL;
BLEP@.BUFSIZE_IN_BYTES := LINELENGTH;
BLEP@.BUFADDR := REL_ADDR(PACK_LINE[1]);
INIT_READ_BYTES(INFILE, FILE_ADR, BLEP, OPREF, CC);
CHECK_CC(CC, 'IN_BYTE ERROR 1(:0:)');
REPEAT
TEST_OPERATION(OPREF, FINISHED, CC);
IF FINISHED THEN CHECK_CC(CC, ' IN_BYTE ERROR 2(:0:)');
CHECK_INIT_OPS(NOT_REPEATING, ANY_FINISHED);
IF NOT FINISHED THEN
WAIT_EVENT(1, #100, MSG, EVENT, EVTTYPE);
UNTIL FINISHED;
UNPACK(PACK_LINE[1], CURRENT_LINE[1], LINELENGTH);
REPEAT
LINE_LENGTH := SUCC(LINE_LENGTH);
INFILEPOS := INFILEPOS + 1L;
UNTIL (CURRENT_LINE[LINE_LENGTH] IN [NL, CR, EM]) OR
(LINE_LENGTH = LINELENGTH);
IF GIVEN[IFILE] OR GIVEN[OFILE] THEN
BEGIN
FOR I := 1 TO LINE_LENGTH DO
WRITEBYTE(CURRENT_LINE[I]);
FLUSHOUT;
END;
END;
CH_COUNT := SUCC(CH_COUNT);
CH := CURRENT_LINE[CH_COUNT];
CHECK_INIT_OPS(NOT_REPEATING, ANY_FINISHED);
END; "IN_BYTE"