home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / oberon / disk.mod < prev    next >
Text File  |  1991-02-24  |  2KB  |  47 lines

  1. MODULE Disk;    (* ERV, 1989/91 *)
  2.   IMPORT SYS:=SYSTEM;
  3.  
  4. PROCEDURE FileOpen * (VAR s:ARRAY OF CHAR; VAR handle:INTEGER; rw:INTEGER);
  5. BEGIN SYS.CODE(
  6.   1EH,            (*  push ds  *)
  7.   0C5H, 56H, 0CH, (*  lds dx,dword ptr [bp+12] ;file name *)
  8.   8BH, 46H, 06H,  (*  mov ax,word ptr [bp+06 ] ; rw type *)
  9.   0B4H, 3DH,      (*  mov ah,3Dh *)
  10.   0CDH, 21H,      (*  int 21h    *)
  11.   73H, 03H,       (*  jnc FOok   *)
  12.   0B8H, 00H,00H,  (*  mov   ax,0 *)
  13.                   (*FOok:        *)
  14.   0C5H, 5EH, 08H, (*  lds bx,dword ptr[bp+8];handle  *)
  15.   89H, 07H,       (*  mov word ptr[bx],ax     *)
  16.   1FH)            (*  pop ds                  *)
  17. END FileOpen;
  18.  
  19.  
  20. PROCEDURE FileClose * (handle:INTEGER);
  21. BEGIN SYS.CODE(
  22.   8BH, 5EH, 06H,   (*mov bx,word ptr[bp+6]*)
  23.   0B4H, 3EH,       (*mov ah,3Eh           *)
  24.   0CDH, 21H)       (*int 21h              *)
  25. END FileClose;
  26.  
  27.  
  28.  
  29. PROCEDURE FileRd * (VAR buff:ARRAY OF SYS.BYTE;
  30.                  handle:INTEGER; size:INTEGER; VAR read:INTEGER);
  31. BEGIN SYS.CODE(
  32.  1EH,              (*  push ds  *)
  33.  0C5H, 56H, 0EH,   (*  lds dx,dword ptr [bp+14] ;buf ptr   *)
  34.  8BH, 5EH, 0CH,    (*  mov bx,word ptr[bp+12]   ;handle    *)
  35.  8BH, 4EH, 0AH,    (*  mov cx,word ptr[bp+10]  ;size      *)
  36.  0B4H, 3FH,        (*  mov ah,3Fh ;read code              *)
  37.  0CDH, 21H,        (*  int 21h                            *)
  38.  73H, 02H,         (*  jnc RDok                           *)
  39.  0F7H, 0D8H,       (*  neg ax ;neg 'read' means error code*)
  40.                    (* RDok:                               *)
  41.  0C5H, 5EH, 06H,   (*  lds bx,dword ptr[bp+6 ];read       *)
  42.  89H, 07H,         (*  mov word ptr [bx],ax               *)
  43.  1FH)              (*  pop ds                             *)
  44. END FileRd;
  45.  
  46. END Disk.
  47.