Category : Assembly Language Source Code
Archive   : TASMSWAN.ZIP
Filename : DR.ASM

 
Output of file : DR.ASM contained in archive : TASMSWAN.ZIP
%TITLE "Display Disk Directory"

IDEAL
DOSSEG
MODEL small
STACK 256

;----- Equates
FileName EQU 30

DATASEG

exitCode db 0
defaultSpec db '*.*', 0
DTAseg dw ?
DTAofs dw ?
dirData db 43 DUP (?)

CODESEG

;---------- from PARAMS.obj
EXTRN GetParams:proc, ParamCount:proc, GetOneParam:proc

;---------- from STRINGS.obj
EXTRN StrLength:proc, StrWrite:proc, NewLine:proc

Start:
mov ax,@data
mov es,ax
call GetParams
call NewLine
call ParamCount
mov di, offset defaultSpec
or dx,dx
jz @@10
xor cx,cx
call GetOneParam
@@10:
mov bx, offset Action
call DirEngine
Exit:
call NewLine
mov ah,04Ch
mov al,[exitCode]
int 21h
%NEWPAGE
;------------------------------------------------------------------------
; DirEngine - directory scan "engine"
;------------------------------------------------------------------------
; Input: cs:bx = address of subroutine
; ds:di = address of ASCIIZ search string (e.g. *.ASM)
; Output: routine at cs:bx called for each directory entry match
; Registers: ax,cx,dx + any changed in Action subroutine at cs:bx
;------------------------------------------------------------------------
PROC DirEngine
push es
push bx
mov ah,2Fh
int 21h
mov [DTAseg],es
mov [DTAofs],bx
pop bx
pop es
mov dx, offset dirData
mov ah,1Ah
int 21h
mov ah,4Eh
mov cx,10h
mov dx,di
jmp short @@20
@@10:
mov ah,4Fh
@@20:
int 21h
jc @@99
call bx
jmp @@10
@@99:
push ds
mov ds,[DTAseg]
mov dx,[DTAofs]
mov ah,1Ah
int 21h
pop ds
ret
ENDP DirEngine
%NEWPAGE
;------------------------------------------------------------------------
; Action - called for each directory entry "hit"
;------------------------------------------------------------------------
; Input: dirData = directory entry (as returned by DOS)
; Output: one file/subdirectory name displayed
; Registers: ah,dl,cx,di
;------------------------------------------------------------------------
PROC Action
mov di, offset dirData + FileName
call StrWrite
call StrLength
sub cx,16
neg cx
@@10:
mov ah,2
mov dl, ' '
int 21h
loop @@10
ret
ENDP Action

END Start


  3 Responses to “Category : Assembly Language Source Code
Archive   : TASMSWAN.ZIP
Filename : DR.ASM

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/