is that you do end up with a machine readable version of the source code but if
anyone else follows this path I would strongly advise them to spend more time than
I did on identifying the DATA areas before dis-assembling!
For my particular purposes this is a better solution because, although
relocated, all parts of Nas-Sys are still in the same relationship to each other. I
am using a CP/M system to develop software that will then run on ‘standard’
NASCOMs, (without disk) which are used to drive other equipment and if I write the
software with all absolute references to parts of Nas-Sys (such as revised command
tables) of the form “Location + Offset", I can initialize "Offset" to O or 100H and
produce two versions of the same program very easily. VRAM must be modified also,
For the Disk routines I use the "F" command to switch between tape and disk
and to set up the filenames. "R" & "W" then Read and Write from the designated
devices. "D" is used to Delete files from disk. One facility that would be nice
would be the ability to obtain a directory listing from within Nas-Sys. It galls me
to have to write the code myself when the ‘built in’ CP/M commands are loitering in.
the top of memory. Can anyone tell me whether it is possible to call the built-in
routines (DIR & REN in particular) as subroutines?
Following the advice given in Dr Dark’s diary I have now converted my EPROM
Naspen to a RAM version. However, the end result irritated me and I have made two
other alterations that may be of interest to other readers.
Having the printer routines called via the Nas-Sys UOUT routine is a
necessary evil when the program is in ROM, but a RAM version can be easily modified
so that the printer is directly accessed when the P command is used.
The required changes are:
Existing Replace with
B859 DF) C3 JP ppaq
B85A 6B +) SCAL UOUT qq
B85B C9 RET pp
where ppqq is the start address of a printer subroutine.
The next problem is that the N command (return to Nas-Sys) operates by
Executing from location 0000. Unfortunately that location is now the CP/M warm
start and so the command does not have the required effect. A simple call to MRET
doesn’t work because Naspen has modified the Nas-Sys work space and the latter
looks silly with the Upper and Lower case convention reversed! I have added the
following code to the end of the program where the original authors have
conveniently left 5 spare bytes:
BFFB cD )
BFFC OD ) CALL STMON
BFFD OO )
BFFE DF ) £SCAL MRET
BFFF 5B )
(If you don’t understand this you haven’t read your Nas-Sys manual)
This new segment is called by modifying the execution address of the N
command in the Naspen command table as follows:
Existing Replace with
B99A 00 FB ) the start address of
B99B 00 BF ) the new segment above