Jump to content
IGNORED

Bob's BIOS (for Bob)


Blue Azure

Recommended Posts

I'm 'bout a week late on this, but I've been BUSY.

 

What follows here is extremely complex, so if you can't operate a solder iron or never opened your Atari 7800, DO NOT ATTEMPT any of the following operations. This probably should be posted on the programmer's or hacker's corner, but there's not much action over there these days and figured the developers will find this anyways. This is a 3-part series, so buckle-up your seat belts, cuz this just gets more complicated...

 

INTRO

Now I don't propose I know everything about the 7800 operating system, a.k.a. BIOS, but I'm ready to learn. To my knowledge there are several flavors of the 7800 operating system, and there may be more:

 

(1) 1984 "OLD" BIOS, NTSC

7800BIOSoldHIE972.bin

(2) 1988+ BIOS, NTSC, a la DAVE STAUGUS, whoever that is.

7800BIOS_09_15_88_HI1778.bin

(3) PAL BIOS, (compliments of Walter - years ago)

Asteroids78onBoardPALBIOS_16K_187A.bin

 

All three of these BIOS work on the 1984 NTSC machine. I don't know why, but they do. The question is, what works on the 1986+ NTSC machine? Does anyone have a 1986+ machine open and tried these operating systems? It's a simple play-n-play op.

 

Of course the 7800 OLD BIOS "1984" source list / disassembly have been posted for years, and I made my own disassembly based on the binary and released source list, and probably is the most comprehensive. It was another nothing-matches-with-anything project, so beware it was an intense project of it's own.

7800_NTSC_OLD_BIOS_DISASSY_E972.rtf

 

PART ONE

With the information below, one could update/personalize their 7800 machine by touching-up their BIOS. Now as I said, this is complex, although I've already done the coding for Bob's PACMAN+ graphics. The background and procedure follows, but you can skip all that and download the goodies at the bottom if you already know what you're doing, and in less than 5 minutes you'll view the custom racing stripe start-up screen.

 

BACKGROUND AND PROCEDURE

Upon the 1984 BIOS version of the 7800 game machine start-up, (assuming you're not using a non-encryption EPROM or 74LS174 BIOS switch bypass) you will see a rainbow barber pole Fuji logo as well as "ATARI" in a racing stripe. You can personalize this by putting your name or graphics of your choice. That's right, you can modify the BIOS code to suit your own personalization. Best part is you don't have to have the code "encryption-signed" to work.

 

The Racing Stripe graphics are organized 11 lines (rows) by 152 bits (nineteen 8-bit bytes) wide. However, it's tricky that the Fuji logo is interleaved in the code so one has to be careful not to disrupt anything in the process. This modification will not modify the normal operation of the 7800 in any way, all 2600 & 7800 modes will operate as before. Only the start-up screen will be changed per your own personal requirements. To decode the bits and bytes you will need to visualize the ones (1 = ON) and zeroes (0 = OFF) and convert the binary into hexadecimal.

 

What you will need to do your own personalization:

1) Extreme patience. This bit-mapping exercise can test all of your patience.

 

2) The original 4K EPROM (CS=E972) BIOS ENCRYPTION CODE (attached above and available at the atariage.com archives).

 

3) Either a 24-pin (4K 2732 EPROM slot) or 28-pin (up to 32K EPROM slot) IC socket. If you haven't socketed this BIOS location yet, it is highly recommended to go with a full 28-pin socket. Equipped with a 50-watt soldering iron and solder sucker, the existing ROM should be relatively easy to remove. Observe the integrated circuit orientation, always. Try to save the original ROM in case this modification doesn't work for you. You will need a 74LS00 to invert pin 20 (pin 22 on a 28-pin EPROM). If any of this hardware stuff sounds scary to you, you might as well quit now. It won't be worth the frustration if you can't figure any of this out.

 

