youxia Posted February 14 Share Posted February 14 (edited) 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 February 14 by youxia Quote Link to comment Share on other sites More sharing options...
Krebizfan Posted February 14 Share Posted February 14 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. 1 1 Quote Link to comment Share on other sites More sharing options...
mr_me Posted February 14 Share Posted February 14 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? 1 Quote Link to comment Share on other sites More sharing options...
youxia Posted February 15 Author Share Posted February 15 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. Quote Link to comment Share on other sites More sharing options...
mr_me Posted February 15 Share Posted February 15 Basica shouldn't work on any system lacking the ibm basic rom, so I'm not sure what that file is. I'd replace it with gw-basic. 1 Quote Link to comment Share on other sites More sharing options...
youxia Posted February 16 Author Share Posted February 16 (edited) 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 February 16 by youxia Quote Link to comment Share on other sites More sharing options...
mr_me Posted February 16 Share Posted February 16 That can be simplified. If you're providing a collection of Basic programs, you don't have to have a copy of Basic and a bat for each program. Quote Link to comment Share on other sites More sharing options...
wierd_w Posted February 17 Share Posted February 17 (edited) 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 February 17 by wierd_w Quote Link to comment Share on other sites More sharing options...
youxia Posted February 17 Author Share Posted February 17 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. Quote Link to comment Share on other sites More sharing options...
wierd_w Posted February 17 Share Posted February 17 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. Quote Link to comment Share on other sites More sharing options...
youxia Posted February 17 Author Share Posted February 17 23 minutes ago, wierd_w said: The code it expects to hook 'just does not exist' inside clone PCs. But MiSTer's PCXT core is supposed to be using 5160 rom, and so does PCem? Quote Link to comment Share on other sites More sharing options...
wierd_w Posted February 17 Share Posted February 17 Mister's pc-xt is 'optionally' using the dumped 5150 rom. It uses a foss clone rom by default. Not sure about pcem. Quote Link to comment Share on other sites More sharing options...
youxia Posted February 17 Author Share Posted February 17 As per the wiki, they say MiSTer's using 5160 rom: Quote A valid ROM is created for the PCXT model (pcxt.rom) based on the original IBM 5160 ROM, requires the XTIDE BIOS at address EC00h to work with HD images. Could XTIDE be a problem here? Quote Link to comment Share on other sites More sharing options...
wierd_w Posted February 17 Share Posted February 17 (edited) 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 February 17 by wierd_w Quote Link to comment Share on other sites More sharing options...
The Usotsuki Posted February 17 Share Posted February 17 XTIDE may very well be the issue. My PS/2 has an XTCF, and if I use BASICA or GW-BASIC, it starts to forget how to access the disk drives. GW-BASIC 3.2, btw, is designed to be bug-compatible with BASICA 3.2. It's only like 99% there, according to the docs. 1 Quote Link to comment Share on other sites More sharing options...
Krebizfan Posted February 17 Share Posted February 17 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. Quote Link to comment Share on other sites More sharing options...
mr_me Posted February 17 Share Posted February 17 (edited) 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 February 17 by mr_me Quote Link to comment Share on other sites More sharing options...
The Usotsuki Posted February 17 Share Posted February 17 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). Quote Link to comment Share on other sites More sharing options...
youxia Posted February 18 Author Share Posted February 18 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? Quote Link to comment Share on other sites More sharing options...
mr_me Posted February 18 Share Posted February 18 (edited) 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 February 18 by mr_me Quote Link to comment Share on other sites More sharing options...
wierd_w Posted February 18 Share Posted February 18 The images I made should be within the echs allowed ranges. Anything bigger than 502mb is outside original chs spec for mfm drives. Quote Link to comment Share on other sites More sharing options...
youxia Posted February 21 Author Share Posted February 21 Ok, so on the MiSTer side, the main dev made an updated xtide rom with this change enabled, and I can confirm the games work fine when using it. More details here. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.