It's 2013. Have we made a modern,
easily-obtainable MCU-based way of interfacing with either the HCV-023 RAM adapter or HCV-022 the disk drive of a Famicom Disk System?
Probably not. That would be excellent if someone did that.
Yeah, I wish there was something nice, too. I tried to get my parallel port FDSLoadr working, but after many attempts I got nowhere with it. I eventually gave up and tried other methods:
1. For testing emulation stuff, a simple hotswap with the RAM adapter was sufficient for my needs.
2. For other stuff, I had made an adapter to fit famicom carts into my frontloader NES, and wrote CopyNES plugins to send data over USB. This works pretty well, though it would probably be hard to do disk-swapping if your goal was to play FDS games.
For playing FDS games, I've generally found the PowerPak quite sufficient, anyway. The only reason I wanted to use the FDS was to do some direct testing to improve emulation, so my inability to run games on it effectively wasn't really an issue.
Now that gives me an idea. If there was some way of connecting a massive storage device to the controller port of a Famicom AV and/or to the expansion port of a regular famicom, then a simple program could be loaded in the mainboard's RAM with the PowerPak (or another devcard) and then it could be hotswapped with the FDS adapter in order to upload data to physical discs.
Maybe you could rig some device up to allow for serial reading of an EPROM chip connected to either port. So first you'd use a loader cart (powerpak or eprom) to load main memory with your program. Then you'd hot-swap the FDS RAM Adapter in place and your loaded program would get whatever new program data and FDS Disk data from the connected EPROM. With a 128KB EPROM you may need to keep things more minimal, but with a 256KB EPROM you could load a pretty screen and other elaborate things, and still have room for 2 disk sides.
Anyway, my main idea is, could you reasonably easily rig up something to read an EPROM/FlashROM serially from the controller port. It would be quite slow though I'm sure. Maybe with some kind of hardware mod you could make it parallel access. Maybe you could make a register at $5000-$5FFF which on write could atleast reset your counter and then whenever you read the register it returns a byte and then increments this counter.
If the BIOS isn't part of the 2C33, one could write an alternate BIOS for the FDS that just served as an intermediary for transferring data to/from the disk, and got data from the expansion port (probably bit-banged serial).
I'd probably socket it, and use a 16 or 32KiB PROM, and put a switch somewhere outside to select which BIOS to boot into.
You forgot that the BIOS is hardwired in an ASIC chip with other stuff and can't be changed.
That just makes it harder, not impossible.
Also, I didn't forget; I did say "If the BIOS isn't part of the 2C33".
Although there's some amount of chicken-and-egg problem here, disks could also be made that had a disk-writing programs on them. Bootstrapping could happen with a copynes-equipped famicom or by hot-swapping.
Or by making a cartridge which overrides a part of the ROM, similar to how Game Genie does, is another way to replace the BIOS without replacing the BIOS, if it would help.
I would like to see a way of loading FDS games via 3.5" floppy, but I know I am dreaming... As of now, I use my MGD1 to write disks...
Not usefully doable: FDS has a spiral data track and conventional floppies use nested circles. One can't fake the former using the latter, because there are dead spots when the drive head is seeking from track to track, and the FDS doesn't support such dead spots.
My concern is actually prolonging life of the FDS disks themselves. Over years, should they get corrupted or their data damaged somehow, I would like to know that I have the option of re-writing them with a fresh copy of the image.
I can't imagine data is pushed very fast for the system simply given its age; surely a microcontroller would have the gusto to do what FDSLoadr has done in the past to write to a disk drive?
mikejmoffitt wrote:
My concern is actually prolonging life of the FDS disks themselves. Over years, should they get corrupted or their data damaged somehow, I would like to know that I have the option of re-writing them with a fresh copy of the image.
I can't imagine data is pushed very fast for the system simply given its age; surely a microcontroller would have the gusto to do what FDSLoadr has done in the past to write to a disk drive?
The disks themselves are pretty durable after nearly 30 years. With my MGD1 setup (I haven't tried my FDS to parallel cable yet), I can easily overwrite disk that were previously unuseable. Not everyone has a PC with parallel port and a setup like mine (not to mention that yoyr FDS drive needs to be modded for write capability), so I do agreee that a more modern setup for writing FDS disks is necessary. I actually prefer playing FDS games from FDS disks rather than a flash cart.
An interesting thought, you really only need something that can interface with the 60pin connector. It doesn't need to be a NES/FC does it? I'm thinking you might be able to achieve the task with something like the
kazoo. So you'd just plug the ram adapter into the kazoo and read/write to the ram adapter pretending to be the NES/FC.
My only question/concern is clocking and timing. Does the FDS have it's own clock? Or is it simply driven by M2/phi2 via the cart connector?
There's another 21.47MHz xtal attached to the RP2C33.
lidnariq wrote:
There's another 21.47MHz xtal attached to the RP2C33.
Figured something like that, but probably still not a deal breaker.
I guess the real question is whether or not you can asynchronously access the disk. I'd imagine there are some timing constraints due to the mechanics of the one way spinning disc. You wouldn't be able to easily use the bios' routines since you're not on a 6502. A quick look at the wiki suggests that one could asynchronously read and write from the disc via $4024/5 and $4030/1 one byte at a time. I'll have to dig into this some more because that sounds too easy... Whatever timing contstraints there are I'm sure you could work with them, just makes the process a little tricky, might have to write the time critical code in asm vice C.
The list of reasons I should invest in a FDS are starting to grow now...
RGB_Gamer wrote:
mikejmoffitt wrote:
My concern is actually prolonging life of the FDS disks themselves. Over years, should they get corrupted or their data damaged somehow, I would like to know that I have the option of re-writing them with a fresh copy of the image.
I can't imagine data is pushed very fast for the system simply given its age; surely a microcontroller would have the gusto to do what FDSLoadr has done in the past to write to a disk drive?
The disks themselves are pretty durable after nearly 30 years. With my MGD1 setup (I haven't tried my FDS to parallel cable yet), I can easily overwrite disk that were previously unuseable. Not everyone has a PC with parallel port and a setup like mine (not to mention that yoyr FDS drive needs to be modded for write capability), so I do agreee that a more modern setup for writing FDS disks is necessary. I actually prefer playing FDS games from FDS disks rather than a flash cart.
I guess I poorly wrote that - What I mean is that should a disk become corrupted (say some idiot uses a magnet to secure a disk to a fridge) then I have no means of restoring the data, which your setup does allow.
Modifying the FDS is fairly trivial and is a one-time operation, so I don't see it as a huge obstacle.
How about something like a homebrew RAM adapter, that has a modern interface on it, and sort of does a modernized version of what the MGD1 does?
mikejmoffitt wrote:
How about something like a homebrew RAM adapter, that has a modern interface on it, and sort of does a modernized version of what the MGD1 does?
Actually if you know the serial protocol you don't even need a ram adapter. Just an mcu to interface between USB and the disk drive's serial cable. Cut the ram adapter out completely.