WebMSX running SymbOS!

Page 3/5
1 | 2 | | 4 | 5

By Manuel

Ascended (17869)

Manuel's picture

23-05-2018, 07:16

It supports turbo machines, but are these realistically emulated like that?

By ppeccin

Champion (375)

ppeccin's picture

23-05-2018, 19:24

Manuel wrote:

It supports turbo machines, but are these realistically emulated like that?

I don't know if I really understood you question. What you mean?

In WebMSX, the Turbo setting adjusts the Z80 clock speed, if that's your question. Its not "3x faster emulation". Its 3x CPU clock.
So yes, its somewhat like a machine with a higher clocked (10.7MHz) CPU, right?

By edoz

Prophet (2314)

edoz's picture

23-05-2018, 21:02

Hi Peccin,

I have some other media files (background images) and my apps (last versions)

http://members.home.nl/evanzanten/appstore/

I'm very surprised by your work! It is just crazy that it runs in a web browser.. i never thought that would be possible 20 years ago :D

By tfh

Prophet (2858)

tfh's picture

23-05-2018, 21:05

WTF...
I just played around with SymbOS on WebMSX and played the song sevenup.pt3... Is that just the PSG? Really???

By Manuel

Ascended (17869)

Manuel's picture

23-05-2018, 22:04

ppeccin wrote:
Manuel wrote:

It supports turbo machines, but are these realistically emulated like that?

I don't know if I really understood you question. What you mean?

In WebMSX, the Turbo setting adjusts the Z80 clock speed, if that's your question. Its not "3x faster emulation". Its 3x CPU clock.
So yes, its somewhat like a machine with a higher clocked (10.7MHz) CPU, right?

Yeah, so the question was actually: which turbo machines did you refer to?

By ppeccin

Champion (375)

ppeccin's picture

23-05-2018, 22:04

tfh wrote:

WTF...
I just played around with SymbOS on WebMSX and played the song sevenup.pt3... Is that just the PSG? Really???

Yep! :-)

By ppeccin

Champion (375)

ppeccin's picture

23-05-2018, 22:08

Quote:

Yeah, so the question was actually: which turbo machines did you refer to?

Not machines... SymbOS supports "turbo", as a concept. It supports the CPU at various clock speeds, right?
I was referring more to "machines with Turbo", as in any machine, and not specific models...
WebMSX is not a specific machine, but it is "a" machine with turbo, so it can run Symbos, at several clock speeds.
Why not 10.7MHz? ;-)

By tfh

Prophet (2858)

tfh's picture

23-05-2018, 22:42

ppeccin wrote:
Quote:

Yeah, so the question was actually: which turbo machines did you refer to?

Not machines... SymbOS supports "turbo", as a concept. It supports the CPU at various clock speeds, right?
I was referring more to "machines with Turbo", as in any machine, and not specific models...
WebMSX is not a specific machine, but it is "a" machine with turbo, so it can run Symbos, at several clock speeds.
Why not 10.7MHz? ;-)

Manuel seems a bit focused on comparing WebMSX to existing actual hardware. I consider it being an MSX in software with its own specs and features. It's a different concept.

By Grauw

Ascended (9817)

Grauw's picture

23-05-2018, 22:53

ppeccin wrote:
Manuel wrote:

It supports turbo machines, but are these realistically emulated like that?

I don't know if I really understood you question. What you mean?

In WebMSX, the Turbo setting adjusts the Z80 clock speed, if that's your question. Its not "3x faster emulation". Its 3x CPU clock. So yes, its somewhat like a machine with a higher clocked (10.7MHz) CPU, right?

No, a turbo machine is not realistically emulated. To elaborate on this;

In the game I’m working on the splits don’t show right at 4x CPU speed and up. My code takes care to sync on HR within the split to allow for faster CPUs, so it should work fine, but the problem is that in WebMSX the code between each line completes so fast that the horizontal border is still in effect so the sync fails. On a real MSX with a 14 MHz CPU or higher it would work fine though.

This is because what WebMSX does in turbo mode wouldn’t be possible in a real machine, as the MSX external bus timing needs to be based on the 3.58 MHz Z80. The real V9938 VDP doesn’t allow any faster access than that either. Between my HR syncs I do back-to-back I/O to the VDP, and a real turbo CPU for MSX would need to insert waits during the I/O, ensuring I at least get out of the horizontal border before the next HR sync.

So, if a higher clocked CPU was realistically emulated, wait states would be inserted during access to the external bus to remain compliant to the MSX’s standard bus timing. Just like any real turbo circuit for any real MSX inserts waits during I/O, and even some more (sometimes excessively *cough turboR*) for the VDP I/O.

By ppeccin

Champion (375)

ppeccin's picture

23-05-2018, 23:08

Grauw wrote:

No, a turbo machine is not realistically emulated. To elaborate on this;

In the game I’m working on the splits don’t show right at 4x CPU speed and up. My code takes care to sync on HR within the split to allow for faster CPUs, so it should work fine, but the problem is that in WebMSX the code between each line completes so fast that the horizontal border is still in effect so the sync fails. On a real MSX with a 14 MHz CPU or higher it should work fine though.

This is because what WebMSX does in turbo mode wouldn’t be possible in a real machine, as the MSX external bus timing needs to be based on the 3.58 MHz Z80 and the VDP doesn’t run any faster either. Between my HR syncs I do back-to-back I/O to the VDP, and a real turbo CPU for MSX would need to insert waits during the I/O, ensuring I at least get out of the horizontal border before the next HR sync.

So, if a higher clocked CPU was realistically emulated, wait states would be inserted during access to the external bus to remain compliant to the MSX’s standard bus timing.

Your problem (this one you explained) is actually not related to Turbo at all.
Your problem is evidenced by the accuracy limitation of WebMSX. As of now, the VDP impl. on WebMSX is only line-accurate. This means that each line of the VDP is generated at once, at a specific point inside each line. This happens "instantaneously" from the CPU point of view. That is why we have some problems related to screen splits and tight timings related to HR and line INTs in WebMSX.

This problem can happen even at the normal 1x CPU clock. Its not related to the Turbo modes.
Buy yes, there is also the problem of the wait states.

Its strange. Your code should work for anything that is FASTER, if you sync to HR. Even at 100MHz with a faster bus. You only need to do your stuff INSIDE the horizontal border, before the usable part of the next line begins, and before the next HR, right?

Page 3/5
1 | 2 | | 4 | 5