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
/
FILEXT.SRC
< prev
next >
Wrap
Text File
|
1999-04-05
|
2KB
|
98 lines
;ROUTINES SUPPORT RESETTING AN INPUT FILE AND REWRITING AN OUTPUT FILE
;
NAME FILEXT
ENTRY .ADDRCK,.MOVNAM
EXT .TIN,.TOUT,.FILNAM,.MXUT1
INCLUDE DEFLT.SRC
;.ADDRCK CHECKS THE OUTPUT FILE LIST FOR THE CONTENTS
;OF HL. Y POINTS TO THE START OF THE LIST
;.ADDRCK SETS THE CARRY AND RETURNS THE ELEMENTS ADDRESS IN BC
.ADDRCK: INX Y
MOV A,L
LXI B,.MXUT1 ;NUMBER OF BYTES OF OUTPUT FILE ADDRS.
CONTLK: CMP 0(Y)
JRZ FNDLOW ;LOW BYTE MATCH
INX Y
INX Y ;NEXT OUTPUT FILE ADDRESS
DCR B
DJNZ CONTLK
XRA A ;ELEMENT NOT FOUND
RET
;FOUND LOW BYTE ;CHECK HIGH BYTE
FNDLOW: MOV A,H
INX Y
DCR B
CMP 0(Y)
JRZ FNDIT ;HIGH BYTE MATCH
MOV A,L
INX Y
DJNZ CONTLK
XRA A ;ELEMENT NOT FOUND
RET
;FOUND ELEMENT IN LIST
FNDIT: PUSH Y
POP B
XRA A
STC
RET
;.MOVNAM MOVES THE FILENAME FROM TI BUFFER
;STACK INTO THE FILE BUFFER AREA
;.MOVNAM IS CALLED WITH A ZERO.
;DE CONTAINING THE FIRST RETURN ADDRESS
;HL CONTAINING THE FILE CONTROL BLOCK
;AND THE FILENAME ON THE STACK
;.MOVNAM MUST RETURN THESE REGISTERS UNCHANGED
;AND THE FILENAME REMOVED FROM THE STACK
;THE LENGTH OF THE STRING TO BE MOVED IS IN C
STAKSP EQU 3
.MOVNAM: CALL .TIN ;EXHAUST TI BUFFER
JRNC .MOVNAM
PUSH H ;FILE CONTROL BLOCK
LXI H,STAKSP;GET DISPLACEMENT
DAD S
XRA A
MOV B,A
DAD B ;ADD LENGTH
PUSH H ;NEW STACK POINTER
;MOVE FILENAME TO THE TI BUFFER
MOV B,C
TOTI: MOV C,M
CALL .TOUT
DCX H
DJNZ TOTI
;MOVE A CARRIAGE RETURN INTO TI BUFFER
MVI C,CR
CALL .TOUT
;PARSE FILENAME AND MOVE IT INTO BUFFER AREA
POP B ;NEW STACK POINTER
POP H ;FILE CONTROL BLOCK
CALL .FILNAM
EXAF
EMPBUF: CALL .TIN
CPI CR
JRNZ EMPBUF
EXAF
PUSH B ;NEW SP
XTHL ;HL <- NEW SP
POP B ;GET FILE CONTROL BLOCK
MOV M,D ;HIGH BYTE OF FIRST RETURN ADDRESS
DCX H ;DECR. NEW SP
MOV A,E ;LOW BYTE OF FIRST RETURN ADDRESS
MOV D,B ;FILE CONTROL BLOCK INTO DE
MOV E,C
POP B ;SECOND RETURN ADDRESS
SPHL ;REMOVE FILENAME FROM STACK
XCHG ;FILE CONTROL BLOCK
POP D ;HIGH BYTE OF FIRST RETURN ADDRESS
MOV E,A ;LOW BYTE
PUSH B ;SECOND RETURN ADDRESS
MVI A,0 ;CLEAR ACC WITHOUT DISTURBING CARRY
RET