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 ÿ