home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
norge.freeshell.org (192.94.73.8)
/
192.94.73.8.tar
/
192.94.73.8
/
pub
/
computers
/
cpm
/
alphatronic
/
PASCALZ4.ZIP
/
D3
/
RESET.SRC
< prev
next >
Wrap
Text File
|
1999-04-05
|
2KB
|
88 lines
;ROUTINE TO RESET AN INPUT FILE
;
NAME RESET
ENTRY .RESET,L122
EXT .CLSOT,.OPNIN,.BYTIN,.ADDRCK,.MOVNAM
include deflt.src
;
;SYSTEM FILE BUFFER STRUCTURE
;FIRST BYTE IS FILES FLAG.BITS 0-EOLN,1-EOF,2-WRITTEN,3-PREVIOUS
;OPERATION A WRITE,4-RANDOMLY ACCESSED FILE.
;SECOND IS THE READ AHEAD BYTE FOR INPUT FILES
;.RESET REOPENS AN INPUT FILE, SO A USER CAN
;READ IT FROM THE BEGINNING
;GET BUFFER ADDRESS FROM STACK
L122:
.RESET: PUSH B ;SAVE <FNAM> LENGTH
PUSH Y
CALL .ADDRCK
JRNC SKIP
PUSH H
INX H ;ADJUST POINTER TO K2 BUFFER
INX H
INX H
CALL .CLSOT
XRA A ;REMOVE IT FROM OUTPUT LIST
STAX B
DCX B
STAX B
POP H
SKIP: MOV M,A ;RESET ALL FLAGS
POP Y
POP B ;GET <FNAM> LENGTH
POP D ;RETURN ADDRESS
INX H
INX H
INX H
CALL .MOVNAM
DCX H
DCX H
DCX H ;FBA
BIT 7,M ;TEST FOR 'CON:' INPUT FROM CONSOLE
INX H
INX H
INX H ;FCB
JRNZ YEOF ;NO READ AHEAD FOR CONSOLE
JRC YEOF ;SET END OF FILE, BAD FILENAME
CALL .OPNIN ;REOPEN FILE
JRC YEOF ;SET END OF FILE, NO SUCH FILE EXISTS
;READ FIRST BYTE AND SET EOF AND EOLN FLAGS
CALL .BYTIN
MOV C,A
JRC YEOF
CPI CR
JRZ YEOLN
CPI LF
JRZ YEOLN
DCX H
DCX H
MOV M,C ;STORE READ BYTE
DCX H
XRA A
XCHG
PCHL
;SET END OF FILE FLAG
YEOF: DCX H
DCX H
DCX H
BSET 1,M ;SET EOF FLAG
JMPR YCONT
;SET EOLN INDICATER
YEOLN: XRA A
DCX H
DCX H
DCX H
RES 1,M ;SET EOF FLAG
YCONT: BSET 0,M ;SET EOLN FLAG
INX H
MOV M,C ;STORE READ BYTE
INX H
XCHG
XRA A ;CLEAR ACCUMULATOR
PCHL