HOW TO Improve MSX SUPER TURBO Performance in MSX2+ HB-F9S & Others . . .

Page 1/2
| 2

By Dhampird

Hero (556)

Dhampird's picture

18-10-2011, 05:12

Hello, I could make these mods thanks to the fully help and info that "sd_snatcher" gave me, with his permission i post here all results we get in my Hb-F9s. To begin to start these new modifications is important tell that the current MSX SUPER TURBO setup before beginning the modifications was as follows:

img193.imageshack.us/img193/6007/actualconfiguration.jpg

If you need info about MSX SUPER TURBO circuit, designed by Alwin Henseler please take a look to this post:

www.msx.org/forumtopic11406.html

or:

bitcycle.org/retro/msx/super_turbo/

Here, in this post, you´ll see info about :

-New VDP I/O decoder + V9958#WAIT: Allows I/O at turbo speeds
-M1 waitstate switch (up to 25% speed increase), with two possible configurations:
-M1 waitstates switch for both memory and I/O (up to 8MHz)
-M1 waitstates switch for memory-only (allows more than 8MHz)
-PSG pitch fix when the turbo is enabled (Requires the new VDP I/O decoder, and memory-mapper must use SRAM)

At the end of this megapost you´ll see some problems that will be need solved for my HB-F9s, any help is welcome, (one of most importance is fix msx boot logo corruption when turbo is ON) Thanks, and please be patience to read all the content, you will need...:P

Let´s begin: ;)

*********************************************************V9958 #WAIT MOD INTRODUCTION******************************************************************

"If your machine was upgraded to MSX2+, you could disable the I/O slowdown to 3.57MHz by connecting the V9958 #WAIT to the Z80 and enabling the signal on R#25 (The R#25 I mentioned is the V9958's register number 25.). The I/O would then occur entirely at 7MHz without trouble. About the V9958's #WAIT pin: The V9958 datasheet omits this information, but that pin output is open-collector just like the #INT pin. This means you can connect it directly to the #WAIT line of your MSX (either directly to the Z80 socket or to the #WAIT pin of any slot). But before doing that, please run the game Theseus on your current setup and see if there's any corruption on the screen. If you can, record a video of it so you can compare the performance with the improved setup later.

THESEUS VIDEO AT CURRENT MSX SUPER TURBO SETUP: www.youtube.com/watch?v=zrUL3cX6E0w (tested in SLOT2-3.58Mhz with Megaflashrom SCC-I M.Pazos)

The V9958 was designed with turbo machines in mind and natively supports 7MHz I/O when the #WAIT is correctly connected and enabled, and this will improve a lot the speed for raster effects, like splitscreens"

****TEST 1****

To use this wonderful built in #WAIT generation, proceed as this:

1) Disconnect the I/O slowdown feature of your SuperTurbo, which is in fact is needed only for the V9938. This means you'll disconnect the wire that comes from the Z80 I/O (pin 20) to the slowdown diode-and of the SuperTurbo:

2) Solder a wire connecting the #WAIT pin of the V9958 to the #WAIT pin of the Z80. You don't need a pull-up resistor because there's one present on the motherboard already.

3) Supply the same clock that the Z80 has to the S1985, otherwise /CSW, /CSR and /WAIT signals will not generated properly. I'll provide a suggestion for fixing the PSG sound later, if this V9958 #WAIT mod works fine on your machine. (If the PSG is fixed in turbo-mode then the S1985 isn't running at the same clock of the Z80, PSG is running at 3.58Mhz.For this test, you need the original situation that the PSG sound pitch goes high when the turbo is enabled (PSG unfixed) Later we can think for another fix for the PSG.)

4) Activate the #WAIT generation by the V9958, type the following command on MSX-BASIC (Turbo switch must be in OFF all time, after activate VDP we can put Turbo in ON)

VDP(26)=VDP(26)OR4

Remember that if you are working from Msx-Dos you have to type:
Basic (to go Basic)
From Basic you can type VDP code line and to return to Msx-Dos you´ll have to type:
Call System
Now in Msx-Dos you can make tests with Execrom and VDP code enable.

Other way to activate VDP ON is use a .COM program in Msx-Dos called TURBO.COM, then in Msx-Dos:

-To enable, the VDP #WAIT, type:

TURBO ON

-To disable, the VDP #WAIT, type:

TURBO OFF

But please keep in mind that this is not an official version of the tool. As your SuperTurbo don't have a software switch, the tool will issue an warning that it didn't found a known turbo-kit, but will
enable the VDP #WAIT anyway.

After type TURBO ON, the program dont recognise the Turbo hardware but like you said the software enable VDP WAIT. Works perfect, anyways will be great find a solution that mantain active ever time the VDP WAIT, even after reset.

Also will possible add this VDP enable feature to BIOS.

5) To deactivate the #WAIT generation, type the following command:

VDP(26)=VDP(26)&HFB

Please test the game Theseus both with the #WAIT enabled and later with it disabled to compare the results. Also, please compare the Theseus speed now with your previous recording that had the I/O slowdown to compare the game speed difference.

If you make RESET in machine you also deactivate code VDP (the reset will disable the V9958 #WAIT generation), then no RESET machine
If you want keep the VDP code ON active.

The best way to run Theseus is to use the ROM linked below and the ExecROM loader. ExecROM will load the game on the main RAM, so you will not need the MegaFlashROM and will not have any problems related with clock incompatibilities on cartridges.

To use ExecROM type in Msx-Dos: execrom namerom.rom

6) Compare the disk access speed under MSX-DOS2. It's a good idea to compare both IDE and floppy I/O speed. To try this you could use util:

DOSSCAN.COM

Get from www.msx.org/forumtopicl12706.html. After the mods are finished and if they work properly, you can usethis tool to benchmark the disk performance of your machine and
compare it with the performance it had with the previous I/O slowdown solution. (NOT TESTED YET)

It's a good idea to compare both IDE and floppy I/O speed.

7) About F4 register will only be used later, (remove 5V jumper to disable) I was planning to use one bit of it to command the software on/off for the turbo.

The configuration I explained to you worked fine on a machine that has full discrete circuits. It's an Expert2+ and this means it don't have the S1985 chipset inside. All I/O decoding is done by 74LS* discrete TTL chips.

If the V9958 #WAIT configuration works fine on your machine, that will prove that the S1985 can work fine with turbo VDP I/O, because your Sony don't have a secondary chipset for the slowmotion controller/MemoryMapper to bug the communications. Hb-F9s there is no another chipset like Sony MB670836, only S1985. If not works some reasons could be:

-The secondary chipset Sony MB670836 (another msx models) could doing something that interferes with the VDP communication on turbo speeds and causing the corruption

-The S1985 chipset could be too slow for turbo VDP I/O

TEST RESULTS:

MSX SUPER TURBO DIAGRAM UPDATE: img21.imageshack.us/img21/5779/1stmodwait.jpg

VIDEO TESTS UPDATE:

With Theseus-MSX SUPER TURBO VDP mod DISABLE VDP in BASIC i get some glitches when TURBO is ON, that glitches appear in above part of the screen, speed seems ok:

www.youtube.com/watch?v=WbbA58f49LM

With Theseus-MSX SUPER TURBO VDP mod ENABLE VDP in BASIC i get more glitches that appear in all screen after TURBO is ON, speed seems increase a bit more, i think.

www.youtube.com/watch?v=v8voEtSIudk

(Also the screen corruption appear in msxdos when TURBO is ON, the only way that i could fix that is the Z80 pin 20 (IORQ) goes directly to Diode in Turbo that now is disconected)

TOTAL TEST 1 RESULT: NOT WORKING

****TEST 2****

Let's try another configuration just to be sure. I attached on this e-mail the #WAIT circuit that was used on CIEL ExpertTurbo. It uses a 74LS08 chip, which is very common.

To install this circuit on your machine:

1) Please lift the Z80's pin-24 (#WAIT input), to disconnect if from the socket . Then connect this pin-24 to the ZWAIT signal of the attached circuit.
2) Connect the VWAIT of the circuit to the #WAIT output of the V9958
3) Connect the MWAIT of the circuit to the #WAIT of the S1985 (can be connected to the pin-24 of the Z80 socket)

If that circuit doesn't solve the problem, then the S1985 is really too slow for 7MHz VDP I/O and I'll have to find another solution. Don't forget to connect the +5V and GND. That was a simplified schematic. You can use either the 74LS08 or the 74HCT08, but don't use the 74HC08. The 74LS08 is very common on old circuit boards. If you have any old circuit boards stocked you probably will find one easily.

