diff --git a/src/ibm.h b/src/ibm.h index 733d18e..b56a22c 100644 --- a/src/ibm.h +++ b/src/ibm.h @@ -478,3 +478,5 @@ extern int infocus; void onesec(); +void resetpc_cad(); + diff --git a/src/pc.c b/src/pc.c index 8474798..8f83040 100644 --- a/src/pc.c +++ b/src/pc.c @@ -277,6 +277,16 @@ void resetpc() shadowbios=0; } +void resetpc_cad() +{ + keyboard_send(29); /* Ctrl key pressed */ + keyboard_send(56); /* Alt key pressed */ + keyboard_send(83); /* Delete key pressed */ + keyboard_send(157); /* Ctrl key released */ + keyboard_send(184); /* Alt key released */ + keyboard_send(211); /* Delete key released */ +} + void resetpchard() { device_close_all(); diff --git a/src/pc.rc b/src/pc.rc index 5bbd0da..8f98830 100644 --- a/src/pc.rc +++ b/src/pc.rc @@ -6,6 +6,7 @@ BEGIN POPUP "&File" BEGIN MENUITEM "&Hard Reset", IDM_FILE_HRESET + MENUITEM "&Ctrl+Alt+Del", IDM_FILE_RESET_CAD MENUITEM "E&xit", IDM_FILE_EXIT END POPUP "&Disc" diff --git a/src/resources.h b/src/resources.h index 2071201..db48aef 100644 --- a/src/resources.h +++ b/src/resources.h @@ -1,6 +1,7 @@ #define IDM_FILE_RESET 40000 #define IDM_FILE_HRESET 40001 #define IDM_FILE_EXIT 40002 +#define IDM_FILE_RESET_CAD 40003 #define IDM_DISC_A 40010 #define IDM_DISC_B 40011 #define IDM_EJECT_A 40012 diff --git a/src/win.c b/src/win.c index b3961a3..b3a83e5 100644 --- a/src/win.c +++ b/src/win.c @@ -763,6 +763,12 @@ LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM resetpchard(); pause=0; break; + case IDM_FILE_RESET_CAD: + pause=1; + Sleep(100); + resetpc_cad(); + pause=0; + break; case IDM_FILE_EXIT: PostQuitMessage (0); /* send a WM_QUIT to the message queue */ break;