80-Bus News


July–October 1982, Volume 1, Issue 3

Page 8 of 51

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 0 or 100H and produce two versions of the same program very easily. VRAM must be modified also, of course.

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:

ExistingReplace with
B859DF)C3JP ppqq


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:


(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:

ExistingReplace with
B99A00FB)the start address of
B99B00BF)the new segment above

Page 8 of 51