TEST RESULTS:

MSX SUPER TURBO DIAGRAM UPDATE: img836.imageshack.us/img836/688/2ndmodwait.jpg
(i prefered cut track below Z80 in the diagram, and then pin24 Z80 can mantain conected to socket follow the diagram)

VIDEO TESTS UPDATE:

After activate VDP line in BASIC and load Theseus, same happened like old test, when Turbo is ON the speed increases but with full glitches like happened in old video:

www.youtube.com/watch?v=v8voEtSIudk&feature=channel_video_title

If VDP basic code is OFF the glitches appear only in up screen, like older video:

www.youtube.com/watch?v=WbbA58f49LM&feature=channel_video_title

(After that i tested Vampire Killer and when TURBO is ON, PSG sound distorsionated and also glitches appear in screen, also in msxdos when TURBO is ON screen glitches-corruption appear.
Then it seems like the s1985 couldnt manage that WAIT circuit mod.)

TOTAL TEST 2 RESULT: NOT WORKING

****TEST 3****

You can remove the 74LS08 chip and connect the VDP #WAIT output directly to the Z80 #WAIT input as before. You can also return the S1985 to 3.57MHz.

The S1985 chipset is a combo chip. It means that internally it has different blocks for each function (PSG, PPI, RTC, VDP interface), and each block is in fact a different chip, as its datasheet shows.

It seems that all other blocks of the S1985 support running at 7MHz just fine. But the VDP interface (that generates the /CSW and /CSR signals) cannot couple with this speed. In fact, the way that it was designed (synchronous) seems brain-dead to me even at 3.57MHz, as it don't follow the MSX Technical Handbook guidelines. Someone at Yamaha must have drunk too much sake. Hehehehe!

The idea is then to try one of the solutions I mentioned. The best one seems to bypass the buggy S1985's VDP interface completely, disconnecting it from the VDP and implementing a new one with 74LSchips. For this solution you probably have one of the best machines available, since the HB-F9S has a lot of jumpers on its board and probably there are jumpers for the #CSW and #CSR signals too. Is just a matter of opening this respective jumpers and inserting the new signals on that point. The cost for that is negligible, since the circuit is composed of two or three very common 74LS chips.

If that solution works, your HB-F9S will be able to run at full 7MHz all the time, greatly increasing the speed when compared with the traditional I/O slowdown solution. Since the S1985's VDP interface was the bottleneck, you probably will be able to try higher clocks on the Z80 with this solution too.

For now, there's only two options:

METHOD A.)

The best solution: The /CSW and /CSR signals for the VDP will to be generated externally. You can copy this part of the circuit from the ExpertTurbo schematics, which you can get on the link:
www.msxpro.com/hardware/esquemas/ciel/expert2p.zip (Take a look to expert2_5.pdf)

The /CSW& /CSR generated from S1985 need to be disconnected and replaced by the new circuit. The circuit is very simple and requires only three 74LS chips: A 74LS32 (U35C and U35D on the schematics), a 74LS138 (U29) and a 74LS08 (U51A). You can also try to omit the 74LS08 (U51A) and connect the A7 signal directly to the pin-6 of the 74LS138, also output IOB8 signal (pin 7 in 74LS138) is left unconnected. Get input signals for this circuit from the Z80 socket or from any jumper on the board that contains it ( for example: conect /WR and /RD inputs of the 74LS32 to the Z80 socket or to the respective jumpers on the board ,use a multimeter to find the signals on the board).

Steps:

-Connect the VDP #WAIT output directly to the Z80 #WAIT input
-Return the S1985 to 3.57MHz (PSG fixed)
-Generate the /CSW and /CSR signals for the VDP externally, the /CSR and /CSW will not be connected to the SuperTurbo slowdown diodes, as we want the VDP I/O to happen at full speed

Method A.) Diagram:

img15.imageshack.us/img15/4576/fix2metoda.jpg

METHOD B.)

The quick-and-easy suboptimal: try connecting both the VDP signals /CSW and /CSR to the diodes of the SuperTurbo. If it works, you don't need to connect the Z80 I/O pin to the diodes anymore. This way, at least the keyboard/joystick input will not slowdown your MSX anymore.

Steps:

-Connect the VDP #WAIT output directly to the Z80 #WAIT input
-Return the S1985 to 3.57MHz (PSG fixed)
-Connect both the VDP signals /CSW and /CSR to the diodes of the SuperTurbo.

Method B.) Diagram:

img40.imageshack.us/img40/4865/fix2metodb.jpg

TEST RESULTS: METHOD B.)

-Screen corruption happen after type VDP ON in basic and use Turbo ON, you´ll see a different corruption here if you compare with older video tests:

VIDEO TEST: www.youtube.com/watch?v=1vzGZCjf7Jk

TOTAL TEST RESULT: NOT WORKING

TEST RESULTS: METHOD A.) WORKS!

-After activate the VDP code line in basic the game Theseus works perfect, loaded with Excerom, in Turbo Mode without screen corruption, also i mantained F4 register active.

-I tried Diskman MMC/SD Sinfox tool after activate VDP basic code line, using "set&boot disk without Reset" from Sinfox (RESET machine disable VDP ON basic code line). Games worked ok in Turbo Mode, i tested "Metal Gear 2.dsk "and i think that in Turbo Mode the speed increases a little more than using IORQ to diode in Super Turbo (first diagram in this post)

-I tried then with MegaflashRom M.Pazos SCC+ in SLOT2 (forced to 3.58Mhz CLK that goes to that SLOT, because Megaflash SCC+ dont work if Turbo CLK goes directly to SLOT), to avoid reset after loaded a game i had to load games following: "OPFX namerom.rom /X"; PSG games sounded ok and speed increases a lot in-game when Turbo is ON, it seems like 7.37Mhz (now instaled) works like 8Mhz-or similar speed, speed increased a lot after Method-A. About SCC games, i tested some and worked OK with Turbo ON. Important tell that i found a SCC game: SpaceManbow that dont work when Turbo is ON, the screen is filled with sprite Glitches, this happen like you said because i tried a unpatched version, with the SpaceManbow patched version the game works OK when Turbo is ON,
,no more glitches when TURBO is ON, speed game increases but is almost negligible, it shows as if the scroll on the screen is moving better, more fluid, like with more frames, same happened when i tried another patches games like Gradius2 with Turbo FIxes, when TURBO ON speed in-game is most visible for no patched version and less visible for patched version, i´m think that is normal due to use patched versions.

"The good news are: Your MSX is probably running around 20% faster than with the IRQ diode in SuperTurbo Method. Now, I/O is done at 7MHz, including PSG and PPI (keyboard, i,e). With the older IORQ diode, every interrupt did slowdown your MSX when reading PSG, keyboard and joystick ports and that slowdown happened at least 50 or 60 times per second! This Method-A is the best possible solution. You'll probably notice that your machine will run a lot more stable too. Meanwhile, you can use the following tool as a workaround: It enables the VDP #WAIT under the MSX-DOS. This is not an official version of the tool and was made to enable the turbo on other machines, but will serve for your needs, as you''ll not need to go to BASIC anymore. "

"Now about you said above :"

- It seems like 7.37Mhz (now instaled) works like 8Mhz-or similar speed.

"Good to know! That's what's expected. It's a much more elegant and efficient solution than reducing the clock. But don't get me wrong: the clock reduction is a good solution for MSX1 (TMS99x8) and MSX2 (V9938) machines"

- ...VDP ON basic code line...

"To activate VDP #WAIT line from Msx-Dos, you could use:

1) To enable, the VDP #WAIT, type: TURBO ON

2) To disable, the VDP #WAIT, type: TURBO OFF

But please keep in mind that this is not an official version of the tool. As your SuperTurbo don't have a software switch, the tool will issue an warning that it didn't found a known turbo-kit, but will
enable the VDP #WAIT anyway. With this new V9958 #WAIT solution, you can try your tests again, as it allows much faster CPU->VDP communication. I wouldn't be surprised if you now can clock up your Z80 to higher speeds. Try 10MHz, 12MHz and 14MHz, in example. Keep the turbo switch off on boot and only turn it on after you have enabled the VDP #WAIT feature."

- ...SpaceManbow patched version the game works OK when Turbo is ON,no more glitches when TURBO is ON, speed game increases but is almost negligible, it shows as if the scroll on the screen is moving better, more fluid, like with more frames...

