Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IC3 6801V0B55P is dumped and more info #1

Open
matt713 opened this issue Nov 2, 2023 · 6 comments
Open

IC3 6801V0B55P is dumped and more info #1

matt713 opened this issue Nov 2, 2023 · 6 comments

Comments

@matt713
Copy link

matt713 commented Nov 2, 2023

hi Eric, you say:

the microcontroller, IC3, has not been dumped

and that's why I just want to let you know that 6801V0B55P was actually dumped 10 years ago, I posted details here:

https://www.vogons.org/viewtopic.php?p=1202055#p1202055

and here:

https://www.vogons.org/viewtopic.php?f=62&t=96744

that dump is the latest known ROM for 6801V0B55P, i.e. version 1.5A, but 6801V0B55P with ROM version 1.4B is confirmed to exist in the wild, at least based on one report:

https://forum.vcfed.org/index.php?threads/roland-mpu-401-eprom-upgrade-1-5a.1238114/

in short that means command 0xAC returns 15 or 14 (respectively version 1.5 or 1.4) and command 0xAD returns 1 or 2 (respectively revision 'A' or 'B' to designate 1.5A or 1.4B) :

https://www.vogons.org/viewtopic.php?p=1202056#p1202056

the retro-computing community believes that 1.5A is the latest Intelligent MIDI firmware version, because that is what is also documented in the "MPU-401 Technical Reference Manual", but now, based on few findings that I made very recently, I have very strong evidence that there are newer firmware versions (and most importantly those new versions are for Generic 6801 and not for the custom and unobtainable now Roland part 6801V0B55P). it seems those newer firmware versions were introduced to existing devices mainly when an MPU-401 unit was sent back to Roland for a repair, which as you will see makes a lot of sense and here is how I came to that conclusion in chronological order:

thanks to a family friend, now a very old gentleman, who owns that particular MPU-401 unit since like 40 years, I was able to find out that unit has firmware which returns:

0xAC --> 0x15
0xAD --> 0x39

at first I was shocked and confused by that, as there is no known revision 0x39 of firmware 1.5, the only known one is revision 1, i.e. 1.5A.

that's why initially, I was thinking that it has to be some fault like maybe some bits flipped due to aging process where value '01' is stored in the ROM and it became '39', but digging further and further, as it will become clear below, showed me that is not the case and the firmware is really "1.5 revision 39".

What was even more confusing is that based on the label sticker on the bottom of the unit, it shows the unit is from May 1984, i.e. very very early unit, actually one of the earliest possible units - that is over 1 year before Roland released firmware 1.5, which release date is documented in "MPU-401 Technical Reference Manual" to be May 31, 1985.

So, based on "May 1984" date, what it should have is firmware 1.2, but yet it has 1.5 with some strange 0x39 revision number.

OK, it will be long, but digging deeper - I told the owner what I found out and how confusing it is and he told me the unit was sent back to Roland (he cannot recall the exact date or year) for a repair. So, I opened the unit and it was full of surprises:

  • what I immediately noticed is the sticker on the EPROM chip - the "2" is stroked-through with an X and "5" is marked, which suggested to me that is how they designated the unit was version 1.2 and it's upgraded to 1.5 during the repair process plus one corner (bottom left) of the sticker shows clear signs of how it was peeled in order to erase it with UV light, finally not one, but several things that seem to add up and to make a lot of sense, here is high-res picture of that EPROM:

mpu401_rom

  • Still, I was not sure that is really how they indicate the version on the EPROM sticker, i.e. if for example "5" marked is really supposed to mean version 1.5 and I needed to find some more evidence to support that. So, after spending a lot of time searching for pictures online of another unit with EPROM chip the only one I found is this one:

1984

at first that picture added some doubts to me, because it has "7" marked on the EPROM sticker, i.e. if my hypothesis is correct then that should mean firmware version 1.7, which is another unheard thing, but it took me almost no time searching to find that Vogons user "cricket" reported 5 years ago unit with ROM version 1.7C, as the post says:

