Jump to content
IGNORED

Happy 810 resources


ebiguy

Recommended Posts

I should have realized this before... the Happy 810 firmware is a derivative of Atari's 810 firmware. So far, it looks like many of the routines in the 810 firmware are in exactly the same place in the Happy 810 firmware. The send ACK and send C/E+frame routines that we used to dump the ROM are at $0C77/1C77 and $0951/1951 in a stock 810.

 

Tearing apart the ROM dump now... shouldn't take long, given the amount of copy and paste I can do from my 810 disassembly.

Link to comment
Share on other sites

the Happy 810 firmware is a derivative of Atari's 810 firmware.

 

Pretty amazing.

 

I still want rev 7 firmware :). Probably Phaeron's program will be able to read both banks on boards with that version. My offer above still stands. I don't mind contributing the U$25 that B&C asks for the rev 7 ROM upgrade. Anybody?

Link to comment
Share on other sites

I should have realized this before... the Happy 810 firmware is a derivative of Atari's 810 firmware. So far, it looks like many of the routines in the 810 firmware are in exactly the same place in the Happy 810 firmware. The send ACK and send C/E+frame routines that we used to dump the ROM are at $0C77/1C77 and $0951/1951 in a stock 810.

 

Tearing apart the ROM dump now... shouldn't take long, given the amount of copy and paste I can do from my 810 disassembly.

Avery,

 

I may be mistaken, but while taking a quick peek at JB's dump it looks like 0000-0BFF is mirrored from 0C00-17FF? Besides that, the dumped eprom having a length of 6144 bytes is strange for a 2732, you'd suspect it to be 4096 bytes max.

 

I have an eprom programmer here (well several actually, collected in the past decade), and know which side of a soldering iron gets hot. I can test build JB´s mod in my 810, when wiring and TTL nrs. are identified. Maybe JB can get a more close look at the small board to identify the TTL nrs., that is if they aren´t sanded off. I already tried to trace the freefloating wiring from the photos he provided, but sadly my eyesight isn't what it used to be in the 80's. Growing old is nice, but being old not so much ;-)

 

I´m fairly sure both I and Jurgen are able to disassemble this mod (eprom dump, TTL's and trace the wiring) given physical access to the sideboard. My HiLo All-07 eprom programmer has a module for identifying unknown TTL and CMOS IC's, but sadly the programmer's software is DOS-only (won't even work in a DOS-box). I will check if my TL-866 has this function as well. My Willem, Chiplab and Galep3 programmers don't have it.

 

edit: sadly the TL-866 doesn't have a similar module for identifying unknown IC's either...

 

re-atari

Edited by re-atari
Link to comment
Share on other sites

I may be mistaken, but while taking a quick peek at JB's dump it looks like 0000-0BFF is mirrored from 0C00-17FF? Besides that, the dumped eprom having a length of 6144 bytes is strange for a 2732, you'd suspect it to be 4096 bytes max.

 

Correct. This is because the dumper is modeled after the ROM diagnostic which handles bank-switched ROM, but this particular revision does not actually have banks, and as far as we know only 3K of the 4K of ROM is actually visible. So it's actually an over-dump of an under-used ROM. :-D

 

I've dissected most of the ROM now and it definitely looks like we have the entire firmware. The memory map is as follows:

  • $0000-007F: FDC
  • $0080-00FF: 6810 RAM
  • $0180-01FF: RIOT RAM
  • $0380-03FF: RIOT registers
  • $0800-0A7F: Custom command area
  • $0A80-0AFF: Track buffering state
  • $0B00-13FF: Track buffer
  • $1400-17FF: Happy code
  • $1800-1FFF: Patched Atari 810 code (relocated from $0800-0FFF and hooked).

