Jump to content
IGNORED

Happy 810 resources


ebiguy

Recommended Posts

I have an 810 (they are very here rare in EU). It's a standard drive, not upgraded, but does have the Dataseperator and Grass Valley boards installed. I bought it a few years ago 'as-is' from a Craigs List type site. Usually 'as-is' is just an euphemism for 'defective'. I haven't had a chance to test it yet.

Round that time I did a websearch about the Happy810, heared they were an easy homebrew upgrade using piggybacked IC´s and freefloating point to point wiring, but came up empty handed. When I saw user Horry chime in in the above mentioned thread I PM'ed him for more detailed info, but never got an answer back. I guess users SLX and willyvmm in that thread didn't either.

I saved a bit of info during my websearch, found it on the ABBUC forum. First a photo of an original Happy810, sadly no photo of the solder side.

 

post-9683-0-02075000-1476717723_thumb.jpg

 

And an accompanying text (in German), which roughly translates into this:
"Long time ago I upgraded my 810 with a homebrew Happy810. Installing a Happy810 requires the presence of the dataseparator board. It only took a few parts: an eprom, RAM and a few TTL's. The IC's pins were connected point to point using small pieces of wire, and it worked fine. Sadly the drive is no longer in my possession, neither are the schematics.
(...)
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."

 

Maybe this helps, although the info admittedly isn't very detailed. No specific info about the type and size of the eprom and RAM, or which TTL's were used.

 

re-atari

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

phaeron, on 17 Oct 2016 - 08:46 AM, said:

 

Give this a shot -- blind coded based on the diagnostics code. Run happyread.xex with DOS loaded and it'll attempt to dump the ROM from a Happy drive on D2: and write it to D1:HAPPY810.EPR.

 

It did not work. Find attached the RespeQt log and the result, which looks like parts of DUP.SYS. The sound while your program was running sounded like the hissing you hear when the drive NAKs something.

 

Also find attached an archive with pictures of the mod. The two small ICs are both 14-pin and have the notch pointing upward. The RAM consists IIRC of two 2k static 6116 RAMs. The blue wire is for the speed control which uses a 22k potentiometer.

 

I keep my fingers crossed that the drive still works after disassembling the PCBs; haven't tried yet.

dump.zip

BoardPicsHappy810.zip

Link to comment
Share on other sites

 

I checked the assembler source. Very nice. I guess you realize we are going to miss one of the RESET vectors. You are reading the vectors always from the same bank. Probably not big deal as it should be ready to power up at either bank. The only thing is that we might miss an IRQ vector, that might be used for BRK. Guess we should we able to figure out in the worst case.

 

It shouldn't, because the copy loop hits the bank register before copying every byte and the indexed load is page-aligned. The LDA abs,X instruction will hit the banking registers, but since it does not index across a page boundary it will do only one read cycle from the ROM and that should happen before the bank switch takes effect. The next loop iteration will then read the bank register again to reset it to capture $1FFA-1FFF. The routine self-modfiies itself to use $1FF9 instead of $1FF8 after looping around once.

 

 

It did not work. Find attached the RespeQt log and the result, which looks like parts of DUP.SYS. The sound while your program was running sounded like the hissing you hear when the drive NAKs something.

 

 

Alright, try this version. I fixed an issue that could have caused the device ID to not be set correctly, and also just made the patcher stomp the whole variable block at the beginning of drive RAM like the diagnostics routine does. The log you included doesn't show any of the commands that the program tries to issue to the drive, which is suspicious.

happyread.zip

  • Like 3
Link to comment
Share on other sites

It shouldn't, because the copy loop hits the bank register before copying every byte and the indexed load is page-aligned. The LDA abs,X instruction will hit the banking registers, but since it does not index across a page boundary it will do only one read cycle from the ROM and that should happen before the bank switch takes effect. The next loop iteration will then read the bank register again to reset it to capture $1FFA-1FFF.

You are right. I missed the loop structure. Sorry.

 

The log you included doesn't show any of the commands that the program tries to issue to the drive, which is suspicious.

I think the log doesn't correspond to that program. Even the date of the log file is too old.

 

Btw, so it is confirmed it keeps the 6507. I admit I didn't know the Happy 810 has so little RAM.

Link to comment
Share on other sites

I ordered a new Happy 810 upgrade kit from B&C a few days ago. This will be my first experience with this upgrade. Is there a list of s/w that has compatibility issues with the Happy? Was there any s/w that would go so far as to self destruct if the Happy was detected? The manual I've read online suggests this is a possibility and warns against running s/w without a write protect tab the first time you try it on a Happy drive.

  • Like 1
Link to comment
Share on other sites

I don't believe there was any software that went that far. Iirc, Synapse had one title that if you removed the write protect tab, it would attempt to format the disk. But that was any drive. Quite a bit of software would not load properly if you were in Happy mode. There were also loading issues with Warp speed, but I can't remember exactly what they did.

 

