This is amazing! Having no knowledge of Basic, a.) what makes the rewrite "impossible"? b.) how do coding agents perform on the codebase? It might make for a neat benchmark similar to ARC
I gather the version of Basic is not Object-Oriented.
So the program most likely is flat: a bunch of global variables (and possibly memory addresses), and instructions ordered by line number, rather than functions or methods.
Apparently PowerBasic was the successor to Borland TurboBasic and complied to a native executable. So this wasn't an interpreted 'line number' Basic like our kiddie computers. It also probably had the Borland Windows GUI stuff.
(However it wouldn't surprise me if older 'line number' programs still mostly worked. iirc VB6 also supported this.)
PowerBasic does have functions. Go there is thousands of goto and gosub which would need to be unraveled which there isn't really a 1:1 for gosub at least in say C++. Or EXIT IF... The bane of my existence...
a) At the time it was impossible for me. I think I could actually do it now. But now that I can read the BASIC... what would be the point? If I wanted it cross platform, I will build a virtual machine.
b) Claude Code has performed exceptionally well. I haven't tried the most recent Codex update. But I don't see the point in spending thousands of dollars on tokens to rewrite it when it works perfectly fine. It would be much cheaper to have Claude Agent build the virtual machine. That's just my opinion. If it ain't broke don't fix it I guess. I do want to bring it to mobile though, whether that's a phone app or responsive website.
Can the original code simulate the stock market as it operates today? The main reason I would want to convert the engine to a modern language is to make it easy enough to understand that I could add features.
thomassmith65|17 days ago
So the program most likely is flat: a bunch of global variables (and possibly memory addresses), and instructions ordered by line number, rather than functions or methods.
benstopics|17 days ago
No line numbers except for goto labels, but gosub is the challenge for transpilation.
flomo|17 days ago
(However it wouldn't surprise me if older 'line number' programs still mostly worked. iirc VB6 also supported this.)
lelanthran|17 days ago
No real functions, only `gosub` and `goto` so everything is a global variable.
I think even assembler for x86 is easier to unravel.
benstopics|17 days ago
benstopics|17 days ago
thomassmith65|17 days ago