VOGONS


HardMPU, anyone?

Topic actions

Reply 500 of 511, by Thermalwrong

User metadata
Rank Member
Rank
Member

And now it works! Excellent 😀

IT's a shame that all 5 PCBs are messed up like this, but it's been very educational 😀

Attachments

Reply 501 of 511, by Thermalwrong

User metadata
Rank Member
Rank
Member

And now the bracket along with the adapter for the ECHO MIA MIDI breakout cable is all done, it's so nice 😁
Doing this in Eagle meant that the PCB could be easily put into Fusion 360 so I could make up the bracket. I think I used the wrong gender of connector for the pinout, I had more of the wrong direction DB9 connectors on hand and it resulted in this nice plastic adapter for the midi breakout.

IMG_0633 (Custom).jpeg
Filename
IMG_0633 (Custom).jpeg
File size
553.63 KiB
Views
496 views
File license
CC-BY-4.0
IMG_0634 (Custom).jpeg
Filename
IMG_0634 (Custom).jpeg
File size
282.49 KiB
Views
496 views
File license
CC-BY-4.0
IMG_0635 (Custom).jpeg
Filename
IMG_0635 (Custom).jpeg
File size
379.53 KiB
Views
496 views
File license
CC-BY-4.0
IMG_0637 (Custom).jpeg
Filename
IMG_0637 (Custom).jpeg
File size
429.8 KiB
Views
496 views
File license
CC-BY-4.0
IMG_0638 (Custom).jpeg
Filename
IMG_0638 (Custom).jpeg
File size
479.83 KiB
Views
496 views
File license
CC-BY-4.0

Reply 502 of 511, by Muren

User metadata
Rank Newbie
Rank
Newbie

One more HardMPU. 😀
It's a pity, but it doesn't work well. Deep in debug.
HardMPU utility is waiting for DRR. /DRR is 4.4V (not 5V) and it seems that U6 sends DB6 as logical 1.

IMG_20200726_041039_sm.jpg
Filename
IMG_20200726_041039_sm.jpg
File size
193.82 KiB
Views
437 views
File license
GPL-2.0-or-later
IMG_20200726_041052_sm.jpg
Filename
IMG_20200726_041052_sm.jpg
File size
182.09 KiB
Views
437 views
File license
GPL-2.0-or-later
IMG_20200722_174853_sm.jpg
Filename
IMG_20200722_174853_sm.jpg
File size
282.7 KiB
Views
437 views
File license
GPL-2.0-or-later

Finally fixed it!

Reply 503 of 511, by MiGee