On power-up, the only extended commands enabled are the memory read and write commands, which are piggybacked onto the sector read/write commands $52 and $57 (not $50). As noted earlier, you can only access RAM, not ROM or registers. Track buffering is also enabled. This firmware appears to only handle read buffering; any write invalidates the track buffer. Unlike the Happy 1050, there are no commands to change modes, which must be done through memory read/write. The device ID doesn't look soft-changable, but an alternate device ID of $3B can be enabled. There is no built-in high speed support.

 

The weird bytes we saw at $800-808 are a key; the patched command dispatcher will only use the custom command table at $0809-0820 if all nine bytes match the signature in ROM. Seems like a waste of cycles, really (it's checked on EVERY command). Furthermore, the ROM doesn't initialize the table, so the only way this can work is if the program doing the code upload already knows the appropriate ROM locations for the command routines.

 

  • Like 2
Link to comment
Share on other sites

$1800-1FFF: Patched Atari 810 code (relocated from $0800-0FFF and hooked).

Seems about 60% of the ROM is Atari code. Wonder how he dared to claim copyright (and there is a Happy copyright text on the ROM). I'm not raising any moral issues whatsoever. Just thinking about the historic perspective. When you consider that he has quite some "enemies" in the Atari world, seems extremely risky. Just think what could have happened in one of them would have find out.

 

May be this is the earlier version and he changed it soon enough. The ROM test does look for two different versions. I mean two versions for the non-banked ROM.

 

The weird bytes we saw at $800-808 are a key; the patched command dispatcher will only use the custom command table at $0809-0820 if all nine bytes match the signature in ROM. Seems like a waste of cycles, really (it's checked on EVERY command).

The whole thing seems indeed quite inefficient. Contrast this with the 1050 version where the code liked to squeeze bytes and cycles. Guess he learned fast :)

 

Pretty sure I've seen at least one loader that did try to identify the Happy tracer... I ran into this when implementing Happy 1050 commands in Altirra and the game tried to format the disk after successfully issuing drive memory read and tracer (T) commands. Could be meant for another drive, though.

....

On power-up, the only extended commands enabled are the memory read and write commands ...

I guess you don't remember the title, do you? But if it was using 'T' commands, then it doesn't seem to target the Happy, not the 1050 neither the 810 version. Probably, again, trying to detect "The Chip".

 

Link to comment
Share on other sites

Seems about 60% of the ROM is Atari code. Wonder how he dared to claim copyright (and there is a Happy copyright text on the ROM). I'm not raising any moral issues whatsoever. Just thinking about the historic perspective. When you consider that he has quite some "enemies" in the Atari world, seems extremely risky. Just think what could have happened in one of them would have find out.

 

Well, in my non-expert opinion it's not actually wrong. Regardless of whether the author had the right to create a derivative of the 810 ROM, he would have had copyright on his additions. Whether there was a distribution agreement with Atari or whether Atari cared is another story, but the resulting firmware did only work with the 810 drive anyway.

 

The whole thing seems indeed quite inefficient. Contrast this with the 1050 version where the code liked to squeeze bytes and cycles. Guess he learned fast :)

 

The original 810 firmware is itself not the most efficiently coded. Nevertheless, it hurts to see JSR followed by an RTS, particularly on a CPU running at 0.5MHz (!).

 

I guess you don't remember the title, do you? But if it was using 'T' commands, then it doesn't seem to target the Happy, not the 1050 neither the 810 version. Probably, again, trying to detect "The Chip".

 

A.E. from Broderbund -- it issues command $20 and fails to boot with "Zappo!" if command $54 passes. $54 happens to be used by the Happy RAM test, and I believe also the tracer.

 

Link to comment
Share on other sites

Well, in my non-expert opinion it's not actually wrong. Regardless of whether the author had the right to create a derivative of the 810 ROM, he would have had copyright on his additions. Whether there was a distribution agreement with Atari or whether Atari cared is another story, but the resulting firmware did only work with the 810 drive anyway.

I'm not a lawyer neither. But years ago I asked an expert a similar question. If I could claim copyright for a patch. The answer was complicated and even gray. But only as long as I wasn't infringing. If I was infringing, then absolutely I couldn't claim any copyright.

 

