Fantastic job. I know how difficult creating a 100% GW-BASIC compatible emulator can be. I myself have written an MS-BASIC compatible interpreter (not a full blown emulator) and it was very challenging. Perhaps we can exchange notes sometime.
Best,
Steve
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi Steve, thanks! Is your interpreter available online somewhere?
One of the main challenges I've found is the sheer amount of undocumented behaviour - the Microsoft documentation only approximately describes what GW-BASIC actually does and some parts of the syntax are entirely missing from it (such as the STEP clause in most graphical statements and the addition of a USING clause to a regular PRINT statement). A large part of the project consisted of exploring and documenting GW-BASIC itself and I'm still wondering if I haven't overlooked something big. Also many of my early assumptions that affected the emulator's design turned out to be incorrect so that the code has become rather messy.
Rob
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Yes, I agree there is a lot of undocumented specifics that can be hair-pulling. I found PRINT USING in particular to be quite complex, needing a lot of code. I've attached a sample program I used to test it. If you have particular questions on anything, I'm happy to assist with what I know.
Hi Rob,
Fantastic job. I know how difficult creating a 100% GW-BASIC compatible emulator can be. I myself have written an MS-BASIC compatible interpreter (not a full blown emulator) and it was very challenging. Perhaps we can exchange notes sometime.
Best,
Steve
Hi Steve, thanks! Is your interpreter available online somewhere?
One of the main challenges I've found is the sheer amount of undocumented behaviour - the Microsoft documentation only approximately describes what GW-BASIC actually does and some parts of the syntax are entirely missing from it (such as the
STEP
clause in most graphical statements and the addition of aUSING
clause to a regularPRINT
statement). A large part of the project consisted of exploring and documenting GW-BASIC itself and I'm still wondering if I haven't overlooked something big. Also many of my early assumptions that affected the emulator's design turned out to be incorrect so that the code has become rather messy.Rob
Here is a link Rob: https://1drv.ms/u/s!AlFL00e18CI8ggr4mqvZr3Pp2_Oq
Yes, I agree there is a lot of undocumented specifics that can be hair-pulling. I found PRINT USING in particular to be quite complex, needing a lot of code. I've attached a sample program I used to test it. If you have particular questions on anything, I'm happy to assist with what I know.
Steve