Jump to content
IGNORED

Problem with running BASICA games on PC/XT


youxia

Recommended Posts

When putting together my PIBY collection  I stumbled on a problem with BASICA games. They don't seem to work on MiSTer's PC/XT core - displaying "Direct satement in file" errors. Also, when I try them in PCem's XT instance I get  IO/disk related errors.  The strange thing is that these games work fine on MiSTer's ao486 core and in other PCem setups (486, Pentium). Also, substituting BASICA.COM file with GWBASIC.EXE is said to be working.

 

More details in this thread. I suppose the problem is universal for all BASICA games, here are some of the examples I've tried: B1 Nuclear Bomber, Baseball, Big 8 Football, Black1, 15 Puzzle, Acey Deucey.

Was wondering if anybody has some ideas as to why this might be happening, and perhaps could try these games on their PC/XT setups to confirm whether there really is a problem, or if it's something on my side (eg I've only tried from MSDOS 6.22 based images). Bonus points for trying on real hardware. 

(I attach the examples here, don't think these old Basic games should cause any bother)

BASICA.rar

Edited by youxia
Link to comment
Share on other sites

The address of the error in the other thread is xFC000 which should be in the middle of the IBM ROM BASIC. Does the set of ROMs include a copy of ROM Cassette BASIC? Standard BASICA needs ROM Cassette BASIC to work. 

 

Otherwise, I would suspect a timing loop since the version of BASICA packaged with B1 expects a 4.77 MHz processor. Trying the AT (PC-DOS 3) or PS/2 (PC-DOS 3.3) versions of BASICA might yield better results with a faster processor. 

  • Like 1
  • Thanks 1
Link to comment
Share on other sites

15 hours ago, Krebizfan said:

Does the set of ROMs include a copy of ROM Cassette BASIC? Standard BASICA needs ROM Cassette BASIC to work. 

I'm not sure. This core comes with a couple of pre-built roms (pcxt31 and pcxt_micro8088) and the original ibm5160 rom is available if you use a script to build it. Regarding speed, I did try at 4.77 and the errors are still there.

 

10 hours ago, mr_me said:

That version of Basica runs fine without the IBM Basic ROM.  Is it some sort of hacked version?  It shows as version A2.10 1983-20-10.  Maybe the bug only happens when the IBM basic rom is present.  Have you tried the Mister PCXT core with a non ibm bios/rom?

Yes, I actually first tried it with thenon-original default roms mentioned above, and was hoping the ibm one would solve the problem. But it's all the same across all these roms. The games come from Total Dos Collection, which is quite well researched, but there's no guarantee they have perfect versions. Still, since it happens in so many differnet games I suppose it's not a case of  having a bad version.

 

I'd still appreciate if somebody could just try to run these games on their setup, just to reproduce (or refute) the bug's existence. I'm worried it might be down to something wrong in my method/setup.

Link to comment
Share on other sites

Swapping for gw-basic is a solution, but I'd like to keep the original files in the collection. Also, there is a lot of these BASICA titles (~270) so it'd be quite a task.

 

I'm now trying to use BASICA from PC DOS 2-3.0, to see if the games will work with that, but also struggling to get it going.

Edited by youxia
Link to comment
Share on other sites

while ethically dubious, it would be possible to extract that section of ROM code from the IBM pc rom, inject/load it into a safe segment of DOS memory (with debug), then use a patched version of basica with the entry vector changed.

 

The actual romcode might need patching as well though, if it wasnt written portably and hard references segments/offsets in its routine libraries.

 

A truly clever loader would have an unmodified dump of the ibm rom, and an assembler routine that scans the UMA for a free UMB of sufficient size, notes the offset difference from the 'expected' one, then patches both a copy of basica.com and the romcode in memory before jumping execution.

 

This would keep all on-disk files intact and unmodified, and still permit the use of 'real basica' on arbitrary dos machines.

 

Edited by wierd_w
Link to comment
Share on other sites

Solutions regarding usage of these programs in my collection are of secondary importance. I might try to do something about it later, like dedicated BASICA directory, but for now I just wrote about it in the readme.

 

What bugs me more is why I can't actually run these games on a fairly accurate interpretation of the machine they were meant for.  I've just tried to run BASICA.COM from a bunch of different games and it's usually the version A2.10 (which breaks the XT disk access) or GW-BASIC from 1985 (this works fine). That could indicate that perhaps pirates have swapped the files later to make the games work on non-IBM machines?

 

I still wish somebody could actually try it out themselves, and also point me to a BASICA version which is 100% working on PCem or MiSTer. I've tried a few PC-DOS et al install disks and their BASICA.COMs just hanged on me.

Link to comment
Share on other sites

Again, basica is basically just a loader for IBM's rom cassette basic.

 

The code it expects to hook 'just does not exist' inside clone PCs.

 

The dubious idea above would take the ROM from a 5150, an unmodified basica from vintage DOS, debug from the installed DOS, and an assembler program that rips the cassette basic out of said rom, copies it and basica into ram, patches both in memory, then jumps execution.

 

It would be 'bug complete', since it's legit ibm cassette rom basic, but would be legally dubious.

Link to comment
Share on other sites

But does it contain rom basic, AND at the correct address?

 

You might try building the core yourself, with a straight dump from a 5150.

 

https://www.pcjs.org/machines/pcx86/ibm/5150/rom/

 

https://www.pcjs.org/machines/pcx86/ibm/5160/rom/

 

(These are wrapped in some json bullshit, but do contain the roms in question. Some user fiddling would be required.)

Edited by wierd_w
Link to comment
Share on other sites

The BASICA in the files is not IBM BASICA. IBM BASICA in its 1983 incarnation was about 27K while the one in the files is 59K suggesting that it is either a relabeled GWBASIC or a hacked together version of IBM BASICA with the cassette BASIC ROM (the other 32K) embedded in the executable. I am not about to run a file of unknown provenance on real hardware especially since the games seem to work correctly with the BASICA or GWBASIC that shipped with the DOS versions I tried. 

 

Running an early version of BASICA on DOS 6.22 does seem a recipe to expose a lot of compatibility issues. 

Link to comment
Share on other sites

11 hours ago, youxia said:

Solutions regarding usage of these programs in my collection are of secondary importance. I might try to do something about it later, like dedicated BASICA directory, but for now I just wrote about it in the readme.

 

What bugs me more is why I can't actually run these games on a fairly accurate interpretation of the machine they were meant for.  I've just tried to run BASICA.COM from a bunch of different games and it's usually the version A2.10 (which breaks the XT disk access) or GW-BASIC from 1985 (this works fine). That could indicate that perhaps pirates have swapped the files later to make the games work on non-IBM machines?

 

I still wish somebody could actually try it out themselves, and also point me to a BASICA version which is 100% working on PCem or MiSTer. I've tried a few PC-DOS et al install disks and their BASICA.COMs just hanged on me.

Basica hanging would be the correct behaviour when the IBM basic roms aren't present, that's using the Basica that comes with ibm pc-dos.  If you were to include an official ibm Basica with these Basic programs it would be incompatible with all non IBM machines.  The user can still run the programs with gwbasic they provide.

 

Edit:

The next thing I'd try is installing PC-DOS 3.3.

 

Edited by mr_me
Link to comment
Share on other sites

Another thing to note: Just as Microsoft stated (and I mentioned in my last comment) that GW-BASIC 3.2 was meant to be bug-for-bug compatible with BASICA 3.2 (where older versions did have documented slight differences in behavior from BASICA 2.1), they also said that Compaq's version was closer to bug-for-bug than the normal one before that point (something I've confirmed).  You could try Compaq BASIC, or you could use GWBASIC 3.20 (MS-DOS 3.2/3.21), 3.22 (3.3) or 3.23 (4.x).