And here, while of course I don't have any insider info, I think I can bet that Happy didn't get any permission and it was definitely infringing Atari rights. I don't think it matters that it worked with an Atari made drive only. IANAL again.

 

A.E. from Broderbund -- it issues command $20 and fails to boot with "Zappo!" if command $54 passes. $54 happens to be used by the Happy RAM test, and I believe also the tracer.

Ah, no, that's for "The Chip". It is present in several Broderbund titles (sometimes depending exactly on the version). Seems you missed this post in this very same thread: http://atariage.com/forums/topic/257578-happy-810-resources/page-2?do=findComment&comment=3614196

 

The Happy diagnostics do use the "T" command in several places. But I don't think the tracer does.

 

Link to comment
Share on other sites

I'm not a lawyer neither. But years ago I asked an expert a similar question. If I could claim copyright for a patch. The answer was complicated and even gray. But only as long as I wasn't infringing. If I was infringing, then absolutely I couldn't claim any copyright.

 

And here, while of course I don't have any insider info, I think I can bet that Happy didn't get any permission and it was definitely infringing Atari rights. I don't think it matters that it worked with an Atari made drive only. IANAL again.

 

I don't think we could get an actual answer here without an expert looking at this specific case AND knowing whether Atari gave permission... which we'll probably never know. While the ROM is based on the Atari ROM, there's an additional 1K of code that is separated from the original 810 code and has its own algorithms. It's more substantial than just a simple patch.

 

It does make me wonder whether back in the days Atari had a process for redistributing, say, DOS, and if so how many companies actually bothered. The DOS 3 manual, for instance, has nothing that I can see about what you are allowed to do with copies of DOS 3... though I suppose in that particular case Atari didn't have much to worry about with regard to people willingly making copies of it anyway.

 

Attached is a first pass commented disassembly of the firmware, which can be assembled by MADS back to a byte-matching copy. The patches in the 810 portion of the ROM have been marked as such. No sign of bank-switching code. I ran into difficulty dissecting some parts of the track buffering routines -- it has the same oddities as the Happy 1050 code with maintaining twice as much sector metadata as actual sector buffers, and it's not entirely clear what all of the logic does. There is some interesting logic for handling phantom/duplicated sectors, though.

 

happy810.asm

  • Like 2
Link to comment
Share on other sites

There are 3 versions of the Happy810: HE810S-X - HE810S-H and HE810S-L.

Installing the X-version requires a lot of soldering. Small warning in the manual: 'Do not use a soldering gun'. This one was the cheapest version.

With the H- and L-version the color of the 40-pin socket (ed. re-atari: I presume the author means a 40-pin socket on the sideboard) is decisive. A black socket requires version L, a blue or brown socket version H."

 

 

This is very interesting.

Then how do we know that a Happy board is version L or version H (with the board itself removed from the 810) ?

Link to comment
Share on other sites

May be this is the earlier version and he changed it soon enough. The ROM test does look for two different versions. I mean two versions for the non-banked ROM.

 

Sorry if I missed something in the thread but when I read you it let me think that a banked ROM version of the Happy 810 may exist ?

Am I correct or did I interpret too far your sentence ?

Link to comment
Share on other sites

 

Pretty amazing.

 

I still want rev 7 firmware :). Probably Phaeron's program will be able to read both banks on boards with that version. My offer above still stands. I don't mind contributing the U$25 that B&C asks for the rev 7 ROM upgrade. Anybody?

 

I looked at the B&C listing and see these lines

ACA009   HAPPY 810 ROM UPGRD >5000       24.95ACA010   HAPPY 810 ROM UPGRD <5000       24.95         

Can someone explain what <5000 and >5000 means ???

Link to comment
Share on other sites

 

This is very interesting.

Then how do we know that a Happy board is version L or version H (with the board itself removed from the 810) ?

Your guess is as good as mine. As I stated, the info I quoted from the ABBUC forum isn't very detailed. On the attached photo the PCB doesn't show an -L or -H designation, so like you I'm stumped.

 

