I am thinking of making a pure text IF game in MS DOS Qbasic, probably building upon Eamon Deluxe.
Dos Box is not suitable for screen-readers as I understand it outputs letters as graphics, not text.
So I was wondering if there is another way for people to run games written in simple MS DOS Qbasic - a pure text game - so that screen-readers can be applied?
Or would it be sufficient to output all text to a transcript file?
It is going to be a parser game so the player must also type commands.
Iām not sure, but my feeling is that creating an MS-DOS application will mean the result wonāt be accessible to screen readers. DosBox would the only viable way to run it, and like you say it draws all text onto a graphical window which screen readers are not able to decipher.
Have a look at whether FreeBASIC might be a viable alternative to QBasic, as it is able to create programs for a text console / terminal which should make it accessible to screen readers.
Try one of the modern BASICs that compile to a native Windows executable, thus bypassing the need for DOSBox. I think thereās quite a few of them. FreeBASIC has been mentioned. I use QB64 for writing quick and dirty utilities. Ask Jim MacBrayne (@OldTimer) what he uses.
EDIT: Digging back through my personal messages with Jim, it sounds like he uses QB64, so try one of his games with a screen reader to see if they work okay. His itch page is at https://older-timer.itch.io/
Thanks for input. I was hoping to avoid exe-files as Mac users cannot run it and the risk of false positives. However, if it is not too much hassle, I could have a webbased version for most players and an exe-file for visually impaired Windows users.
Oh, you didnāt mention the Mac. MS-DOS programs would be MS-DOS executables. I didnāt know the Mac could run these, presumably using something similar to DOSBox.
I havenāt looked at BASIC for a while, but I seem to recall that some BASICs do indeed allow you to compile to a web-compatible version, but Iāve got no idea how this works under the hoods. Or maybe Iām imagining it.
Ok, all those BASIC options seem to fit. All that is left is ājustā how much the original code must be tweaked to get it working. If SpiderBasic is good enough and the output can be read by screen readers then that should work on all platforms with a modern browser. I already have a working solution for those not visually impaired (Dos Box online using emularity) but I would prefer not to code two different versions, i.e. for those visually impaired and those who are not. I hope to look into it soon.
A brief update: FreeBasic seems great but it only produces standalone executables and the IF community seem to dislike this, not least because of the risk of false positives and other warnings from browsers and anti-virus. I was hoping for some web playable html-files. However, if porting is straight forward it could be considered later.
So far I like SpiderBasic a lot. However, building upon existing QBasic from the DOS age, it seems that almost every line needs to be modified, and some of the data types seem to have been changed or replaced. So a huge task to rewrite parts of Eamon Deluxe to have that as my IF engine.
I checked out QB64 which seems to be a lot closer to the old dialect but it also had changed data types, e.g. fixed string length wasnāt possible so again a huge task to rewrite much of the existing code. But it seems to have a web version ( qbjs.org ) - but so far this is the most promising it seems.
I converted the Dooriddleās games from TurboBASIC to QB64 without much issues. I did a test with QBJS but canāt for the life of me remember if there was any issues. The files are here: GitHub - heasm66/Dooriddle_QB64
Thanks, Interesting - TurboBASIC seems quite similar to C64 BASIC, which I am familar with and apparently fairly simple.
The program I hope to port has commands like:
DECLARE SUB EDX.Select.Adventure (c, a$)
This command is quite new to me, but I am still learning. I am not that familiar with either the MS DOS Qbasic nor QB64 dialect. I am mostly familiar with C64 Basic dialect
If I was more familiar with one of them, it would be easier to select which dialect to dive into. But I just have to get going and learn along the way. But the more I look at it, the easier it seems. I am not so overwhelmed as to begin with
EDIT:
The first error reports (erasing duplicates)
WARN : 100 : Missing or unsupported method: āGOTOā
WARN : 143 : Missing or unsupported method: āRUNā - ignoring line
WARN : 150 : Missing or unsupported method: āONā - ignoring line
WARN : 152 : Missing or unsupported method: āGOSUBā - ignoring line