I can use MPUTHRU.COM on the unit and it prints ROM version 1.7C

https://www.vogons.org/viewtopic.php?p=681558#p681558

even it seems back then no one really paid much attention that version 1.7C is something actually new and unheard.

It's also important that the unit from the picture above with "7" marked on the EPROM is not using 6801V0B55P, but another chip 6801V0A88P, which adds up - different chip, different ROM version, i.e. 1.7C that is not seen on units with 6801V0B55P that are 1.4B or 1.5A.

  • further more and it was the final nail in the coffin so to speak is my investigation is that another Vogons user "Artex", reported 10 years ago unit with sticker on the EPROM chip saying "Roland 1.5 DB" :

https://www.vogons.org/viewtopic.php?p=296139#p296139

that to me indicates "version 1.5 revision DB"

here are the 2 important parts of that post:

two chips missing on the PCB that are present on mine

"Artex" meant by that the EPROM chip and HD74LS04P, which are missing on most MPU-401 units, i.e. those with 6801V0B55P, which has build-in ROM and thus no external EPROM chip:

Roland_MPU-401_No 599461-_inside_angled

and "Artex" added:

The bigger chip says "Roland 1.5 DB"

and between HD74LS04P and the EPROM chip, the bigger one is the EPROM, i.e. "Artex" no doubt is talking about the sticker on the EPROM chip and that it's "Roland 1.5 DB" or "version 1.5 revision DB" (I guess that is the moment when they switched to that new format/style of the sticker)

Summary and final words:

it seems there are 3 designs:

  • 6801V0B55P (build-in ROM, latest known version 1.5A, dumped 10 years ago by the MAME project), in this case the EPROM and HD74LS04P are not populated on the board, but there is space left for them (I guess especially useful when repair is needed and 6801V0B55P is replaced with generic/regular 6801 MCU and not Custom Roland part).

  • 6801V0A88P + HD74LS04P + EPROM : latest known ROM version is 1.7C, unfortunately, dump is not available and Vogons user "cricket" that seems to have such unit is not active for years, i.e. cannot be reached. in any case I don't believe that case is important, because still 6801V0A88P is Roland part and unobtainable now

  • the most important and very interesting case - the case that started my investigation. it's so interesting, because it doesn't use Roland part, but instead off-the-shelf or regular/generic 6801 micro-controller + HD74LS04P + EPROM, i.e. design that is replicate-able. it seems ROM in my case is "version 1.5 revision 39", but there is "version 1.5 revision DB", i.e. the latest known as per the post of user "Artex" on Vogons. Too bad, "Artex" seems is not active for years on Vogons and no dump of that "version 1.5 revision DB". ([EDIT] it seems "Last active" on Vogons is not correct, I saw very recent posts by user "Artex").

Another interesting thing is that disassembling 6801V0B55P ROM 1.5A and the dump I made of "version 1.5 revision 39" from that repaired unit with the regular/generic 6801 micro-controller shows different instructions are used on the same places between the 2 firmwares - few examples:

LDAB (1.5A) --> LDB (1.5 rev 39)
LDAA (1.5A) --> LDA (1.5 rev 39)
STAA (1.5A) --> STA (1.5 rev 39)

and so and so on. Now, I know nothing about 680x-assembler and it took me a lot of searching to find out this:

http://datapipe-blackbeltsystems.com/windows/flex/asm4.html

which states:

SOURCE FORM: LDA (P); LDB (P);
6800 ALTERNATES: LDAA (P); LDAB (P);

and

SOURCE FORM: STA (P);
6800 ALTERNATES: STAA (P);

or it seems "1.5 rev 39" is compiled as 6809-code, which I don't really get, because the PCB with that ROM has off-the-shelf regular/generic 6801 micro-controller. In any case, it seems as part of repairs (and I guess lack of stock of those custom Roland 6801V0B55P or 6801V0A88P parts), they replaced the chip with regular/generic 6801 and built that "1.5 rev 39" firmware. Something almost like Roland hacked themselves. Again, it's too bad Vogons user "Artex" is unreachable and we cannot learn more about that "version 1.5 revision DB" unit and what chip it has inside. ([EDIT] it seems "Last active" on Vogons is not correct, I saw very recent posts by user "Artex")

