; SUPER DIRECTORY PROGRAM ; SDPAT130 ; 10 Jan 1988 ; SD will display the directory of a CP/M disk, sorted ; alphabetically, with the file size in k, rounded to the nearest ; CP/M block size. It also displays library and archive files with ; the file size in k, if the $L option is selected. ; This library is available for callers that want the new ; version of the Super Directory Program but have no need for the ; ASM file. The COM file is set up to be used on a 2 drive CP/M 2.2 ; system. This patch file is supplied to change the number of ; drives if desired. ; With your editor, edit this file. Move to the area marked ; "Drive/User area lookup table", and follow the instructions. ; Save the changes and assemble the file. If you are using ASM, ; you can use the command "ASM SDPAT130". ; Then overlay the changes to SD130.COM with MLOAD: ; MLOAD SD.COM=SD130.COM,SDPAT130 ; Read SD.DOC for detailed instructions to use the options of SD. ;------------------------------------------------------------------- ASEG ; Needed for M80 and RMAC, ignore error ORG 0100H DS 3 ; JMP START (do not change) DS 8 ; Filler for ZCPR 3 information NO EQU 0 YES EQU NOT NO ; (Some assemblers don't like 0FFh) ; Define version number MAIN EQU 1 ; Main block number VER EQU 30 ; Current version MONTH EQU 01 ; Month DAY EQU 10 ; Day YEAR EQU 88 ; Year ; Options VLIST EQU YES ; Yes for normal vertical alphabetization ;-------------------------------- ; Drive/User area lookup table ; You can limit the maximum user area to search for any drive ; independently, by changing the value after the "DB". Use 0FFh for ; drives that are not available. DB 15 ; Maximum user area for drive A DB 15 ; " " " " " B DB 0FFH ; " " " " " C DB 0FFH ; " " " " " D DB 0FFH ; " " " " " E DB 0FFH ; " " " " " F DB 0FFH ; " " " " " G DB 0FFH ; " " " " " H DB 0FFH ; " " " " " I DB 0FFH ; " " " " " J DB 0FFH ; " " " " " K DB 0FFH ; " " " " " L DB 0FFH ; " " " " " M DB 0FFH ; " " " " " N DB 0FFH ; " " " " " O DB 0FFH ; " " " " " P ; Command line options ; If any of the following equates are set NO, it prevents their use. USEF EQU YES ; *Allow making a local disk copy? USEO EQU YES ; *Allow showing only $SYS files? USEP EQU YES ; *Allow making local printer listing? USER EQU YES ; *Allow disk system reset? USES EQU YES ; *Allow showing all, AND $SYS files? ; Displaying files with tagged attributes ($R/O, $SYS, $ARC etc.) in an ; in an unique manner so they are easy to find, if present. ; Example: ; FILENAME.SyS - $SYS attribute set ; FILENAME.doC - $SYS and $R/O both set ; FILENAME.com - $SYS, $R/O and $ARC all set ; The following equate will permit the date to be displayed using the ; European system DD/MM/YY or the American system MM/DD/YY. This only ; shows when using 'V' to display version number. EDATE EQU NO ; Yes = European, No = American ; End of options TMPLT0 EQU $ ; Start of initialization template IF VLIST DB 0 ENDIF ; VLIST IF NOT VLIST DB 0FFH ENDIF ; NO VLIST DB 'A' ; All-users option flag DB 'C' ; File size in records option DB 'D' ; Multi-disk option flag IF USEF DB 'F' ; DISK.DIR file output option ENDIF ; USEF IF NOT USEF DB 'F'+80H ENDIF ; NOT USEF DB 'H' ; Show areas from current to highest DB 'L' ; Display library members flag DB 'N' ; No page-pause option flag IF USEO DB 'O' ; To show $SYS files only ENDIF ; USEO IF NOT USEO DB 'O'+80H ENDIF ; NOT USEO IF USEP DB 'P' ; Printer output option ENDIF ; USEP IF NOT USEP DB 'P'+80H ENDIF ; NOT USEP DB 'Q' ; To show only non-$ARC files IF USER DB 'R' ; Optional reset of disk system ENDIF ; USER IF NOT USER DB 'R'+80H ENDIF ; NOT USER IF USES DB 'S' ; Include $SYS files ENDIF ; USES IF NOT USES DB 'S'+80H ENDIF ; NOT USES DB 'T' ; Primary sort by file type DB 'V' ; Show SD version DB 'X' ; Alternate alphabetization ; End of option lookup table DS 2 ; Next location in output buffer DS 1 ; # of bytes left in output buffer DS 12 ; Output Filename.typ TMPLT1 EQU $ ; End of initialization data template VERNAME:DB 13,10,'SD',MAIN+'0' DB VER/10+'0',VER MOD 10+'0',' -- ' IF NOT EDATE DB MONTH/10+'0',MONTH MOD 10+'0','/' ENDIF ; NOT EDATE DB DAY/10+'0',DAY MOD 10+'0','/' IF EDATE DB MONTH/10+'0',MONTH MOD 10+'0','/' ENDIF ; EDATE DB YEAR/10+'0',YEAR MOD 10+'0' DB 0 END