"Yes, your perception is right: The framerate is much better with the turbo enabled on TurboFixed games. That's exactly the idea of fixing them: The original Z80A/3.57MHz didn't had enough speed to run the majority of MSX MegaROM games without dropping frames. Once a game is TurboFixed, using a turbo machine allows you to run those games at the real intended speed. The TurboFix is compatible with machines of any CPU speed, including off course the original Z80A/3.57MHz."

MORE TESTS:

-I tried the msxdos tool TURBO.COM , and works, after type TURBO ON, the program dont recognise the Turbo hardware but like you said the software enable VDP WAIT. Works perfect, anyways will be great find a solution that mantain active ever time the VDP WAIT, even after reset.

-I tried 10Mhz crystal and after TURBO ON code and switch ON Turbo the msx hangs in msxdos, must be another bottleneck somewhere or maybe i´ll have to try with 10Mhz Z80, in basic the 10Mhz didnt hang the computer when Turbo is ON, let type in Basic, i think remember that with Msx Super Turbo older install 10Mhz hanged Basic and Msxdos. I tried the 10Mhz like you said, first i activated TURBO ON code in msxdos only.

"If the turbo is freezing the machine only on MSX-DOS:

-Using a floppydisk drive on your MSX, try the following fix:

1) Open your Disk-Drive interface. Check if it's EPROM is a 27128 chip.
2) If it's a 27128 chip, remove the chip from the interface and dump it on a willem EPROM burner
3) Burn the contents of the rom on a brand-new 27C128 EPROM.
4) Install the 27C128 EPROM on your disk interface.

-If you don't have a floppydisk drive on your MSX, try using an IDE interface instead of SD/MMC ones.

The turbo is probably freezing MSX-DOS on your machine at 10MHz because one of the reasons listed below. It's up to you to investigate them and try to find the culprit:

1) The disk interface present contains a soundchip that uses the CPUclk pin of the slot as a sound frequency reference, which is a design flaw.
2) The disk interface is placed on a modded slot were the CPUCLK pin don't match with the slot timings.
3) The disk interface don't support turbo at all

The workaround for all three problems is the 3.57MHz clock/timings mod I teached you before. Then place the problematic interface on that 3.57MHz slot.

The ideal solution is, off course, try to find a faster disk interface, like an IDE interface.

If you have a Shawksym SD/MMC interface with a real SCC, this one can be modded to fix the turbo issues: All you need to do is to include a 3.57MHz crystal inside the cartridge. Same happen with another cartidge hardware. "

****************************************************DISABLE M1#WAIT MOD INTRODUCTION*********************************************************************

"About your queston:

-Msx Super Turbo speed makes me think ,sometimes, than my A1-GT is not much faster.

I did a lot of testing on that field, and in the worst scenario (running software from an external cartridge) the Turbo-R will run the games at the same speed the original SuperTurbo did run. On the average use, the Turbo-Rs are more than two times faster than the CIEL ExpertTurbo. On the best case (running MSX-DOS programs) the Turbo-R are almost 4 times quicker than the CIEL ExpertTurbo.

Keep in mind that after the V9958 #WAIT mod don't have a "SuperTurbo"anymore. It's more like a "SuperTurbo+". Your machine now runs as fast as the CIEL ExpertTurbo. If you successfully implement the "Disable M1 #WAIT mod", then your machine will get 20% faster than the CIEL ExpertTurbo. If you're able to run your machine at 10MHz while using the "Disable M1 #WAIT mod".

Then, let´s try to increase the speed of your HB-F9S by another 20%. It's called "Disable M1 #WAIT mod". Please try this using a 7MHz crystal at first.

a) Testing the "Disable M1 #WAIT mod":

1) Find the S1985 #WAIT output pin
2) Find a jumper (bridge) on the HB-F9S motherboard that allows you to cut the connection from the S1985 #WAIT pin to the Z80 #WAIT pin
3) Open that jumper
4) Enable the V9958 WAIT command
5) Enable the 7MHz turbo
6) Check if Theseus and the TurboFixed Space Manbow run fine
7) Test if other games run fine

b) Definitive mod:

If the test (a) worked fine, proceed as this:

1) Change your current turbo-switch to a 2-in-1 switch (those with 6 pins). Like:
www.ebay.com/itm/16MM-E-STOP-PUSHBUTTON-SWITCH-RED-MOM-REPLACE-IDEC-L6-/280436992036?pt=LH_DefaultDomain_2&hash=item414b58e824#ht_500wt_1117

2) Use the second set of the switch as this:
- When the turbo is enabled, the S1985 #WAIT pin must be disconnected
- When the turbo is disabled, the S1985 #WAIT pin must be connected

DIAGRAM: img193.imageshack.us/img193/5626/m1waitdisable.jpg

TEST RESULTS: DISABLE M1#WAIT

------------------------7,37Mhz and M1 WAIT Disable-------------------------------BEST RESULTS!

Theseus with Execrom , OK in Turbo Mode, good speed
SpaceManbow Megaflashrom SCC+ in SLOT2 (3.58Mhz) with Turbo ON runs OK, i think i noticed games runs better speed in normal mode (Turbo OFF), could it be possible? and tell that some games runs very fast, Metal Gear 2 runs like if worked like at 10Mhz or 9,XXMhz, snake moves very fast in screen using a 7.37Mhz crystal, much better than old tests with 8Mhz and IORQ method. Seems like games runs now... more smooth?¿ ,seems like... some normal msx glitches games dissapear? i dont know but first impresion is like without Turbo games runs a little better.

------------------------8Mhz and M1 WAIT Disable-------------------------------

Theseus with Execrom , OK in Turbo Mode, no glitches! but speed problems appear, the character runs faster but didnt walk when push right or left keyboard directions, still running at the same point of the screen ,as if the floor was ice and he slipping. After press Turbo ON the character moves ok with keyboard directions, but after a seconds the "ice problem" ^ ^ appear. Normally can walk to the Left but he cant to the Right.
SpaceManbow Megaflashrom SCC+ in SLOT2 (3.58Mhz) with Turbo ON dont Work, hangs with Turbo ON.

------------------------10Mhz and M1 WAIT Disable-------------------------------

Theseus with Execrom , OK in Turbo Mode, no glitches! very very fast! but "ice problem" appear again.
After type TURBO ON in msxdos i put Turbo swith in ON and after that i couldnt get enter to D:/ partition (i´m using MMC/SD Sinfox v2.2) it seems like 10Mhz is so much for SD´s read/write operations or something.
SpaceManbow Megaflashrom SCC+ in SLOT2 (3.58Mhz) with Turbo ON dont Work, hangs with Turbo ON.

NOTE:
THIS HAPPEN IN ALL TESTS:

-After msxdos finished load, i have to type TURBO ON (to allow activate VPD#WAIT) because if i try to make dir or another operations in msxdos although with Turbo OFF, i get screen corruption in msxdos, i think this is due to have M1 WAIT Disable, right?

PROBLEMS:

-I think mmc/sd sinfox cant support 10Mhz right, i sent a mail to creator Sinfox and i´m surprised how works the games now in MegaflashRom Scc+, some very fast, is a pitty this cartidge couldt buid on it with 3.58Mhz crystal for sound and Turbo support.

-I have to find another way to install that M1 switch, i mean that I have already installed the TURBO switch in case, i made a 16mm hole for it in the case, i´ll have to find another 16mm switch with 6pin, will be difficult to find with led and 16mm, i think. I´m wondering if i could add that M1 WAIT enable/disable signals to my instaled swith with help some extra circuit or IC, i dont know if this will be possible without mix Turbo&M1 Wait signals in the same switch, if not i would have to add a new extra switch, could i may change positions on-off M1 WAIT switch while the computer is on (like Turbo switch does)?

TEST CONCLUSIONS:

"That's excellent news! Your machine is now much faster! At 7.14MHz it's 20% faster than the previous fastest Z80 machine, the CIEL ExpertTurbo"

"About test: -7,37Mhz and M1 WAIT Disable- best results!:

-... i think i noticed games runs better speed in normal mode (Turbo OFF), could it be possible? ....

"Yes, it's possible and real. By disabling the M1-wait your machine is 20% faster even at 3.57MHz. This means the machine is turbo even with the turbo disabled. This is why I told you that you will need a 6-pin switch for the turbo. When the turbo is disabled, the M1-wait must be enabled for a complete normal speed. If the M1-wait is still disabled your machine will run 20% faster than a standard 3.57MHz MSX, which can be considered a simple form of turbo."

-...Metal Gear 2 runs like if worked like 10Mhz or 9,XXMhz, snake moves very fast in screen using a 7.37Mhz crystal, much better than old tests with 8Mhz and IORQ method. Seems like games runs
now more smooth?¿ seems like some normal msx glitches games dissapear?...

"Yes, your machine now is much faster and more stable than with the simple 8MHz/IORQ_slowdown method. You have one of the fastest MSX machines on earth!"

-...dont know but first impresion is like with TURBO OFF (3.58Mhz) the games runs a little better...

"Keep in mind that with the M1-wait constantly disabled you had only two TURBO modes and no without-Turbo mode:

1) Turbo 7.37MHz
2) Turbo 3.57MHz

