Re: C64 IEEE interface

From: Michał Pleban <>
Date: Fri, 07 Nov 2014 13:04:48 +0100
Message-ID: <>
Hello! wrote:

>> * If flag not set, call IEEE first. .....
> Even a better idea!
> The only disadvantage of the flag is that you need to reserve a 
> byte, but which one? That is something to be discussed.

Yes, this is true. I had more luck here because I used some of the
unused screen mnemory bytes - the screen takes 2000 bytes and you have
2048, so some are free and I highly doubt any CBM-II software would like
to overwrite them (I might be wrong of course). On the C64, the sprite
pointers sit there, and generally it's hard to find a byte that is not
used by any of the millions available C64 applications.

> I'm going to program two versions anyway: the "IEEE first" one and 
> this "flag" one. So anybody can pick his favourite

Well, it's not that easy. The problem is, not all IEEE operations will
return a timeout or whatever error when the device is not present. And a
IEEE transmission requires many calls. First you call LISTEN, then you
send a secondary address, then you send some bytes, then UNLISTEN. As I
recall, only some of these will return a meaningful error when the
device is not present, because most of the time, these operations just
set some bits on the IEEE port and do not wait for the device to answer
(I recall vaguely that at least the secondary address routine did that).
So you need the flag to remember the device status for the other calls.

And even if you managed to did it without the flag, simply waiting for
the IEEE timeout on every function call before switching to IEC
(remember, the bytes are sent one at a time! each byte requires a
separate function call and separate wait for IEEE timeout then!) will
make the IEC operation from "painfully slow" to "unimaginably slow".

If you need, I can dig my old code and try to remember what exacly
happened there and why I did this the way I did.


       Message was sent through the cbm-hackers mailing list
Received on 2014-11-07 13:00:03

Archive generated by hypermail 2.2.0.