Bottom line is that 6801V0B55P on MPU-IMC can be replaced with (regular/generic 6801 micro-controller + HD74LS04P + "1.5 rev 39" firmware) and maybe with "version 1.5 revision DB" if someone makes ROM dump of such unit. So, it's one possible road for hardware preservation.

I hope that information is useful and/or interesting to you...

--Matt

@matt713 matt713 changed the title IC2 6801V0B55P is dumped and more info IC3 6801V0B55P is dumped and more info Nov 2, 2023
@matt713
Copy link
Author

matt713 commented Nov 3, 2023

first, of all, I want to thank both Vogons users "Artex" and "cricket" for replaying to me.

So, "cricket" sold the unit and that means 6801V0A88P and/or ROM version 1.7C road is dead end for further investigation and what exactly is the case. Unless another such unit surface, which I believe is highly unlikely.

"Artex" even 10 years later found the unit and everything in my initial post is now confirmed, i.e. proven fact and no longer in the realms of hypothesis.

So, "Artex" unit has regular/generic 6801 micro-controller (and not Roland custom 6801V0B55P part) + HD74LS04P + External EPROM with firmware "version 1.5", i.e. exactly like the unit I described in my initial post and we know that mine unit received those modifications/upgrades after it was sent back to Roland for a repair, because it has a single owner since new for the last 40 years. In fact that unit is made over 1 year before there was version 1.5.

Most interesting finding is that only 1 byte is the difference in the ROM between "Artex" unit and mine unit (technically not really mine, but just calling it that in short, the unit owned by our family friend):

diff_roms

and that byte is exactly the revision number - I ran both ROMs in MAME emulator with the fix I described here:

https://www.vogons.org/viewtopic.php?p=1203347#p1203347

and indeed that different byte is the revision:

Mine:
Mattw_mpu401_rom_mame

"Artex":
Artex_mpu401_rom_mame

I highly doubt that in my ROM that byte flipped from '00' to '39' due to aging, I do believe when Roland did the repair and upgrade of the unit they put that '39' to indicate either the repair or the port of firmware v1.5 to regular/generic 6801 micro-controller. However, probably on later stage they realized that causes issues with existing software - like Vogons user "cricket" reported the unit with ROM v1.7C was not recognized by the Win 3.1 drivers:

https://www.vogons.org/viewtopic.php?p=681558#p681558

in any way, the important fact is that we now have confirmed good dump of that ROM used with regular/generic 6801 micro-controller, because both mine dump and "Artex" differ just in one byte and the meaning of that byte is known and demonstrated on the above 3 pictures.

Bottom line:

  • 10 years ago, MAME project dumped the build-in ROM in Roland custom part 6801V0B55P, it's version 1.5A

  • now me and "Artex" dumped the ROM from 2 different units with regular/generic 6801 micro-controller, the 2 ROMs are byte-by-byte identical except one byte - the revision number. in my dump that revision byte is 0x39, which is weird number, that's why for optimal software compatibility patching that byte to '00' as the ROM from the "Artex" unit makes sense.

So, because in that case we have regular/generic 6801 micro-controller + HD74LS04P + EPROM 2732A chip (for example "Fujitsu MBM2732A"), IMHO, it's good idea on MPU-IMC clone PCB space for those two components be added, i.e. exactly like it's in the MPU-401 box, when 6801V0B55P is used, HD74LS04P and EPROM 2732A are just left unpopulated.

Last, but not least, now after we have those ROM dumps and the code gives idea how the 6801 micro-controller is supposed to communicate with the HG62E08R10FS that I believe can be re-implemented. the same applies for "HD61J221F" and other similar chips used in the case of ISA cards for that purpose, i.e. the bridge between the bus and the 6801 controller.

