home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 9 / 09.iso / l / l210 / 1.ddi / EXAMPLES.ARC / CH16EX04.PRO < prev    next >
Encoding:
Prolog Source  |  1988-06-21  |  924 b   |  34 lines

  1. /*
  2.    Turbo Prolog 2.0 Chapter 16, Example Program 4
  3.    
  4.    Copyright (c) 1986, 88 by Borland International, Inc
  5.    
  6. */
  7.    
  8. predicates
  9.    dosver(real)
  10.    diskspace(real, real, real)
  11.    makedir(string)
  12.    removedir(string)
  13.  
  14. clauses
  15.    dosver(Version) :- AX=48*256,
  16.    bios(33, reg(AX, 0, 0, 0, 0, 0, 0, 0), reg(VV,_,_,_,_,_,_,_)),
  17.  
  18.    /* You could use hex notation, bios($21...) instead of bios(33...) */
  19.    L=VV div 6, H=VV-256*L, Version=H+L/100.
  20.  
  21.    diskspace(Disk, TotalSpace, FreeSpace) :-
  22.       AAX = 54*256,
  23.       bios(33, reg(AAX, 0, 0, DISK, 0, 0, 0, 0), reg(AX, BX, CX, DX,_,_,_,_)),
  24.       FreeSpace = 1.0*BX*CX*AX, TotalSpace = 1.0*DX*CX*AX.
  25.  
  26.    makedir(Name) :-
  27.       ptr_dword(Name, DS, DX),
  28.       AX = 256*57,
  29.       bios(33, reg(AX, 0, 0, DX, 0, 0, DS, 0), _).
  30.  
  31.    removedir(Name) :-
  32.       ptr_dword(Name, DS, DX), AX=256*58,
  33.       bios(33, reg(AX, 0, 0, DX, 0, 0, DS, 0), _).
  34.