I decided to leverage my recent field learnings with embedded systems in order to completely rewrite 1541Host, a simple implementation of C64 serial routines for disk drives. After an initial thought to call it “EICHost”, I eventually decided to call my rewrite “IECHost”.
I decided to start from scratch and follow a completely different approach with EICHost, compared to the one I took for 1541Host. The reason is that the latter is not easily maintainable any more for me, being based on old ideas and ways to do thing that I moved away from a long time ago. I also changed the hardware so that there is a chance for me to run my 6510 emulator on the same hardware, without significant changes to the code fed into it.
At the moment I am struggling with something I don’t remember having come across. I can successfully send control codes such as LISTEN and UNLISTEN, but when it comes to TALK and receiving data from the 1541 after a bus turnaround, things are not so successful any longer: I only get 7 bits back. The clock, driven by the 1541 while it’s TALKing, seems to freeze after bit 8 is ready:
As it’s clear from the above image, when bit 8 is being prepared there’s a short spike on the data line which then gets correctly back to 0V to indicate bit 8 being a 0. At that point the clock rises to indicate that the data line is ready for being read but then it’s never taken back down to 0V, which is required to happen before IECHost takes data to 0V to acknowledge that all 8 bits were read.
I might not have the time to figure out what’s going on there any time soon, but I really don’t want to look at my previous code for now 🙂