[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Apple II Pi
Here is an update to Apple II Pi that I thought might be of interest to anyone trying it out. You can always get the code from github.com:/dschmenk/apple2pi
The big addition is the ability to read/write the Apple II memory as well as call a routine. The serial protocol between the Apple II and RPi is able to still handle its input duties for the keyboard and mouse while sending blocks of bytes for reading and writing. The ability to call and arbitrary address is indeed powerful, but fraught with danger. If you hang the Apple II, it can't respond to the keyboard and mouse. But, assuming you haven't overwritten the actual A2PI code, a simple press of RESET will get everything re-synced.
Now, all this is great, but how do you get access to such cool features? Glad you asked. I implemented a socket interface to the a2pid daemon that allows you to send the memory and call requests to the Apple II. To test it, I wrote a very simple monitor program (compatible with the Apple I monitor) that allows you to view, change, and execute memory on the Apple II from a Linux machine. And not just from the RPi; because I used sockets for the interface, you can run the monitor program remotely. Many of us have tried to get our Apple II's on the internet - but usually doing things like web browsing or telnet. This turns it all around. The Apple II is on the net as a programmable device, not unlike Arduino, but with a socket interface. BTW, I use port 6502 for access to the a2pid server ;-) I also added a tool I wrote for Apple 1 development that takes a binary file and spits out an Apple 1 monitor compatible listing (useful to download over a keyboard<->serial interface available for the Apple 1). The reason is: because the Apple II Pi monitor program runs as a console app, you can pipe the output of a binary file through the converter into the monitor program for ease of development and code download.
Next up is to write a FUSE filesystem driver to read and write to physical ProDOS volumes from Linux. Since the Apple II is actually running ProDOS, I just have to download some wedge code to the Apple II, call it remotely, and transfer the data back and forth. The tough part is figuring out how to map the ProDOS metadata to Linux filenames.
Lastly, this isn't really tied to the Raspberry Pi. If you have a modern Linux distro, the only change you would have to make is the #define in a2pid.c that is the name of the serial port to open. I know, it should be a command line argument, I just haven't gotten there yet.
Dave...