For games that have a Turbo bug, the Turbo 3.57MHz will probably be the smoothest one, because it only provides 20% more speed and this is enough for making the turbo-bugged games run smoother without going too fast."

"About test: -10Mhz and M1 WAIT Disable-:

-...OK in Turbo Mode, no glitches! very very fast! but "ice problem" appear again...

"Don't worry, the "ice problem" that happened on Theseus isn't your machine's fault. It's a bug in Theseus. This only means that your machine is running awesomely fast! One day I plan to TurboFix the game Theseus, so turbo owners will be able to enjoy this game with a much better framerate without the "ice walking" problem. :)
The important news is that, besides the "Ice-walking problem", the game did run stable on your machine. This means that your machine is supporting an incredible speed!"

-...After type TURBO ON in msxdos i put Turbo swith in ON and after that i couldnt get enter to D:/ partition, it seems like 10Mhz is so much...

"That's sad. 10MHz is really a lot of speed and only very carefully designed cartridges will work with it. But you can report your findings to SinFox/Sharksym so they can improve their design. Probably
they will be happy to own a 10MHz machine like yours in the future!"

-... i have to type TURBO ON (to allow activate VPD#WAIT) because if i try to make dir or another operations in msxdos although with Turbo OFF, i get screen corruption ...

"Yes, you're right. A permanent solution would be to patch the BIOS to enable the V9958 WAIT on boot. The SubROM will also need to be patched. Then your wouldn't need to use the TURBO ON command anymore.

To modify the BIOS to enable the V9958 WAIT on boot and use the WAIT by default always. Please use an hexeditor and modify the SubROM+BootLogo like listed bellow. I hope your MSX2+ BIOS have the same addresses as mine:

SubROM+Kanji.ROM:

2C73h: 04 (Enable WAIT on default R#25 value)
7B27h: 07 19 (Enable WAIT on MSX boot-logo)
7A3Ch: 04 19 (Enable WAIT after MSX boot-logo)

You can check if it worked fine by typing the following command on BASIC after the boot:

PRINT VDP(26)

If "4" is output, the ROM is now enabling the V9958 WAIT correctly and you have a BIOS appropriate for Turbo MSX2+ machines. Your very-fast 10MHz+M1waitDisabled MSX will now be close to perfection if the 3.57MHz slow-slot mod also worked fine.

I don't know if having the V9958 WAIT enabled with Turbo-disabled will have any collateral effect. In theory, it shouldn't have any bad effects, but you can test some games to confirm it."

-....I think mmc/sd sinfox cant support 10Mhz....

"It's really a pitty. Let's hope that they release a second generation of the cartridge, supporting 10MHz+M1waitDisabled. The same applies for the Synfox SD/MMC interface. But your LPE-SANS3 probably supports fine running games at 10MHz+M1waitDisabled. Also tell that you could try some IDE interfaces:
- Sunrise IDE interface
- CIEL IDE interface
- Tecnobytes' IDE interface"

NEW TESTS:

-I made changes and burned to 27c512. Test results:

PRINT VDP(26)
4

If i turn on the computer with Turbo ON, logo appear flashing on screen sometimes and after that a strange character appear below MSX LOGO image, msx hangs. Most of the times that i turned on computer with TURBO ON now the logo appear visible OK, not flashing on screen but a blue square sprite hide part of logo and then the strange character below logo appear, msx hangs. In TURBO is OFF bott logo works perfect, for now i didnt make M1 switch mod (now M1 jumper is out) and Slot 2 3.58Mhz mods in Msx Super Turbo circuit, msxdos works ok in Turbo Mode. I attached here the modded SubROM+Kanji.ROM .rom with enable WAIT options included, i think are right. F4 register still working OK.

www.megaupload.com/?d=DDTZJQGI

"I tested your ROM here and it's working fine. Anyways seems that means that things are running too fast."

**********************************************ALTERNATIVE METHOD TO AVOID M1 #WAIT SWITCH*****************************************************************

"You'll need:

1) Connect both the turbo-switch output and the M1-from-S1985 side of the jumper to the pin-1 and pin-2 of the 74LS32 chip (that same used for the VDP I/O decoder), and the pin-3 the
74LS32 to the M1-to-Z80 side of the jumper.
2) Put a 10K resistor between the 74LS32-pin2 and the +5V (can be the 74LS32-pin14).

This way you'll have the following configuration:

1) Turbo 10MHz and M1-wait disabled (very fast MSX)
2) Non-turbo 3.57MHz and M1-wait enabled (standard MSX)

Your 10MHz+M1waitDisabled MSX you probably be able to run Illusion City perfectly. You can get the game here:

www.alsoftware.com.br/adrianpage/illusioncity/

The minimum speed to run this game is a 7MHz Z80, but even 7MHz is too sluggish to run it. "

DIAGRAM: img607.imageshack.us/img607/6461/proto1.jpg

TEST RESULT:

-I tested the M1 WAIT switch mod, on the first try the msx didnt boot, i had in diagram 74ls32 pin 1 and 2 joined together, this way the msx didnt boot, black screen appear. After that i desoldered the bridge between pin 1 and pin 2 in 74ls32, now msx boot ok but when Turbo is ON in msxdos screen corrupt appears, a cursor sprite appear in screen and repeated a lot of times when for example i´m doing a dir command, when Turbo is OFF screen corrupt didnt appear. I tried Theseus and when Turbo is ON a little screen corruption appear in screen. I added 10K resistor to the 74ls32 pin2.

"The pin-1 and pin-2 of the 74LS32 must be separated. I revised the M1-waitstate circuit so we can try to fix your VDP corruption problems, ok? You need to implement it like this:

- Connect "M1-from-S1985 side of the jumper" to 74LS32-pin1
- Connect turbo-Switch output to 74LS32-pin2
- Connect 10K resistor to 74LS32-pin2 and +5V (74LS32-pin14)
- Connect 74LS32-pin3 to 74LS32-pin4
- Connect Z80 IORQ (Z80-pin20) to 74LS32-pin5
- Connect 74LS32-pin6 to "M1-to-Z80 side of the jumper"

This new circuit will fix your VDP I/O problem while keeping the
memory access without waitstates. If it works, it will be a very fast
MSX indeed.

At first try the new circuit at 7MHz. If it works fine, try to upgrade to 10MHz."

DIAGRAM: img267.imageshack.us/img267/4342/proto2.jpg

TEST RESULT:

-Msx boot (dont finished correct boot) but diode light in Turbo switch is always ON, even changing Switch positions to Turbo ON or OFF, seems like msx boot in Turbo Mode all the time, and due to old problem in Msx Logo when Turbo is ON i couldt test nothing more.

"It seems that the problem is on the signal that's received by the 74LS32-pin2. Let's try to find a better signal to feed there. Try this modifications:

1) Remove the 10K resistor that connects the pins 2 and 14 of the 74LS32
2) Remove the connection of the 74LS32-pin2 to the turbo-switch
3) Connect the 74LS32-pin2 to the superturbo IC1-pin5

I hope this fixes the problem. If it don't we'll continue trying to find a better source for this signal."

DIAGRAM: img716.imageshack.us/img716/7691/proto3b.jpg

-I made last modifications and now Turbo Switch responds ok to Turbo ON or OFF, also led light responds ok but glitchering effect still appear in screen when Turbo is ON, this happen with all my cartidges, also glitch cursor effect appear in msxdos when Turbo is ON, boot logo still hang when Turbo mode is ON.
-I disable M1Waitstate Switch method using 74LS32 to avoid any glitchering problem and i installed a external new switch for M1 signals to test 10Mhz, games didnt work with 10Mhz
-10Mhz seems so much for LPE-SANS, MMC SD Sinfox, etc
- Stable configuration that i found is mantain "M1Wait jumper always disable" (if not glitches appear using last LS32 config) and now 8Mhz games works OK, msx boot logo problems with Turbo (like always).