4) Graphing paper, 4 sheets wide taped together in wide landscape orientation...you can cram 3 sets of tries on one sheet of paper if you cram it properly. The graphics are 8 x 19 = 152 bits wide. If your personalized design has 7 characters with 4 bits of spacing between characters, that's (152 - (6 * 4)) / 7 = 18 and a couple of extra bits. Hence the 7 characters would be 18 bits wide, each. The letter "M" should be wider to make it legible, so 2 bits were added to the width of the "M". Observing positive logic: ON = 1, OFF = 0. Every "X" that you put on the graphing paper box is a logic "1" (1 = ON) and a blank box is a logic "0" (0 = OFF). Reading across the top row of the page from the upper left you will take the first 4 boxes and if they are zeroes (all blank), then your first nibble is a "0". Two nibble make a byte and if your first 8 boxes are blank then you have "00" and you have your first byte. When the first non-blank boxes show up, then you have to know how to convert binary to hexadecimal (hex). As we just saw, 0000 binary is 0 hex. Continuing, 0001 is 1 hex, 0010 is 2 hex, 0011 is 3 hex, 0100 is 4 hex, 0101 is 5 hex, 0110 is 6 hex, 0111 is 7 hex, 1000 is 8 hex, 1001 is 9 hex, 1010 is A hex, 1011 is B hex, 1100 is C hex, 1101 is D hex, 1110 is E hex, and finally 1111 is F hex. Then you bridge two successive nibbles to form a byte. If you have 11011000, this is D8 and that is what you'll be keying into your EPROM programmer for that specific location in your personalized mapping, if/when you have that capability. Looking at the PACMAN+ example, reading across row 1 is 11111111=FF, 11111110=FE, etc. Now you can see why we use hexadecimal instead of binary!

 

5) EPROM programmer and the skills to load a binary file and edit data.

 

The following is an example of the original BIOS modified from "ATARI" to "PACMAN+". There's only 11 x 19 = 209 bytes to manually modify. What could possibly go wrong? EVERYTHING! From start to finish, the graphics design and implementation can take 3,4,5 hours. Probably more like 8 hours the first time. That's why I created an example to spur you along. The main thing is to start inputting at address $0CF1, and skipping where explicitly stated, and ending at address $0E17h. If anything ever seems not-quite-right, it probably isn't. That's been my experience. GL2A.

 

