Exceltronix Multiflex Super System - page 3 of 5

Jeff Avery on the Web

HOME        SITEMAP        ABOUT        CONTACT        INTERESTS


Z80 Exceltronix Multiflex Super System (continued)

The other CP/M commands: I next turned my attention to the CP/M commands that are not built-in, e.g. PIP, STAT, DDT, LOAD, etc. I found source code for them on the Web but they were written in a high-level language called PLM. After further searching, I found a PLM compiler but it runs under a system called ISIS. That sent me looking for ISIS which I also found.

Up to now, all the material that I found on the Web was source code and so it was easy to assemble it on the Macintosh using an assembler programme that I wrote, and to transfer the resulting hex file from the Macintosh to the Exceltronix using a routine that I had added to the EEPROM. On the Exceltronix, the routine converted the hex back into machine language. However, the PLM compiler was in machine language and I had no way of transferring that from the Macintosh to the Exceltronix.

At first I thought I would write an XMODEM routine to run under CP/M and transfer the files using XMODEM. But the XMODEM code or algorithm that I thought I had, couldn't be found. I searched the Web but couldn't find it there, either, except for an Apple user group that would mail it to me on a disk. But I didn't want to wait for that. So, instead, I wrote a programme on the Mac to read in a machine language file and write out a new file with the bytes translated into hex characters. At the same time, I wrote a CP/M transient command that I called DOWNLOAD that would read in hex bytes and reconstruct the machine code. Since the programme would read data into the TPA (Transient Program Area), it couldn’t be located there itself. Therefore it had to relocate itself in higher memory. This gave me a few problems but I got it going over the next couple of days.

PLM and ISIS: I managed to get ISIS running under CP/M and it seemed to work as far as I could tell. However, when I tried to put all the ISIS and PLM files on a 250K CP/M diskette, I ran out of room so I had to create a separate ISIS/PLM compiler disk and an ISIS linker and relocator disk. I still didn’t know if this whole ISIS/PLM compiler thingy was going to work, especially as it came with no documentation! I did find that I didn’t have enough free memory and so I relocated the EEPROM higher in memory to provide more room. The Exceltronix documentation explained how to do that.

By 24th May I had compiled, linked, relocated and converted to CP/M the STAT, ED and PIP programmes and they seemed to work. The compiles took over 20 minutes each! Once I had PIP done and tried it, it had the audacity to quit with an error message that my version of CP/M (2.2 ) is not recent enough! I changed the message to a warning and, so far, it seemed to be working O.K. (it wanted version 2.8 or higher!). Having PIP is essential since it allows one to copy files from one diskette to another. Copying files in DOS uses the command:    COPY a:*.* b:    but in CP/M it's    PIP b:=a:*.*   I also have ASM done but this was written in assembler and not PLM so I was able to assemble it with my own assembler programme.

Next I turned to LOAD which takes the hex output from ASM and converts it into an executable (i.e. .COM) file. LOAD was written in PLM and the source code was missing half of it's routines. My first compile had about 100 errors! So I began programming in PLM to provide the missing stuff, gleaning routines from PIP and STAT. In this way I managed to get a clean compile. There’s still a lot going on but the end is in sight.

June 2000: Geoffrey had sent me some articles about CP/M written by Steve Rimmer in Computing Now! magazine. I found some of Steve’s programs useful, especially those about reading and editing sectors on disk. Geoffrey had also managed to get hold of a CP/M disk but I was not able to read in on our setup. After some trial and error using Steve’s programs, I found that the disk used five 1K sectors per track with an interleave factor of three. I was able to write routines to read it and managed to retrieve the programs DDT and DUMP that we didn’t have before.

July 2000: Now that I had a working CP/M system, I was able to write assembler programs directly in CP/M. Unfortunately, the ASM programme used only 8080 mnemonics rather than Zilog mnemonics and handled only 8080 commands but I soon became proficient at using it. However, using the CP/M editor, ED, is a pain. I spent a lot of time looking for a replacement and found Dr. Dobb's Full-screen Editor. Unfortunately, it turned out to be written in C so it would be of no use unless I branched out into C. It also came with a couple of messages saying that it has errors. I decided to scrap it for the time being.

I added a 3-1/2” drive to my setup as drive D and found that it could contain 80 tracks rather than 40 and so had a capacity of 500K per disk. I updated my FORMAT programme so that it automatically formatted and verified 80 tracks if drive D was specified. I updated my DOWNLOAD programme so that it automatically saves to disk to the drive and filename specified.

I did a complete rewrite of my CP/M BIOS which turned out to be more of a job than I had anticipated. The new version intercepts all drive errors and handles them properly without the need for a reset. A caveat is that the error handling only works for programs that use CP/M calls; if they do their own disk access then they must handle the errors themselves.

<-Computers             Z80 Exceltronix Page:     <-Previous             1            2            3             4            5            Next->