After I repaired my IBM 5150 PSU and fixed RAM problems, to proceed I needed a keyboard, and the keyboards I had all were PS/2 and those do not work with IBM 5150.
I had Arduino nano laying around and thought that I could make some crude adapter for PS/2 and XT. And even googling I have found that someone already made one.
Quickly wired up some cheap PS/2 keyboard I had previously used for other projects. But the adapter was not working. Checking with the scope I found that signals are sent ok, but the computer was hanging with continuous beeps.
I found the guy who experienced similar problems and fixed it by changing delay(10) to delay(999) but even that did not help me.
How I fixed that was I moved this code:
if (digitalRead(xt_clk) == LOW) // power-on self test
{
delay(10) ;
_write(0xAA) ;
}
To the start of the loop, and made it execute a maximum of three times:
if (success_sent < 3)
{
if (digitalRead(xt_clk) == LOW) // power-on self test
{
delay(10) ;
_write(0xAA) ;
success_sent++;
}
}
It seems it was executing too many times during the POST and that was hanging the PC. Now it booted ok.
Anyway, this is a temporary solution for this PC until I get a proper XT compatible keyboard, but it works and I can proceed with setup.
Update.
Ahh, but there is a problem with Soft reset – Arduino still working and thinks that 0xaa is sent and not sending it anymore 🙂
Leave a Reply