.:[48 Hours of Apple IIe Hacking]:.

Topic: The Apple IIe and CP/M
Date:  2010 NOV 09

Several months ago, I picked up a complete Apple IIe setup close enough to make shipping reasonable. It included everything but the IIe cover and the 6 key! The purchase consisted of a standard IIe, a DuoDisk and the Apple green phosphor composite monitor, along with a number of expansion boards. These included two Super Serial cards, a 64K 80-column card, the DuoDisk controller board, a Grappler+ printer board, and some sort of analog/digital interface board with an external breakout box. There was a floppy in the drive when I received it, which contained some engineering analysis routines. That, and the presence of the A/D I/O card suggest the machine was used in an industrial environment, rather than an educational or home environment.

Apple IIe with top open Final CP/M card arrangement

Over the weekend, I finally got some time to set the machine up and play with it. I removed all of the cards except for the 80-column card and DuoDisk controller to confirm the core system worked: it booted the floppy included with the IIe first-time. After that, I re-jumpered a Super Serial Card and plugged it into slot #2 and bare metal bootstrapped ADTPro. If you have an Apple II system and don’t know about ADTPro, you’re missing out – it allows the transfer of disk images to physical Apple II floppies using the serial port, Ethernet, or audio ports. All you need is the Apple II machine and another computer capable of running their Java server application.

After connecting the IIe with my disk imaging machine using a SC821 PLUS Smart Cable I bootstrapped ProDOS and then sent the ADTPro serial client over. I formatted a few floppies, made a floppy copy of ADTPro to avoid the slow serial bootstrap, and transferred a few CP/M images over, available through the Asimov FTP Archive. I then installed my CP/M card: a no-name 1:1 copy of the Microsoft SoftCard.

Microsoft SoftCard clone

Being a 1:1 copy, this card works just fine with everything intended to run with the authentic SoftCard. Of the several versions of CP/M available from the Asimov archive, I ended up choosing the CP/M 2.23B release from DATASOFT, which supports 63K RAM. After cleaning the Z80 card’s intermittent connector, the machine boots quickly and consistently to CP/M:

Apple IIe booting CP/M DATASOFT CP/M 2.23B prompt

Up to this point, getting CP/M working with the IIe had been smooth sailing. Now that I’d formatted a few floppies in the Apple 16-sector CP/M format, I was ready to get some serial file transfer software moved over to the IIe. But how? No other machine I owned could read or write the Apple CP/M format. CiderPress can read CP/M images, but can’t create or write them. I first tried to follow Bill Buckels’ PDF Guide to transferring files between Apple DOS 3.3 floppies and Apple CP/M floppies. It worked, to a degree. I was trying to transfer the generic hex file for Kermit-80 over, as well as an Apple-specific overlay and MLOAD.HEX. The Apple overlay and MLOAD transferred, but the Microsoft-provided transfer utility for DOS 3.3 and CP/M failed with the larger generic Kermit-80 hex file. After hours of hacking away at this method, trying it both with real hardware and the A2 Oasis emulator, I decided to give up around 2:00 AM. Unfortunately for sleep, I stumbled across an Apple CP/M disk image containing Modem7, the ever-popular CP/M terminal software! The disk image even contained the Apple-specific overlays for Modem7. While it wasn’t the final solution in file transfer, being limited to 1200 baud, it would allow me to get the Kermit-80 files over to the IIe.

Naturally, Modem7 didn’t work immediately. Even after installing the Apple II CP/M overlay with the provided Modem7 overlay linker, Modem7 crashed after trying to declare a baud rate for the Super Serial Card. I decided to take a look at the overlay file using the TYPE command, and discovered the problem: there were three equates for three different types of Z80 cards. The Microsoft SoftCard wasn’t the selected type. Correcting this line would be easy if I could get a new overlay copied to the disk, but I couldn’t. It would also be easy to fix it with a local editor and assemble using CP/M ASM.COM…except I didn’t have an editor. Well…there was ED…

By now it’s 3:30 AM, and I’m reading through the CP/M 2.2 reference manual that came with the Ohio Scientific Challenger III. It contains an extensive chaper on getting started with and using ED. After discovering that ED didn’t load files into its buffer automatically, and that I needed to do that with 200A (add 200 lines from the source file to the working buffer) I was able to display the overlay source and figure out which lines needed edited. Fortunately, ED does display line numbers as a source file is listed. Knowing the line number doesn’t mean you can simply select it, move around within the line with the arrow keys, and edit it as you would with a modern text editor…rather, I found it simpler to insert a new line below the one to be changed, type the line as I wanted it to appear, and then kill the old line. After far too long, I got the overlay looking like it should for my setup, and got to leave ED around 4:00 AM. The overlay assembled…it installed into Modem7…Modem7 didn’t crash when I loaded it…baud rate sets OK. Finally, I attempted to send a text file from my disk imaging machine to Modem7 using XMODEM with HyperTerminal. SUCCESS!

Being after 4:00 AM, it was time for bed. Transferring and building Kermit-80 would have to wait. After too little sleep and completing the day’s tasks, I sat down to finally get Kermit-80 running under CP/M on the Apple IIe. Here’s a good guide as to what you’ll need to get Kermit-80 put together for your CP/M machine. I used Modem7 to transfer copies of the generic Kermit-80 hex file, MLOAD.COM, and the Apple-specific overlay to a new floppy. For my setup, I used the CPVAPL.HEX overlay – Apple II, Z80 Softcard, and 6551 ACIA. After the slowish transfer of more than 70K at 1200 baud, I built the Kermit-80 COM file:

Kermit-80 running on the IIe

Unsurprisingly, it works! Now I can transfer files between my Apple IIe running CP/M and any other serial-equipped machine.

If I hadn’t came across the Modem7 disk image, I’d have probably PIPed the files between the Apple IIe and my Kaypro II. This would have been a lot slower, since the IIe apparently defaults to 300 baud for the Super Serial Card when using it as the PUN: or RDR: device (I found this out through trial-and-error later on). That method would have also required writing a BASIC or assembly program to remove the leading and trailing nulls from the PIP transfer. Still, it’s a viable alternative to not being able to move files!

To help future retrocomputing hobbyists, I do plan on imaging and uploading my Kermit-80 disk, and making both that and the Modem7 image I found available through this website. Keep an eye out in this section for a future direct link…but until then, just use the “Contact” link at the top of the page to request a copy of the image file.

Copyright (c) 2023 Jonathan Chapman