
	SUBTTL	PC-DOS FUNCTION CODES & MACRO DEFS
	PAGE
;	PC-DOS INTERRUPT 21H FUNCTION CODES
;    SYSCOM.INC
.xcref
@PTERM	EQU	0	;Program terminate
@KEYINE	EQU	1	;kydb input with echo
@CHROUT	EQU	2	;display output
@AUXIN	EQU	3	;serial input
@AUXOUT	EQU	4	;serial output
@LPTOUT	EQU	5	;printer output
@DCONIO	EQU	6	;direct console i/o
@DCONIN	EQU	7	;direct kybd input w/o echo
@KEYIN	EQU	8	;kybd input w/o echo
@STROUT	EQU	9	;print string
@BKEYIN	EQU	10	;buffered kybd input
@KEYSTA	EQU	11	;check keyboard status
@CKEYIN	EQU	12	;clr kybd bufr & invoke input
@DRESET	EQU	13	;disk reset
@SELDSK	EQU	14	;select disk
@OPENF	EQU	15	;open file
@CLOSF	EQU	16	;close file
@SRCH1	EQU	17	;search for first dir entry
@SRCH2	EQU	18	;search for next dir entry
@DLTEF	EQU	19	;delete file
@RDSEQ	EQU	20	;sequential read
@WRSEQ	EQU	21	;sequential write
@CRTEF	EQU	22	;create file
@RENMF	EQU	23	;rename file
@GETDSK	EQU	25	;get default disk drive
@SETDTA	EQU	26	;set disk transfer addr
@FATADR	EQU	27	;get FAT of default drive
			;undocumented feature
@FATAD2	EQU	28	;get FAT of drive in DL
@RDRND	EQU	33	;random read
@WRRND	EQU	34	;random write
@SIZEF	EQU	35	;get file size
@SETRND	EQU	36	;set random record field
@SETINT	EQU	37	;set interrupt vector
@BLDPS	EQU	38	;create new program segment
@RDBLK	EQU	39	;read block random
@WRBLK	EQU	40	;write block random
@PARSEF	EQU	41	;parse filename
@GETDTE	EQU	42	;get system date
@SETDTE	EQU	43	;set system date
@GETTME	EQU	44	;get system time
@SETTME	EQU	45	;set system time
@VERIFY	EQU	46	;set/reset verify switch

DOSCALL	MACRO	FUNC,PARM1
F_C	=	FUNC
IFNB <PARM1>
IF F_C EQ 2 OR (F_C GE 4 AND F_C LE 6) OR F_C EQ 14 OR F_C EQ 46
	MOV	DL,PARM1
ELSE 
	MOV	DX,OFFSET PARM1
ENDIF
ENDIF
	MOV	AH,FUNC
	INT	21H
	ENDM
.cref
ifndef list
.list
endif
; 
BUFSIZ	EQU	2048		;buffer size
CR	EQU	0DH     	;carriage return
LF	EQU	0AH     	;linefeed
EOF	EQU	1AH		;end of file
FCB	EQU	DS:005CH	;DOS file control blk
; END OF MACRO ;
riage return
LF	EQU	0AH     	;li