home *** CD-ROM | disk | FTP | other *** search
- ;▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
- ;
- ; Sokakat elriaszt, hogy az assemblyben bonyolultabb a filekezelés, mint a
- ; Pascalban, pedig ez nem is annyira zavaró, ha már egyszer megírta magának
- ; a saját file-töltô rutinját. Ez a LOADFILE nevû rutin egy egyszerû file-
- ; betöltô. Bemeneti paraméterei: ES:SI a betöltendô file nevére mutasson
- ; (fontos, hogy a név után egy 0-s byte is legyen), a DS:DX pedig azt hatá-
- ; rozza meg, hogy a file tartalma hova kerüljön a memóriába.
- ;
- ;▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
-
- LOADFILE: ;ES:SI = FILENAME, DS:DX=PUFFER
- PUSHA
- PUSH DS ES
- PUSH DS DX ES SI
- POP DX DS
- CALL OPENFILE
- POP DX DS
- CALL READFILE
- CALL CLOSEFILE
- POP ES DS
- POPA
- RET
- OPENFILE: ; DS:DX FILENAME
- MOV AL,2 ; READ/WRITE FLAG
- MOV AH,3DH
- INT 21H
- JNC NOERROR
- JMP FILEERROR
- NOERROR:MOV HANDLE,AX
- RET
-
- CLOSEFILE:
- MOV BX,HANDLE
- MOV AH,3EH
- INT 21H
- JNC NCERROR
- JMP FILEERROR
- NCERROR:RET
-
- READFILE: ; DS:DX = PUFFER
- MOV BX,HANDLE
- REREAD: MOV AH,3FH
- MOV CX,0FFF0H
- INT 21H
- JNC NRERROR
- JMP FILEERROR
- NRERROR:CMP AX,0FFF0H
- JNE E_READ
- MOV AX,DS
- ADD AX,0FFFH
- JMP REREAD
- E_READ: RET
-
- FILEERROR:
- PUSH AX
- MOV AX,3
- INT 10H
- POP AX
- CALL WHICHERROR
- MOV AH,9
- INT 21H
- MOV AX,4C00H
- INT 21H
- WHICHERROR:
- CMP AX,1
- JNE FER2
- LEA DX,FERR1
- RET
- FER2: CMP AX,2
- JNE FER3
- LEA DX,FERR2
- RET
- FER3: CMP AX,3
- JNE FER4
- LEA DX,FERR3
- RET
- FER4: CMP AX,4
- JNE FER5
- LEA DX,FERR4
- RET
- FER5: CMP AX,5
- JNE FER6
- LEA DX,FERR5
- RET
- FER6: CMP AX,6
- JNE FER7
- LEA DX,FERR6
- RET
- FER7: CMP AX,7
- JNE FER8
- LEA DX,FERR7
- RET
- FER8: CMP AX,8
- JNE FER9
- LEA DX,FERR8
- RET
- FER9: LEA DX,FERR9
- RET
-
- ;▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ dATAS & MSGS ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
-
- HANDLE DW 0
-
- FERR1 DB 'FUNCTION NUMBER INVALID$'
- FERR2 DB 'FILE NOT FOUND ERROR$'
- FERR3 DB 'PATH NOT FOUND$'
- FERR4 DB 'TOO MANY OPEN FILES$'
- FERR5 DB 'ACCES DENIED$'
- FERR6 DB 'INVALID HANDLE$'
- FERR7 DB 'MEMORY CONTROL BLOCK DESTROYED$'
- FERR8 DB 'INSUFFICIENT MEMORY$'
- FERR9 DB 'HULYE EGY HIBA$'
-