home *** CD-ROM | disk | FTP | other *** search
/ Software Du Jour / SoftwareDuJour.iso / BUSINESS / DBASE / DBAPG.ARC / DOS-PATH.A86 < prev    next >
Text File  |  1984-01-22  |  2KB  |  56 lines

  1. ; Subroutine.: DOS-PATH.A86
  2. ; Author.....: Kelly Mc Tiernan
  3. ; Date.......: 01/22/84
  4. ; Notice.....: Copyright 1984, All Rights Reserved.
  5. ; Notes......: Accessing DOS 2.0 directories.
  6. ;
  7.     ORG    DE00H        ;56832 DECIMAL=TOP OF DBASE
  8. ;
  9. START:    MOV    [SAVSTK],SP    ; SAVE STACK POINTER
  10.     PUSH    BX        ; SAVE VAR POINTER
  11.     PUSHF            ; SAVE FLAGS
  12. ;
  13.     MOV    CL,[BX]        ; GET VAR SIZE
  14.     MOV    CH,00        ; ZERO HIGH BYTE FOR CX COUNTER
  15.     INC    BX        ; POINT TO FIRST BYTE OF CHAR
  16.                 ; STRING
  17.     MOV    DX,BUFFER    ; WHERE TO PUT PATH NAME
  18.     MOV    DI,DX        ; GET POINTER FOR STRING MOVE
  19.     MOV    SI,BX        ; SOURCE STRING=DBASE VAR "PATH"
  20.     CLD            ; DIRECTION = UP
  21.     REP:MOVSB        ; MOVE STRING TO BUFFER
  22.     MOV    BYTE PTR[DI],00    ; STRING MUST BE TERMINATED WITH 
  23.                 ; 00
  24.     MOV    AH,00        ; DIRECTORY FUNCTIONS POKED FROM
  25.                 ; DBASE, MD=57, RD=58, CD=59
  26.     INT    21        ; MS-DOS FUNCTION CALL
  27.     JC    ERROR        ; FUNCTION ERROR, HANDLE AS 
  28.                 ; GENERAL
  29. ;
  30.     MOV    SP,[SAVSTK]    ; RESTORE STACK POINTER
  31.     POPF            ; RESTORE FLAGS
  32.     POP    BX        ; RESTORE VAR POINTER
  33.     RET            ; RETURN TO DBASE
  34. ;
  35. ERROR:    DEC    BX        ; POINT TO LENGTH BYTE AGAIN
  36.     MOV    CL,[BX]        ; AND GET INTO COUNTER AGAIN
  37.     MOV    CH,00    
  38.     INC    BX        ; POINT TO FIRST CHAR. IN VAR
  39.     DEC    CX        ; COUNT=COUNT-1
  40.     MOV    BYTE PTR[BX],'E'; 'E' IS ERROR CODE TO DBASE PRG.
  41.     INC    BX        ; POINT TO NEXT BYTE OF STRING
  42.     MOV    DI,BX        ; DESTINATION FOR SPACE FILL
  43.     MOV    AL,20H        ; ASCII SPACE
  44.     REP:STOSB        ; FILL FOR COUNT=CX (1 LESS 
  45.                 ; STRING LENGTH)
  46. ;
  47.     MOV    SP,[SAVSTK]    ; RESTORE STACK POINTER
  48.     POPF            ; RESTORE FLAGS
  49.     POP    BX        ; RESTORE VAR POINTER
  50.     RET            ; RETURN TO DBASE
  51. ;
  52. ;
  53. SAVSTK    RS    02
  54. BUFFER    DB    00        ; NO STORAGE RESERVED
  55.     END.
  56.