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/)
****