* ReadLn.asm (of PCQ Pascal runtime library) * Copyright (c) 1989 Patrick Quaid * Implements readln.... SECTION ONE XREF _p%readonechar XREF _p%getthatchar XREF stdinbuffed XREF stdinbuffer XREF _p%readarbbuf XDEF _p%readln _p%readln * top of stack has file move.l 4(sp),a0 ; get file record move.l a0,d0 bne readlnfile ; is not stdin, go around 1$ jsr _p%readonechar ; read a char move.b #0,stdinbuffed ; un-buffer it cmp.b #10,stdinbuffer ; is it LF? bne.s 1$ ; go to read again 3$ rts ; and return readlnfile: 1$ tst.b 12(a0) ; at eof? bne.s 3$ ; if so, leave move.b 4(a0),d0 ; get the next char cmp.b #10,d0 ; is it LF? beq.s 2$ ; go to read one more jsr _p%readarbbuf ; read next char bra 1$ ; loop 2$ jsr _p%readarbbuf ; eat the LF 3$ rts ; and return END