Talk:BANCStar

updating LIST
I was trying to update jloughry's LIST program to compile on a modern Unix. I got some distance but the DOS code layered in everywhere is too much of a headache, so I am going to try and target modern Windows instead. If all goes according to plan I can hopefully come up with a more platform-independent rewrite after I've got something working to test against. --GreyKnight (talk) 08:25, 16 June 2014 (UTC)


 * update: I've implemented a crude little shim to substitute for graph.h using modern Windows console API calls. The whole mess now at least compiles, although it seems to be segfaulting when I try to do anything with it....  See here. --GreyKnight (talk) 11:39, 16 June 2014 (UTC)

BANCNova
I gave up on prettying up LIST any further and just reimplemented stuff from scratch. BANCNova is a toolkit with an assembler and disassembler. It doesn't understand all operations yet (since some are unknown), so unknowns are disassembled using the "RAW" assembly statement. --GreyKnight (talk) 16:26, 3 July 2014 (UTC)

more archaeology
I did some more digging and added a bunch more instructions to the tables. BANCNova will support some kind of assembly syntax for these shortly.

I've also just discovered that the arithmetic instructions don't quite work the way we thought. I will update that once I've finished deciphering them. --GreyKnight (talk) 19:02, 3 July 2014 (UTC)
 * Updated the arithmetic section with my new research.
 * BANCNova should now support a bunch more commands, including up-to-date arithmetic operations. Missing things are tracked on BANCNova's github page, so I'll stop posting updates about it here. --GreyKnight (talk) 13:19, 6 July 2014 (UTC)

Other speculations and conclusions
Many of my own conclusions figured out from the provided PDF are different from what is written here. Some are: --Zzo38 (talk) 09:09, 30 October 2014 (UTC)
 * It seems that it isn't command 2999 which introduces a new page; rather a prompt instruction (1-2000) with the position given as a negative number, marks the end of a page. (Therefore, I don't know what "stop code" means at all.)
 * Color codes are PC color codes and not ANSI color codes. (This is why setting the high bit (of the background color) would make the text to blink.)
 * Command 3100 seems to mean, if the condition isn't true, it is an error and you have to rekey the input.
 * The substring operation seems to count the beginning from position 1, not 0.
 * Variable number 1547 seems to somehow be special, but I don't quite know what it means. (Could it be related to rekeying input after detecting an error? Could it be something having to do with refreshing the screen?)
 * Command 3101 is a "do ... until" loop.
 * Possibly the "Future date 360" and stuff have something to do with.
 * Data type 7 means a text string.
 * All of the data might be stored as text strings (and the length therefore means the length of the storage).
 * I am guessing address 8400 means to store the address of the instruction after the next instruction (or possibly, just the next instruction and the return will advance one more) into variables numbered 1908 and 1909. (However, the prompt file specifies nothing about these variables. Possibly the return address is actually stored in the name of the variable?)
 * The tens digit of the type always seems to be zero. Possibly for expansion of additional types even though only 1-8 is actually used?
 * I still cannot quite figure out command 8550 ("combination GOTO").
 * It may be possible that they did originally intend that the code could be written manually, but before it was released they decided not to do that (therefore, it remained undocumented) and instead provide a screen generator.

prompt types
(see https://github.com/jloughry/BANCStar/blob/2c668f607d6dec727a679953c8c1365ea4da4af9/LIST/src/L_SETUP.C#L263). Looks like prompt type > 10 contains color information. -- mroman