(All addresses shown, e.g. - $0CF1, are EPROM addresses. In-machine these are all $F000.

 

"ATARI" ORIGINAL…

 

-------------01-02-03-04-05-06-07-08-09-10-11-12-13-14-15-16-17-18-19

-------------$0000-$0CF0 Remain as-was, do not disturb.

1--0CF1---00-00-0C-00-3F-FF-FF-FF-F0-00-C0-00-00-3F-FF-FF-00-03-FC

2--0D04---00-00-3F-00-3F-FF-FF-FF-F0-03-F0-00-00-3F-FF-FF-FC-03-FC

3--0D17---00-00-FF-C0-00-03-FF-00-00-0F-FC-00-00-3F-F0-03-FF-C3-FC

4--0D2A---00-03-FF-F0-00-03-FF-00-00-3F-FF-00-00-3F-F0-00-3F-C3-FC

-------------$0D3D-$0D67 Remain as-was, do not disturb.

5--0D68---00-0F-F3-FC-00-03-FF-00-00-FF-3F-C0-00-3F-F0-00-FF-C3-FC

6--0D7B---00-3F-C0-FF-00-03-FF-00-03-FC-0F-F0-00-3F-F0-3F-FC-03-FC

7--0D8E---00-FF-00-3F-C0-03-FF-00-0F-F0-03-FC-00-3F-F0-FF-C0-03-FC

8--0DA1---03-FF-FF-FF-F0-03-FF-00-3F-FF-FF-FF-00-3F-F0-3F-F0-03-FC

-------------$0DB3-$0DDE Remain as-was, do not disturb.

9--0DDF---0F-FF-FF-FF-FC-03-FF-00-FF-FF-FF-FF-C0-3F-F0-0F-FC-03-FC

10-0DF2---3F-F0-00-03-FF-03-FF-03-FF-00-00-3F-F0-3F-F0-03-FF-03-FC

11-0E05---FF-C0-00-00-FF-C3-FF-0F-FC-00-00-0F-FC-3F-F0-00-FF-C3-FC-----0E17

-------------$0E18-$0FFF Remain as-was, do not disturb.

 

"PACMAN+" EXAMPLE…

 

-------------01-02-03-04-05-06-07-08-09-10-11-12-13-14-15-16-17-18-19

-------------$0000-$0CF0 Remain as-was, do not disturb.

1--0CF1---FF-E0-00-1F-E0-00-3F-00-3F-00-FC-01-FE-00-FC-0F-C0-0F-C0

2--0D04---FF-F8-00-7F-F8-00-FF-C0-3F-81-FC-07-FF-80-FE-0F-C0-0F-C0

3--0D17---FC-7E-00-FF-FC-03-F0-F8-3F-C3-FC-0F-FF-C0-FF-0F-C0-0F-C0

4--0D2A---FC-0F-C1-F0-3E-0F-C0-7C-3F-E7-FC-1F-03-E0-FF-8F-C0-0F-C0

-------------$0D3D-$0D67 Remain as-was, do not disturb.

5--0D68---FC-0F-C3-F0-3F-0F-C0-00-3F-7E-FC-3F-03-F0-FC-CF-C0-0F-C0

6--0D7B---FC-7E-03-F0-3F-0F-C0-00-3F-3C-FC-3F-03-F0-FC-CF-C3-FF-FF

7--0D8E---FF-F8-03-FF-FF-0F-C0-00-3F-18-FC-3F-FF-F0-FC-CF-C3-FF-FF

8--0DA1---FF-E0-03-FF-FF-0F-C0-7C-3F-00-FC-3F-FF-F0-FC-7F-C0-0F-C0

-------------$0DB3-$0DDE Remain as-was, do not disturb.

9--0DDF---FC-00-03-F0-3F-03-F0-F8-3F-00-FC-3F-03-F0-FC-3F-C0-0F-C0

10-0DF2---FC-00-03-F0-3F-00-FF-C0-3F-00-FC-3F-03-F0-FC-1F-C0-0F-C0

11-0E05---FC-00-03-F0-3F-00-3F-00-3F-00-FC-3F-03-F0-FC-0F-C0-0F-C0----0E17

-------------$0E18-$0FFF Remain as-was, do not disturb.

 

Not knowing what size chips Bob (and fans) use, I made all versions for 2732, 27128, 27256. This is my "gift" to Bob for all the amazing things he's done for the Atari 7800 community. ENJOY!!!

 

PACMANPLUS BIOS

7800BIOSPACMANPLUS_4K_C2F5.bin

7800BIOSPACMANPLUS_16K_CBD4.bin

7800BIOSPACMANPLUS_32K_97A8.bin

 

 

PART TWO

IF and ONLY IF you have access to EPROMS, EPROM erasers, and EPROM programmers, and know how to read schematics should you attempt the following. And of course you need solder and a 50W soldering iron and a small amount of solid-guage wire. Using a 28-pin header/component carrier as a wiring platform to interface a 28-pin socket for your new BIOS EPROM code projects, wire-up the following circuit, per the atached schematic. There are two versions, the first 2x27128 and the second is a 1x27256 design (simpler). If you haven't done this before, I recommend wiring the 1x27256 which is smaller and easier to wire, and looks the neatest when installed in the 7800. The wiring job simply stated, wire every header pin to EPROM socket pin, pins 1 through 28 to pins 1 through 28, EXCEPT pins 20 and 22 are reversed (designed to keep hackers from making this mod work), and invert the input to pin 20 using a 74LS00 chip. In the 1x27256 version, both 27128 and 27256 will work. You can now install Bob's "PACMAN+" BIOS in the U7 position of your 7800, of course observing the pin 1 orientation.

InternalCartSchematic.pdf

 

Over the next few days I will compose the balance of PART TWO and the start of PART THREE, and post them here. Like I said, this is complicated, and we're barely half way...

  • Like 5
Link to comment
Share on other sites

What would be really cool would be to hack the 7800 NTSC bios so that it has a built-in game like the PAL one, and so it was something other than boring Asteroids. Maybe Xevious, or Joust. or Donkey Kong. or Ninja Golf.

 

or Pole Position II.

 

Or put a socketed slot for that EPROM so people could change it to whatever they want.

Link to comment
Share on other sites

(2) 1988+ BIOS, NTSC, a la DAVE STAUGUS, whoever that is.

 

Dave Staugas was an Atari employee involved from the 2600 up till the Jaguar. The text is also in 2600 millipede and the ST OS (TOS). Wrote part of TOS and the art program NeoChrome. It seems he did the difficult bits of the 7800 and Jaguar encryption.

More info:

http://www.atariage.com/forums/topic/83980-ascii-text-in-roms/#entry1660141

http://www.jaguarsector.com/index.php?s=&showtopic=1776&view=findpost&p=35509

 

Robert

Link to comment
Share on other sites

Thanks for the responses. It was an interesting read on DS, many thanks to RD. I never heard of him before. Kevin was creative in making a possible new avatar for PMP, but I'm not so sure he wants to see that right now. Thanks for posting the photo though - it looks sharp, except that "N", I was running out of room. It is what it is. Posted a few years ago it would have been a hotter topic, but I never heard of atariage.com until September 1 last year. The suggestion for a "socket" by Emucoder is a good thought (see Part 3 that hasn't been published yet), however, every game would have to start at the same location, which isn't the case. The BIOS could be "hard-wired" to jump to a fixed location but then every game would have to be hacked to receive the jump and then immediately jump to the original game start location. Not recommending that. I'm thinking internal Gaming On Board (GOB) is kind of a toy or gadget, but in 1984 it was very innovative. I still want to learn more about how the internal Maria & external Maria & 2600 mode switching works. And one way is to dive into it and try different things. Having examples helps too…

 

