| |
Fresh
Registered: Jan 2005 Posts: 101 |
MPS803 external EPROM
Hi everyone,
some time ago I purchased for nearly nothing an old MPS803 and these days I found the time to open it to clean it up and, well, to take a look at what's inside.
It turns out the motherboard has a couple of free sockets where you can put, respectively, a 74373 and a 2732 (or 2764).
The Service Manual states that by adding those ICs and shorting a jumper you can switch from internal D7811G ROM to external EPROM.
Looking at the emulators I only found a font file (mps803) so my first guess is it can only be used for fonts. Still, according to the Service Manual, the EPROM should basically replace the internal ROM.
Now, I do know the hardware is heavily limited, but I'm pretty curious about this extension: is it only useable for fonts or is it possibile to put code there?
And if the latter, is there any documentation about it?
Thanks you all! |
|
... 7 posts hidden. Click here to view all posts.... |
| |
Fresh
Registered: Jan 2005 Posts: 101 |
It worked!
I managed to dump the whole mask ROM of the MCU of the printer so now I can start disassemble it.
I'd be glad to share both the dump codes and the dump itself somewhere, for preservation. Do you think there may be copyright problems putting it here? |
| |
chatGPZ
Registered: Dec 2001 Posts: 11386 |
Not sure in what form it would qualify a release here - i'd put it on github and then send Bo Zimmermann a mail so he can put it on zimmers.net too |
| |
Fresh
Registered: Jan 2005 Posts: 101 |
Ok, thanks Groepaz.
If you're curious you can find all the stuff here: https://bitbucket.org/freshness79/78c11romdumper/
I'll drop a drop email to Zimmermann, as you suggested. |
| |
BiGFooT
Registered: Mar 2002 Posts: 33 |
Well Fresh, it's nice to see your first results and achievement.
The dump looks promising, as it's something, but it's not good. I don't know if it's misaligned, or something else, but doesn't add up.
The init seems to be good
LXI SP,0 ; init stack
MVI EOM,0 ; disable timer
JRE PC+2d ; jump to 0x35
...
0x35:
MVI A,8
MOV ???,A ; Move to unknown register? That 0 is not a valid register somewhat.
MVI A,0x8e
MOV ???,A ; Move to unknown register? That 0 is not a valid register somewhat.
MVI A,0
MOV PA,A
...
Also, it seems that the EI / RTI interrupt handling is looks good, but the overall picture of the dump is - at least for me - doesn't add up.
---
Anyway, I'm happy that you was able to do this and I hope that it's not an address / data collision/timing issue with the mode switching. I hope that you can figure out what's the problem or what happened and we can start to dissect this newer seen before piece of code. |
| |
Fresh
Registered: Jan 2005 Posts: 101 |
Totally true, BigFooT.
There were indeed some errors in both printer and C64 sides:
The most impactful were on printer code, but in general the whole protocol was far from being reliable.
Now it's still quite ugly - first time I fiddle with serial cable - but at least it does its job pretty well and way faster than the first version.
A preview of the first lines:
0000: 04 00 00 LXI SP,$0000 ; Init stack pointer
0003: 64 83 90 MVI EOM,$90 ; Set LV1 and enable output
0006: 4e 2d JRE $0035 ; => 0035
<...>
0035: 69 08 MVI A,$08 ; Enable RAM
0037: 4d d0 MOV MM,A
0039: 69 8e MVI A,$8E ; Set control mode
003b: 4d d1 MOV MCC,A ; for some pins of port C
003d: 69 ff MVI A,$FF ; Put all ports in input mode
003f: 4d c0 MOV PA,A
0041: 4d c1 MOV PB,A
0043: 4d c2 MOV PC,A
<...>
|
| |
Claus_2015
Registered: Oct 2012 Posts: 53 |
Cool stuff! Next step: run Doom on continuous paper \o/ |
| |
chatGPZ
Registered: Dec 2001 Posts: 11386 |
BTW, could you tell what exactly is printed on the IC? Is there a commodore specific part number? (I'm just renaming all the files in VICE to use the part numbers, and it would make sense to use this proper dump now :))
That said, i wonder where the charset data comes from... there should be at least 2k (1k for upper and 1k for lowercase) ... but... mmh :) how much RAM does this controller have? Is it decompressing it on the fly? |
| |
BiGFooT
Registered: Mar 2002 Posts: 33 |
@Fresh: It's a good dump \o/ Great job mate.
I need to check the schematics to start the dissecting, but it's a nice code with weird jumptables. :)
@Groepaz: It's from $0c3f of the dump, 160 characters in total, 7x6 bits. The offset calculation code is at $09c0 in the rom code.
|
| |
Fresh
Registered: Jan 2005 Posts: 101 |
@BigFooT: nice finding! :)
I'm going to start looking at the code now, pity there doesn't seem to be some ASCII signature or similar, would have been a nice trivia. Yes, space is really tight...
@Groepaz, BigFooT already answered most of your questions, for completeness:
- The MCU part number is "D7811G 111-U32053A", its socket is labeled "#4" on PCB.
- It has 4k internal ROM and 256 byte RAM.
"U32053A" is the ROM revision, maybe there are printers with different firmware version which we could dump. |
| |
chatGPZ
Registered: Dec 2001 Posts: 11386 |
Cool cool! Bigfoot: is it "bit packed"? Can you tell a bit more so i dont have to work it out as well? =) nvm, got it :) |
Previous - 1 | 2 - Next |