Exceltronix Multiflex Super System - page 4 of 5

Jeff Avery on the Web

HOME        SITEMAP        ABOUT        CONTACT        INTERESTS


Z80 Exceltronix Multiflex Super System (continued)

August 2000 - memory problems: I began to work with .ARK files from the Web and found that I was getting integrity checks. I noticed that if I copied a .ARK file from one disk to another the new copy had even more errors! I downloaded a new file copy programme that did a verify after the copy was completed. It's verify routine failed on the copies! So I assumed I had a problem with the disk drives. I swapped drives, changed the termination resistor setup, added code to the software to ward off any imaginable problem, but still the problem persisted. I then recalibrated the floppy drive controller but this did not help.

Next I downloaded a file compare programme and compared the file being copied to the new file created. I found that the problem was always in the same byte and that bit 2 of the byte in the new copy was always on when it should have been off. I thought the controller chip or support circuitry was up the creek but then I had the idea that maybe it was a memory problem. So I downloaded a couple of memory-checking programmes but both gave the memory a clean fill of health, At each stage of this saga I ran out of ideas for a few days before something new occurred to me. This time I still had a feeling about the memory, even though the memory-check programmes said it was O.K. So I pulled the CPU board and slightly lifted each memory chip and then pushed it back in again. While I was about it, I swapped the chips for bits 1 and bit 2. I then powered up and Z.MON wouldn't boot!!

I pulled the CPU board again, took out each memory chip and put it back in again. This time ZMON booted and copying a file worked with no errors. Hooray! I recopied all the files that I had copied in recent times to ensure a good copy and had been at it for about an hour when I got another error! I pulled the CPU board, pulled all the memory chips, sprayed their pins with contact cleaner, and reinserted them, putting the bit 1 and 2 chips back in their old positions. I powered up and copied a file… I was back to the original bit 2 error!

I pulled the CPU board, pulled the chip for bit 2 and replaced it with a chip from another board I had. I powered up, did a file copy and it was error free. Hooray! That turned out to be a permanent fix.

Interleave factor: I did one more thing that I had been planning for a while but had kept putting off. CP/M uses an interleave factor of 6 for its drives. That means that when accessing a disk, it doesn't use sectors in the order 1, 2, 3, etc. but instead uses the order 1, 7, 13, 19. That's because when it comes to read or write the second sector it's too late for sector 2 since the disk has been spinning while CP/M was away processing the data. By writing every 6th sector, that sector hasn't yet passed the read/write head when CP/M goes to read or write it.

I wrote a programme to try different interleave factors and found that using every 6th sector wasn't enough. When  CP/M goes to access the sixth sector it has already passed the read/write head and so the disk controller has to wait for a full disk rotation until the sector comes by again. That means that it reads or writes only one sector per rotation. I did some testing and found that my CP/M needs to use every 10th sector (1, 11, 21, etc.). Then, when it has read or written sector 1 and comes back to write sector 11, sector 11 is just about to go under the read/write head and there is no wait. This change significantly speeded up disk access - programmes now loaded 2 or 3 times faster!

Text editor: In the continuing search for an editor to replace CP/M’s ED, I found TED. It is much easier to use than ED since it deals with whole lines instead of with characters within the line. It has a few peculiarities so I'll continue to look for further improvements.

XMODEM: I downloaded a programme from the Web called MODM700. This is a CP/M terminal emulation programme that can transfer files between computers. Unfortunately, it didn’t seem to fit the bill. I managed, though, to download the specifications for XMODEM transfers. That turned out to be a very useful document. I'd always wanted to fiddle with XMODEM and now I could! Unfortunately, the information on cyclic redundancy check (CRC) was rather difficult to understand but checksum was easy and was easily enough for what I needed. So I set about adding XMODEM to my DOWNLOAD program. Of course, there were several snags on the way and at times I thought it would never work. DDT is a powerful debugger but it can't handle stops or single-cycling of Z80 instructions. However, I did get XMODEM to work eventually.

September 2000 - macro assembler: I had previously downloaded a macro assembler, MACASM, and now took a look at it. Steve Rimmer had written some articles describing programs he had written with a macro assembler. One of them, DISKTROL, a disk sector editor, looked particularly useful. I tried assembling it but MACASM turned out to be a disappointment as it can't handle nested macros, a DISKTROL requirement. I fiddled with it for a while and then junked it. Then I was able to download the original Digital Research MAC.ASM and its documentation. The documentation, in common with
all Digital Research documentation on the Web, was created by scanning with an OCR (optical character recognition) reader. The result has hundreds of errors that nobody has corrected. I spent the next week going over the documentation, learning and correcting as I went. To say the least, it's difficult to correct something that you are just learning! Anyway, I did 80 of the 104 pages which I decided would be sufficient since I was a little tired of the job! Now I was able to use MAC.ASM and try some of Steve Rimmer's programs.

This essentially completed my work on the Exceltronix and CP/M: a great project that took me a year from start to finish! At left is a photo of my final setup.


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