diff options
Diffstat (limited to 'patches/cbmbasic')
-rw-r--r-- | patches/cbmbasic/generic/add_iobase | 45 | ||||
-rw-r--r-- | patches/cbmbasic/generic/series | 1 |
2 files changed, 46 insertions, 0 deletions
diff --git a/patches/cbmbasic/generic/add_iobase b/patches/cbmbasic/generic/add_iobase new file mode 100644 index 000000000..a1e1d4b45 --- /dev/null +++ b/patches/cbmbasic/generic/add_iobase @@ -0,0 +1,45 @@ +Add IOBASE and pseudo-timer (will give RND-functionality) + +Signed-off-by: Wolfram Sang <ninja@the-dreams.de> + +# Already sent mainline and accepted. + +Index: basic/runtime.c +=================================================================== +--- basic.orig/runtime.c 2008-11-17 05:16:31.000000000 +0100 ++++ basic/runtime.c 2008-11-17 05:43:31.000000000 +0100 +@@ -29,6 +29,7 @@ + #include <stdlib.h> + #include <stdio.h> + #include <string.h> ++#include <time.h> + + unsigned char RAM[65536]; + +@@ -155,6 +156,7 @@ + interactive = 1; + f = NULL; + } ++ srand(time(NULL)); + } + + static void +@@ -565,8 +567,16 @@ + /* IOBASE */ + static void + IOBASE() { +- printf("UNIMPL: IOBASE\n"); +- exit(1); ++ /* ++ * IOBASE is just used inside RND to get a timer value. ++ * So, let's fake this here, too. ++ */ ++ int pseudo_timer = rand(); ++ RAM[0xDC04] = pseudo_timer&0xff; ++ RAM[0xDC05] = pseudo_timer>>8; ++ ++ X = 0x00; ++ Y = 0xDC; + } + + int diff --git a/patches/cbmbasic/generic/series b/patches/cbmbasic/generic/series new file mode 100644 index 000000000..3ce433cb4 --- /dev/null +++ b/patches/cbmbasic/generic/series @@ -0,0 +1 @@ +add_iobase |