POLE POSITION 2 NTSC BIOS GOB 2x27128 VERSION

PolePosition2BIOSonBoard_16KHI_117D.bin

PolePosition2BIOSonBoard_16KLO_446D.bin

 

POLE POSITION 2 NTSC BIOS GOB 1x27256 VERSION

PolePosition2BIOSonBoard_32K_55EA.bin

 

POLE POSITION 2 PAL BIOS GOB 2x27128 VERSION

PolePosition2PALBIOSonBoard_16KHI_0A38.bin

PolePosition2PALBIOSonBoard_16KLO_47F6.bin

 

POLE POSITION 2 PAL BIOS GOB 1x27256 VERSION

PolePosition2PALBIOSonBoard_32K_522E.bin

 

ASTEROIDS PAL BIOS GOB 1x27128 VERSION (same as posted above)

Asteroids78onBoardPALBIOS_16K_187A.bin

 

Note, the PAL PP2 doesn't work properly on the NTSC machine, but we have the NTSC version so it doesn't matter.

 

Hope to have PART 3 posted on Monday...

Link to comment
Share on other sites

Thanks for the work on this. I've been wanting to put a bios in my 7800 that has a game for quite some time. I was planning on Asteroids, but Pole Position II is even better!

 

The only thing that's kept me from it so far is not having clear instructions on what to do to be able to use an eprom. I've read a thread where someone else was having trouble, which has made me hesitant until I'm clear on what needs done.

 

I've socketed my bios in preparation though. :)

Link to comment
Share on other sites

What would be really cool would be to hack the 7800 NTSC bios so that it has a built-in game like the PAL one, and so it was something other than boring Asteroids. Maybe Xevious, or Joust. or Donkey Kong. or Ninja Golf.

 

or Pole Position II.

 

Or put a socketed slot for that EPROM so people could change it to whatever they want.

 

There is an NTSC BIOS with built in asteroids floating around the net. I have it installed in one of my NTSC 7800s. I agree that it would be nice to have an option other than asteroids to

Link to comment
Share on other sites

Not to worry Kevin, this works, no problems. Just burn the EPROM with the given binaries above and it should work with the wiring conversion given. If you had a 24 pin 4K ROM installed and you now intend to have a 28-pin 16K or 32K EPROM installed, you must have A13 and A14 wired to your BIOS EPROM. A13 is pin 23 on the microprocessor 65C02 and A14 is pin 24 on the 65C02 which is U2 (left/front) on the board, if you care to check prior to power-up. A13 is pin 26 on your EPROM socket and A14 is pin 27 on your EPROM socket. Also there are the W1 and W2 jumpers on the original boards, W1 is in and W2 must be out. Without W1 you won't have A13.

 

Now onto the personalization, one of our readers mentions interest to customizing the "Atari" Racing Stripe graphics for himself. In aid to this relatively complex op, I have created an excel spreadsheet that shows the original design, and enables someone to attempt this difficult & fun graphical art project. However as a result, I found there was an error on the lower right of the second "A" in "ATARI". I put XX on the spreadsheet to show where there were two 1's where there should have been 0's. Therefore, at address $0E10 there should be $03 hex, not $0F hex. Talk about trivial pursuit!

 

Here's the spreadsheet tool, "RS" stands for Racing Stripe.

RS TEMPLATE.xls

 

Beware the result of customization becomes distorted. The "ATARI" looks so wide on the spreadsheet. Not so on the screen. But I got PACMAN+ to work, so it can be done! Now all we need is a program to convert the 1's and 0's on the spredsheet into hex. Good luck with that!

 

Someone could make new custom letters/numbers and then it would be easy to copy and paste as required. The only drawback is I have the "Do not disturb" lines in there, to remind people to skip these lines when keying in their custom codes. That's easy to pull though.

Link to comment
Share on other sites

I have been looking for that BIOS for years. I knew someone had it but couldn't remember who.

Thanks for sharing, I hope that someone can fix it.

 

As for the NTSC BIOS with built in asteroids, mine goes crazy if you leave it in attract mode. Anyone else have this problem?

Link to comment
Share on other sites

Hi Gambler, Tried your chip which I renamed "Pole Position 2 BIOS Proto_FAIL_3314.bin" . True I confirm it doesn't work. But the binary files posted above do work, so use those. The test results of your binary checksum=3314...

 

Stock install with encryption enabled (U11 bios switch installed)

INTERNAL MARIA CART = FAIL

EXTERNAL MARIA CART= FAIL

EXTERNAL 2600/TIA CART = FAIL

 

Modified install with U11 74LS374 BIOS switch removed and jumper bypass,

INTERNAL MARIA CART = FAIL

EXTERNAL MARIA CART= PASS - that's interesting - usually it's the 2600 mode that works if anything.

EXTERNAL 2600/TIA CART = FAIL

 

The GameOnBoard (GOB) mods I've tried have all worked on 2600 mode, but something's violating what Maria wants and needs.

 

My advertised PART 3 discussion is on hold for the moment, as (a) I don't have it working yet, and (b) I'm 100% occupied with ROBOTRON. What a game, you wouldn't believe what I'm doing to that game!!! This one is my favorite now, with my mods that is. But need that disassembly complete so we can hopefully port to PAL, and that's what I'm working on.

 

To Mimo: I run internal Asteroids/BIOS all the time and never noticed anything, but I'll try it again soon and leave it alone and see what it does. Are you running with a ROM or an EPROM with a window on it? Be sure to keep you EPROM windows covered, if applicable. I lost a couple of programs on EPROMs over the decades, but they erased and reprogrammed and work fine. If an EPROM, then check your solder conections and reseat the chip, if applicable, unless of course we find the "going crazy" is normal. -BLUE

Link to comment
Share on other sites

Message to Mimo> I ran the on-board PAL ASTEROIDS/BIOS on my 1984 NTSC 7800 for 2 hours last night and no glitches. There is no Phosphor/CRT protect, just cycles through the attract mode over and over. So again if only your ASTEROIDS/BIOS is failing and you're using an EPROM, then the problem is isolated to your EPROM or wiring thereof, and you need to get the update posted above, or erase the current code EPROM and re-burn.

 

Message2KevinMos3> Yes, the POLE POSITION2 has the full ATARI BIOS incorporated, so you will still have the ATARI boot-up screen. The version above does have the 2 bit error fixed on the ATARI seond "A" but that's easy to do, just change address $0E10 from $0F hex to $03 hex. Let me know if/when you finish Kung Fu. I'd like to see a matching binary to a source list for a change. This Robotron listing disasembly is about 2/3 done with about a week to go at the rate I'm going. It's a piece of work, but still needs the "next guy" to finish it properly. I hope to post PART 3 of this discussion next week. I just don't have any time right now.

Link to comment
Share on other sites

True a lot could be added to the BIOS. If you wire up your BIOS socket for a 32K EPROM, and only 4K (or less actually) is used by the NTSC BIOS, and less than 500 bytes for the PAL BIOS, there's a lot of room. Now I have an update to PART 2, nothing on PART 3 yet.

 

PART 2A

 

Two things.

1) First apologies on the "ATARI" racing stripe error that I announced. This is wrong. My artwork was wrong and the "ATARI" was right. My bad. I actually reprogrammed an EPROM and noted the error. Had to go back to the artwork to debug that and found the mistake. So I produced a new EXCEL spreadsheet. Sorry if I caused any heartache for anyone. This one also has the artwork for "PACMAN+".

 

RS TEMPLATE1.xls

 

2) I noticed the "+" in "PACMAN+" didn't look too good so I mopped that up. Of course now Bob has to decide if he wants to endorse this newer avatar. New files and photo...

 

7800BIOS_PMP_FIX_4K_F0A9.bin

7800BIOS_PMP_FIX_16K_C2A4.bin

 

post-34769-0-22613900-1360033686_thumb.jpg

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...