MSX Assembly Page

Page 3/10
1 | 2 | | 4 | 5 | 6 | 7 | 8

By hit9918

Prophet (2905)

hit9918's picture

21-11-2014, 11:59

wow, there is the "Mystery fast loop calculus" Big smile
no more LD A,B : OR C , 16bit loop fullsped.
sometimes one has conditional exit and would like to have BC back like it would normaly have counted, what is the reverse mystery formula? Smile
DEC B : DEC C : INC BC, would this work?

By Grauw

Ascended (10055)

Grauw's picture

21-11-2014, 13:00

Yes just reverse the operations.

Note that when using djnz for the inner loop the b register acts as the LSB, whereas in the 16-bit bc pair it is the MSB. This is why in the example on the MAP I input the counter in the de pair in stead, to avoid confusion about the function of b.

By Grauw

Ascended (10055)

Grauw's picture

06-03-2015, 00:41

I improved the explanation of R800 timing information in the Z80 instruction set overview article, as well as added a new column with actual R800 timing in internal RAM mode.

The timings in the table are based on research by the openMSX team and verified by myself using a different, cycle-accurate methodology.

The testing methodology I used is as follows: I have an OPL4 wave register write routine which requires at least 8 clocks between I/O instructions. One is used for a register load, the remaining 7 clocks need to be spent waiting. By using these instructions for waiting followed by a variable number of 1-cycle nop delays, I was able to acquire cycle-accurate timing information.

A few I didn’t test explicitly, because they were so similar to ones tested previously that I felt confident to copy their timing, e.g. push bc vs. push de. The results are overall quite consistent, although I was a bit surprised by ret taking only 5 clock cycles.

There are a few remaining, which I will get to later. I need to adjust my testing methodology to be able to test them (read: use OPLL in stead of OPL4).

By gdx

Enlighted (4692)

gdx's picture

06-03-2015, 00:41

Thank you for this useful site. Cool

I created a simple table of opcodes.
http://www.msxvillage.fr/upload/z80_opcodes_fr.pdf

I also put the undocumented opcodes. It's in French. If you are interested to translate it I can give you the ODT file. There are few texts.

By gdx

Enlighted (4692)

gdx's picture

06-03-2015, 09:11

I see a little mistake.

QUEUES #F3F3 Address of the queue table for PLAY instruction

FRCNEW #F3F5 Work aera size for PLAY instruction (255 by default)

http://map.grauw.nl/resources/msxsystemvars.php

By Grauw

Ascended (10055)

Grauw's picture

07-03-2015, 23:20

gdx: Nice table, I’d be happy to list and host it for you if you translate it to English.

Regarding QUEUES, actually it seems there’s a fourth queue for the RS232 as well, so PLAY is a bit too specific. So, I’ve added QUETAB to the document which also describes the table structure, and reference it from QUEUES, it should hopefully be more clear now.

Regarding FRCNEW, my Dutch reference book says “application unknown” and the MSX2 Technical Handbook as well as the MSX Datapack say “used by BASIC interpreter internally”. Also QUETAB contains the PLAY queue size already. So… I need some more evidence about the function of this address before I change it Smile.

By Grauw

Ascended (10055)

Grauw's picture

07-03-2015, 23:21

Grauw wrote:

I improved the explanation of R800 timing information in the Z80 instruction set overview article, as well as added a new column with actual R800 timing in internal RAM mode.

I’ve completed the R800 timing information, except for the repeat-instructions which take too long for me to capture accurately with my testing method. I hope you enjoy it.

By Grauw

Ascended (10055)

Grauw's picture

23-05-2015, 01:59

Some updates to the MSX I/O ports overview page, mostly based on the MSX Datapack vol. 2 appendixes 4-5. Thanks to giacomo for the pointer.

By ARTRAG

Enlighted (6536)

ARTRAG's picture

23-05-2015, 11:30

thanks!
very good

By Manuel

Ascended (18126)

Manuel's picture

23-05-2015, 14:04

What exactly is new?

By the way:
- On ports 0 and 1 is also the Sensor Kid hardware
- The card reader (B8-BB) might be the Yamaha Play Card system...

Page 3/10
1 | 2 | | 4 | 5 | 6 | 7 | 8