DataMuseum.dk

Presents historical artifacts from the history of:

Jet Computer Jet80

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Jet Computer Jet80

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦0f6948d6d⟧ TextFile

    Length: 1920 (0x780)
    Types: TextFile
    Names: »EOFLN.SRC«

Derivation

└─⟦c9df7130d⟧ Bits:30005915 Pascal MT+ Release 5.2 (Jet-80)
    └─ ⟦this⟧ »EOFLN.SRC« 

TextFile

;ROUTINES FOR EOLN,EOF,AND FOR FILLING THE TXTIN BUFFER
;
	NAME EOFLN
	ENTRY EOLN,EOF,FTXTIN,L120,L121,L124
	EXT TOUT,TIN,MTRUE,MTRUE1,FALSE
	INCLUDE DEFLT.SRC
;
;EOLN RETURNS THE CARRY SET IF THE END OF LINE FLAG IN THE BUFFER
;IS SET AND RETURNS THE CARRY RESET IF IT ISN'T. IT EXPECTS HL TO CONTAIN
;THE FILE BUFFER ADDRESS.
;MUST BE CALLED WITH A 0
;EOLN( 0 ) IS DEFINED AS EOLN ON THE CONSOLE
;EOLN MUST PRESERVE REGISTERS BECAUSE IT IS CALLED BY INPUT ROUTINES

L120:
EOLN:	XRA	A
	PUSH	H
	CMP	H		;CHECK FOR CONSOLE POINTER
	JRNZ	FEOLN		;NO...CHECK FILE EOLN
	PUSH	D
	LHLD	6
	LXI	D,-PUTP
	DAD	D
	MOV	A,M		; A := fill pointer.
	DCX	H
	CMP	M		; fill pointer - text_in_pointer
	JC	MTRUE1		; Branch if end of line.
	MOV	E,M
	MVI	D,0
	DAD	D
	INX	H		; HL points to next character to read.
	MOV	A,M
	CPI	CR		; EOLN is also true if we about to read a CR.
	JZ	MTRUE1
	POP	D
	POP	H
	JMP	FALSE

FEOLN:	BIT	0,M	;TEST EOLN FLAG, BIT 0 OF BYTE 1 OF BUFFER
	POP	H
	JZ	FALSE
	JMP	MTRUE

;EOF RETURNS THE CARRY SET IF END OF FILE IS TRUE AND RESET IF IT IS
;FALSE. IT EXPECTS HL TO CONTAIN THE BUFFER ADDRESS.
;A REG MUST BE 0

L121:
EOF:	XRA	A
	CMP	H		;FOR CONSOLE FILES END OF FILE IS ALWAYS FALSE
	JZ	FALSE
	BIT	1,M		;EOF FLAG,BIT 1 OF BYTE 1 OF BUFFER
	JNZ	MTRUE
	JMP	FALSE


;FTXTIN ALLOWS THE USER TO FILL THE PASCAL TXTIN BUFFER
L124:
FTXTIN:	MOV	H,A		;SET HL TO LENGTH OF STRING+1
	MOV	L,C
	INX	H
	DAD	SP		;POINT TO STRING
	PUSH	H		;SAVE THIS POINTER
	MOV	B,C		;MOVE COUNT TO B-REGISTER
FTXT2:	CALL	TIN		;FIRST EMPTY THE BUFFER
	CPI	CR
	JRNZ	FTXT2
FTXT3:	MOV	C,M		;GET CHAR
	CALL	TOUT
	DCX	H		;BUMP POINTER
	DJNZ	FTXT3		;CHECK FOR MORE
	MVI	C,CR
	CALL	TOUT		;ADD A CR
	POP	H
	POP	D		;GET RETURN ADDRESS
	INX	H		;FIX STACK
	SPHL
	XRA	A
	XCHG			;AND...
	PCHL			;...RETURN
«eof»