home *** CD-ROM | disk | FTP | other *** search
/ Simtel MSDOS - Coast to Coast / simteldosarchivecoasttocoast.iso / pcmag / vol10n21.zip / GETHOME.ASM < prev    next >
Assembly Source File  |  1990-09-17  |  2KB  |  88 lines

  1. ;=============================================================================
  2. ;                GETHOME.ASM
  3. ;=============================================================================
  4. ;
  5. ;    To make GETHOME.COM you have to compile this file to .OBJ file.
  6. ;    Following syntax is for Turbo Assembler (Borland):
  7. ;
  8. ;    TASM gethome
  9. ;
  10. ;    Then it must be linked to .COM file.
  11. ;    Syntax is:
  12. ;
  13. ;    TLINK /t gethome
  14. ;
  15. ;------------------------------------------------------------------------------
  16.  
  17. WRITE_STDOUT    MACRO
  18.  
  19.     MOV    BX,01h                ; CON file handle.
  20.     MOV    AH,40h                ; Write thru handle.
  21.     INT    21h
  22.  
  23.         ENDM
  24.  
  25. _TEXT    SEGMENT PUBLIC    'CODE'
  26.     ASSUME    CS:_TEXT, DS:_TEXT, ES:_TEXT, SS:_TEXT
  27.  
  28.     ORG    100h
  29. START:
  30.     JMP    SHORT    MAIN
  31.  
  32. DRIVE    DB    "A:"
  33. CRLF    DB    13,10
  34. CMD    DB    "CD \"
  35. BUFFER    DB    64 DUP (?)
  36.  
  37. MAIN:
  38.     MOV    AH,19h                ; Get default drive.
  39.     INT    21h
  40.  
  41.     ADD    DRIVE,AL
  42.  
  43. ; Now, print character and colon.
  44.  
  45.     MOV    DX,OFFSET DRIVE
  46.     MOV    CX,4                ; Four chars, including CRLF.
  47.     WRITE_STDOUT
  48.  
  49. ; Get current directory
  50.  
  51.     XOR    DL,DL                ; Current drive into DL
  52.     MOV    SI,OFFSET BUFFER
  53.     MOV    AH,47h                ; Get directory
  54.     INT    21h
  55.  
  56.  
  57. ; Count path string length into CX.
  58.  
  59.     CLD                    ; Forward search.
  60.     XOR    CX,CX                ; Zero length counter.
  61.  
  62. COUNT_LOOP:
  63.     LODSB                    ; Get a byte.
  64.     INC    CX                ; Bump counter.
  65.     OR    AL,AL                ; Is byte, just read, zero ?
  66.     JNZ    COUNT_LOOP            ; If not, get next byte.
  67.  
  68. ;
  69. ; Print it !
  70. ;
  71.     ADD    CX,4                ; Include "CD \" along
  72.     MOV    DX,OFFSET CMD
  73.     WRITE_STDOUT
  74.  
  75. ; Print CR LF pair also.
  76.  
  77.     MOV    CX,2
  78.     MOV    DX,OFFSET CRLF
  79.     WRITE_STDOUT
  80. ;
  81. ; That's all.
  82. ;
  83.     MOV    AX,4C00h
  84.     INT    21h
  85.  
  86. _TEXT    ENDS
  87.     END    START
  88.