home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Phoenix CD 2.0
/
Phoenix_CD.cdr
/
11a
/
cover20.zip
/
COVER.ASM
< prev
next >
Wrap
Assembly Source File
|
1991-01-21
|
3KB
|
112 lines
PAGE ,132
TITLE COVER - Diskette contents list - Main Module
COMMENT * Version 1.0 - June 1983
(PER Dr. Dobbs Journal, January, 1984, #87)
(Dan Daetwyler "Sorted Diskette Directory for
the IBM PC")
Version 2.0 Bruce F. Cameron
Cincinnati OH
February 25, 1985
Counts hidden files
Grouped sort (i.e. all COM files first etc.)
Includes Volume Label and Directory (if not root)
Lists Subdirectory names
Free space up to 100M (hard disk) *
;
;
PAGE 82
; **********************
; * DD Systems *
; **********************
;
CODE SEGMENT PARA PUBLIC 'CODE'
ASSUME CS:CODE, DS:CODE
;
EXTRN RESTR:BYTE
EXTRN DOPRT:NEAR
;
ORG 100H
BEGIN: JMP START
;
PUBLIC VERS
;
VERS DB 0 ; DOS Version flag
DDRV DB 0 ; Default drive at entry
NDRV DB 0 ; Number of drives in system
PRMT DB 13,10,'Enter drive to list (Esc to quit): $'
ERMSG1 DB 13,10,'Invalid drive$'
SETPRT DB 27,'0',27,'C',44,15,0 ; Set 1/8" line, 132 characters
RESPRT DB 27,'@',0 ; Restore printer to power up status
;
EXTRN GETTTL:NEAR, GETFRE:NEAR, SCAN:NEAR, SORT:NEAR, PRINT:NEAR, GETORD:NEAR
EXTRN PSX:BYTE
;
START PROC NEAR
MOV DX,OFFSET SETPRT
CALL DOPRT ; Set printer
MOV AH,30H
INT 21H ; Check for DOS Version
OR AL,AL
JZ NOTTWO ; V1.x
DEC AL ; V2.0
NOTTWO: MOV VERS,AL ; Save DOS flag
MOV AH,19H
INT 21H ; Get default drive
MOV DDRV,AL ; and save
MOV DL,AL
MOV AH,0EH
INT 21H ; Get number of drives
MOV NDRV,AL ; and save
;
; Start of main loop
;
MLOOP: MOV DX,OFFSET PRMT ; Prompt for drive
MOV AH,9
INT 21H
MOV AH,1
INT 21H ; Get user response
CMP AL,1BH ; Check for exit (ESC)
JE QUIT
OR AL,' ' ; Not finished, force lowercase
SUB AL,'a'-1 ; Compute drive number ('a' = 1)
JNC DRVOK ; May be valid, result > 0
ERR1: MOV DX,OFFSET ERMSG1 ; Invalid drive MS
MOV AH,9
INT 21H ; List error MS
JMP MLOOP
DRVOK: CMP AL,NDRV ; Check requested drive in system
JA ERR1 ; No, go to error
DEC AL ; Decrement, drive #'s 0...
MOV DL,AL
MOV AH,0EH
INT 21H ; Make selected drive the default
CALL GETTTL ; Get title of listing
CALL GETORD ; Get file extension reorder list
CALL GETFRE ; Get free space on disk
CALL SCAN ; Load directory entries
CALL SORT ; Sequence entries
CALL PRINT ; Print directory listing
JMP MLOOP
;
QUIT: MOV DL,12
MOV AH,2
INT 21H ; Force page restore
MOV DL,DDRV
MOV AH,0EH
INT 21H ; Restore initial default drive
TEST PSX,1
JZ NOREST
MOV DX,OFFSET RESTR ; Printer TOF (if needed)
CALL DOPRT
NOREST: MOV DX,OFFSET RESPRT
CALL DOPRT ; Reset the printer
INT 20H ; and exit
START ENDP
;
CODE ENDS
;
END BEGIN