Problems with DOS using an Y-type connection

For the discussion of all hardware related topics.
dublevay
Posts: 80
Joined: Wed Jan 23, 2019 3:41 pm

Re: Problems with DOS using an Y-type connection

Post by dublevay »

OK - so I've tried disabling /DSD in two ways. Firstly by always setting it to Hi-Z - or open. And secondly by just removing it from the CPLD config altogether. There is no difference to the problem whatsoever.

So I've then double checked the streaming module (which is only suitable for the CocoSDC right now), and can confirm that it fails using:
  • DragonDOS 1.3a
  • DOSPLUS 5 v25.10 (2020)
  • DOSPLUS 5 (1989)
  • DOSPLUS 5 v25.08 (2018)
  • DragonDOS 1.1c
However by using the following DOS versions it consistently and reliably runs:
  • SuperDOS E8
  • Eurohard DOS 4.2
I then tried running another program called Foggy's Quest (which uses the MSX chipset) that Pere has converted using the DragonDrive (basically a pure DOS interface with Gotek attached), and successfully got it to run using:
  • DragonDOS 1.0
  • DragonDOS 1.1
  • SuperDOS E6
  • Eurohard DOS 4.1
So quite a range of tests.

Bear in mind that the CocoSDC issues occur before even running any MSX-chip-using code. So just a simple DIR can cause a glitch/crash on the problematic DOS versions.
sorchard
Posts: 455
Joined: Sat Jun 07, 2014 9:43 pm
Location: Norwich UK

Re: Problems with DOS using an Y-type connection

Post by sorchard »

I'm not on facebook so I've no idea what's been covered there e.g. I don't know what the 'streaming module' is.

Is the /DSD signal the one that disables SAM's ls138 decoder?
How is NMI presented, direct from the MSX hardware or via the CPLD?

The perhaps relevant things that the MPI does is [1] buffer most of the cart port signals (address, data, clocks etc) [2] power the connected devices.

Still plenty of things to look at:

How reliable is the Wordpak 2+ board with the CoCoSDC via the Y-splitter?
What happens if you power the y-splitter from a separate 5V supply?
What happens if you add supply bypass caps to the splitter, say 220n + 470u?
What do data/address/clock signals look like on a 'scope?
What does gnd bounce and vcc drop look like on the splitter when the CoCoSDC is active? (You will still get a voltage drop along the traces, regardless of supply rating)
What do the 'reliable' DOS versions do if the supply voltage is reduced slightly to 4.9V, 4.8V?
Too many loads on the mpu bus?
Stew
pser1
Posts: 1396
Joined: Sun Mar 25, 2012 7:32 pm
Location: Barcelona (SPAIN)

Re: Problems with DOS using an Y-type connection

Post by pser1 »

Hi Stew,
I hope some of these questions will be answered by John
I just wanted to say that the oojamaflip (Y-cable type module) has *NO* power supply
So the CoCo-SDC gets the power from the expansion bus but the MSX2+ board is powered
individually to avoid problems with the D64 power supply.
cheers
pere

I copy here the info that Darren Atkinson has given me by mail:
He has found a few differences between SuperDos and DosPlus that could be important!
------------------------------------------------------------------------------------------------------------

Code: Select all

Could it be that having both boards attached in parallel simply results in too much fan-out on the bus?
The CoCoSDC decoding is all gated with E and !SCS (!P2).  Address line A4 must also be low so no decoding of FF50-FF5F occurs.
As to why different software would work or not, that could come down to unseen side-effects of whatever happens to be on the bus 
during a given cycle.  One difference I noticed in the software is the order of instructions in the read loop, with SuperDos resetting
 FIRQ earlier and looping back to SYNC faster:
SuperDos:
  sync
  read PIA  (reset FIRQ)
  load DATA
  store
  bra

DPlus:
  sync
  load DATA
  read PIA  (reset FIRQ)
  store
  cmpx
  bne
dublevay
Posts: 80
Joined: Wed Jan 23, 2019 3:41 pm

Re: Problems with DOS using an Y-type connection

Post by dublevay »

Thanks Stew and Pere.

I can't pretend to understand if the FIRQ reset will make a difference I'm afraid. Regarding the fan-out - it's not happening on either DragonMMC or DragonDrive, so not sure it would be that - unless the CocoSDC is much more complex in design itself of course.

The streaming module is irrelevant really - the machine will glitch before we even get to running that most times. But for info, the streaming module is just some decent quality 256 colour images being streamed directly from the SD card to the V9958's VRAM using low-level CocoSDC commands.

Re: the WordPak 2+ - I'd need to re-test all of that, as haven't used it in a while. Need to dig out the DSUB <-> SCART as well. Won't be today.

