On Mon, 22 Feb 1999, Alex Wulms wrote:

> Thinking that you should set the interruptvector at #C000 when you set I to 
> #C0 is a commonly made mistake in the MSX world. You should set your 
> interruptpointer at address #C0FF instead. As some of you might know, the 
> databus in the MSX is connected to VCC with pull-up resistors. As a 
> consequence the Z80 will always fetch the value 0xFF when reading from the 
> databus at a moment that no device is writing to the databus. For example, 
> when the Z80 reads the databus in IM2 after having received an interrupt 
> request.

This is true on a standard MSX with correct devices connected to it. If on
the other hand a device only checks IORQ and not M1, it might put data on
the bus when it is read at interrupt-time (In this mode IORQ and M1 are
both active).

Conclusion: Putting the interrupt vector on [I]fe (I believe the
last bit is set to 0, since a 2-byte address is fetched) should be enough
on a corruct machine, but it is more secure to fill the whole table from
[I]0 to [I]fe, so:

jumptable: equ  &hc000
           ld   a,.high. jumptable
           ld   i,a
           ld   hl,interrupt_routine
           ld   (jumptable),hl
;fill table up
           ld   hl,jumptable
           ld   de,jumptable+2
           ld   bc,&Hfe
           ldir

Bye,
shevek

---
Visit the internet summercamp via http://polypc47.chem.rug.nl:5002


****
MSX Mailinglist. To unsubscribe, send an email to [EMAIL PROTECTED] and put
in the body (not subject) "unsubscribe msx [EMAIL PROTECTED]" (without the
quotes :-) Problems? contact [EMAIL PROTECTED] (www.stack.nl/~wiebe/mailinglist/)
****

Reply via email to