But keeping the disk or drive write protected is always good advice. Did you get the updated rom or original? Hopefully the updated one.

 

Larry

Link to comment
Share on other sites

I should add, my comments are based on US stuff. I never had too much Euro software.

 

That is cool to get an 810 Happy! Have fun!

Thanks! It's always fun to crack open some vintage hardware for modification. :) This being a vintage hardware mod makes it even cooler. :)

Link to comment
Share on other sites

Alright, try this version. I fixed an issue that could have caused the device ID to not be set correctly, and also just made the patcher stomp the whole variable block at the beginning of drive RAM like the diagnostics routine does. The log you included doesn't show any of the commands that the program tries to issue to the drive, which is suspicious.

 

It looks like this one has worked, but it took very long. Each of the 96 "Q"-commands took 20 seconds.

 

Find attached the dump and (this time the correct) RespeQt log. Ijor was right that the one yesterday was wrong. Sorry for that.

happy810dump.zip

  • Like 1
Link to comment
Share on other sites

I don't believe there was any software that went that far. Iirc,

 

Agree. I don't think I ever seen any software that maliciously try to detect the Happy. Yes, of course, some fail because of the higher speed. So setting slow speed was enough for almost every case. No real need to set Unhappy mode.

 

OTOH, seems some titles do try to detect "The Chip" (Archiver). Never really traced to see what exactly they do. But I recall seeing Archiver SIO commands at the loading stage of, I think, some Broderbund games?

 

But as others said, it is always a good idea to write protect valuable disks. Even better, if you can, install some of the mods with a write protect switch!

Link to comment
Share on other sites

 

It looks like this one has worked, but it took very long. Each of the 96 "Q"-commands took 20 seconds.

 

Something is wrong about the dump.

 

Phaeron, I suspect the call at $1951 needs some preparation and/or probably it doesn't send the ACK. See that the diag modules issue a JSR $1C77 right away, before doing their stuff. At the minimum I suspect $1C77 is the routine that sends the ACK.

Edited by ijor
Link to comment
Share on other sites

 

 

OTOH, seems some titles do try to detect "The Chip" (Archiver). Never really traced to see what exactly they do. But I recall seeing Archiver SIO commands at the loading stage of, I think, some Broderbund games?

 

 

Funny that you mention this. I took a video sometime ago of what happened when I forgot to disable the chip in my Archiver 810. This is Broderbund's David's Midnight Magic.

 

https://www.youtube.com/watch?v=gjXc3k5UG3Q

Link to comment
Share on other sites

 

It looks like this one has worked, but it took very long. Each of the 96 "Q"-commands took 20 seconds.

 

Find attached the dump and (this time the correct) RespeQt log. Ijor was right that the one yesterday was wrong. Sorry for that.

 

Almost there, seeing something starting to resemble ROM... try this one, which has a fix for the issue that ijor identified. And thanks for running the tests for us!

 

 

Agree. I don't think I ever seen any software that maliciously try to detect the Happy. Yes, of course, some fail because of the higher speed. So setting slow speed was enough for almost every case. No real need to set Unhappy mode.

 

OTOH, seems some titles do try to detect "The Chip" (Archiver). Never really traced to see what exactly they do. But I recall seeing Archiver SIO commands at the loading stage of, I think, some Broderbund games?

 

But as others said, it is always a good idea to write protect valuable disks. Even better, if you can, install some of the mods with a write protect switch!

 

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.

happyread.zip

Link to comment
Share on other sites

The Happy 810 seems to be fairly different and simpler than the Happy 1050. $0809-0820 in drive RAM appears to be the command table, i.e. JMP vectors for commands $50-57. Like the ROM/RAM diagnostics, this program patches command 'Q' ($51) to copy 128 bytes at a time into the transfer buffer at $80-FF and then jumps to $1951 to send ACK + Complete + buffer + checksum. If this doesn't work, we should be able to copy down chunks to $0880-08FF and issue memory reads on that range instead.

 

Hope I'm wrong. But checked the diag code a little more, and I'm not sure the idea is going to work. I don't see the RAM test routine overwriting the whole $80-$FF area, but just a small range at the start. I'm not sure we are allowed to trash the whole range. Probably the ROM stores some variables there, as that's the only zero page space available at RAM. I suspect now that we'll need to apply plan B. Copy to the Happy extended RAM and read from there.

 

Yeah, I know, easy for me to sit and talk when you both do the work, sorry :)

 

Hope DjayBee is not running out of patience ...

 

Link to comment
Share on other sites

Hope I'm wrong. But checked the diag code a little more, and I'm not sure the idea is going to work. I don't see the RAM test routine overwriting the whole $80-$FF area, but just a small range at the start. I'm not sure we are allowed to trash the whole range. Probably the ROM stores some variables there, as that's the only zero page space available at RAM. I suspect now that we'll need to apply plan B. Copy to the Happy extended RAM and read from there.

 

