Re: XIEEE

From: Marko Mäkelä (msmakela_at_cc.hut.fi)
Date: 2002-01-21 08:31:57

I'm resending this bounced message.
---------- Forwarded message ----------
Message-ID: <006301c1a130$c2dd4df0$0271a8c0@home.de>
From: "Spiro Trikaliotis" <spiro.trikaliotis@gmx.de>
To: <cbm-hackers@cling.gu.se>
References: <A5CD226B2C9DD51181DC0002A55CEEB883BCDE@wntsv151.abpnet.nl> <200201192045.VAA24000@smtp.hccnet.nl>
Subject: Re: XIEEE
Date: Sat, 19 Jan 2002 22:32:13 +0100

Hi Ruud,

you wrote:

> So I know know where to look for :) But one question remains: the 1541 
> has no NRFD-line, how is the feedback done here (maybe pulling DATA 
> or CLK or even both Low)?

All addresses I give are for the C64, except when it is in the format
8:$xxxx, when it indicates a 1541 address.

When the IEC bus is closed, the computer sends a listen and immediately 
an unlisten (if the secondary address is positive) ($F642-$F658).

The listen works as follows:

The computer sets ATN ($ED2E-$ED33), takes CLK low ($ED37) and DATA 
high ($ED3A). Then it waits 1 ms ($ED3D) to let all devices react. The
devices have to pull DATA low. If DATA is not low, we get a device not
present error (check in $ED44-$ED47). Now, CLK is pushed high again
($ED49).

Now we get a wait ($ED5A-$ED5D): We wait, until DATA is high. This
waiting doesn't have any time-out, so a device is free to delay this
as long as it wants.

Remember: The DATA line is held low by hardware on the floppy side
when an ATN is encountered (the XOR UD3, 74LS86, does this). The 
IRQ-Routine (8:$FE67-FE84 and 8:$E853-$E85A) just sets a flag.

Now, the main loop (starting at 8:$EBE7) tests this flag (8:$EC00-$EC04)
and jumps to the bus routine if it is set (8:$E85B). This bus routine
sets CLOCK high, DATA low (8:$E86D-$E870 - but: It is already low because 
of the ATN) and clears the answer for the ATN (8:$E873-$E878 - UC3.PB4 is 
set high, so the ATN does not hold DATA low anymore. But it is low since 
we already set DATA OUT, UC3.PB1, to hold DATA low.

Now, it waits for CLOCK to become high again and then gets the command from
the bus.

So, we see set when the floppy is busy, it does not have time to go in
the main loop, thus it holds DATA low when ATN is selected all the time, 
so the computer cannot do anything but wait.

I hope I have written all correct.

Spiro.


       Message was sent through the cbm-hackers mailing list

Archive generated by hypermail 2.1.1.