"That means additional circuitry would be needed to allow the machine to run at 10MHz. If you ask me, I think it's just too much effort. It would be better to have a completely new botherboard
designed, then it would be possible to achieve 10MHz or even 14MHz probably.But 7MHz without M1 waitstates probably will give you very fast
results. You probably can try 8MHz also.

Ok, let's try the 3rd version of the M1-wait circuit.

1) Change the 74LS138 and 74LS32 to 74HC138 and 74HC32 respectively
2) Disconnect the 74LS32-pin2
3) Connect the 74HC32-pin2 to the SuperTurbo's IC1-pin6

If this version works, we will need to try a 4th version of the M1-wait circuit, because we will need to separate the S1-switch from the rest of the diodes of the SuperTurbo. On this 3rd version the non-turbo mode will be running always 20% faster. The 4rd version will fix this."

DIAGRAM: img16.imageshack.us/img16/4301/proto4.jpg

-With this method when Turbo is ON seems like a msx goes into a mode pause, screen pauses, in games when Turbo is ON also pauses the game and sound is interrupted by a "beeeeeeeeeeeeeeep" constantly sound, if not be for the "beeeep" sound problem this would be a good idea, use this method or remoded when i get one that works, to add a pause button as happen with the turbo-R. Effect is similar.
-Apart from this, msx logo also goes in "Pause Mode" when Turbo is ON, but also glitchering in screen when Turbo is ON.
-I noticed some important ,i think, with M1 WAIT method disconecting only mobo jumper only in motherboard, with this method you told me about HB-F9s was working with two Turbos, i mean:
1. Turbo 3.58Mhz+ (Turbo OFF) more speed because M1 WAIT is disable.
2. Msx Super Turbo (Turbo ON) depending crystal i have instaled.
Ok, if i´m right, i tested vsync patcher version nemesis2 and with config 1. and Turbo OFF, sometimes i get some flickering in background sprites in-gaming, there is not much perceptible. If i use config 2. (Turbo ON) the game works perfectly, smoth scroll and none flickering little effect appear, seems like config 2. is better than 1. or all of this staff is due to patched game version.

STATUS: "ALTERNATIVE METHOD TO AVOID M1 #WAIT SWITCH"...STILL IN PROGRESS...

********FUTURE SOLUTIONS*******

"You'll probably to modify the circuit to enable waitstates only for I/O operations. Instead of a switch, build a circuit like this:

Z80_WAIT = (S1985_M1WAIT OR WAITSWITCH)

Then, WAITSWITCH selects between GND or Z80_IORQ

This way you will be able to enable/disable the M1WAIT only for memory access. If after all your tests you decide that it works fine and you want to eliminate the WAITSWITCH, build the circuit like this:

Z80_WAIT = (S1985_M1WAIT OR Z80_IORQ)

Building the circuit like this may allow you to go even faster than 10MHz. Maybe 12MHz or 14MHz can be reached.

I had this idea some time ago, and in theory it will allow at least 10MHz to be used on your machine. An enhanced formula may allow you to use 10MHz even with the Synfox SD/MMC interface:

Z80_WAIT = (S1985_M1WAIT OR WAITSWITCH)

Then, WAITSWITCH selects between GND or NEWM1WAIT.

NEWM1WAIT = NOT (MainRAM_CS AND BIOS_CS AND SubROM_CS )

This way you will be able to enable/disable the M1WAIT only for BIOS, SubROM and RAM access. If after all your tests you decide that it works fine and you want to eliminate the WAITSWITCH, build the circuit like this:

Z80_WAIT = (S1985_M1WAIT OR NEWM1WAIT)
NEWM1WAIT = NOT (MainRAM_CS AND BIOS_CS AND SubROM_CS )

If everything works fine, this NEWM1WAIT circuit will allow you to run your machine very stable at 10.738635MHz, which runs around 20% faster than your current 8MHz without waitstates. For cartridges running on slot (on the MegaFlashROM SCC+, for example) the speed increase will be around 10%.

The performance comparison with other configurations is:

Configuration MHz Speed increase from std Z80A MSX
Z80_M1waitDisRAM_BIOS 10,738635 260%
Z80_M1waitDisabled 8 179%
Z80_M1waitDisabled 7,15909 150%
Z80_M1waitEnabled 8 123%
Z80_M1waitEnabled 7,15909 100%
Z80_M1waitDisabled 5,3693175 88%
Z80_M1waitEnabled 5,3693175 50%
Z80_M1waitDisabled 3,579545 25%
Z80_M1waitEnabled 3,579545 00%

*******************************************************SLOWDOWN SLOT INTRODUCTION***********************************************************************

"The conversion of a single slot to 3.57MHz timings/clock is very similar to the solution Panasonic created for the Turbo-Rs, except both Turbo-R slots works like this.

I do prefer to have only a single slowed down because then you can use the other slot for faster interfaces like the IDE interface and still have very fast disk access.

To slowdown a single slot, you can apply two methods:

[Method 1.]

1) Choose which slot you will want to run at 3.57MHz timings/clock
2) Open the following connections of that slot with the motherboard: CPUCLK (I think you already did this on your machine)
3) Solder a wire to connect that slot's SLTSL signal pin to one of the slowdown diodes of the SuperTurbo
4) Connecting the slot-2 CLOCK pin-42 to the slow-clock output of the SuperTurbo (pin-6 of the IC3).

TEST:
- I can tell that slowdown method1 works for slot2 but when Turbo is ON the speed didnt increase in-gaming, now Turbo Switch Led is light barely visible when Turbo is ON. In old IORQ method for SLOT2 (3.58 directly to VDP) the Megaflashrom SCC+ increases speed in-game when Turbo was ON.

"Yes, this method will cause a great slowdown on the performance for cartridges connected on slot-B, because it does exactly what it says: the slot-2 will run at 3.57MHz. I can improve the M1-wait circuit a bit more to allow 20% more speed, but that will be as fast as it can be. But the software will have some speed gain anyway, because all RAM and video operations will still be done at turbo speeds.

But this is the way things are meant to be. This 3.57MHz slot will run any non-turbo-compliant hardware perfectly, just like the Turbo-R slots (which also have a great slowdown). The previous method allowed your MegaFlashROM SCC+ to run faster, but it was instable. It's up to you to decide which situation you will prefer.

This is why I suggested transforming the slot3-1 in an external slot too. This way you would have two "turbo-slots" (the ones that run at the same speed of the Z80) and one "slow-slot",(the ones that runs at 3.57MHz.)

The other way is ask someone to desing for you an auxiliary circuit to allow you to put a turbo-switch specifically for the slot-2. It would be a circuit very similar to the SuperTurbo, except it would be
connected to the slot-2 only.

But if you ask me, one of the better options is to use a good external slot expander on slot-1, this way you can have up to 4 turbo-slots on your machine."

WORKS!

[Method 2.] ************************************************************************************************************************************UNTESTED!!!

[ My SuperTurbo install don't have 2 crystals on the SuperTurbo and already I have the VDP_CLK going into the SuperTurbo board for the slow clock. VDP_CLK is already connected to the SuperTurbo.
I didnt try this mod for now because i think maybe this is designed have in mind X1 Crystal should be instaled at first time. I think i have only quit VDP_CLK from X1 to allow the mod, and after do the mod inject VDP_CLK to SuperTurbo's IC3 pin-6 input ]

1) Choose which slot you will want to run at 3.57MHz timings/clock
2) Open the following connections of that slot with the motherboard: CPUCLK (I think you already did this on your machine)
3) Solder a wire to connect the CPUCLK pin of that slot to the V9958 CPUCLK pin
4) Solder a wire to connect that slot's SLTSL signal pin to one of the slowdown diodes of the SuperTurbo
5) Inserting the VDP clock out as a non-turbo clock source for the SuperTurbo. This is done by:
a) Remove the following components: X1, C1, C2 R1, R2
b) Disconnect the IC1 pin-10 from the IC3 pin-6
c) Connect a wire from the VDP CPUCLOCK pin to the SuperTurbo's IC3 pin-6.

