mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 22:23:13 -06:00
99 lines
3.8 KiB
Plaintext
99 lines
3.8 KiB
Plaintext
December 18, 1984
|
||
|
||
Resident command 'DIR' fix in ZCPR3 and SYSRCP.ASM
|
||
|
||
Greetings all -- I have stumbled (truly!) upon a distasteful, though not
|
||
essentially serious bug in both ZCPR3.ASM and the SYSRCP.ASM segment.
|
||
Fortunately (more for me than for you) a fix is easy and works 100%. In my
|
||
immodesty I used my name as a label for the fix. I hope that some soul,
|
||
hopefully Richard Conn in the next update to ZCPR3 will correct the bug in his
|
||
imminently elegant way and get rid of my fix in the process.
|
||
|
||
I am probably one of the few folks who likes the resident DIR command, but I
|
||
surely wanted to limit the use of the DIR flags to those who know which
|
||
characters I use to invoke the DIR only, DIR and SYS files both, and the SYS
|
||
files only. In the RELEASE version of ZCPR3 and SYSRCP.ASM, the (SYS and DIR)
|
||
flag is tested for absolutely, but the (SYS only) flag is inappropriately
|
||
tested for, and if not found, then the (SYS and DIR) flag is assumed to have
|
||
been used, and the whole directory, SYS and DIR, is displayed. Try it; if you
|
||
type 'DIR *.* $' or any other character in place of the '$', the entire
|
||
directory, including SYS files will be displayed. I merely made the SYS only
|
||
flag testing an absolute, and when it failed, then automatically reverted to
|
||
the DIR only mode. Section 5A from the SYSRCP.ASM file follows (the ZCPR3
|
||
section 5A is almost the same, and the area for modification is identical, as
|
||
is the fix....)
|
||
|
||
Bucky Carr, SYSOP, World Peace RCP/M, Denver, 303-320-4822, 300/1200, 24 hrs
|
||
|
||
By the way, my highest compliments to Richard Conn (and the rest of the public
|
||
domain programming community) for their immeasurable contributions to society
|
||
via computing.
|
||
|
||
|
||
;Section 5A
|
||
;Command: DIR
|
||
;Function: To display a directory of the files on disk
|
||
;Forms:
|
||
; DIR <afn> Displays the DIR files
|
||
; DIR <afn> S Displays the SYS files
|
||
; DIR <afn> A Display both DIR and SYS files
|
||
;Notes:
|
||
; The flag SYSFLG defines the letter used to display both DIR and
|
||
; SYS files (A in the above Forms section)
|
||
; The flag SOFLG defines the letter used to display only the SYS
|
||
; files (S in the above Forms section)
|
||
; The flag WIDE determines if the file names are spaced further
|
||
; apart (WIDE=TRUE) for 80-col screens
|
||
; The flag FENCE defines the character used to separate the file
|
||
; names
|
||
;
|
||
IF DIRON
|
||
DIR:
|
||
;
|
||
; CHECK FOR WHEEL APPROVAL IF OPTION ENABLED
|
||
;
|
||
IF WDIR
|
||
CALL WHLTST
|
||
ENDIF ;WHEEL APPROVAL
|
||
;
|
||
CALL RETSAVE ;SAVE RET ADDRESS AND SET STACK
|
||
LXI H,FCB1+1 ;MAKE FCB WILD (ALL '?') IF NO FILENAME.TYP
|
||
MOV A,M ;GET FIRST CHAR OF FILENAME.TYP
|
||
CPI ' ' ;IF <SP>, ALL WILD
|
||
CZ FILLQ
|
||
LDA FCB2+1 ;GET FIRST CHAR OF 2ND FILE NAME
|
||
MVI B,80H ;PREPARE FOR DIR-ONLY SELECTION
|
||
CPI ' ' ;ANY FLAG?
|
||
JRZ DIRPR ;THERE IS NO FLAG, SO DIR ONLY
|
||
MVI B,1 ;SET FOR BOTH DIR AND SYS FILES
|
||
CPI SYSFLG ;SYSTEM AND DIR FLAG SPECIFIER?
|
||
JRZ DIRPR ;GOT SYSTEM SPECIFIER
|
||
CPI SOFLG ;SYS ONLY?
|
||
;
|
||
; ---> the fix begins here <---
|
||
;
|
||
JRZ BUCKY ;it was the SYS only flag, exactly!
|
||
MVI B,80H ;NOT the SYS flag either, so default to DIR only
|
||
JR DIRPR ;and do the directory as requested.
|
||
;
|
||
; ---> commented out the next two lines of original code <---
|
||
;
|
||
; JRNZ DIRPR
|
||
; DCR B ;B=0 FOR SYS FILES ONLY
|
||
;
|
||
; ---> added the 'SYS flag ok' routine here <---
|
||
;
|
||
BUCKY: MVI B,0 ;as described below, if SYS only=true then reg B=0
|
||
JR DIRPR ;now go on with the dirpr routine.
|
||
;
|
||
; ---> that ends the fix <---
|
||
|
||
ENDIF ;DIRON
|
||
;
|
||
; DIRECTORY PRINT ROUTINE; ON ENTRY, B REG IS SET AS FOLLOWS:
|
||
; 0 FOR ONLY SYSTEM FILES, 80H FOR ONLY DIR FILES, 1 FOR BOTH
|
||
;
|
||
IF DIRON OR ERAON OR LTON OR PROTON OR CPON OR RENON
|
||
DIRPR:
|
||
MOV A,B ;GET SYSTST FLAG
|
||
|