home *** CD-ROM | disk | FTP | other *** search
/ CD-X 1 / cdx_01.iso / demodisc / cyberdan / etc / file.asm < prev    next >
Encoding:
Assembly Source File  |  1995-03-23  |  3.0 KB  |  114 lines

  1. ;▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
  2. ;
  3. ; Sokakat elriaszt, hogy az assemblyben bonyolultabb a filekezelés, mint a
  4. ; Pascalban, pedig ez nem is annyira zavaró, ha már egyszer megírta magának
  5. ; a saját file-töltô rutinját. Ez a LOADFILE nevû rutin egy egyszerû file-
  6. ; betöltô. Bemeneti paraméterei: ES:SI a betöltendô file nevére mutasson
  7. ; (fontos, hogy a név után egy 0-s byte is legyen), a DS:DX pedig azt hatá-
  8. ; rozza meg, hogy a file tartalma hova kerüljön a memóriába.
  9. ;
  10. ;▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
  11.  
  12. LOADFILE:                       ;ES:SI = FILENAME, DS:DX=PUFFER
  13.         PUSHA
  14.         PUSH    DS ES
  15.         PUSH    DS DX ES SI
  16.         POP     DX DS
  17.         CALL    OPENFILE
  18.         POP     DX DS
  19.         CALL    READFILE
  20.         CALL    CLOSEFILE
  21.         POP     ES DS
  22.         POPA
  23.         RET
  24. OPENFILE:                       ; DS:DX FILENAME
  25.         MOV     AL,2            ; READ/WRITE FLAG
  26.         MOV     AH,3DH
  27.         INT     21H
  28.         JNC     NOERROR
  29.         JMP     FILEERROR
  30. NOERROR:MOV     HANDLE,AX
  31.         RET
  32.  
  33. CLOSEFILE:
  34.         MOV     BX,HANDLE
  35.         MOV     AH,3EH
  36.         INT     21H
  37.         JNC     NCERROR
  38.         JMP     FILEERROR
  39. NCERROR:RET
  40.  
  41. READFILE:                       ; DS:DX = PUFFER
  42.         MOV     BX,HANDLE
  43. REREAD: MOV     AH,3FH
  44.         MOV     CX,0FFF0H
  45.         INT     21H
  46.         JNC     NRERROR
  47.         JMP     FILEERROR
  48. NRERROR:CMP     AX,0FFF0H
  49.         JNE     E_READ
  50.         MOV     AX,DS
  51.         ADD     AX,0FFFH
  52.         JMP     REREAD
  53. E_READ: RET
  54.  
  55. FILEERROR:
  56.         PUSH    AX
  57.         MOV     AX,3
  58.         INT     10H
  59.         POP     AX
  60.         CALL    WHICHERROR
  61.         MOV     AH,9
  62.         INT     21H
  63.         MOV     AX,4C00H
  64.         INT     21H
  65. WHICHERROR:
  66.         CMP     AX,1
  67.         JNE     FER2
  68.         LEA     DX,FERR1
  69.         RET
  70. FER2:   CMP     AX,2
  71.         JNE     FER3
  72.         LEA     DX,FERR2
  73.         RET
  74. FER3:   CMP     AX,3
  75.         JNE     FER4
  76.         LEA     DX,FERR3
  77.         RET
  78. FER4:   CMP     AX,4
  79.         JNE     FER5
  80.         LEA     DX,FERR4
  81.         RET
  82. FER5:   CMP     AX,5
  83.         JNE     FER6
  84.         LEA     DX,FERR5
  85.         RET
  86. FER6:   CMP     AX,6
  87.         JNE     FER7
  88.         LEA     DX,FERR6
  89.         RET
  90. FER7:   CMP     AX,7
  91.         JNE     FER8
  92.         LEA     DX,FERR7
  93.         RET
  94. FER8:   CMP     AX,8
  95.         JNE     FER9
  96.         LEA     DX,FERR8
  97.         RET
  98. FER9:   LEA     DX,FERR9
  99.         RET
  100.  
  101. ;▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ dATAS & MSGS ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
  102.  
  103. HANDLE  DW      0
  104.  
  105. FERR1   DB      'FUNCTION NUMBER INVALID$'
  106. FERR2   DB      'FILE NOT FOUND ERROR$'
  107. FERR3   DB      'PATH NOT FOUND$'
  108. FERR4   DB      'TOO MANY OPEN FILES$'
  109. FERR5   DB      'ACCES DENIED$'
  110. FERR6   DB      'INVALID HANDLE$'
  111. FERR7   DB      'MEMORY CONTROL BLOCK DESTROYED$'
  112. FERR8   DB      'INSUFFICIENT MEMORY$'
  113. FERR9   DB      'HULYE EGY HIBA$'
  114.