Short, short questions

2008-05-20 Thread Thomas Harte
I'm about to finish my lunch break, sorry if I sound slightly short... 1) is there any pattern or logic to the values placed on the bus during interrupts? I guess an equivalent question is: what realistic options do I have on the Sam for catching and processing interrupts? 2) are there any

Re: Short, short questions

2008-05-20 Thread Andrew Collier
On Tue, May 20, 2008 at 02:03:57PM +0100, Thomas Harte wrote: I'm about to finish my lunch break, sorry if I sound slightly short... 1) is there any pattern or logic to the values placed on the bus during interrupts? I guess an equivalent question is: what realistic options do I have on the

Re: Short, short questions

2008-05-20 Thread Andrew Collier
On Tue, May 20, 2008 at 03:22:54PM +0100, Andrew Collier wrote: correction: ld a,h 4 sla l 8 rla4 add table/256 8 ld h,a 4 = 28 You can also shave a little more time if you're willing to rearrange the table: Instead of word pairs (low

Re: Short, short questions

2008-05-20 Thread Thomas Harte
While thinking about it during the afternoon, I have decided that since this table is absolutely fundamental to my program (it's part of the table based 2.8x2.8 multiply), I'm just going to centre it on address 0. Then I can cut the ld bc and the add hl, bc. I'm happy to rearrange my

Re: Short, short questions

2008-05-20 Thread Andrew Collier
On Tue, May 20, 2008 at 07:20:48PM +0100, Thomas Harte wrote: Obviously the second is faster — but I'm curious about your cycle counts. All the z80 documentation I have lists add hl, ss as 11 t- states. Why have you turned that into 16? By mistake :) I'm working from google, and misread

Re: Short, short questions

2008-05-20 Thread Edwin Blink
1) Normally the value is FF and it looks pretty stable too considering PRO-DOS uses IM 2 without a vector table. So your choices are IM 0/IM 1 both do a RST 38H or IM 2 which 'calls' the adress found at the address pointed by I register (MSB) and the value on the databus (LSB). Like the

Re: Short, short questions

2008-05-20 Thread David Brant
Mode 2 uses a table with 128 word address but as byte high,byte low not the normal low, high bytes So if you set your org/dump address to ??FF (i.e. ??00-1) and then do DEFWmode2.i,mode2.i so you have 129 words. mode2.i: di push

Re: Short, short questions

2008-05-20 Thread Thomas Harte
Surely set would only work if I had an unsigned offset from the beginning of a table? I'm using a signed offset from the middle of a table. On 20 May 2008, at 19:48, Edwin Blink wrote: 1) Normally the value is FF and it looks pretty stable too considering PRO-DOS uses IM 2 without a

Re: Short, short questions

2008-05-20 Thread Edwin Blink
From: Thomas Harte Surely set would only work if I had an unsigned offset from the beginning of a table? I'm using a signed offset from the middle of a table. it works the same as ADD HL,HL ADD HL,BC the difference is you store the table entries LSB,MSB so you need the ADD HL,HL First you

Re: Short, short questions

2008-05-20 Thread Edwin Blink
Boy Do I feel silly I missed that ADD HL,BC. Edwin - Original Message - From: Thomas Harte [EMAIL PROTECTED] To: sam-users@nvg.ntnu.no Sent: Tuesday, May 20, 2008 9:53 PM Subject: Re: Short, short questions Surely set would only work if I had an unsigned offset from the

Re: Short, short questions

2008-05-20 Thread Andrew Collier
Hi, I'm sceptical about this claim. I've never heard anybody say that the vector formed is big-endian - it's just you don't know the byte offset from which the interrupt vector will be fetched. (As Edwin says, it is usually 255 - which is odd so your 1-aligned table will usually work -

Re: Short, short questions

2008-05-20 Thread David Brant
This was based on info from a book called z-80 Workshop manual by E.A Parr. The I register gives the high part of the table and the hardware gives the low part to the table then takes that word for the service routine. So if you start from one byte before the table and use the same address for

Re: Short, short questions

2008-05-20 Thread David Brant
I've just been looking at my books. Although I can't find the bit that said about swapping to high,low but I'm sure that I did read it somewhere. It does say that the device only gives the bits 1-7 and bit 0 is always 0 giving 128 possible addresses. Dave - Original Message - From:

Re: Short, short questions

2008-05-20 Thread Andrew Collier
Hi, In a spirit of scientific enquiry, let us perform an experiment by running the code below. On SimCoupe, at least, the border turns bright yellow, meaning it ran the interrupt vector at 0x9a92 (that is, the 256th and 257th bytes of the table). Anybody got real hardware handy?

Re: Short, short questions

2008-05-20 Thread Edwin Blink
All 8 bits are used for LSB of the vector. The part where bit 0 always is zero is when one of the Z80's IO chips is connected (PIO,SIO,CTC etc) is connected. Edwin - Original Message - From: David Brant [EMAIL PROTECTED] To: sam-users@nvg.ntnu.no Sent: Wednesday, May 21, 2008 1:02

Re: Short, short questions

2008-05-20 Thread David Brant
I thought the idea of mode2 was you could have different vectors for different devices connected well this throws a spanner in the works. But then again is there any hardware for the SAM that uses them? I think it must have been an old spectrum book that said this about swapping high,low bytes.