home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.barnyard.co.uk
/
2015.02.ftp.barnyard.co.uk.tar
/
ftp.barnyard.co.uk
/
cpm
/
walnut-creek-CDROM
/
CPM
/
UTILS
/
DIRUTL
/
D-42A.LBR
/
NZCPRFIX.DQC
/
NZCPRFIX.DOC
Wrap
Text File
|
2000-06-30
|
3KB
|
64 lines
NZCPRFIX.DOC
--------------
from
Horn Engineering Associates
-----------------------------
[This fix for NZCPR and ZCMD is required for WHATSNEW (D-41 and
later versions) to work correctly if your CCP is based on NZCPR]
This fix for NZCPR, probably for all versions, and probably for
ZCMD as well, corrects a problem with the user auto-search that
will sometimes fail to search all user areas. In our case the
problem was with NZCPR, Version 1.6. The problem shows up when,
for example, you are in USER 4 on DRIVE B and try to execute a
file, such as WHATSNEW, that is on B0. NZCPR will first search
B4; then the user area designated as your restricted area
(RESUSER) if the WHEEL is set for full access; then B0 (if that
is the DEFUSER that you have specified by assembly default or
have set with the DFU function). In this example WHATSNEW will
be found on B0, and it will be executed. If it had not been
found there the search would have continued to DRIVE A, USER
DEFUSER (in our example, A0).
Now for the problem. Suppose that the system had done just as
described above and WHATSNEW was found on B0 and executed. If
WHATSNEW were to be immediately executed again the search would
skip the search of B0 and go to DRIVE A for the search. The
problem is in the NZCPR search code. When this code determines
that a target file is not on DRIVE B, it sets a flag called
DFLAG as an in-line code patch. After not finding the file on
B0, the flag directs the system to log-on DRIVE A and search
USER 0. The problem is - DFLAG IS SET BEFORE B0 IS SEARCHED.
This does not prevent B0 from being searched the first time but,
if the target file is found there, it is executed without DFLAG
being reset. The next time the search is made from a user area
on DRIVE B other than USER 0, DFLAG will send the search directy
to A0 without searching B0.
The fix for this problem requires the addition of four bytes of
code. This addition will probably not cause an overrun of the
2K allocation for NZCPR because it only applies when the SECURE
assembly option is selected, in which case considerable code is
probably not assembled. That is; if CPRTYP, CPRLST, or CPRDIR
have been set FALSE. The new code unconditionally resets DFLAG
at any time that a file has been found and loaded. It is added
immediately following the label MLA1: just before the file is
loaded for execution. This label will be found very near the
end of the program. Add the following code:
IF SECURE
XRA A ;get a zero
STA DFLAG ;reset DFLAG
ENDIF ;SECURE
This code will be followed by the existing label, LOADADR.
Sorry, but now you must reassemble NZCPR, using MAC, and
reinstall in in your system. If you have forgotten how to do
this, look for a library file called CCPLOC.LBR for the details.
Regards...
Charles Horn
4 November 1984
is, look for a