I have never owned a Happy810, only got my hands on a stock 810 by sheer coincidence a few years ago. I noticed back then already that detailed info about the upgrade was very scarce.

 

re-atari

Link to comment
Share on other sites

Your guess is as good as mine. As I stated, the info I quoted from the ABBUC forum isn't very detailed. On the attached photo the PCB doesn't show an -L or -H designation, so like you I'm stumped.

 

I have never owned a Happy810, only got my hands on a stock 810 by sheer coincidence a few years ago. I noticed back then already that detailed info about the upgrade was very scarce.

 

re-atari

 

Ok, let's assume this information is accurate for the rest of this post.

It means that there are 2 incompatible Atari side boards (from the 40 pin connector perspective)

So it means that even Atari had to produce 2 daughter boards (the one which is replaced by Happy).

This can be more easily verified.

Anyone knows if 2 versions of the Atari side board AND daughter boards have been produced ?

 

And if there were 2 versions, would it be related to

1) the presence or the lack of data separator board ?

2) the kind of drive mechanism (garage door or door with button) ?

Link to comment
Share on other sites

 

I looked at the B&C listing and see these lines

ACA009   HAPPY 810 ROM UPGRD >5000       24.95ACA010   HAPPY 810 ROM UPGRD <5000       24.95         

Can someone explain what <5000 and >5000 means ???