DIAGRAM: img195.imageshack.us/img195/825/modsuperturboslowdown.jpg

It's one method or another, but only one of them. You can choose which one is better for you. The Method-2 results in a more compliant turbo-MSX, if you ask me. But it will require a bit more work to implement.

Keep in mind that the other slot will be still be turbo and need it's CPUCLK pin with it's original connection to the Z80 CLOCK pin to be preserved. Always be sure that this slot has the same clock that theCPU has.

If you did this mods, your machine will have:

- One external 3.57MHz slot: Used for unmoded sound cartridges, cartridges that contain DRAM+sound, or very slow cartridges
- One external Turbo slot: Used for nearly all other cartridges. It's the ideal place for disk interfaces."

TESTS:

-I tried it, i soldered pin 4 SLOT2 directly to slowdown diode but then i tried to load MegaflashromSCC+in SLOT2 and msxdos didnt recognise it, i´m wondering if i understodd right the step 4, i attached a image how i conected it. If i mantain 4. step wire disconected SLOT2 recognise the cartidge OK.

"I think I know the cause try method 2"

************************************************GLOBAL TESTS & PROBLEMS THAT NEED BE SOLVED****************************************************************

I´m using this configuration now:

-VDP #WAIT output directly to the Z80 #WAIT input
-Disconect /CSW & /CSR generated from S1985
-Generate externally with Logic Circuit /CSW and /CSR signals for the VDP
-Disable M1 #WAIT (between S1985 and Z80)
- I installed a provisional switch between M1 #WAIT signals (between S1985 and Z80) to make this test.
(Also i disconected slowdown SLOT2 provisionaly, now SLOT2is directly conected to 3.58Mhz CLK, current MSX SUPER TURBO, first image link in this post)

TEST1. ABOUT MSX BOOT LOGO PROBLEM:

Msx Boot Logo with 8Mhz or 10Mhz crystal + M1 Wait Enable or Disable + Turbo OFF = LOGO works OK, no glitches and msx start OK.
Msx Boot Logo with 8Mhz or 10Mhz crystal + M1 Wait Enable or Disable + Turbo ON = LOGO works BAD, glitches appear in screen and MSX hangs in logo.

The glitches&hang problem happen when Turbo is ON in BOOT, with M1 Wait Enable or Disable i got same results when Turbo is ON = BAD LOGO.

www.youtube.com/watch?v=ETg6HDyj8BE&feature=channel_video_title

(in video you could see no much glitches only a strange square in M appear sometimes, with 10Mhz or 8Mhz logo looks with a lot glitches and flickers when Turbo is ON, if you look carefully you´ll see a strange character below logo instead RAM quantity message, after that the MSX hang, final boot in video is with Turbo OFF and M1 Disabled)

This is the modifications that i made to allow SubROM+Kanji.ROM on IC12:

2C73h: 04 (Enable WAIT on default R#25 value)
7B27h: 07 19 (Enable WAIT on MSX boot-logo)
7A3Ch: 04 19 (Enable WAIT after MSX boot-logo)

Seems that works ok in emu but dont works for real machine.

Also i rebuilt how IC12 is conected in my machine, it seems like sd_snatcher told me:

"The pin-22 of the 27C512 should receive only the Z80#RD signal, because the #SLTSL signal is already generated with the Z80#MREQsignal, and you connected #SLTSL to the 27C512 pin-20."

with this new mod i allow to IC12 (27C512) works with all 64K, not only 32K, in my old install i conected to IC12 socket directly the eprom 27C512 and only PIN1 was not conected to socket, was conected directly to A15 Z80 PIN5, now you can see my actual configuration:

DIAGRAMS:
img18.imageshack.us/img18/5040/originalepromhbf9sconfi.jpg
img266.imageshack.us/img266/2658/msx2epromhbf9sconfigura.jpg

Msx works ok following that config, anyways this not solves msx boot problem corruption when Turbo in ON+ above methods expalined.
Will be great if anyone have idea what really are happening with that problem.

"It seems that 8MHz without-waitstates will be too fast for the V9958 under some conditions. But I don't know what's causing the boot to freeze. Indeed this is weird, since the MSX2 games do run normally. I would only be able to answer that question after a careful examination, but It would be good if someone could also help with this."

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

TEST2. HOW NOW TURBO ON FIXES FLICKERING EFFECTS (THIS TEST IS ONLY CURIOSITY, NOT BE A REAL PROBLEM):

-Vampire Killer+8Mhz+TURBO OFF+ M1 WAIT ENABLE (same happen with: tested running games from MegaflashRom in SLOT2 (3.58MHZ) and tested running games from MMC/SD Sinfox in SLOT1 (TURBO))
I noticed that in the top of the screen begins to be some interference in graphics that should be seen as normal because also happen in the games even using a Turbo-R, the video is in HB-F9s:

www.youtube.com/watch?v=xgAsSWYmC0A

-Vampire Killer+8Mhz+TURBO OFF+ M1 WAIT DISABLE (same happen with: tested running games from MegaflashRom in SLOT2 (3.58MHZ) and tested running games from MMC/SD Sinfox in SLOT1 (TURBO))

Same effect happen but now it seems like the interference is shown now with a little less flickering than test above, like you told with M1 WAIT Disable machine is much faster, seems like with M1 Disable the effect is diffirent and a little less than befiore, probably in video you could not appreciate this, but happen, then... could be fix this effect improving much more the M1 DISABLE circuit?

www.youtube.com/watch?v=5jYUvZtUuOM

-Vampire Killer+8Mhz+TURBO ON+ M1 WAIT DISABLE&ENABLE (same happen with: tested running games from MegaflashRom in SLOT2 (3.58MHZ) and tested running games from MMC/SD Sinfox in SLOT1 (TURBO))

This way the game run very fast (obviously) and the strange flickering effect is gone, runs perfect. Perfect when Turbo is ON:

www.youtube.com/watch?v=-npDLr1blsw

In this video Turbo ON and OFF is switching lot of times, when Turbo is ON no effect appear in character:

www.youtube.com/watch?v=d5m3OR-bfeI

I think that strange effect is normal in MSX system, even using a Turbo-R A1-GT that effect appear, but when Turbo is ON the effect is gone in HB-F9s!, will be great to know how fix that problem in normal (3.58Mhz-TURBO OFF+M1 WAIT DISABLED) speed! In Turbo-R we can see same effect, i think a little more accentuated what was happened in HB-F9s:

MegaflashRom in R800 Mode:

www.youtube.com/watch?v=bkenoLhL1cY

MegaflashRom in Z80 Mode: ( i dont know why but if i upload this video to youtube that flickering effect in video dissapear if you see the video from youtube, then i uploaded the .avi to megaupload)

www.megaupload.com/?d=26V03VKH

"The Vampire Killer flickering and excessive speed was caused by a bugs in the game. Those bugs were fixed on my patch: frs.badcoffee.info/patches.html"
"The turbo=ON fixed the original Vampire Killer flickering because data was transfered faster to the VDP. On the R800, the flickering gets worse because of the famous VDP slowdown access imposed by the S1990"

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

I cant load Illusion City in the machine, should works at 8mhz, but i get black screen when suppose begin to load the game. I tried it with LPE-MMC-V7JBUF and MMC/SD SInfox but i couldnt get game works. I´m wonder if anyone with Turbo machine could load this game, i tried "Illusion City in English for MSX 2/2+/TR version 0.5 - all disks" from:

www.alsoftware.com.br/adrianpage/illusioncity/index.php?page=index&lang=en&music=2

Will be great know what is the problem to load the game, because should be work at 8Mhz, and for purpose test will be great get load the game.
I have to try test again the game with a 7Mhz crystal or less.

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

ALTERNATIVE METHOD TO AVOID M1 #WAIT SWITCH OR FUTURE SOLUTION to can get better results (still in progress...)

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

SLOWDOWN SLOT METHOD 1 SEEMS WORKS, IS STILL PENDING TRY METHOD2 CONFIGURATION and know really how do it.

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Will be great to know all must possible about slowdown slt method 2 or try, anyways like i have all cartidges with crystal oscilator, and i will not use original at all, beacuse most of them are japanese
or have original game bugs, i´m thinking that will be better get a best performance with Turbo speed and have SLOT1 and 2 working like turbo-slots, i mean, i get a L.Padial 8 slot expander, and i think expand slot1, all signals to a external 50 pin conector, from that conector (50 thin conector like in PC) i could conect the 8 slot expansor and someway modded it to allo works like Turbo-slots and also some slots like 3.58Mhz, this will be great because that way i could use 2 Turbo-slots in real machine (also tell that LPE-MMC allow use 2 extra slots with cable Padial sent me). Then i should mod the 8 slot expander, i think if i should use a 3.58mhz oscilator to do it or not, maybe will be a solution, to allow some slots of the expander could works only at 3.58Mhz. The first idea is then get all signals from slot1 (this way when i use 50 pin external conector placed in the machine to allow use the 8 slot expansor i will not can use physically slot1 at same time) with also Turbo CLK that will goes to 8 slot expansor. I followed how CLK tracks works for that 8 slot expansor and will be great Know how to try the mod. This is a diagram about how CLK signal is moving into the cart, there is a login between the CLK signal ( i tried the 8 slot at turbo speed and not works like is showed now):

img257.imageshack.us/img257/6202/clksignalinlpe8slotexpa.jpg
img856.imageshack.us/img856/7914/lpadialexpansor8slot.jpg

Blue CLK signal is the male PIN 42 of the 8 slot expander, and the red signal goes to all PIN42 of each of one 8 slots. Will be great select which slots could work at 8Mhz (for example) and which does only at 3.57Mhz.

MODS STILL IN PROGRESS...

Login or register to post comments

By RobertVroemisse

Paragon (1226)

RobertVroemisse's picture

18-10-2011, 12:55

Congratulations with the BIGGEST post on this forum EVER. Tongue

Info seems pretty useful though.

By RetroTechie

Paragon (1392)

RetroTechie's picture

18-10-2011, 16:21

Yep, and also with many errors in it. I'll give an example:
1) Choose which slot you will want to run at 3.57MHz timings/clock
2) Open the following connections of that slot with the motherboard: CPUCLK (I think you already did this on your machine)
3) Solder a wire to connect the CPUCLK pin of that slot to the V9958 CPUCLK pin
4) Solder a wire to connect that slot's SLTSL signal pin to one of the slowdown diodes of the SuperTurbo

