80 lines
2.3 KiB
Diff
80 lines
2.3 KiB
Diff
--- src/xmain.c 2012-12-22 07:53:19.000000000 +0000
|
|
+++ src/xmain.c 2022-09-07 22:11:24.405433694 +0100
|
|
@@ -57,6 +57,8 @@
|
|
mem+0xe000
|
|
};
|
|
|
|
+int is_fast_speed = 0;
|
|
+
|
|
unsigned long tstates=0,tsmax=62500;
|
|
|
|
int memattr[8]={0,1,1,1,1,1,1,1}; /* 8K RAM Banks */
|
|
@@ -252,13 +254,28 @@
|
|
tape_attach(tape_filename);
|
|
break;
|
|
|
|
+ case XK_F10:
|
|
+ if (is_fast_speed == 1) {
|
|
+ normal_speed();
|
|
+ is_fast_speed = 0;
|
|
+ } else {
|
|
+ fast_speed();
|
|
+ is_fast_speed = 1;
|
|
+ }
|
|
+ break;
|
|
+
|
|
case XK_F11:
|
|
- printf("Enter spool file:");
|
|
- scanf("%256s", spool_filename);
|
|
- spooler_open(spool_filename);
|
|
+ if (!spooler_active()) {
|
|
+ printf("Enter spool file:");
|
|
+ scanf("%256s", spool_filename);
|
|
+ spooler_open(spool_filename);
|
|
+ } else {
|
|
+ spooler_close();
|
|
+ }
|
|
break;
|
|
|
|
case XK_F12:
|
|
+ spooler_close();
|
|
reset_ace = 1; /* will cause a reset */
|
|
memset(mem+8192, 0xff, 57344);
|
|
refresh_screen = 1;
|
|
@@ -270,13 +287,14 @@
|
|
void
|
|
main(int argc, char **argv)
|
|
{
|
|
- printf("xace: Jupiter ACE emulator v%s (by Edward Patel)\n", XACE_VERSION);
|
|
+ printf("xace: Jupiter ACE emulator v%s (by Edward Patel, with Slackware mods)\n", XACE_VERSION);
|
|
printf("Keys:\n");
|
|
printf("\tF1 - Delete Line\n");
|
|
printf("\tF3 - Attach a tape image\n");
|
|
printf("\tF4 - Inverse Video\n");
|
|
printf("\tF9 - Graphics\n");
|
|
- printf("\tF11 - Spool from a file\n");
|
|
+ printf("\tF10 - Toggle Normal/Fast Speed\n");
|
|
+ printf("\tF11 - Start/Stop Spool from a file\n");
|
|
printf("\tF12 - Reset\n");
|
|
printf("\tEsc - Break\n");
|
|
printf("\tCtrl-Q - Quit xAce\n");
|
|
@@ -568,16 +586,16 @@
|
|
XAutoRepeatOn(display),XFlush(display);
|
|
break;
|
|
case KeyPress:
|
|
- if (!spooler_active()) {
|
|
kev = (XKeyEvent *)&xev;
|
|
XLookupString(kev, key_buf, 20, &ks, NULL);
|
|
+ if (!spooler_active() || ks == XK_F10 || ks == XK_F11 || ks == XK_F12 ) {
|
|
keyboard_keypress(ks, kev->state);
|
|
}
|
|
break;
|
|
case KeyRelease:
|
|
- if (!spooler_active()) {
|
|
kev = (XKeyEvent *)&xev;
|
|
XLookupString(kev, key_buf, 20, &ks, NULL);
|
|
+ if (!spooler_active() || ks == XK_F10 || ks == XK_F11 || ks == XK_F12 ) {
|
|
keyboard_keyrelease(ks, kev->state);
|
|
}
|
|
break;
|