| RE: [hatari-devel] Re:Microwire register value on Falcon |
[ Thread Index | Date Index | More lists.tuxfamily.org/hatari-devel Archives ]
Hi All,
Attached you can find Python parser (instead of HTML5 one).
Below you can find my outcome for STE microwire test.
In my test Blitter reads microwire data every 8 cycles. It reads first value 12 cycles after write value to microwire's mask (12 cycles = 8 cycles for start blitter, 4 cycles for blitter's delay).
CPU reads microwire's data every 12 cycles. CPU reads first value 4 cycles after write value to microwire's mask (4 cycles for read instruction - move).
STE Microwire starts rotating data:
- in my worst CPU case after 132 cycles (11 times value $04e2, reads every 12 cycle);
- in my best Blitter case - immediately.
CPU needs 11 reads/132 cycles to finish, and reading sequence is: $04e2, $1388, $2710, $9c40, $3880, $e200, $c400, $1000, $2000, $8000, $0000
Blitter needs 16 reads/128 cycles to finish, and reading sequence is: $04e2, $09c4, $1388, $2710, $4e20, $9c40, $3880, $7100, $e200, $c400, $8800, $1000, $2000, $4000, $8000, $0000
If I understand those figures correctly, STE Microwire rotates data by 1 bit every 8 cycles.
In case of Hatari, reading sequence for CPU and Blitter looks almost the same $09c4, $1388, $2710, $4e20, $9c40, $3880, $7100, $e200, $c400, $8800, $1000, $2000, $4000, $8000, $0000
CPU needs 15 reads/180 cycles
Blitter needs 14 reads/112 cycles
It seems that the difference between Hatari and real STE is that in Hatari:
- There is no delay in starting rotating Microwire's data/mask;
- Microwire doesn't rotate data every constant number of cycles but when its register are accessed - every 12 cycles for CPU, every 8 cycles for blitter;
To be honest I'm not sure if there is a need to implement exact emulation
And sorry for that a bit boring email :)
BR
Cyprian
STE CPU - Microwire Data read:
pass 1 pass 2 pass 3 pass 4
------ ------ ------ ------
$04e2 $04e2 $04e2 $04e2
$04e2 $04e2 $04e2 $04e2
$04e2 $04e2 $04e2 $04e2
$1388 $04e2 $04e2 $04e2
$2710 $04e2 $04e2 $1388
$9c40 $04e2 $04e2 $2710
$3880 $04e2 $04e2 $9c40
$e200 $1388 $04e2 $3880
$c400 $2710 $04e2 $e200
$1000 $9c40 $04e2 $c400
$2000 $3880 $04e2 $1000
$8000 $e200 $1388 $2000
$0000 $c400 $6710 $8000
$0000 $1000 $9c40 $0000
$0000 $2000 $3880 $0000
$0000 $8000 $e200 $0000
$0000 $0000 $c400 $0000
$0000 $0000 $1000 $0000
$0000 $0000 $2000 $0000
$0000 $0000 $8000 $0000
$0000 $0000 $0000 $0000
STE Blitter - Microwire Data read:
pass 1 pass 2 pass 3 pass 4
------ ------ ------ ------
$04e2 $04e2 $04e2 $09c4
$04e2 $04e2 $04e2 $1388
$04e2 $04e2 $04e2 $2710
$04e2 $04e2 $09c4 $4e20
$04e2 $04e2 $1388 $9c40
$04e2 $09c4 $2710 $3880
$04e2 $1388 $4e20 $7100
$04e2 $2710 $9c40 $e200
$09c4 $4e20 $3880 $c400
$1388 $9c40 $7100 $8800
$2710 $3880 $e200 $1000
$4e20 $7100 $c400 $2000
$9c40 $e200 $8800 $4000
$3880 $c400 $1000 $8000
$7100 $8800 $2000 $0000
$e200 $1000 $4000 $0000
$c400 $2000 $8000 $0000
$8800 $4000 $0000 $0000
$1000 $8000 $0000 $0000
$2000 $0000 $0000 $0000
$4000 $0000 $0000 $0000
$8000 $0000 $0000 $0000
$0000 $0000 $0000 $0000
Hatari CPU - Microwire Data read:
pass 1 pass 2 pass 3 pass 4
------ ------ ------ ------
$09c4 $09c4 $09c4 $09c4
$1388 $1388 $1388 $1388
$2710 $2710 $2710 $2710
$4e20 $4e20 $4e20 $4e20
$9c40 $9c40 $9c40 $9c40
$3880 $3880 $3880 $3880
$7100 $7100 $7100 $7100
$e200 $e200 $e200 $e200
$c400 $c400 $c400 $c400
$8800 $8800 $8800 $8800
$1000 $1000 $1000 $1000
$2000 $2000 $2000 $2000
$4000 $4000 $4000 $4000
$8000 $8000 $8000 $8000
$0000 $0000 $0000 $0000
Hatari Blitter - Microwire Data read:
pass 1 pass 2 pass 3 pass 4
------ ------ ------ ------
$1388 $1388 $1388 $1388
$2710 $2710 $2710 $2710
$4e20 $4e20 $4e20 $4e20
$9c40 $9c40 $9c40 $9c40
$3880 $3880 $3880 $3880
$7100 $7100 $7100 $7100
$e200 $e200 $e200 $e200
$c400 $c400 $c400 $c400
$8800 $8800 $8800 $8800
$1000 $1000 $1000 $1000
$2000 $2000 $2000 $2000
$4000 $4000 $4000 $4000
$8000 $8000 $8000 $8000
$0000 $0000 $0000 $0000
-----Original Message-----
From: Listengine [mailto:listengine@xxxxxxxxxxxxxxxxx] On Behalf Of Konador, Cyprian
Sent: Wednesday, February 01, 2012 13:52 PM
To: hatari-devel@xxxxxxxxxxxxxxxxxxx
Subject: RE: [hatari-devel] Re:Microwire register value on Falcon
Hi All,
Maybe someone can use my Microwire test (attached) on Falcon.
It writes value $4E2 to Microwire data reg. ( -12db master volume) and writes value $7FF to Microwire mask reg. and then reads 32 words from:
- Microwire data reg. by cpu;
- Microwire mask reg. by cpu;
- Microwire data reg. by blitter;
- Microwire mask reg. by blitter.
Every test is done 4 times. Final result is written to file RESULT.BIN
Attached you can find source code, compiled program MCRW.PRG and my results for Hatari, 1040 STE, MegaSTE 8Mhz and MegaSTE 16Mhz+Cache.
There is also small html parser - MCRW.html. It works under Chrome 11, Firefox4 (HTML5 File API and Drag and Drop needed) - Just open that document in a web browser and drag&drop RESULT.BIN on it.
Thanks
BR
Cyprian
-----Original Message-----
From: Listengine [mailto:listengine@xxxxxxxxxxxxxxxxx] On Behalf Of laurent.sallafranque@xxxxxxx
Sent: Wednesday, February 01, 2012 11:40 AM
To: hatari-devel@xxxxxxxxxxxxxxxxxxx
Subject: Re: [hatari-devel] Re:Microwire register value on Falcon
Hi,
I think it needs a few more tests here (especially for $ff8924).
For $ff8922, does it still read 0 after a write of a value != 0 in the register ?
I mean does it still read 0 after a MOVE.B #$A5,$FF8922.B (or any value you want instead of $A5).
For $FF8924, according to what I saw in team.prg (a soccer game that is supposed to run on STE and Falcon), the program loops forever into :
$0397bc : 31fc 07ff 8924 move.w #$7ff,$ffff8924.w
$0397c2 : 0c78 07ff 8924 cmpi.w #$7ff,$ffff8924.w
$0397c8 : 66f2 bne.s $397bc
I bypassed this by removing the microwire from the ioMemTabFalcon.c, but that's obviously not the good way to fix this (it was just for the test).
Again I would like to be sure that writing a value to $ff8924 should return this value instead of 0.
Could you do these 2 tests please ?
Regards
Laurent
----- Mail Original -----
De: "Thomas Huth" <th.huth@xxxxxx>
À: hatari-devel@xxxxxxxxxxxxxxxxxxx
Envoyé: Mardi 31 Janvier 2012 22h34:32 GMT +01:00 Amsterdam / Berlin / Berne / Rome / Stockholm / Vienne
Objet: Re: [hatari-devel] Re:Microwire register value on Falcon
Am Tue, 31 Jan 2012 13:37:05 -0500
schrieb "Roger Burrows" <rfburrows@xxxxxxxxx>:
> On 30 Jan 2012 at 21:04, Thomas Huth wrote:
> >
> > Can somebody check what you get when reading $ff8922 on a real
> > Falcon? Looking at this piece of code, I'd guess that $ff8922 is
> > hard-wired to zero on the Falcon...
> >
> >
> > > Thomas, should we remove the microwire addresses from the
> > > IoMemTabFalcon.c as I did (There's really no microwire in the
> > > Falcon) ? I know you did a lot of tests on the bus errors.
> > >
> > > Actually, it looks like :
> > > // { 0xff8922, SIZE_WORD, IoMem_VoidRead, IoMem_VoidWrite
> > > }, /* Microwire data */
> > > // { 0xff8924, SIZE_WORD, IoMem_VoidRead, IoMem_VoidWrite
> > > }, /* Microwire mask */
> >
> > According to the bus error tester (see
> > tests/buserror/results/fal_n_w.txt), the Falcon does not generate a
> > bus error here, so you should not remove these entries. I'd rather
> > guess that the Falcon always returns 0 when reading the ff8922
> > register...
> >
> That's correct, I just tested on my Falcon. It doesn't bus error (in
> supervisor state :-), and it returns zero.
Great, thanks for the test, Roger, I've fixed Hatari now accordingly.
Thomas
Attachment:
MCRW.py
Description: MCRW.py
| Mail converted by MHonArc 2.6.19+ | http://listengine.tuxfamily.org/ |