This way the cartridge slot's clock signal is same as standard 3.58 MHz, but free-running in relation to what the Z80 gets. That would make cartridges like DRAM-based memory mappers fail. The proper way would be to just connect /SLTSL signal to one of SuperTurbo's slowdown inputs. That way any software that runs in that slot makes the SuperTurbo stay at 3.58 MHz continuously - with slot and Z80 clock in sync.

And it goes on:
5) Inserting the VDP clock out as a non-turbo clock source for the SuperTurbo. This is done by:
a) Remove the following components: X1, C1, C2 R1, R2
b) Disconnect the IC1 pin-10 from the IC3 pin-6
c) Connect a wire from the VDP CPUCLOCK pin to the SuperTurbo's IC3 pin-6.

This way the input of IC1 inverter (pin 11) would be left floating, which is very bad practice for CMOS circuits, especially oscillators. For example the other oscillator circuit (that also uses an IC1 inverter) might be affected. SuperTurbo documentation says (correctly) you can simply use either a crystal, or connect an external clock to Xin point. No need to remove resistors, capacitors or change connections on SuperTurbo board.

There's a number of other mistakes in above post, but it's too much work to check it all & point them out. Also it shows an enormous amount of work if you want to push an MSX2 machine beyond, say, 8 MHz. Remove M1 cycle wait has the potential to cause problems with many cartridges (as Dhampird found out). And VDP -> Z80 wait method depends on presence of a V9958 (and judging from test results, doesn't seem to work, the way it was installed in above machine).

If only /VDPCR and /VDPCW are used to control the SuperTurbo, it also means that machine keeps running @turbo for each of the following:

  • Floppy disk access
  • MSX-Audio I/O read/writes
  • MSX-Music I/O writes
  • There's likely more, many things use I/O ports like joystick / mouse, printer, RS232 / Midi interfaces, some IDE / SCSI controllers, etc, etc.

This will cause problems with most diskROMs, and causes properly written MSX-Audio / MSX-Music software to fail (see eg. YM2413 datasheet for required software delays). There are methods to fix each of the above, but they are cumbersome. Switching back for all I/O accesses is much simpler, and makes little speed difference in typical usage.

Final conclusions are much the same as what was already known shortly after introduction of MSX turbo circuits. It's very nice to see Dhampird pushing an MSX2 to its limits. Big smile But that's about it...

Still wondering why he doesn't get himself an Altera DE1 (or 1chipMSX) & learn some VHDL. Has everything you might want already, and working. And then things like the above can be done by changing a few lines VHDL, run some compile scripts & upload new config through an USB cable. Versus stuffing numerous little circuit boards inside that HB-F9S, whose function is only clear to himself. If that machine is ever sold, next owner will stumped about what circuit xyz does... Smile2

By RetroTechie

Paragon (1392)

RetroTechie's picture

18-10-2011, 16:57

BTW. it is an interesting find that S1985 /VDPCW output signal's falling edge is synced to CPU clock (not rising edge, and not /VDPCR). Doesn't make sense, decoding A7~A3 (and A2? Question ), /IORQ, /RD and /WR should be enough (you don't need /M1 to decode I/O ports btw, in interrupt acknowledge where /IORQ and /M1 are both low, /RD and /WR will be inactive).

But knowing that Sony in general built well-designed equipment in the 80's, perhaps there's a good reason for it? For example to make sure that /VDPCR and /VDPCW never overlap (even with slow logic), which should never happen according to VDP datasheet.

By Dhampird

Hero (556)

Dhampird's picture

18-10-2011, 21:34

Hello, "RetroTechie" thank you very much for the clarification about the super msx turbo slowdown methods, I appreciate it a lot. Like you said surely there are many errors in the post, and there is too many things that need be improved/corrected.

And VDP -> Z80 wait method depends on presence of a V9958 (and judging from test results, doesn't seem to work, the way it was installed in above machine).

-Mmm... i´m wondering if you could help me at this point, to get V9958 #WAIT msx implementation with msx super turbo in a stable manner in Hb-F9s, like using 7.37Mhz or 8 MHz, it seems that achieve a stable 10mhz in hb-f9s might be odyssey, at least for me, and so much incompatible with another hardware to want even try a stable solution, but maybe a good V9958 #WAIT implementation with Turbo should correct most of flickering objects in games and others issues ("not allow keyboard/joystick input slowdown your MSX anymore"?), like get a little new extra speed? but with a IORQ stable msx super turbo configuration install like you said. I know this could be much to ask.

Still wondering why he doesn't get himself an Altera DE1 (or 1chipMSX) & learn some VHDL. Has everything you might want already, and working. And then things like the above can be done by changing a few lines VHDL, run some compile scripts & upload new config through an USB cable. Versus stuffing numerous little circuit boards inside that HB-F9S, whose function is only clear to himself. If that machine is ever sold, next owner will stumped about what circuit xyz does..

-The main idea was try to modify the hb-F9S everything I could, I have a special appreciation to this model because it was my first computer, and say that I wanted to make it ... a tribute? Anyways, about get 1chipMSX & learn some VHDL is not a bad idea, I think I have muuuuch to learn...

Thanks a lot.

By sd_snatcher

Prophet (2295)

sd_snatcher's picture

18-10-2011, 22:13


Yep, and also with many errors in it. I'll give an example:

Quote:
1) Choose which slot you will want to run at 3.57MHz timings/clock
2) Open the following connections of that slot with the motherboard: CPUCLK (I think you already did this on your machine)
3) Solder a wire to connect the CPUCLK pin of that slot to the V9958 CPUCLK pin
4) Solder a wire to connect that slot's SLTSL signal pin to one of the slowdown diodes of the SuperTurbo
This way the cartridge slot's clock signal is same as standard 3.58 MHz, but free-running in relation to what the Z80 gets. That would make cartridges like DRAM-based memory mappers fail. The proper way would be to just connect /SLTSL signal to one of SuperTurbo's slowdown inputs. That way any software that runs in that slot makes the SuperTurbo stay at 3.58 MHz continuously - with slot and Z80 clock in sync.

Isn't exactly what the step-4 tells that must be done? What's the difference? Smile


