;ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ ;File Library ; Copyright (C)2000 Alpha-II Productions ;ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ .MODEL MEDIUM .386 LOCALS CODEMAIN SEGMENT PUBLIC "CODE" PAGE USE16 CODEMAIN ENDS DATAMAIN SEGMENT PUBLIC "DATA" PAGE USE16 DATAMAIN ENDS INCLUDE File.Inc ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ DATAMAIN SEGMENT DATAMAIN ENDS ;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ CODEMAIN SEGMENT ASSUME CS:CODEMAIN,DS:DATAMAIN ;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ;Create a new file/Truncate an old file ALIGN 16 FileNew PROC ARG FN:Word USES BX,CX,DX Mov AX,3C00h XOr CX,CX Mov DX,FN Int 21h Ret FileNew ENDP ;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ;Open an existing file ALIGN 16 FileOpen PROC ARG FN:Word,Opt:Word USES DX Mov AH,3Dh Mov AL,Byte Ptr Opt Mov DX,FN Int 21h Ret FileOpen ENDP ;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ;Seek to a position in a file ALIGN 16 FileSeek PROC ARG FH:Word,Pos:DWord,From:Word USES BX,CX,EDX Mov AL,Byte Ptr From Mov AH,42h Mov BX,FH Mov DX,Word Ptr Pos Mov CX,Word Ptr Pos+2 Int 21h SetC BL ;Save CF ShL EDX,16 ;EAX = DX:AX And EAX,0FFFFh Or EAX,EDX ShR BL,1 ;Restore CF Ret FileSeek ENDP ;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ;Read a block from an open file ALIGN 16 FileRead PROC ARG FH:Word, Len:Word, Dest:Word USES BX,CX,DX Mov AX,3F00h Mov BX,FH Mov CX,Len Mov DX,Dest Int 21h Ret FileRead ENDP ALIGN 16 FileReadF PROC ARG FH:Word, Len:Word, Dest:Word, SegR:Word USES BX,CX,DX,DS Mov AX,3F00h Mov BX,FH Mov CX,Len Mov DX,Dest Mov DS,SegR Int 21h Ret FileReadF ENDP ;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ;Write a block to an open file ALIGN 16 FileWrite PROC ARG FH:Word,Len:Word,Src:Word USES BX,CX,DX Mov AX,4000h Mov BX,FH Mov CX,Len Mov DX,Src Int 21h Ret FileWrite ENDP ALIGN 16 FileWriteF PROC ARG FH:Word,Len:Word,Src:Word,SegR:Word USES BX,CX,DX,DS Mov AX,4000h Mov BX,FH Mov CX,Len Mov DX,Src Mov DS,SegR Int 21h Ret FileWriteF ENDP ;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ;Close an open file ALIGN 16 FileClose PROC ARG FH:Word USES AX,BX Mov AX,3E00h Mov BX,FH Int 21h Ret FileClose ENDP ;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ;Delete an existing file ALIGN 16 FileDel PROC ARG FN:Word USES CX,DX Mov AX,4100h XOr CX,CX Mov DX,FN Int 21h Ret FileDel ENDP CODEMAIN ENDS END