X-Git-Url: https://git.subgeniuskitty.com/screensavers/.git/blobdiff_plain/d87b1e06771aeb63ff43f5a289b19563d9af0eb0..d107bd59821b2e293311b22a96120dca018793a9:/hacks/NEDsim/NEDsim.c diff --git a/hacks/NEDsim/NEDsim.c b/hacks/NEDsim/NEDsim.c index 73c72f9..6778c2d 100644 --- a/hacks/NEDsim/NEDsim.c +++ b/hacks/NEDsim/NEDsim.c @@ -1,24 +1,9 @@ /* (c) 2021 Aaron Taylor */ /* See LICENSE.txt file for copyright and license details. */ -// TODO: -// - Write a brief description of the machine being simulated. Only one thread, reduced RAM, no meaningful console when running as screensaver, etc. - -// CLI Flags: -// -path-to-aout-binary -// -path-to-font-file -// -speed - -// Ideas for sample programs to include: -// - Build list of integers on the stack (DUP, IM_1, ADD). -// - Calculate prime numbers, placing them on the stack. -// - Lights sliding back and forth, like PDP-11 front panel with some OSes. - #include "screenhack.h" #include "simulator.h" -/* Keep this source code C89 compliant per XScreensaver's instructions. */ - /* -------------------------------------------------------------------------- */ /* Data Structures */ /* -------------------------------------------------------------------------- */ @@ -74,25 +59,6 @@ struct color_scheme { text; }; -//static struct color_scheme color_list[] = { -// // TODO: Explain all this. -// // TODO: Add other color schemes, like purple PDP-11/70. -// // TODO: http://www.chdickman.com/pdp8/DECcolors/ -// { -// {63479,63479,63479}, // 092-XXXX-123 -// { 5140, 2056, 5654}, // 092-XXXX-152 -// {40092,11051,15677}, // 092-XXXX-139 -// {30326,13107,12850}, // 092-XXXX-154 -// {65535,13107,12850}, // homemade -// {30326,13107,12850}, // 092-XXXX-154 -// { 4112,12850,20046}, // 092-XXXX-145 -// {12336,29555,37008}, // 092-XXXX-151 -// {30326,24158, 6425}, // 092-XXXX-157 -// {63479,63479,63479}, // 092-XXXX-123 -// {63479,63479,63479} // 092-XXXX-123 -// } -//}; - static struct color_scheme color_list[] = { // TODO: Explain all this. // TODO: Add other color schemes, like purple PDP-11/70. @@ -715,8 +681,15 @@ NEDsim_init(Display * dpy, Window win) nedsim->delay = get_integer_resource(nedsim->dpy, "delay", "Integer"); nedsim->delay *= 1000; /* Turn milliseconds into microseconds. */ - // TODO: Read in the a.out file. This should be done in the simulator's init function call? - nedsim->nedstate = init_simulator(); + // Load the program file specified by the user or, if none is specified, + // randomly select one of the included programs. + char * input_file = get_string_resource(nedsim->dpy, "binary", "String"); + if (input_file == NULL) { + // TODO: Need to include some default programs and randomly select one to load into RAM. + nedsim->nedstate = init_simulator("./test.out"); + } else { + nedsim->nedstate = init_simulator(input_file); + } nedsim->gc = XCreateGC(nedsim->dpy, nedsim->win, GCForeground, &gcv); @@ -805,6 +778,7 @@ static const char * NEDsim_defaults[] = { static XrmOptionDescRec NEDsim_options[] = { { "-delay", ".delay", XrmoptionSepArg, 0 }, + { "-binary", ".binary", XrmoptionSepArg, 0 }, { 0, 0, 0, 0 } };