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:
Existing | Replace with | ||||
---|---|---|---|---|---|
B859 | DF | ) | C3 | JP ppqq | |
B85A | 6E | ) | 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 | 0D | ) | CALL STMON |
BFFD | 00 | ) | |
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 |
Page 8 of 51 |
---|