Remove M1 cycle wait has the potential to cause problems with many cartridges (as Dhampird found out). And VDP -> Z80 wait method depends on presence of a V9958 (and judging from test results, doesn't seem to work, the way it was installed in above machine).

A misunderstanding about the megapost is that it is a collection of recipes. In fact, it's like a log of a lot of intermediary steps that were done before reaching the final, more complex steps. Since English isn't Dhampird first language, he probably had some difficult in making that clear.

If those intermediary tests weren't taken, there was no meaning in wasting time developing more complex circuits. Thus, the zero-wait-state test had to be done. The newer circuit I send to Dhampird handles the M1 waitstates in a more graceful way.


If only /VDPCR and /VDPCW are used to control the SuperTurbo, it also means that machine keeps running @turbo for each of the following:

  • Floppy disk access
  • MSX-Audio I/O read/writes
  • MSX-Music I/O writes
  • There's likely more, many things use I/O ports like joystick / mouse, printer, RS232 / Midi interfaces, some IDE / SCSI controllers, etc, etc.

This will cause problems with most diskROMs, and causes properly written MSX-Audio / MSX-Music software to fail (see eg. YM2413 datasheet for required software delays). There are methods to fix each of the above, but they are cumbersome. Switching back for all I/O accesses is much simpler, and makes little speed difference in typical usage.

Please, don't try to shut a nice initiative like Dhampird is having just based on suppositions.
1) Floppy disk access works perfectly well, and gets much better.
2) Very slow interfaces would fail based on the CPU speed, and the I/O slowdown isn't enough to fix that. For such slow cases that the 3.5MHz slow-slot was proposed.
3) MSX-Audio and MSX-Music are so slow that even tha basic SuperTurbo with the I/O slowdown is too fast for them. The same applies for the R800. The fix in this case must be on the software side. Porting the games to use the MSX-Music/MSX-Audio BIOS fix this matter once and for all.
4) Joysticks, mouse, printer are all handled by the S1985 and this guy can couple easily with the speed. The devices connected to the MSX joystick ports can deal with that speed easily. The only exception are the MSX standard paddles, but that's a software issue, not a hardware issue. This is exactly why their support was discontinued on the MSX Turbo-R. No big fuzz here, as it seems that nobody ever supported those pads. (to the point of openMSX folks not even bothering to emulate it - no offense intended).
5) The chips contained on RS232/midi interfaces were not created exclusively for the MSX system, and were used on computers much faster than the MSX without any problem. The same applies for the IDE/SCSI controllers.


Final conclusions are much the same as what was already known shortly after introduction of MSX turbo circuits.

It's very nice to see Dhampird pushing an MSX2 to its limits. Big smile But that's about it...

Still wondering why he doesn't get himself an Altera DE1 (or 1chipMSX) & learn some VHDL. Has everything you might want already, and working. And then things like the above can be done by changing a few lines VHDL, run some compile scripts & upload new config through an USB cable. Versus stuffing numerous little circuit boards inside that HB-F9S, whose function is only clear to himself. If that machine is ever sold, next owner will stumped about what circuit xyz does... Smile2

Come on, let the guy enjoy his hobby! Hes doing it because:

1) He can
2) He likes it

Otherwise, one could question what's the point of all of us using such dated machines anyway? Isn't it because of the same reasons listed above? Smile

By wolf_

Ambassador_ (9536)

wolf_'s picture

18-10-2011, 22:58

Congratulations with the BIGGEST post on this forum EVER. Tongue

Info seems pretty useful though.

Back in the days of the MSX Mailinglist, someone would quote it all and add 'ok!'

By PingPong

Prophet (2783)

PingPong's picture

18-10-2011, 23:14

but the v9958 wait feature does not apply only when using vdp commands that are between cpu and vdp?
If this is true, in/out on 98h are unaffected by the wait features....

By RetroTechie

Paragon (1392)

RetroTechie's picture

19-10-2011, 01:47

Isn't exactly what the step-4 tells that must be done? What's the difference? Smile
There's 2 things you can do:

  • Put a fixed 3.58 MHz on cartridge slot clock pin (this could be picked up from VDP). This is nice solution if you want to dedicate a cartridge slot to sound cartridges like Music Module, SCC etc. In this configuration cartridges that need a synced-to-CPU clock (like many DRAM mappers) will not work. Which may be fine as long you are aware of that limitation. No reason to switch back turbo for /SLTSL here (unless you have really slow ROMs inside those cartridges).
  • Slow down when a cartridge (more specifically: memory) in that slot is used. In this case, connecting that /SLTSL to turbo circuit is enough, no need to touch cartridge slot clock pin.

Nothing stops you from doing both, but that's rarely useful. Just pick one of above options depending on what cartridges you have & how you want to use them.

Floppy disk access works perfectly well, and gets much better.
Most European machines I know have WD1793 or WD2793 compatible floppy controllers (memory mapped), and disk I/O with these fails when you just bump the clock speed. Common fixes are: switch back for /SLTSL that accesses diskROM-slot, floppy controller /CS signal, or replace diskROM with one that's adapted to work @turbo speed.

Despite this, if you have an efficient diskROM, floppy transfer speed won't improve much because it's limited by floppy transfer speed, not CPU.

Other floppy controllers may work via I/O ports, perhaps work fine @turbo, or operate in a very inefficient manner (in which case turbo might help a lot).

4) Joysticks, mouse, printer are all handled by the S1985 and this guy can couple easily with the speed. The devices connected to the MSX joystick ports can deal with that speed easily.
That's not necessarily true: I/O instructions themselves are speeded up, but also software delays are shortened. At 10 MHz, each clock cycle is only 100 ns. Memory read/writes take 2 (200 ns), Z80 opcode fetches 2,5 (250 ns). Now take out M1 wait and the latter becomes 1,5 cycle (150 ns). Now subtract delays inside S1985 (for many signals this is specced as ~70 ns, and a >20 year old IC may not reach that anymore). What's left are awfully short pulse widths / timing margins, and many connections to a signal / long PCB traces make things worse. There's a reason many turbo upgrades involve things like replacing a resistor array connected to keyboard signals. Usually they work fine, but joysticks etc are no exception to this kind of thing.

Operations themselves may succeed, but that doesn't mean the correct data is written/read every time.

10 MHz on an MSX2 (and disabling M1 wait?) really is pushing it (if it works at all), the limit is a combination of MSX engine IC, installed ROM/RAM access times, mainboard size, and many other (unknown?) factors like... temperature. Wink

Come on, let the guy enjoy his hobby! Hes doing it because:

1) He can
2) He likes it
So true! Big smile Never was my intention to 'interfere', just pointing out the devil is in the details...

but the v9958 wait feature does not apply only when using vdp commands that are between cpu and vdp?
If this is true, in/out on 98h are unaffected by the wait features....

Unlikely - that's the only time it would be useful, when there's no VDP <-> CPU transfer there's no problem. I don't think this feature wouldn't work, more likely it isn't working the way it's connected in Dhampird's machine (which is unclear to me how exactly that is). And of course it would be best if enabled as early as possible in the boot process (like adapted BIOS ROM).

By RetroTechie

Paragon (1392)

RetroTechie's picture

19-10-2011, 02:32

-The main idea was try to modify the hb-F9S everything I could, I have a special appreciation to this model because it was my first computer, and say that I wanted to make it ... a tribute?
Seems to me you've pretty much achieved that goal... LOL! Time to move onto other project(s) ?
Anyways, about get 1chipMSX & learn some VHDL is not a bad idea, I think I have muuuuch to learn...
1chipMSX is a very nice platform but a) expensive, b) difficult to replace if it somehow gets fubar'd, and c) doesn't have many general purpose I/O connectors (if you don't abuse cartridge slot for that, which is an option). I regard it more as a compact, modern MSX that happens to be upgradeable.

FPGA boards like Altera DE1 are easier to find and not (excessively) expensive. There's simpler FPGA boards if you don't mind a healthy dose of Do-It-Yourself. And if you just want to 'taste' the concept of programmable logic, there's really simple boards with a small CPLD like Xilinx XC9572XL or Coolrunner-II on it.

If you intend (in the future) to get into bigger / more complicated hardware projects, then learning use of programmable logic like CPLD / FPGA is really worth it. A simple CPLD board is enough to introduce you, time is the biggest investment. Once you get into it, it's a matter of practical issues (number of I/O pins, IC housings, 5V tolerant or not, where to get a board, costs, whether a logic circuit fits in a specific device, schematic entry / Verilog or VHDL, etc, etc).

By Lord_Zett

Paladin (738)

Lord_Zett's picture

29-10-2011, 10:19

i most read more to do this to on a nms8220

Page 1/2
| 2
My MSX profile