home *** CD-ROM | disk | FTP | other *** search
- *
- * FilePtr.asm (of the PCQ Pascal runtime library)
- * Copyright (c) 1989 Patrick Quaid
- *
- * This routine is called whenever a file pointer is used in
- * the main program. One might expect that we could simply
- * refer to the CURRENT pointer in the file structure, but
- * if the file is INTERACTIVE (which would not be known until
- * runtime), we might have to do a read first.
- *
- * On entry, a0 holds the address of the file record
- *
-
- INCLUDE ":runtime/FileRec.i"
-
- XREF _p%FillBuffer
- XREF _p%IOResult
-
- SECTION FilePtr,CODE
-
- XDEF _p%FilePtr
- _p%FilePtr
-
- tst.l _p%IOResult ; is IO system OK?
- bne 1$
- tst.b INTERACTIVE(a0) ; if not interactive, never mind
- beq.s 1$ ; leave now
- move.l CURRENT(a0),a1 ; get the current position
- cmpa.l LAST(a0),a1 ; are we at end?
- blt.s 1$ ; if not empty, skip
- jsr _p%FillBuffer ; otherwise, fill buffer
- 1$ move.l CURRENT(a0),a0 ; get the current ptr
- rts ; and return
-
- END
-