As Pere says, the Y-splitter is literally that - connecting the expansion port to two identical sockets. It's the Oojamaflip. https://www.dragonplus-electronics.co.u ... ojamaflip/

My write-up there suggests that I was using CocoSDC with it, but I'd need to double check. I did get the special OS9 running on there - and that would have either been DragonDrive or CocoSDC.

The DMSX2+ board is currently smoothed with about 4,000uF across 4 electrolytics - mainly to dampen the noise that was coming from the YM2413. Even the original FM-PAC etc for the MSX machines had some massive caps for that purpose. The DMSX2+ can be powered using the Dragon's internal supply (if it's been uprated) or an external +5V supply. The issue has always been the same whichever way it is powered.
bluearcus
Posts: 86
Joined: Wed Sep 07, 2016 4:45 pm

Re: Problems with DOS using an Y-type connection

Post by bluearcus »

That difference in the read loop would shorten the time the PIA line and FIRQ were asserted for by a few cycles. And as I mentioned, it's already pulled low a lot more than it is with a standard DOS cartridge timing (from chatting with Darren before about Dragon OS9 boot unreliability).

From some old emails (which I hope Darren doesn't mind being reproduced here)...
Darren Atkinson wrote: Here are the relevant steps performed by the SDC when executing a Floppy Read Sector command for the Dragon.

The byte transfer loop:

* Put next sector byte into the Data register.
* Set DRQ high.
* Wait up to 28µs or until DRQ goes low (when Dragon reads Data register).
* If time expired without a low DRQ then set internal Lost Data flag.
* Delay for 10µs (allow time for storing the byte and resetting FIRQ).
* Loop for next byte until all bytes given.

At the conclusion of the loop:

* Set DRQ low.
* If Lost Data flag was set then set Lost Data bit in Status register.
* Set INTRQ high (causes NMI* to be pulled low if enabled).
That 10 cycle delay is already super aggressive... re-asserting the FIRQ well before the loop has even got back to the SYNC. And much more so in the DPlus implementation (which merges the just read 2 bytes from the start of a sector read which is used for the bootable disk check in to the ordinary sector read loop - ich!) than in the SDOS one as Darren indicates.
pser1
Posts: 1396
Joined: Sun Mar 25, 2012 7:32 pm
Location: Barcelona (SPAIN)

Re: Problems with DOS using an Y-type connection

Post by pser1 »

Hello,
I have done a first try changing the DP50E read sector routine,
I have tried copying the ROM to RAM and then inverted the lda and ldb to acknoledge the interrupt first place.
I have changed the cmpx to three nops and then modified the branch to be a BRA
But loading a program to play some VGM files has shown the same garbage on the screen ... so this doesn't seem to be the way to go 🙁
cheers!
pere
pser1
Posts: 1396
Joined: Sun Mar 25, 2012 7:32 pm
Location: Barcelona (SPAIN)

Re: Problems with DOS using an Y-type connection

Post by pser1 »

oops, I have tried to start the Dragon with the MSX2+ board connected but without power supply ...
The Dragon goes mad and fills the screen with garbage. No way to start in this setup, so the pins from the MSX2+ module
without power supply do not have the expected level and are pulling to the wrong value some CoCo-SDC pins ...
regards
pere
dublevay
Posts: 80
Joined: Wed Jan 23, 2019 3:41 pm

Re: Problems with DOS using an Y-type connection

Post by dublevay »

Yes, the DMSX2+ board DEFINITELY needs to be powered from the Dragon or externally, otherwise it will crash the whole machine.
dublevay
Posts: 80
Joined: Wed Jan 23, 2019 3:41 pm

Re: Problems with DOS using an Y-type connection

Post by dublevay »

Thanks everyone for your support on this anyway. The way I see it, we have a workaround, which is to BANK into SUPERDOS or EUROHARD DOS in order to run DMSX2+ stuff with the CocoSDC - and that is pretty much the same workaround as OS9 requires - certainly with the new or original DragonPlus board.
pser1
Posts: 1396
Joined: Sun Mar 25, 2012 7:32 pm
Location: Barcelona (SPAIN)

Re: Problems with DOS using an Y-type connection

Post by pser1 »

hello,
just to give a little hope to Dragon-MSX2+ users ...
Mike Miller has found that the SDC firmware activates FIRQ for next byte very fast (10usec)
and he would like to have the chance to double this value just to see what it happens ...
So, I have contacted Darren Atkinson telling him Mike's idea and as he is very kind, he has
told me that in a few days he will prepare a Dragon's firmware version with that greater delay.
So ... just waiting to install that firmware and test how it works on our setup.
cheers
pere
Post Reply