I would think that they refer to the label(serial#?) on the Happy 810 PCB. Take a look at the picture in post# 26.

Link to comment
Share on other sites

Attached is a first pass commented disassembly of the firmware ...

 

L17FE:	dta		$9B, $4B

 

Awesome work!

 

I wonder what's the story about those two bytes. They seem to be unused, and what is more interesting, the ROM test skips them when computing the checksum. That's why for a moment I thought there could be a bank switching there. May be it's a serial number?

 

Sorry if I missed something in the thread but when I read you it let me think that a banked ROM version of the Happy 810 may exist ?

Absolutely. According to what I can see on the ROM tests, there seems to be 3 different ROM versions for the Happy 810, one banked and two not.

 

Initially the software for the Happy 1050 and for the 810 one were not compatible with one another. They used separate programs. There was Happy software version 5.x for 810 mod, and version 6.x for the 1050 one. At some point Happy released software version 7 for the 1050, that could be used with the 810 enhancement but required a firmware upgrade. That upgrade is what B&C is selling.

 

The ROM test for Happy 810 ver 7 definitely performs bank switching and checks both banks. And this is consistent with Atarigeezer's description of his Happy boards. One looking like an EPROM with a GAL, the other with a PROM. Also ver 7 firmware has additional features, more similar to the 1050 enhancement, that probably don't fit on a not banked 3K ROM.

 

As said, I'd really like to get a ver 7 dump. Atarigeezer, anyway that you could dump your ROMs? I think that at this point we know what needs to be done to read them, but clearly a simple EPROM burner won't do it. Phaeron's program likely works, but it is hardwired for specific drive numbers.

Link to comment
Share on other sites

 

I looked at the B&C listing and see these lines

ACA009   HAPPY 810 ROM UPGRD >5000       24.95ACA010   HAPPY 810 ROM UPGRD <5000       24.95         

Can someone explain what <5000 and >5000 means ???

I had a pair of these Enhancements, but long gone to other owners. My recollection is that the 810 Happy enhancements (or their roms) were serialized. I remember when I got the 810 (Rev 7 compatible) upgrade rom from Richard Adams that I had to tell him the serial number of the Enhancement or original rom. So if you have a real 810 Enhancement, there should be a serial number somewhere on it, unless it was a sticker that has fallen off. (Oops!) I would think that Bruce could answer that with certainty. (But pretty sure I'm right.)

-Larry

Link to comment
Share on other sites

As said, I'd really like to get a ver 7 dump. Atarigeezer, anyway that you could dump your ROMs? I think that at this point we know what needs to be done to read them, but clearly a simple EPROM burner won't do it. Phaeron's program likely works, but it is hardwired for specific drive numbers.

Yep, I'll take pics of the two Happy Data Separator board versions I have and attempt to do some ROM Dumps of both soon. For the past 8 days I've been backing up, reformatting and re-installing Windows on my old Win95 PC as it was crashing/freezing constantly and that was taking up my time. But I'm nearly finished with that and will get to play with my A8's soon :)

Link to comment
Share on other sites

I have the Happy 810 firmware mostly working in emulation and have found a few new things about the firmware:

  • The idle timeout is much longer. On the 810, it's about 1.5 seconds, but the Happy 810 firmware has this edited to be about 20x longer. In the code, two writes to the idle counter at $01EB were changed from $01 to $13. I assume this is partly to accommodate track buffering.
  • Track buffering is enabled on power-up, but it only seems to do a read address pass once and then tries to reuse the sector interleave order for subsequent tracks. This cuts the latency down to just over one revolution, but causes issues if the sector order or pattern changes.
  • The track buffer routine does a lot of retries on sector read errors, particularly CRC errors. This leads to problems with protected disks when it takes so long the SIO command times out.

Also, there's something about the way the index pulse is faked on the FDC that doesn't quite make sense. The 810 doesn't use the true index pulse, but rather the interrupt output from the RIOT as the index pulse input to the FDC. The firmware, in turn, sets the timer for about a 0.5s duration. However, the RIOT timer is a one-shot timer, not a periodic timer, so I'm not sure how this generates the 2-5 pulses needed for the FDC to time out. Does anyone know if the 6532 timer continues firing interrupts when it rolls over after switching to 1T rate?

  • Like 1
Link to comment
Share on other sites

I have the Happy 810 firmware mostly working in emulation ...

Fabulous! I know I should test myself, but ... The backuper works?

 

The idle timeout is much longer. On the 810, it's about 1.5 seconds, but the Happy 810 firmware has this edited to be about 20x longer. In the code, two writes to the idle counter at $01EB were changed from $01 to $13. I assume this is partly to accommodate track buffering.

I'm not familiar with the 810 at all. Neither with the stock one, neither with the Happy mod. But in the case of the 1050, the Happy has a much shorter motor off timer than the stock firmware.

 

 

  • Track buffering is enabled on power-up, but it only seems to do a read address pass once and then tries to reuse the sector interleave order for subsequent tracks. This cuts the latency down to just over one revolution, but causes issues if the sector order or pattern changes.
  • The track buffer routine does a lot of retries on sector read errors, particularly CRC errors. This leads to problems with protected disks when it takes so long the SIO command times out.

Yes. This is normal, known, Happy behavior. It is the same in the 1050 version.

 

Protected disks you are supposed to load in slow mode. Disk with tracks with variable order or interleave, but not copy protected, are pretty rare. So nobody cared too much.

 

Does anyone know if the 6532 timer continues firing interrupts when it rolls over after switching to 1T rate?

I believe so. As long as you don't disable interrupts with the appropriate bit when accessing the timer register.

Edited by ijor
Link to comment
Share on other sites

Fabulous! I know I should test myself, but ... The backuper works?

 

No, just tried the v5.3 backup and it fails. It can read and analyze the source disk, but the write fails because it is trying to do a Write Track command. I need to implement that in the FDC (which means parsing the track... ugh).

 

Warp speed DOS seems to work. Never seen a high-speed mode use commands $55 and $56 before.

 

I'm not familiar with the 810 at all. Neither with the stock one, neither with the Happy mod. But in the case of the 1050, the Happy has a much shorter motor off timer than the stock firmware.

 

It might have to do with the 810 having a different idle behavior than the 1050 -- it seeks the head to track 39 before turning off the motor, making returning from idle more expensive.

 

Yes. This is normal, known, Happy behavior. It is the same in the 1050 version.

 

Protected disks you are supposed to load in slow mode. Disk with tracks with variable order or interleave, but not copy protected, are pretty rare. So nobody cared too much.

Interesting, given all of the logic in the track buffering code to handle phantom and bad sectors. I guess only having 18 sectors worth of buffer already doomed the feature for that use case.

Link to comment
Share on other sites

I have been tracing the wiring and drawing a preliminary schematic diagram of the mod. Sadly not all wires were visible, so my drawings are as of yet still incomplete. Tonight I will give the wiring I did manage to draw a once over, and post it here later on. Maybe JB has a way to verify the schematic and add the missing wiring. I always use a multimeter on diodetest/buzzer when checking wiring for continuity.

A look behind the perfboard to identify the 2 TTL's will be most helpful as well. Chances are the part. nrs. are sanded away, though. I've been thinking about which ones could be used, but due to the incomplete drawing could not narrow down the group of candidates yet.

I have corrected the Happy 810 romdump, it now is a 4096 bytes (2732 eprom) file with data from 0000-0BFF. The rest from 0C00-0FFF is empty, therefore filled with FF's. It is attached to this post.

Avery, for the sake of completeness, I have attached the 810 rom rev. E as well. This rom was referred to in this thread:
http://atariage.com/forums/topic/254317-atari-820-drive-or-is-it/

Judging by the photos posted by Timothy Kline in that thread, rev. E looks like a direct replacement for the std. 810 rom. Maybe it is interesting enough to integrate in Altirra as well?
In post 13 Ijor posted the download location of a dumped version of this rom. It looks like that file was made using a regular cartridge with a cart dumping prog, so the file contains 6 startbytes before the actual eprom contents (total filesize 2054 bytes). I stripped the startbytes and saved the 2048 bytes (2716 eprom) file. Haven't looked in depth at it, but contents seem to differ a lot with the std. 810 rom.
Owen Rubin wrote in post 16, 20 and 24 of that thread about the changes incorporated in rev. E, Ijor also contributed to the discussion.

Ijor, in post 25 of that thread you asked for a dump of a 810 rom rev. B, are you still looking? If so, do you have a partnr.? The rom on my sideboard says C011299B-03, so this might very well be a rev. B. The rom's prod. date is 1980 week 13.

I'll make some photos of my sideboard and data separator board and post them here later this week.

re-atari

Happy810.rom

810_RevE.rom

  • Like 1
Link to comment
Share on other sites

In regard to the copyright issues of the code and if Atari gave permission, lets not forget that Mr Happy was Scott Adams brother, a man producing Atari software that was epically popular, a possible reason that Atari may have just ignored the drive as a 'favour'. Also Atari were not particularly bothered by piracy, it took them YEARS to bother to take to court a person I've worked with (who also had a Happy early on) as the first UK person to be taken to court for piracy or in his case selling programs on a media they were not available on (roms on disk). I don't think I have even heard of a US person being taken to court by Atari.

 

Kevin, the UK based man in question spoke an awful lot to Mr Happy and I remember Kevin asked him if he was worried about Atari and the drive and he was fully confident they were ok about it. There's also a rumour out there that it was Atari itself that brought out Happy Computing when they produced a cart for the ST, I've asked Scott Adams in the past if this was true and he said he didn't know about his brothers business but I got the idea he was simply deflecting the question.

 

Paul.

  • Like 1
Link to comment
Share on other sites

Maybe JB has a way to verify the schematic and add the missing wiring. I always use a multimeter on diodetest/buzzer when checking wiring for continuity.

 

A look behind the perfboard to identify the 2 TTL's will be most helpful as well. Chances are the part. nrs. are sanded away, though. I've been thinking about which ones could be used, but due to the incomplete drawing could not narrow down the group of candidates yet.

 

Post your schematics and I will compare them to my drive.

 

Looking "behind" the perfboard is not possible because 1. I expect the chips to be sanded and more so 2. the board has been fixed by glueing the chips to the 810's logic board.

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