Listing of file='SETFIL.MAC;06' on disk='vmedia/asm_utility_routines-sideB-sector.ccvf'
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; SETFIL - SET UP A FILE FOR INPUT OR OUTPUT ; ; ON ENTRY: ; A - OPEN TYPE CODE (0=OLD,1=NEW) ; BC - SIZE OF I/O BUFFER (BYTES) ; DE - POINTER TO I/O BUFFER ; HL - POINTER TO FILE PARAMETER BLOCK ; ; RETURNS: ; <C> = ERROR ; ; DESTROYS: ; ALL REGISTERS ; ; ; FILE I/O ROUTINES - ADDRESSES MUST BE SET UP ; PRIOR TO CALL TO THIS ROUTINE EXTRN OPEN,EMESS,INSEQO,RWSEQI ; ; OFFSETS IN FILE PARAMETER BLOCK FOPT EQU 0 FATR EQU 1 FNAM EQU 2 FTYP EQU 8 FVER EQU 11 FSBK EQU 12 FSIZ EQU 14 FLBC EQU 16 FLAD EQU 17 FSAD EQU 19 FSPR EQU 21 FDBK EQU 22 FDEN EQU 23 FAUX EQU 24 FHAN EQU 26 FFCN EQU 28 FDRV EQU 29 FBLK EQU 30 FBUF EQU 32 FXBC EQU 34 FPTR EQU 36 ;.............................................................. ; ; SETUP A FILE FOR INPUT ; SETFIL: MOV M,A ;SAVE OPEN MODE (0=OLD, 1=NEW) SHLD FPBPTR ;STORE POINTERS TO: FPB XCHG SHLD BUFPTR ; AND I/O BUFFER MOV H,B MOV L,C SHLD KBYTES LHLD FPBPTR ;POINT AT FILE PARAM BLOCK CALL OPEN ;OPEN THE FILE JC ERROR LHLD BUFPTR ;POINT AT I/O BUFFER MOV B,H MOV C,L LHLD FPBPTR PUSH H LXI D,FBUF DAD D MOV M,C ;SAVE I/O BUFFER ADDRESS IN FPB INX H MOV M,B POP H LXI D,FXBC DAD D XCHG LHLD KBYTES ;SETUP BUFFER SIZE IN FPB XCHG MOV M,E INX H MOV M,D LHLD FPBPTR ;POINT AT FPB MOV A,M ORA A JZ INPUT CALL INSEQO ;INITIALISE OUTPUT FILE ORA A RET INPUT: CALL RWSEQI ;REWIND INPUT FILE ORA A RET ERROR: CALL EMESS ;EMIT ERROR MESSAGE STC RET ;.............................................................. ; ; DATA AREA ; KBYTES: DS 2 ;SIZE OF BUFFER (BYTES) FPBPTR: DS 2 ;POINTER TO FPB BUFPTR: DS 2 ;POINTER TO I/O BUFFER END