The diagnostic test does only overwrite the first couple of bytes, but if you instrument the computer side, it's actually doing a full sector read. The use of the entire page zero RAM as the transfer buffer is not surprising as that's what the stock 810 ROM does. All of the control variables are instead stored in page 1 next to the stack. It's a heavy cost just to save one cycle during sector reads, but maybe the FDC read timing is so tight they needed it.

 

If you look at the results we got from the last dump, it's not that hopeless. In particular, the string "OMPUTING" appears four times in the dump next to a sector boundary, which is a good sign. The effect of the missing call is most likely for the sector data to be shifted down one byte and a device error to occur, since IIRC the Atari SIO routines accept either A or C for the ACK byte. This would also cause every other sector to be skipped due to the device retry, which would cause the four sections to appear in the dump. The end of the dump also looks like the CPU vectors with a checksum byte added. It's concerning that we appear to be getting the same ROM data over and over instead of both banks, but we can see what we end up with after the broken sector transfer is fixed.

 

And yes, we are imposing on DjayBee, but hopefully we can get a clean dump out of everyone's efforts. :)

Link to comment
Share on other sites

The diagnostic test does only overwrite the first couple of bytes, but if you instrument the computer side, it's actually doing a full sector read. The use of the entire page zero RAM as the transfer buffer is not surprising as that's what the stock 810 ROM does. All of the control variables are instead stored in page 1 next to the stack. It's a heavy cost just to save one cycle during sector reads, but maybe the FDC read timing is so tight they needed it.

Yes. The stock ROM uses that range as a buffer, but the Happy is different. And yes, the whole area is transferred, no doubts about it. But the (partial) dump seems to show that the Happy ROM read sectors somewhere else using indirect addressing. OTOH, may be it will work, read sectors are indirect, but write (and verify) sectors are indeed from that buffer. We'll have to wait and see :)

 

... since IIRC the Atari SIO routines accept either A or C for the ACK byte. This would also cause every other sector to be skipped due to the device retry, which would cause the four sections to appear in the dump ... It's concerning that we appear to be getting the same ROM data over and over instead of both banks

 

Ah! I didn't remember SIO accepts a C for an ACK. That could explain the behavior. If every sector is retried twice, then your in-drive code will switch banks at twice the frequency. This is assuming banking logic doesn't decode all the address lines, such as that $1FFA-B produces the same effect as $1FF8-$1FF9. So we are reading every other memory sector from one bank, then from the next, then repeat once again.

 

Now DjayBee, just tell us if you are tired, nobody can complain :), or you perform can one more test. Please! :)

Edited by ijor
Link to comment
Share on other sites

Now DjayBee, just tell us if you are tired, nobody can complain :), or you perform can one more test. Please! :)

 

Stay tuned, I will go ahead; I just was not at home yesterday - and currently am at work.

 

Since I have pulled my 810 from storage, it would not make sense to stop now.

  • Like 1
Link to comment
Share on other sites

Better, but yet not there. Still just one single bank.

 

I think this version has a different banking scheme than the one compatible with Happy software ver 7. We need to reverse engineer the diagnostic software a little more. But sounds that the banks are selected at address $17FE-$17FF.

 

Phaeron, check Happy software ver 5.X. Happy ver 7.X is compatible with newer 810 roms (including bank switching logic, it seems) only!

 

Thanks Djaybee! :)

Edited by ijor
Link to comment
Share on other sites

Are any of you guys familiar with the Autospeed mod for the 810 Happy? My understanding is that it is just a trim pot wired in so that the Happy Upgrade can slow down the drive speed for copying certain disks. I would like to make this mod after I get my Happy upgrade installed.

 

Thanks!

Link to comment
Share on other sites

If you check the photos a few posts above, you should be able to follow the wire wrap and find out which (address) lines are the input for the bank switching logic.

I made the photos intentionally so that all wires are visible.

Maybe somebody will be able to guess which TTLs are used.

Link to comment
Share on other sites

Are any of you guys familiar with the Autospeed mod for the 810 Happy? My understanding is that it is just a trim pot wired in so that the Happy Upgrade can slow down the drive speed for copying certain disks. I would like to make this mod after I get my Happy upgrade installed.

 

Thanks!

Check the photos for it. I just don't know the currently set value for the potentiometer.

Link to comment
Share on other sites

Better, but yet not there. Still just one single bank.

 

Correcting myself ... Ah, no! I This version seems to be just a single bank. At the very least it can't be two 3K banks because it is just a 4K EPROM! If so, we have a good dump. Probably only the ROM compatible with software ver 7 is banked.

 

Many thanks!

Edited by ijor
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...