                     Named Directory Prompt for ZCPR23
                              by Jay Denebeim
                           SYSOP Ovation Network
                              (606) 276-1957

     One of the most powerful features of ZCPR is the use of names  instead 
of drive/user pairs.  Unfortunatly, these are not supported by ZCPR itself!  
When  installing  ZCPR on my system I put patches in to print then name  in 
the  command prompt.   The form is DU:DIRNAME> if DUPRMPT is  enabled,  and 
DIRNAME> if its not.
     This  patch should be able to be installed on any version of ZCPR.   I 
am  unable  to include a .dif file because my source to  ZCPR  was  garbled 
during transmission.   If anyone has the source to the utility programs,  I 
would  appreciate  it  if you could up-load them onto my board,  so  I  can 
install named directory support to them too.
     If there are any problems please contact me at:

                           Ovation Network RCPM
                              140 Moore Drive
                           Lexington, KY  40503
                              (606) 276-1957

.pa
     The first step is to install switches into the header file:

     This  patch can be installed anywhere,  but i think the best place  to 
put it is right after the DUPRMPT equate.   That is the only one associated 
with command line prompt.

;   The following equates enable the named directory options.
; NAMDIR enables the named directory buffer.
; NAMBUF specifies where in core the Buffer will reside.
; NAMDIR enables printing of the Dir's name on the command line.
;	set it to TRUE and the prompt will be dn:name>
;	set it to FALSE and the prompt will be dn>
;
NAMDIR	equ	TRUE		;ENABLE NAMED DIRS
NAMBUF	equ	0F300H		;LOCATION OF BUFFER
NAMPMT	equ	TRUE		;PRINT NAME ON COMMAND LINE


     The other changes are made to the ZCPR.ASM file, pay careful attention 
to the relative jumps in the file.

     If all the prompt options are enabled,  this jump command in the CONT: 
routine in section 2 of ZCPR should be changed to the 3 byte form:
     Change this line:

        JRNZ    RS1

     To this:

        JNZ	RS1

     The jump on no print of 0 while in user 0 should be changed.

     Change  this  line in the SUPRES conditional assembly section  of  the 
RESTRT: routine from:

        JRZ     RS000

     To this:
        JRZ     RSJ00
.pa
     Finally  insert the following routine between the DUPRMPT  conditional 
assembly of the RESTRT routine, and the RS000: routine:

; PRINT DIRECTORY NAME IF THERE
;
RSJ00:
	IF	NAMPMT AND NAMDIR
	LXI	H,NAMBUF	;POINT TO NAMED DIR BUFFER
	INX	H		;POINT TO NUMBER OF ENTRIES
	MOV	B,M		;GET IT
	XRA	A		;TEST NUMBER OF ENTRIES
	CMP	B		;TO SEE IF ZERO
	JRZ	RS000		;AND SKIP ROUTINE IF SO
	LDA	CURDR		;GET CURRENT DRIVE NUMBER
	INX	H		;POINT TO DRIVE OF FIRST ENTRY
	LXI	D,10		;SET UP ENTRY LENGTH
RSJ01:
	MOV	C,M		;GET DISK FROM TABLE
	CMP	C		;IS THIS THE CURRENT ONE
	JRZ	RSJ02		;TEST USER ROUTINE
	DAD	D		;POINT TO NEXT ENTRY
	DCR	B		;REDUCE COUNTER
	JRNZ	RSJ01		;IF MORE, LOOP
	JR	RS000		;ELSE NO ENTRY FOR THIS DISK
RSJ02:
	LDA	CURUSR		;GET CURRENT USER
	INX	H		;POINT TO USER IN THIS ENTRY
RSJ020:
	MOV	C,M		;GET USER FROM TABLE
	CMP	C		;IS THIS THE CURRENT ONE
	JRZ	RSJ03		;PRINT NAME OUT
	DAD	D		;POINT TO NEXT ENTRY
	DCR	B		;REDUCE COUNTER
	JRNZ	RSJ020		;IF MORE, LOOP
	JR	RS000		;ELSE NO ENTRY FOR THIS USER
RSJ03:
	IF	DUPRMPT
	MVI	A,':'		;USE : AS SEPARATER
	CALL	CONOUT
	ENDIF	;DUPRMPT
	INX	H		;POINT TO FIRST CHAR OF NAME
	MVI	B,8
RSJ030:
	MOV	A,M		;GET CHAR
	CPI	' '		;END OF NAME?
	JRZ	RS000		;WE IS DONE
	CALL	CONOUT		;PUT CHAR ON SCREEN
	INX	H		;POINT TO NEXT
	DCR	B		;REDUCE CHAR COUNT
	JRNZ	RSJ030		;GO FOR MORE
	ENDIF	;NAMPMT
;

     I hope you enjoy these changes to ZCPR.

