1 ;:ts=8
2 ;***************************
3 ; This file contains the interface to the DOS
4 ; file i/o routines used by rogue
5 ;***************************
6 
7 dataseg	segment para public 'data'
8 	extrn	errno_:word
9 dataseg ends
10 
11 codeseg	segment para public 'code'
12 	assume	cs:codeseg, ds:dataseg
13 	public	open_, close_, read_, write_, unlink_, creat_, lseek_
14 
15 open_	proc	near
16 	push	bp
17 	mov	bp,sp
18 	mov	dx,4[bp]	; File name in dx
19 	mov	al,6[bp]	; Open mode
20 	mov	ah,3dh
21 
22 fio_dos:
23 	push	si
24 	push	di
25 	int	21h
26 	jnc	aok
27 	mov	errno_,ax
28 	mov	ax,0ffffh
29 aok:
30 	pop	di
31 	pop	si
32 	pop	bp
33 	ret
34 open_	endp
35 
36 close_	proc	near
37 	push	bp
38 	mov	bp,sp
39 	mov	bx,4[bp]
40 	mov	ah,3eh
41 	jmp	fio_dos
42 close_	endp
43 
44 read_	proc	near
45 	push	bp
46 	mov	bp,sp
47 	mov	bx,4[bp]		; File handle
48 	mov	cx,8[bp]		; Byte count
49 	mov	dx,6[bp]		; buffer addr
50 	mov	ah,3fh
51 	jmp	fio_dos
52 read_	endp
53 
54 write_	proc	near
55 	push	bp
56 	mov	bp,sp
57 	mov	bx,4[bp]		; File handle
58 	mov	cx,8[bp]		; Byte count
59 	mov	dx,6[bp]		; buffer addr
60 	mov	ah,40h
61 	jmp	fio_dos
62 write_	endp
63 
64 unlink_	proc	near
65 	push	bp
66 	mov	bp,sp
67 	mov	dx,4[bp]
68 	mov	ah,41h
69 	jmp	fio_dos
70 unlink_	endp
71 
72 creat_	proc	near
73 	push	bp
74 	mov	bp,sp
75 	mov	dx,4[bp]
76 	mov	cx,0
77 	mov	ah,3ch
78 	jmp	fio_dos
79 creat_	endp
80 
81 lseek_	proc	near
82 	push	bp
83 	mov	bp,sp
84 	mov	bx,4[bp]
85 	mov	dx,6[bp]
86 	mov	cx,8[bp]
87 	mov	al,10[bp]
88 	mov	ah,42h
89 	jmp	fio_dos
90 lseek_	endp
91 
92 codeseg	ends
93 