-
Notifications
You must be signed in to change notification settings - Fork 5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
"SYS2090: Unable to load User Program" #4
Comments
Which .exe are you running when you see this error? Also, which version of Quick Basic are you using? Thanks. |
What I assumed was the command line BASIC compiler in the 'qbx' folder.
|
With regards to path names it might be more logical if (on Linux) you assumed that current working folder was actually 'C:' when launching 'ntvdm' as Linux has no concept of drive letters? |
When BC.EXE starts, it opens BC.EXE, allocates some RAM, and reads parts of BC.EXE into various locations. I suspect that the file open fails due to case differences in the path. NTVDM makes the DOS current directory the Linux current directory, but in the form C:\CURRENT\LINUX\FOLDER. I tried making C:\ be the current folder, but that makes apps that look for paths like "..\INCLUDE" fail. The best workaround I've found Different apps attempt to open files with all permutations of case in path and filenames. Some apps uppercase parts of paths Build an app like TP.BAS like this: ../ntvdm -u BC.EXE tp.bas tp.obj tp.lst /O |
You are right the current working folder wouldn't work but using the folder containing 'ntvdm' might. (Or just specify the root folder as a parameter). So (on Linux) if you had
This would appear to the DOS programs be
|
Ooh -- a command line argument makes sense! Also, I discovered when building ntvdm on RISC-V that I have to force g++ to use signed char via -fsigned-char -- without this there were failures executing some instructions. I'm not sure on Debian if the default is signed, but that may explain some odd behavior of NTVDM. |
I give that a try. In the mean time I thought I'd try just tidying up the help text and README to make them a bit more Linux like, and I've added a couple of options to display the version/build and to display the usage information using I've left the usage details (almost) unchanged on Windows
However, on Linux it looks a bit more Linux like (and perhaps a bit too terse) with the example commands modified to show how to use the escape characters to allow the use of the MSDOS backslash and a semi-colon. Windows specific option are omitted.
On both operating systems the version is shown along with a copyright and licence (I manged to get rid of the extra spaces in the date but it is very 'English' - you may which to change that! :-) )
If that looks OK to you I'll submit a pull request (if I can figure out how) when I've updated the README with a separate section for Linux users including how to get the META (Alt) key to work and some Linux specific examples... |
Very cool -- yes, please submit a PR as this looks great! |
Sorry @mike632t I was busy with my day job. Please resubmit the PR and I'll approve it tonight. |
No worries - I think I messed up any way! New PR submitted (which should include your latest changes) which should make merging (a bit) easier... |
Is the original issue now resolved? I'm guessing it is. If not, please reactivate this item. Thanks! |
@mike632t I've added a /r argument that takes a folder that gets mapped to C:\ That should make it easier to run apps on Linux without creating a new top-level folder that's all uppercase. |
That's awesome. I can't wait to try it out! |
Quick BASIC is one of the compiler you managed to test, but when running on Linux what is the incantation needed to avoid the 'SYS2090: Unable to load User Program' error.
This copy of an old Microsoft KB article Q42591 seems to describe the same problem.
You have already far exceeded my expectations!
The text was updated successfully, but these errors were encountered: