Jump to content
IGNORED

Bob's BIOS (for Bob)


Blue Azure

Recommended Posts

No problem, Bob. By the by, while I have you on the line, you once mentioned "there is something I'm looking for that I'm having trouble to find." This wouldn't be a DEC Vax, would it be? I know someone who has one, and it actually works. Otherwise, I have the DeLorean parked out back and as soon as I get the flux capacitor fixed, I will be traveling back to 1984 again to pick up the missing pieces at GCC. That's why I'm going to Germany in July to get my new 1.47 gigglehertz flux capacitor trimmed to 1.21 gigglehertz. No one builds the 1.21 any more. So let me know what you need, whatever it is. (Hopefully you can get a good laugh out of this!!!)

 

I'm dumping ROBOTRON big time today, so tonight I hope to work on PART 3 of this and get this posted

by the weekend so *we* can start to look at this BIOS/on-board gaming situation deeper. BLUEman

Link to comment
Share on other sites

PART 3

 

I was hot on this a couple of weeks ago and then got busy on Robotron, and that stole all the time & momentum away from this. It's no secret I'd like to try and get something other than Asteroids or Pole Position 2 (PP2) to play on board with the BIOS. My pick: Asteroids Deluxe. That's right, this 32K game is boss with vector graphics on the LCD screen, and doesn't have any coding in $F000 that will collide with the operation of the BIOS, either NTSC or PAL. But I don't have it working yet. I think it needs a fresh set of eyes to figure it out. I can dump my findings here and maybe someone can flip on the light switch to make it work. There's obviously some magic sauce that makes the Maria tick, and I'm not quite there yet.

 

Since PAL Asteroids (16K) is simpler we'll start with that. The PAL Asteroids with BIOS binary is posted above. The raw disassemblies look like this (in RTF format so everyone can read them):

ASTEROIDS NTSC, no BIOS

ASTEROIDS_NTSC_DASM.rtf

ASTEROIDS GAME ON BOARD (GOB), PAL BIOS

ASTEROIDS_GOB_PAL_187A_DASM.rtf

 

The hex dumps are here as well:

ASTEROIDS NTSC, no BIOS, HEXDUMP

Asteroids3D_NTSC_E5DC_Hexdump.rtf

ASTEROIDS GAME ON BOARD (GOB), PAL BIOS, HEXDUMP

Asteroids3D_GOB_PAL_187A_Hexdump.rtf

 

On the PAL BIOS with 16K Asteroids, the vector at $FFFC$FFFD is to $FE47, which begins with $78 $D8 $A9$02 $85$01 $A2$FF $9A $A9$7F $85$3C, etc, which is about the normal startup. The cart detection and switching is right after that. As a comparison, the NTSC Asteroids vectors to $D000 and begins with $78 $D8 $A9$97 $85$01 $A2$FF $9A $A2$60 $86$3C, etc, so we're already seeing some differences. The PAL BIOS is under 500 bytes so we can look at that here:

 

PAL BIOS disassembly

 

PAL BIOS CORE CODE binary which can be used as a building block for a new game on board with the BIOS

 

 

At the end of this disassembly, we see once it's determined no external cartridge is installed it jumps to the internal cartridge (Asteroids) at $D000, and at address FFDD we see the $4C$00$D00 jump instruction. It seems like it would be simple to plug in any game on-board and as long as we observe where we're jumping to. This always works in 2600 mode, but the Maria isn't happy, so you can't get either the external or the internal 7800 mode game to work.

 

The more complicated one, and the one I really want to get to work, which will preserve the ATARI and Racing Stripe is the NTSC version, which was have a PP2 working example to work with. This one is 32K and the NTSC BIOS vector at $FFFC$FFFD is to $F884. It begins with $78 $D8$ A9$02 $85$01 $A9$7F $85$3C $A9$00 $85$20, etc, which is also about a normal startup. The cart detection and switching is right after that. Eventually, if the external cart check comes up empty (no 2600 or 7800), the code vectors at $F414 to the internal cartridge and in the case of PP2 the cart start is at $C467 which begins with $78 $D8 $A9$7F $85$3C $A2$FF $9A $E8 $86$38 $86$01, etc.

 

The NTSC PP2 with BIOS binary is posted above. The raw disassemblies look like this (in RTF format so everyone can read them):

PP2 NTSC, no BIOS

PP2_NTSC_DASM.rtf

PP2 GAME ON BOARD (GOB), NTSC BIOS

PP2_NTSCBIOS_DASM.rtf

 

The hex dumps are here as well:

PP2 NTSC, no BIOS, HEXDUMP

PolePos2_NTSC_722B_Hexdump.rtf

PP2 GAME ON BOARD (GOB), PAL BIOS, HEXDUMP

PolePos2_GOB_NTSC_55EA_Hexdump.rtf

 

The game I'm trying to add to on-board is Bob's ASTEROIDS DELUXE, the original binary (already posted long ago):

BINARY

ASTEROIDSDELUXE_NTSC_AA14.bin

HEXDUMP

AsteroidsDeluxe_NTSC_AA14_Hexdump.rtf

RAW disassembly

ASTEROIDS_DLX_DASM.rtf

 

ATTEMPTS TO MAKE IT WORK...

NTSC ATTEMPT

ASTEROIDS_DLX_GOB_NTSC_DF2C_Hexdump.rtf

PAL ATTEMPT

Asteroids_Deluxe_GOB_PAL_CAA0_Hexdump.rtf

 

If anyone can figure this out, but needs me to code it and burn it and test it, I can do it...only takes 37 seconds to burn a 32K EPROM.

 

Thanks everyone for your time!

 

GL2L BLUEman

Link to comment
Share on other sites

  • 3 weeks later...

I finally got around to trying the Pole Position II 32K bios posted here on page one. Unfortunately, it's not working right for me. I get the ATARI boot screen and then it just goes black with no cart inserted. I can play games with it though... just not PP II like it should.

 

edit: I just tried the Asteroids 16K bios and it doesn't work either, so I must have something wired wrong. The Dev OS bios works fine. I followed the instructions in the Best Electronics guide (same as Bruce Tomlin's guide), which I thought was intended for 8K, 16K, 32K 28-pin eproms.

Edited by KevinMos3
Link to comment
Share on other sites

  • 1 month later...

KM3, sorry I didn't see this until just today, now my taxes are done and out. Not sure what the problem is. Strange that the racing strip comes up but apparently fails the internal cart test. We know that I'm using a 1984 unit as that's all I have, and no one commented whether it works on a 1986+ unit. You wired per the schematic on page 1 of this thread? It must be exactly as shown or it won't work. Did you wire a single 1x27256 socket or 2x27128 sockets? The Asteroids (16K) is a good place to start as the BIOS is steamlined with no racing stripe - it just jumps directly to the game. But you said that's not working either. The W1 and W2 jumper wires must be set to get power and A15 to the right pins. That may be it as you only have up to a 2764 (8K) working (or only 2732 (4K))? ///BLUEMAN///

Link to comment
Share on other sites

Ah yes...

 

I have a custom BIOS on my 7800... comes up as CVendel... done by a very good friend of mine back in 1999 ;-)

 

 

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

Link to comment
Share on other sites

You should post it and I can INVERT it for you (!,?), for when you dump your TV on the ground. ;-(

I read about your XM accident - it's terrible. I hope your health is OK, that's what really matters.

 

Thanks for the reminder, this BOB BIOS stuff has been on hold for a while. No time for it now.

I want to be able to put new ports like the upcoming all-new GALAGA on board so I can play

without a cart installed. We now know the trick to Fast Fire on GALAGA has to do with MISTIMER,

the missile timer. We'll fix it sometime.

Link to comment
Share on other sites

  • 1 year later...

its been over a year now, has this progressed any further ?

 

I also wanted to ask I live in PAL land and I noticed my 7800 has a 27128 chip inside it socketed and has Astroids bios

Would I need to de solder it and do the post 1 wire up or will mine work as is and also will it work with a 27256

 

Thanks

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