Link to comment
Share on other sites

Ok, so I've tried to run PCem XT instance with just floppy drives, no XTIDE. I got a PC-DOS 3.3 360kb disk form winworldpc.com and then transfered couple of the games onto blank 360kb images. The games now work, with DOS in a: and game image  in b:. When I apply XTIDE back on the same setup , using the same floppies (and no hdd image attached), I get disk errors again - so similar to what The Usotsuki says is happening on real hardware.

 

I also read on XTIDE's site that it's possible to enable:

Quote

 

Full operating mode [default=No for XT builds, not available for AT builds]
"Full operating mode" reserves a bit of Conventional memory for XTIDE Universal BIOS variables. Disabling this will reduce the maximum number of supported IDE controllers to 2 and place the variables in a memory area reserved for IBM ROM Basic (30:0h). You should always enable this option unless:

  • You don't need to use IBM ROM Basic or any BIOS or software (e.g. Turbo BASIC, BASICA) that requires that memory area.
  • You have a Tandy 1000 with 640k or less RAM (see "kiB to steal from RAM" for a way around this problem).
  • You really need the 1 kiB of Conventional memory that "Full operating mode" requires.

 

 

This sounds like confirmation of the problem being related to XTIDE itself

 

I've tried to replicate this on MiSTer, but it's not easy, seeing as two of the main bios .roms have XTIDE baked in, and the 5160 dedicated one doesn't play nice with floppies. I will ask around, maybe a direct solution is possible.

 

In any case, it's good to know that there is an answer to this problem, it's been bugging me for some time. Thanks for your replies here.

 

Side note: when I tried to run my hdd vhds in PCem XT  using alternative IDE option - MFM (I did not try SCSI) - it doesn't recognise my images which are usually >250MB, DOS 6.22 based. Is it because of the big size / OS used, or is it some completely different format?

Link to comment
Share on other sites

So the solution is to turn on full operating mode in xtide at the cost of 1kB.

 

I would think a vhd is specific to drive types.  You should be able to image an IDE drive and write it to an MFM or SCSI drive.  An MFM controller will still have limitations with heads, cylinders, sectors.

Edited by mr_me
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...