Category : Utilities for DOS and Windows Machines
Archive   : FILLDISK.ZIP
Filename : FILLDISK.ASM

 
Output of file : FILLDISK.ASM contained in archive : FILLDISK.ZIP


; FILLDISK.ASM DOS UTILITY 10/03/86 BTR
; ------------
; Purpose: Calculate remaining free disk space on target drive
; and fill with one file of specified constant data.
;
; Syntax: FILLDISK
;
; Example: FILLDISK A: ZEROS.ABS 00
; or FILLDISK B: BLANK.TXT 20H


CSEG Segment
Assume CS:CSEG, DS:CSEG, ES:CSEG, SS:CSEG
Org 002Ch
Environment Label Word ; Segment of Environment
Org 0080h
Parameter Label Byte ; Parameter
Org 0100h
Entry: Jmp Begin ; Entry Point


; Data Declarations
; -----------------

SyntaxMsg db "Syntax: FILLDISK "
db 13,10,10
db "Example: FILLDISK A: ZEROS.ABS 00",13,10
db " or FILLDISK B: BLANK.TXT 20H$"

DosVersMsg db "Needs DOS 2.0 +$"
ParmsMsg db "Incorrect Parms$"
Delimiters db 9,' ,;='
SpaceMsg db "KBytes were written to disk under filename $"
PrintMsg db "Want to print file allocation table? (Y/N): $"


; Check DOS Version
; -----------------

Begin: Mov AH, 30h ; Check for DOS Version
Int 21h ; through DOS call
Cmp AL, 2 ; See if it's 2.0 or above
Jae DosVersOK ; If so, continue

Mov DX, Offset DosVersMsg ; Error message
ErrorExit: mov AH, 9 ; Print String function call
Int 21h ; Do it
Int 20h ; And exit prematurely


; Parse Command Line
; ------------------

ScanParms: Lodsb ; SUBROUTINE: Get byte
Cmp AL, 13 ; See if end of parameter
Je ErrorExit ; If so, exit
Mov DI, Offset Delimiters ; Check if delimiter
Mov CX, 5 ; There are 5 of them
Repne Scasb ; Scan the string
Ret ; And return


; Video Subroutines
; -----------------

VideoMod: Mov AL,0 ; 0 Text Med 40x25 CGA
; 2 Text High 80x25 CGA

Mov AH,0 ; Function Set Video Mode
Int 10h
Ret

ClearWdw: Mov CH,0 ; Row upper left
Mov CL,0 ; Column upper left
Mov DH,24 ; Row lower left
Mov DL,80 ; Column upper right
Mov BH,7 ; Blank line attribute
Mov AL,0 ; Number of lines to scroll

Mov AH,6 ; Function Scroll Window Up
Int 10h
Ret

PosCursr: Mov AH,2 ; Function Position Cursor
Int 10h ; (DH Row, DL Column)
Ret


; Error Handling
; --------------

DosVersOK: Mov DX, Offset SyntaxMsg ; Possible error msg
Mov SI, 1+Offset Parameter ; Parameter string
Cld ; Directions forward

BegSearch: Call ScanParms ; Check byte in subroutine
Je BegSearch ; If delimeter, keep searching
Mov BX, SI ; Save pointer in BX
Dec BX ; BX points to file spec

EndSearch: Call ScanParms ; Check byte in subroutine
Jne EndSearch ; If not delimeter, keep going


; Separate Parms
; --------------------------------------------------------

Dec SI ; Points after Parm
Xchg SI, BX ; SI points to beg, BX to end
Mov DI, Offset FullPath ; Points to destination
Cmp Byte Ptr [SI + 1], ':' ; See if drive spec included
Jnz GetDrive ; If not, must get the drive
Lodsw ; Otherwise, grab drive spec
Add AL, 0DFh ; Capitalize letter
Sub AL, 40h ; get drive number (A=1)
Jmp Short SaveDrive ; And skip next section

GetDrive: Mov AH, 19h ; Get current drive
Int 21h ; through DOS
Add AL, 'A' ; Convert to letter
Mov AH, ':' ; Colon after drive letter

SaveDrive: Stosw ; Save drive spec and colon
Int 21h ; through DOS

.....

get name of disk fill file

get fill character in hex

.....
Moö DX¬ Offseô ParmsMsç » Possiblå erroò message
Jc ErrorExit ; Exit it error
Sub AL, Al ; Search for terminating zero
Cmp [SI], AL ; Check if Root Directory
Jz RootDir ; If so, don't use it
Mov CX, 64 ; Number of byte to search
Repnz Scasb ; Do the search
Dec DI ; DI points to last zero
Mov AL, '\' ; Put a backslash in there
Stosb ; So filespec can follow
RootDir: Pop SI ; Get back SI
AllParmsOk: Mov CX, BX ; End of file spec

.....

open file

write file

.....

CSEG EndS ; End of the segment
End Entry ; Denotes entry point


  3 Responses to “Category : Utilities for DOS and Windows Machines
Archive   : FILLDISK.ZIP
Filename : FILLDISK.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/