ackerman@porous.uvm.edu (Steve Ackerman) (03/22/90)
I need help in rebooting a PS/2 Model 55/sx reliably through software. Specifically, I'm trying to get Minix 1.5.5 to reboot when the user hits Cntrl-Alt-Del on PS/2s. Minix can run in either real or protected mode, so doing a "jmp ffff:0" is out. Minix uses the keyboard controller to reset the machine on PC/AT clones. I'd like to do the same thing on the PS/2 MCA machines. If I do: out_byte(0x64, 0xFE); Where 0x64 is the keyboard controller command port, and 0xFE is (according to my info) the command to pulse bit 0 (which is attached to system reset), it works fine on a Model 80. However, on the Model 55/sx, it works half the time. The other half, it hangs the machine. I've done everything I can think of. I've checked to make sure the Ouput Buffer Bit and Busy Bit are both 0, and either read port 0x60 if I find the former, or wait until not busy if I find the latter. However, I've never found the controller with either bit set to 1. Why does the model 55 hang? After leafing through some more documentation, I found out that on PS/2s, the System port A (0x92) can be used as an alternative reset mechanism. I have been able to reliably reboot the machine under DOS by first writting a 0 to bit 0, and then a 1 to bit 0. This appears to work all the time. However, if I try the same approach under Minix, I get an invalid opcode exception (somehere around f000:fff0). Is there some flag I'm not setting with this approach? Finally, I tried digging into BIOS. I did find an interesting looking port (0x680). For some reason, the BIOS outputs either a 0x0, or 0xDD to that port. I tried it, and found that it did reboot the machine (I believe it was 0xdd) under DOS. However, trying this under Minix also hung the machine. Since I have no idea what this port is or does, I haven't pursued this approach. If anyone has any clue, please tell me. I prefer email, so I won't miss anything. After 4 days with this problem, I will never, ever, take Contrl-Alt-Delete for granted again! Any and all help is greatly appreciated. Thanks. -- Steven Ackerman (ackerman@uvm.edu)