@schlae
Copy link
Owner

schlae commented Nov 9, 2023

wow, incredible research! it should be possible to reimplement the HG62E08R10FS using a CPLD, or perhaps a small FPGA. the next step would be to reverse engineer and comment the firmware to (as you mentioned) understand how the gate array is supposed to work.

@matt713
Copy link
Author

matt713 commented Nov 20, 2023

please, if I can further help with anything feel free to emails me: matura713@gmail.com.

@schlae
Copy link
Owner

schlae commented Nov 21, 2023

i won't be able to look into this for quite some time since i am busy with other projects. but feel free to try your hand at reverse engineering the firmware that you've dumped.

@matt713
Copy link
Author

matt713 commented Nov 21, 2023

actually, the MAME source code:

https://github.com/mamedev/mame/blob/master/src/devices/machine/mpu401.cpp

gives good idea how at least the gate array and the 6801 micro-controller are communicating. what I am not sure is if the speed in their code is correct, because MAME code says "/* 4 MHz as per schematics */", but the 6801 micro-controller in my repaired unit is 1MHz. maybe, there is some internal divider or something, i.e. externally it's 4MHz and internally 1MHz, not sure. anyway, just making a note, it's all subject to further in-depth analysis of the firmware code.

@matt713
Copy link
Author

matt713 commented Nov 29, 2023

The following is off-topic when it comes to MPU-IMC preservation, but I want to document it here and keep all the information in the same place, because it's on-topic when it comes to designs that were used.

So, I found 4th design, apart from the 3 designs I mentioned in the previous posts ("6801V0B55P with build-in ROM", "6801V0A88P + HD74LS04P + EPROM" and "Generic 6801 MCU + HD74LS04P + EPROM) - that 4th design is highly integrated and I found it in MPU-401N unit that I purchased very cheaply (less than 20 USD) with the sole intent to see what's inside it, because without the very special 110-pin cable that MPU-401N unit needs, it's not really usable plus very few NEC PC-98 laptops have such 110-pin connector in the first place.

So, here is what's inside:
mpu401n

It's all highly integrated and concentrated in that big chip with the 3 dies located in the right bottom corner of the PCB.

After I de-soldered that chip:
mpu401n_ic

it became clear it's "15239182" - that is not only silk-screened on the PCB under the IC, but I can also see it on the chip itself when I hold the IC against light.

BTW, that big capacitor-looking thingy on the bottom side of "15239182" IC is actually 4MHz crystal - it's written on one of its sides, other small SMD components on the bottom side of "15239182" are nothing special - just few regular resistors and capacitor.

So, after some searching it turned out "15239182" is documented in SCC-1 Service Manual ("ROLAND_SCC-1_SERVICE_NOTES.pdf") and it's described as:

MPU Core: a hybrid IC integrating the CPU of MPU-PC98II, gate array and RAM. Its operation is fully compatible with MPU-401

now what is most interesting and the main finding is that makes possible and allows "Converting MPU-401N to an ISA card", because SCC-1 Service Manual contains pin-out of "15239182" and even better - full schematic how "15239182" is wired to an ISA bus. it's very simple circuit - mostly it consists just of 74HC688 used for port address decoding and "15239182". So, to make ISA Intelligent MPU-401 card around "15239182" requires very few components, because essentially "15239182" is System-on-Chip when it comes to Intelligent MPU-401 processing.

So, that 4th design opens up the possibility of making ISA card with recycling mostly useless MPU-401N and use them for a source of "15239182". After all MPU-401N is not very usable otherwise, because its use is limited to very few NEC PC-98 laptops and it requires unobtainable now (and the pin-out is not available anywhere, AFAIK) 110-pin connector cable. So, best use of MPU-401N is converting it to an ISA card using it just as a donor for "15239182" IC and utilizing the schematic from SCC-1 Service Manual. I am planning to make such ISA card for myself, just as a proof-of-concept and preserve than MPU-401N in such alternative way - its "15239182" IC to get new live on a newly made ISA card.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants