[A83] Re: im 2


[Prev][Next][Index][Thread]

[A83] Re: im 2




> Normally the least significant bit should indeed be 0, but on the 83- this isn't the case. It is sometimes 1, so you can only use addresses like $8787. So now I want to know if this is also the case on the 83+(SE).

This I do not know, but tell me how you checked it out, and if you checked
the address that was read from the pointer table, it might be that the last bit
is discarded.




> 
> 
> > ----------------------------------------
> > From: Peter-Martijn Kuipers <hyper@hysoft-automation.com>
> > 
> > Fron your explanation, I understand this:
> > 
> > mem_address_$HH00:
> > $HH00: .dw pointer1 
> > $HH02: .dw pointer2
> > $HH04: .dw pointer3
> > $HH06: .dw pointer4
> > $HHxx: .dw ...
> > 
> > ;if you do:
> > ld i,HH ; HH is highest bytes of mem table above.
> > im 2
> > 
> > ; then if an interrupt occurs, the interrupt device produces an 8 bit number,
> > ; e.g. 06h, whigh is used as the lower bytes. (the produced byte itself,
> > ; I'll refer to as $II.
> > ; the address would then become $HH06. The word from that place is read, 
> > ; and a jump takes place to the address the word at $HH06 references.
> > 
> > ; Naturally, the lowest bit of $II would be 0 (producing an even number), 
> > ; because a read from an uneven address would give an invalid pointer address
> > ; this could be interpreted as a 7-bit number.
> > 
> > ; But when you say that an 8-bit number is produced, you mean that the lowest
> > ; bit (bit 0) of $II is sometimes 1 too, thus producing an odd address???
> > ; Or do you mean that it is an 8-bit byte with bit 0 on 0?
> > 
> > --Peter Martijn
> > 
> > > 
> > > According to the cpu manual, when you use interrupt mode 2, you should create a pointer table somewhere in memory, then put in the I reg the most significant byte. When an interrupt happens the Z80 takes the I register and the interrupting device provides the lower 8 bits. Then it jumps to the pointer stored at the address that is formed. The manual also says that the lowest bit provided should always be 0 to create even numbers, because pointers are 16 bit and therefore take 2 bytes. For now I've discovered that this isn't the case on the 83-. The interrupting device seems to generate an 8 bit numbers (not 7). But is this also on the 83+(SE)?
> > > 
> > > --Tijl Coosemans
> > > -----------------------------------------------------
> > > Mail.be, Free WebMail and Virtual Office
> > > http://www.mail.be
> > > 
> > > 
> > > 
> > 
> > 
> > 
> 
> -----------------------------------------------------
> Mail.be, Free WebMail and Virtual Office
> http://www.mail.be
> 
> 
> 





Follow-Ups: References: