home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Oakland CPM Archive
/
oakcpm.iso
/
cpm
/
zcpr2
/
namedir.cpr
< prev
next >
Wrap
Text File
|
1984-01-16
|
4KB
|
120 lines
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.