Mark,
I think it would be good to determine whether this is a hardware or software problem.
I generally agree with Frank that it's hard to imagine a hardware problem that could be
causing this behavior since the only hardware is straight-through wires and all of them
are used the same for reading and writing. But who knows...
To figure out whether it's a software problem or not we need to upload a known-good
firmware, but that's tricky since the regular way to upload a firmware via Arduino is
to re-compile from scratch which could introduce problems with library versions etc...
I have attached a ZIP archive that contains the means to upload a known-good binary
firmware (which I've tested to confirm that writing to SD card works).
The archive contains the following files:
- altair8800.bin: binary of Altair8800 firmware for the Due.
This
was compiled from the latest sources in GIT with the A6A7 serial port
enabled (like in Chris' instructions) and Z80 support enabled. - blink.bin: binary of the small "blink" example for Due
Can
be used for testing the upload . After uploading the "protect" LED
should blink slowly (obviously uploading this this wipes out the Altair
firmware) - bossac.exe: Executable to upload a binary file to the Due.
This is part of the Arduino environment but it's tricky to find so I included it here. - upload.bat:
Batch file that prepares the Due for upload and calls bossac.exe with the correct parameters.
To use this, do the following:
- Rename the file from .bin to .zip
- Extract the contents into a directory
- Start a Windows command prompt and "cd" to the directory created above
- Connect a USB cable from your computer to the Due's programming port
- Find the COM port number for the Due. The easiest way to do this is to start the Arduino IDE and look which port it is using.
- Enter the following on the command line:
upload altair8800.bin COMn [where n is the port number determined above]
This should upload and verify the firmware.
Now try and write something to the SD card in the Altairduino (in CP/M or whereever).
If it works, you know that there was some issue with the firmware you had compiled and uploaded before.
If it still does not work then it's a hardware issue.