Jump to content
IGNORED

Interesting DevOS Cartridge Dumping Issue


vb_master

Recommended Posts

Just thought I'd add that for sending data from console to PC through serial ports, you can usually do so just by connecting two wires (GND and one of the outputs.) Of course in theory this shouldn't work (and many said it wouldn't) because the joystick port outputs TTL level signals and the serial port expects RS232 signals. However, in practice it seems to work just fine. 5v is in spec as a space (+3v to +25v), and although 0v is out of spec for either, most serial ports read it as a mark (normally -3v to -25v).

It's interesting that this works with standard serial ports using TTL signals. I knew the 6532 could be used for serial communications, since the Atari 850 interface box uses two of them to drive its four serial ports, but I didn't realize they could be used as a workable serial interface without additional hardware to generate RS232 signals (as I'm sure the 850 uses). That suggests that a serial-based DevOS replacement could be implemented entirely in software, using something similar to your serial driver. What kind of reliable transmission rate is possible with this interface?

57600 was a little dodgy and 115200 didn't work for most. However, everyone who tried was able to get 38400 to work reliably. I can't remember what my FB2 dumper used, but I'd guess 19200? Even at those speeds, dumping a cart is tolerable. Additionally, if you had the resources of a 7800 (the FB2/2600 version is designed to run in RIOT RAM) you could easily do a simple protocol with a checksum like XMODEM and possibly use the higher speeds.
Link to comment
Share on other sites

57600 was a little dodgy and 115200 didn't work for most. However, everyone who tried was able to get 38400 to work reliably. I can't remember what my FB2 dumper used, but I'd guess 19200? Even at those speeds, dumping a cart is tolerable. Additionally, if you had the resources of a 7800 (the FB2/2600 version is designed to run in RIOT RAM) you could easily do a simple protocol with a checksum like XMODEM and possibly use the higher speeds.

Sure, 19200 would be more than tolerable for even 128K cartridge ROMs, and it would certainly be less of a headache than using a proprietary parallel interface under DOS. If it could use the XMODEM protocol, it could talk to just about any computer/OS ever made. Interesting possibilities ... I really need to read up on serial communications, now that I'm tempted to have a crack at a new DevOS BIOS myself!

Link to comment
Share on other sites

If the part number is the same, then it should work. But since we're dealing with nonstandard cables, you might want to ask the seller to make sure.

Both motherboards are made by Gigabyte, and both have the same pinout outlined in their respective motherboard manuals. Therefore, it will work properly.

 

Couldn't a MAX232A be used to convert TTL to RS232?

Link to comment
Share on other sites

If the part number is the same, then it should work. But since we're dealing with nonstandard cables, you might want to ask the seller to make sure.

Both motherboards are made by Gigabyte, and both have the same pinout outlined in their respective motherboard manuals. Therefore, it will work properly.

 

Couldn't a MAX232A be used to convert TTL to RS232?

Of course it could, and my code allows for that possibility, but I don't believe it's necessary for a barebones cart dumper.

 

If you wanted to expand to something that uses an actual protocol like XMODEM, you would need to receive as well as send. Since you don't want to send +/- 3-25v into the console, one of these chips could help. However, I think you could use a single bipolar transistor and two resistors to convert the signal to TTL levels in place of the chip.

Link to comment
Share on other sites

If you wanted to expand to something that uses an actual protocol like XMODEM, you would need to receive as well as send. Since you don't want to send +/- 3-25v into the console, one of these chips could help. However, I think you could use a single bipolar transistor and two resistors to convert the signal to TTL levels in place of the chip.

That would definitely be necessary for a full DevOS replacement, since it would also need to handle uploads of cartridge binaries to the console (for testing of new games on real hardware). I wonder if it would really be necessary for a new 7800 BIOS to include a cartridge dumper anymore, given that almost all of the old cartridges have already been dumped.

Link to comment
Share on other sites

If you wanted to expand to something that uses an actual protocol like XMODEM, you would need to receive as well as send. Since you don't want to send +/- 3-25v into the console, one of these chips could help. However, I think you could use a single bipolar transistor and two resistors to convert the signal to TTL levels in place of the chip.

That would definitely be necessary for a full DevOS replacement, since it would also need to handle uploads of cartridge binaries to the console (for testing of new games on real hardware). I wonder if it would really be necessary for a new 7800 BIOS to include a cartridge dumper anymore, given that almost all of the old cartridges have already been dumped.

I've said that same thing before, but protos and unreleased carts seem to appear often enough. I personally found a 2600 Pac-Man lab loaner and dumped it, unfortunately it was the same as the release version so basically worthless, and of course I had no problems dumping it, but others who randomly find things like this would probably appreciate a way of dumping.
Link to comment
Share on other sites

Just thought I'd add that for sending data from console to PC through serial ports, you can usually do so just by connecting two wires (GND and one of the outputs.) Of course in theory this shouldn't work (and many said it wouldn't) because the joystick port outputs TTL level signals and the serial port expects RS232 signals. However, in practice it seems to work just fine. 5v is in spec as a space (+3v to +25v), and although 0v is out of spec for either, most serial ports read it as a mark (normally -3v to -25v).

It's interesting that this works with standard serial ports using TTL signaling. I knew the 6532 could be used for serial communications, since the Atari 850 interface box uses two of them to drive its four serial ports, but I didn't realize they could make a workable serial interface without additional hardware to generate RS232 signals (as I'm sure the 850 uses). That suggests that a serial DevOS replacement could be implemented entirely in software, using something similar to your driver. What kind of (reliable) transfer rate might be possible with this interface?

 

 

I would still wire a Max232 or 148x into the circuit. but if you do that you need to provide 5v for either chip, and also 2 external caps for the max232. the max233 has the capacitors built in, but last time I looked was a much more expensive part :(

Link to comment
Share on other sites

I would still wire a Max232 or 148x into the circuit. but if you do that you need to provide 5v for either chip, and also 2 external caps for the max232. the max233 has the capacitors built in, but last time I looked was a much more expensive part :(

The 7800 joystick port does include a +5V pin, but I don't know off the top how much current it can provide. Would the 1489 be an adequate replacement for the MAX232? I've got a ton of 1489 chips laying around.

Link to comment
Share on other sites

I would still wire a Max232 or 148x into the circuit. but if you do that you need to provide 5v for either chip, and also 2 external caps for the max232. the max233 has the capacitors built in, but last time I looked was a much more expensive part :(

The joystick port does have a +5V pin, but I don't know off the top how much current it can provide. Would the 1489 be an adequate replacement for the MAX232? I've got a ton of 1489 chips laying around.

If you're going to go with an IC, I'd forget the MAX232 and go with a FT232RL. It is a USB-to-serial chip that already outputs TTL. You can buy a breakout board from SparkFun that even a beginner can use.

Link to comment
Share on other sites

If you're going to go with an IC, I'd forget the MAX232 and go with a FT232RL. It is a USB-to-serial chip that already outputs TTL. You can buy a breakout board from SparkFun that even a beginner can use.

FTDI also offers an USB cable with the FT232RQ already build in, so that you'd only need to solder an Atari joystick plug to it. That's what I used when I was trying to change DevOS to a serial protocol.

 

Since the FTDI driver has a bit-banging protocol I tried it with 7800CTRL and the current version of DevOS. It worked, but was very slow (about 60 bytes per second instead of about 6000 bytes per second, that the DOS version does). It's so slow, because the DevOS protocol acknowledges every single bit, which means you need to switch between reading and writing to the port a lot. You need to access the driver twice for every bit, and each access takes a little while. I suppose it would be the same with the parallel port drivers mentioned above. Therefore we still need to change DevOS to serial. I still plan to do that, but I'm pretty busy at the moment, so I don't know when I'll find time for it.

 

As for the original question: I don't think it's a problem on the PC side. The DevOS protocol is very simple. If the transfer was unstable, it would probably just lose sync and timeout, especially on the larger games. From my experience there are some bankswitched 2600 cartridges that don't like to be accessed at 7800 speed. That's what the -a option is for in the newer versions of 7800CTRL. It tries to read the game at 2600 speed. If that doesn't help, I don't know what might cause such a strange behavior.

Link to comment
Share on other sites

According to Gigabyte, my GA-EP45-UD3P has a parallel port header on the motherboard, but no parallel bracket was provided. Apparently it's product number is 12CF1-1LP001-01R.

Yeah, I've noticed a few newer motherboards that only give you a pin header; they probably saved a whole thirty-five cents by leaving out the external DB25 connector. What I would do next is install the parallel bracket and try using the onboard parallel port under pure DOS (remember to enable the port in the BIOS as LPT1 if it isn't enabled already). All the parallel brackets I've ever seen are wired exactly the same, so you can probably use anybody's bracket if Gigabyte's is too expensive.

 

EDIT: Damn, I just looked at the pinout you posted and noticed that it's slightly different. Standard parallel cables have the key at the unused pin 26 (somebody correct me if I'm wrong); yours has it at 24. Looks like Gigabyte is going to make you buy their stupid proprietary cable.

 

On most PC cables it is possible (although difficult) to switch the wires at the header connection. I don't know how many times I've swapped USB wires for different motherboards or extended cables that were too short. In the case of a parallel port header, though, it might be far less hassle just to buy the Gigabyte part.

 

I think it would be possible to use a PCI parallel port so long as it has the actual controller chip on it. I go out of my way to use PCI cards like that just to free up CPU resources. I don't know if I've ever seen a PCI to parallel card that has its own controller but they've got to have been made at some point.

Link to comment
Share on other sites

I think it would be possible to use a PCI parallel port so long as it has the actual controller chip on it.
It has a Moschip MCS9805

 

From manufacturer website:

The MCS9805 is a printer port controller with PCI bus interface. MCS9805 fully supports the existing Centronics printer interface as well as PS/2, EPP, and ECP modes.

The MCS9805 is ideally suited for PC applications, such as high speed parallel ports. The MCS9805 is available in a 128-pin QFP package. It is fabricated using an advanced submicron CMOS process to achieve low drain power and high-speed requirements.

Link to comment
Share on other sites

On most PC cables it is possible (although difficult) to switch the wires at the header connection. I don't know how many times I've swapped USB wires for different motherboards or extended cables that were too short. In the case of a parallel port header, though, it might be far less hassle just to buy the Gigabyte part.

 

I think it would be possible to use a PCI parallel port so long as it has the actual controller chip on it. I go out of my way to use PCI cards like that just to free up CPU resources. I don't know if I've ever seen a PCI to parallel card that has its own controller but they've got to have been made at some point.

Unfortunately, parallel bracket cables aren't (usually) individually wired like USB; they use a ribbon cable with a connector crimped onto it. It might be possible to open it up and rewire it, but it would be a lot less trouble to get the OEM cable, especially since the OP doesn't already have a parallel bracket cable on hand.

 

The common PCI serial/parallel cards use inexpensive chips from Moschip, Sunix, TiMedia, and a few other similar brands, and these all seem to be software-driven. Somewhat higher-end brands (SIIG is one example I can think of) still sell serial PCI cards which use real 16550 UART chips, but I don't know what their parallel cards are like.

Link to comment
Share on other sites

newer versions of 7800CTRL.
Where can the newest version of 7800ctrl be downloaded? Your site only has v0.2.

 

 

The file I posted has the newest version I've ever been able to find. Also if your only gonna be using the port for your dumper why not just hand wire a db9 to the board? Save you time and money. :)

Link to comment
Share on other sites

The file I posted has the newest version I've ever been able to find. Also if your only gonna be using the port for your dumper why not just hand wire a db9 to the board? Save you time and money. :)

I did that once. I wired up a DB9 female connector to the parallel port according to the DevOS pinout and mounted it in a spare cutout in my case, so I could use a regular joystick extension cable between the PC and the 7800. After I replaced that PC, I had to rebuild the interface and decided that it would be less trouble to just wire a CX-40 cable to a DB25 connector, so that's what I've used since.

Link to comment
Share on other sites

just wire a CX-40 cable to a DB25 connector, so that's what I've used since.

 

Thats what I do also, but I canabalize genesis controller cords cause they are a hella cheaper and your local goodwill normally has them and a shatloaf of printer cables on the cheap :grin:

Link to comment
Share on other sites

The common PCI serial/parallel cards use inexpensive chips from Moschip, Sunix, TiMedia, and a few other similar brands, and these all seem to be software-driven. Somewhat higher-end brands (SIIG is one example I can think of) still sell serial PCI cards which use real 16550 UART chips, but I don't know what their parallel cards are like.

 

The cards I've been looking at are Lava brand:

http://www.lavalink.com/dev/index.php?id=69

http://www.lavalink.com/dev/index.php?id=68

 

The photos on those show more components installed in the latter link, for whatever reason.

They still need drivers even for DOS, so apparently not fully compatible with the legacy way of doing things.

 

 

Serial isn't much of an issue, almost every motherboard still seems to have a serial port (needs a bracket though).

 

If you want to run legacy peripherals (e.g. a serial mouse, old EEPROM programmers etc.) you can't beat keeping an old machine around to do those tasks so that you don't run into any issues. However, if you only have USB peripherals or relatively modern devices (that run on XP with genuine device drivers and not something like giveio.sys) I think that you'll be OK.

I have plenty of old boards, but having functional ports on my normal computer is more convenient.

I probably won't worry about it. I don't expect to use DevOS, it's just a "what if" thought. I actually have more legacy port devices today than I ever have - LPT printer, LPT EPROM programmer, serial UPS, and a serial modem for emergencies.

The EPROM programmer might worry me but it's supported by a Windows version of the software.

 

If the motherboard doesn't have a parallel port but does have an ISA slot the parallel ISA card will appear in the X86's I/O space (as accessed by the in/out assembly language instructions). Its base address of 0x278/0x378 should be configured by jumpers on the card.

So ISA connects devices directly to the address bus, but PCI doesn't? In any case, I can see now that the PCI cards I was looking at require drivers even in DOS, so something is clearly wrong there. Oh well.

 

Gigabyte makes a bunch of motherboards with Parallel ports, but annoyingly the one series I was most likely to buy (790X based) don't have them. They don't add the LPT port unless you buy the super-duper gamer version (790FX).

Link to comment
Share on other sites

So ISA connects devices directly to the address bus, but PCI doesn't? In any case, I can see now that the PCI cards I was looking at require drivers even in DOS, so something is clearly wrong there. Oh well.

 

PCI cards also connects to the bus but ISA cards map into the x86 I/O space. That means you can interface to them using "in" and "out" x86 instructions. You don't access PCI cards that way. If you need PCI drivers for DOS there is probably some address port re-vectoring going on.

Link to comment
Share on other sites

newer versions of 7800CTRL.
Where can the newest version of 7800ctrl be downloaded? Your site only has v0.2.

Sorry, I never publicly released anything newer than that. After v0.2 7800CTRL has always been in a work-in-progress state with plenty of lose ends. Whenever someone contacted me with a problem, I tried to fix it and send him an updated version. I'm not really sure what the last halfway stable version is, but if the one Shawn posted already has the -a switch implemented, that should help with your unstable games.

Link to comment
Share on other sites

newer versions of 7800CTRL.
Where can the newest version of 7800ctrl be downloaded? Your site only has v0.2.

Sorry, I never publicly released anything newer than that. After v0.2 7800CTRL has always been in a work-in-progress state with plenty of lose ends. Whenever someone contacted me with a problem, I tried to fix it and send him an updated version. I'm not really sure what the last halfway stable version is, but if the one Shawn posted already has the -a switch implemented, that should help with your unstable games.

 

It's in an ISO which isn't always convenient to get into, so here is just that one file in a zip:

78CTRL38.zip

If there's also a newer firmware then I didn't see that in there.

Link to comment
Share on other sites

Using the -a option of that 7800ctrl does help quite a bit. I was able to rebuild a working dump of Juno First by making five dumps of the cart, comparing two of the files, and then working out the correct bytes to replace the incorrect bytes with from the other three dumps (which took about 2 hours). It ended up with a working dump, just for a proof of concept that in theory this can all be accomplished with virtualization and PCI parallel cards.

Edited by vb_master
Link to comment
Share on other sites

Just to avoid creating another thread, I got my SRAM and 74LS02 and Hat Trick cartridge today. I followed the directions in the document, however, 7800ctrl reacts as if there is no cartridge in the slot when I have my devcart in. Could the problem be that I am using a NTSC Hat Trick game? I double checked all my connections and they seem fine.

 

Also, I wrote a really simple program to automatically fix bad ROMs by a process of elimination. It work very well.

Edited by vb_master
Link to comment
Share on other sites

Just to avoid creating another thread, I got my SRAM and 74LS02 and Hat Trick cartridge today. I followed the directions in the document, however, 7800ctrl reacts as if there is no cartridge in the slot when I have my devcart in. Could the problem be that I am using a NTSC Hat Trick game? I double checked all my connections and they seem fine.

 

Also, I wrote a really simple program to automatically fix bad ROMs by a process of elimination. It work very well.

 

Which instructions are you using? Which RAM Cart version are you building? What is the part number on the board you are using, it should start with a C.

 

Mitch

Link to comment
Share on other sites

Which instructions are you using? Which RAM Cart version are you building? What is the part number on the board you are using, it should start with a C.
I am using the instructions for the 48K RAM cart from "devkit2.zip" the board's P/N is C100339
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...