User metadata
Rank Newbie
Rank
Newbie
Muren wrote on 2020-07-26, 01:20:
One more HardMPU. :) It's a pity, but it doesn't work well. Deep in debug. HardMPU utility is waiting for DRR. /DRR is 4.4V (not […]
Show full quote

One more HardMPU. 😀
It's a pity, but it doesn't work well. Deep in debug.
HardMPU utility is waiting for DRR. /DRR is 4.4V (not 5V) and it seems that U6 sends DB6 as logical 1.
Finally fixed it!

Do you have working ones for sale?

Reply 504 of 511, by ab0tj

User metadata
Rank Member
Rank
Member
Thermalwrong wrote on 2020-07-15, 21:49:
And now the bracket along with the adapter for the ECHO MIA MIDI breakout cable is all done, it's so nice :D Doing this in Eagle […]
Show full quote

And now the bracket along with the adapter for the ECHO MIA MIDI breakout cable is all done, it's so nice 😁
Doing this in Eagle meant that the PCB could be easily put into Fusion 360 so I could make up the bracket. I think I used the wrong gender of connector for the pinout, I had more of the wrong direction DB9 connectors on hand and it resulted in this nice plastic adapter for the midi breakout.

IMG_0633 (Custom).jpeg

IMG_0634 (Custom).jpeg

IMG_0635 (Custom).jpeg

IMG_0637 (Custom).jpeg

IMG_0638 (Custom).jpeg

I really like the DE9 to Mini-DIN adapter you made. That is cool.

Reply 505 of 511, by Jager

User metadata
Rank Newbie
Rank
Newbie

Greetings.
I've encountered a small problem with HardMPU - some of the boards I've made only work after a soft-reset. Otherwise it is not detected by configuration and games + no HardMPU line on MT-32 screen.
As far as I understood that depends on the host system and board itself - currently I've got one board that works fine, and one that exhibits this problem. All boards are nearly identical with 74F series logic, only electrolytic capacitor is different, but I don't think that's the problem.

Reply 506 of 511, by pentiumspeed

User metadata
Rank Oldbie
Rank
Oldbie

Look again and review your datasheets on implementing the reset circuit properly in warm mode reset cycle, if the host is not designed properly, might need to modify your card and the motherboard also.

Cheers,

Great Northern aka Canada.

Reply 507 of 511, by Thermalwrong

User metadata
Rank Member
Rank
Member
ab0tj wrote on 2020-10-29, 22:38:

I really like the DE9 to Mini-DIN adapter you made. That is cool.

Thank you 😀 The adapters are fancy looking but in use they're a bit pointless and not as convenient as a regular DB9 > DIN5 cable - still, I bought them with the intention of making them each into a hardMPU's midi cable adapter and I achieved it so that's great 😁
Again, thank you very much for putting your schematic and firmware out there, the utility of the hardMPU on my 386 PC is wonderful, it just *works* without any setup hassle needed, so long as the soundblaster isn't trying to use 330 for its midi port.

Jager wrote on 2020-11-01, 07:31:

Greetings.
I've encountered a small problem with HardMPU - some of the boards I've made only work after a soft-reset. Otherwise it is not detected by configuration and games + no HardMPU line on MT-32 screen.
As far as I understood that depends on the host system and board itself - currently I've got one board that works fine, and one that exhibits this problem. All boards are nearly identical with 74F series logic, only electrolytic capacitor is different, but I don't think that's the problem.

Have you tried a lower CPU speed? Most of my tests have been done with 40-100mhz PCs and it's worked excellently with those, maybe a faster PC could affect something. If it works after a reset, the schematic is probably not at fault.

Reply 508 of 511, by christal87

User metadata
Rank Newbie
Rank
Newbie

Hi
I've also designed a 2 layer PCB and built one. It works fine in gsplay, Doom and Monkey Island. Unfortunately the config utility doesn't work . It quits after an ACK timeout. I traced it back to the same waiting for *DRR signal problem as Muren. I'm not using any CMOS type gates, just the original schematic's low power schottky (74LSxxx) ones. Is that normal or I just did a bad design choice on signal integrity? I've just had some time to try a few games with it. It's a bummer that Duke 3D doesn't work. It quits with MPU-401 not found message on music init. Anyone experiencing the same errors with a HardMPU card?

Reply 509 of 511, by christal87

User metadata
Rank Newbie
Rank
Newbie

My case is closed, finally it works! TL;DR 😀

Didn't want to bring home the scope from the office so I've used the DOS utility's source code to understand what was happening. The 'wait_for_ack' function simply gets the current timestamp using the C time library and checks for 0xFE to be shifted in from the card through those 74LS374 D-type flip-flops until 4 seconds elapse. Then a timeout occurs and the utility returns with the printed ACK timeout and quits with exit condition 1. It also happens if the input shifted in from the card bitwise AND matches the MPU_DSR (0x80 macro representing data bit #8 on the bus) and 4 seconds has elapsed. If you got 0xFE then the for loop breaks, returning void, letting the code continue to the next statement in the main function. I used the good old DEBUG command in DOS to read IO port 330 (jumpered the card to it). In my case 0xFE was there, so I came to the conclusion that I need to check what's up with DSR. Realized it was a typo, I've hooked up DSR to *DSR somewhere along the way and my card only worked with some UART (passive) MPU mode games, but not with intelligent mode ones.
After like 10yrs of Cadsoft Eagle (and like 3-3yrs of NI traxxmaker and Orcad I switched to Kicad now. Still have to get used to it! 😀 I've broken the wrong trace and wired it up to the correct pin.
It's finished and damn it feels good! The funny thing is: I've enjoyed perfecting this 486 more than playing on it. It wasn't like this when I was a kid. I've never- ever worked on an ISA card in my life before. Never used the conio library before (merely saw it in an old Turbo C book) because I'm more like a linux guy and it's different in that way. Nice to know how to handle it in C and how to debug in DOS. Nice work ab0tj and a big thumbs up! Thanks for the advanture! 😀 Nice going on the test jig LED blink in the Atmel source code too! Saved me some time of testing when I've forgot to program the MCU fuses.
I'm going to try and move the 74xx logic chips into a CPLD in the near future. I've read that 5V TTL CPLDs are not really made and being supported anymore but first I'm going to use one from the XC9500 series. Followed by something more modern stuff and logic level translation. I might as well port the MCU code to an STM32F103C8T6.

Reply 511 of 511, by christal87

User metadata
Rank Newbie
Rank
Newbie
pentiumspeed wrote on 2020-11-24, 23:29:

Good work!

But 4 second is very long time in hardware? Do you mean millisecond?

Cheers,

Thank you!
Could be my bad. Not long for a timeout. If you think about it: the code expects the right event before this timeout ever happens. For example a default tcp connection keepalive timeout is 7200sec (2hours) in the linux tcp stack. I believe time(NULL) returns a seconds based timestamp ("Epoch time") since 1-1-1970 (M-D-YYYY), but I know this from the unix world. I'm not really sure how much MSDOS is POSIX compliant and counts from 1970, but I think they use something like 1900. Other functions like 'send_byte' and 'get_byte use' use less 1-2 (sec?) timeout. Why I truly believe it's seconds is that there is this short pause after starting the utility and it printing the error, then exiting with 1.