Jump to content
IGNORED

PC Basic Programs where to find.


bradhig1

Recommended Posts

Some laptops have multiple functions on each key and that you'd use Fn to access the additional mode, though I can't say for sure without you telling the model or showing a picture of your keyboard. In that case you might have to use Ctrl + Fn + [other key] to achieve the Break function, if not Ctrl+C does it.

Link to comment
Share on other sites

Here is another one with problems. Boolean Brain requires you to solve logic puzzles while walking around in a computer.  Problem is when it displays the logic gates screen it is all green and the number keys don't respond.   It is in Home computer magazine v 4.03 originally for the PCjr with corrections in v 5.2 to make it work on a normal pc.

BOOLEAN2.BAS

Link to comment
Share on other sites

Dosbox does Jr emulation too.  IIRC, you can also define cartridge roms. Let me check.

 

Yup.

https://www.dosbox.com/wiki/Configuration:DOSBox

Quote

PCjr: Refers not to a graphics mode but an entire system developed by IBM, and the company's first attempt at a home computer. Its graphics modes are identical to that of the Tandy, but it is not 100% compatible with any other IBM computer. Allows the user to boot cartridge files specifically designed for this system (.jrc).

 

Link to comment
Share on other sites

8 hours ago, wierd_w said:

Dosbox does Jr emulation too.  IIRC, you can also define cartridge roms. Let me check.

 

Yup.

https://www.dosbox.com/wiki/Configuration:DOSBox

 

The problem with cartridge BASIC is that it depends on the ROM-embedded BASIC for the core functionality, and I don't think DOSBox gives you the original BASIC ROM (pesky copyright issues).  So I'd be surprised if the cartridge or BASIC[A].COM even work on DOSBox.

 

One suggestion on the DOSBox forum, though, is to use QBASIC, and if it needs SCREEN 5, use SCREEN 7 instead.

Link to comment
Share on other sites

On 9/23/2019 at 1:28 PM, wierd_w said:

You can totally dump the rom basic on a real jr. It shows up as a normal option rom. The same cart dumper used to grab the cart Roma can grab it too, because the cartridge space and the system bios memory areas overlap. You can completely replace the Jr bios with a cartridge in the slot. :)

Does DOSBox support jamming a true ROM into that space?  That would be awesome if it did.  You'd need to dump F600:0 to A000 to get the cassette BASIC, then replace that section of memory in DOSBox.

1 hour ago, bradhig1 said:

I  have the roms but I don't wanna run it in mame roms directory which is huge.  Is there a way to run mess separate from mame? 

The link I posted just says to run MESS by itself and not worry about the MAME front end.  As far as the ROMs directory, I would guess that you only need what's necessary to start the PCJr, so the main system ROM and the cartridge.

 

Link to comment
Share on other sites

4 hours ago, ChildOfCv said:

Does DOSBox support jamming a true ROM into that space?  That would be awesome if it did.  You'd need to dump F600:0 to A000 to get the cassette BASIC, then replace that section of memory in DOSBox.

The link I posted just says to run MESS by itself and not worry about the MAME front end.  As far as the ROMs directory, I would guess that you only need what's necessary to start the PCJr, so the main system ROM and the cartridge.

 

See Brutman's page about the dumper.

 

https://www.brutman.com/PCjr/pcjr_cart_dumping.html

 

This site claims to already have a dump of the system bios.

http://retrograde.inf.ua/pcjr.htm

 

From the sounds of it, you need the system to run the bios, which scans the cart space for the signature bytes, and then sets the correct entry points for basica.

 

DosboxX, a "more advanced" version of dosbox, might do what you want. I have to head to work now, but can find out later.

 

Edit:

 

From this GIT commit from last year it appears booting a system bios is possible in dosboxX.

https://github.com/joncampbell123/dosbox-x/issues/774

 

Not sure how mature it is now though. Worth looking into.

 

 

Edited by wierd_w
Link to comment
Share on other sites

Dosbox-X has a config option to load a binary blob into the adapter rom area and execute it, at least according to its reference conf file.

https://github.com/joncampbell123/dosbox-x/blob/master/dosbox.reference.conf

 

 
Quote

 

call binary on boot: If set, this is the path of a binary blob to load into the ROM BIOS area and execute immediately before booting the DOS system.

# This can be used for x86 assembly language experiments and automated testing against the CPU emulation.

 

 

It has another option for a "Run once" to load another, DIFFERENT blob, that executes before the ROM bios.

Quote
call binary on reset: If set, this is the path of a binary blob to load into the ROM BIOS area and execute immediately after CPU reset.
# It will be executed before the BIOS POST routine, only ONCE. The binary blob is expected either to IRET or to

# jump directly to F000:FFF0 to return control to the BIOS.

 

A little assembler-fu to jump execution with a loaded adapter rom (containing the whole image, not just cart basic), and you are all set.

 

Link to comment
Share on other sites

1 hour ago, wierd_w said:

Dosbox-X has a config option to load a binary blob into the adapter rom area and execute it, at least according to its reference conf file.

https://github.com/joncampbell123/dosbox-x/blob/master/dosbox.reference.conf

 

 

 

It has another option for a "Run once" to load another, DIFFERENT blob, that executes before the ROM bios.

 

A little assembler-fu to jump execution with a loaded adapter rom (containing the whole image, not just cart basic), and you are all set.

 

That's a good start.  But actually, it might be better to not load the PCJr ROM, unless DOSBox also emulates PCJr's completely incompatible keyboard interface and keyboard too.  The interface goes through a special deserializer because it can use either wired or infrared keyboards.  And the keyboard itself uses different scan codes.  However, if you can insert just the BASIC image into ROM, and then add in the cartridge, then you should be able to start up PCJr BASIC from DOS.

 

GW-BASIC might possibly be another solution, though you need to make sure it uses the same SCREEN modes as the PCJr.

Link to comment
Share on other sites

2 hours ago, ChildOfCv said:

That's a good start.  But actually, it might be better to not load the PCJr ROM, unless DOSBox also emulates PCJr's completely incompatible keyboard interface and keyboard too.  The interface goes through a special deserializer because it can use either wired or infrared keyboards.  And the keyboard itself uses different scan codes.  However, if you can insert just the BASIC image into ROM, and then add in the cartridge, then you should be able to start up PCJr BASIC from DOS.

 

GW-BASIC might possibly be another solution, though you need to make sure it uses the same SCREEN modes as the PCJr.

The Tandy 1000 GW-BASIC (2.02 and 3.20) is specifically supposed to be compatible with PCjr BASIC.  Here's the 3.20 version: http://3.buric.co/gwbasic32tdy.zip

 

DOSBox seems not to work quite right in the Tandy modes with this gwbasic.exe regarding text input (except for 4, which is the same as 1 with different rules for how COLOR works).

Link to comment
Share on other sites

On 9/25/2019 at 4:44 AM, The Usotsuki said:

The Tandy 1000 GW-BASIC (2.02 and 3.20) is specifically supposed to be compatible with PCjr BASIC.  Here's the 3.20 version: http://3.buric.co/gwbasic32tdy.zip

 

DOSBox seems not to work quite right in the Tandy modes with this gwbasic.exe regarding text input (except for 4, which is the same as 1 with different rules for how COLOR works).

I just reedited Boolean Brain back to the original Pcjr version and the graphics modes don't work right like you said.  Sound doesn't work either.  Anyone have a real Pcjr to test this on? 

Link to comment
Share on other sites

On 9/24/2019 at 11:12 PM, bradhig1 said:

I have the system bios  Says it loads at e800.   I don't know how to load at certain memory addresses.

 

DOS debug is your pal.

 

https://montcs.bloomu.edu/Information/LowLevel/DOS-Debug.html

 

It can be used to start execution of a binary rom blob, if it is loaded inside your emulation at the right address.  It was frequently used on XT class machines to execute low-level format utilities baked into disk controllers.

 

Specifically, you want the G operator. (Assumes data is already in memory, starting at E800)

 

A:\debug.exe

G E800

 

(program data at E800 executes)

 

IF you have RAM mapped there instead of a ROM blob (Tell DOSBOX you want UMBs, which will fill the adapter rom area with ram), you can use debug to LOAD the blob there, THEN use G to execute it.

 

Quote

Name: N [pathname] [arglist]

This command can be used to load files into DEBUG's Memory after you have started the program, but it's main function is to create a new file under control of the Operating System which DEBUG can WRITE data to.

Normally, when you want to 'debug' a file, you'd start DEBUG with a command like this: C:\WINDOWS>debug test.com . But it's also possible to load a file into DEBUG's Memory from within DEBUG itself by using the 'N' command and then the 'L' command (with no parameters) like this:
-n c:\temp\test.com
-l
which will load the file test.com into DEBUG's Memory starting at location CS:0100 (you cannot specify any other location when using the L command like this!).

The 'N' command makes it quite easy to save data or an Assembly program created in DEBUG to a file on your hard drive!

 

Since this loads into conventional memory without your ability to say otherwise, and at a fixed address, you will have to use the MOVE command after the load to move the loaded data to the correct address.

 

Quote

Move: M range address

This command should really be called: COPY (not Move) as it actually copies all the bytes from within the specified range to a new address.

Examples:

1) -m 7c00 7cff 600

Copies all the bytes between Offset 7C00 and 7CFF (inclusive) to Offset 0600 and following...

 

Once the data is in the UMB RAM at the correct address, then you can

 

G E800

 

and off it goes.

 

  • Like 1
Link to comment
Share on other sites

12 hours ago, wierd_w said:

 

DOS debug is your pal.

 

https://montcs.bloomu.edu/Information/LowLevel/DOS-Debug.html

 

It can be used to start execution of a binary rom blob, if it is loaded inside your emulation at the right address.  It was frequently used on XT class machines to execute low-level format utilities baked into disk controllers.

 

Specifically, you want the G operator. (Assumes data is already in memory, starting at E800)

 

A:\debug.exe

G E800

 

(program data at E800 executes)

 

IF you have RAM mapped there instead of a ROM blob (Tell DOSBOX you want UMBs, which will fill the adapter rom area with ram), you can use debug to LOAD the blob there, THEN use G to execute it.

 

 

Since this loads into conventional memory without your ability to say otherwise, and at a fixed address, you will have to use the MOVE command after the load to move the loaded data to the correct address.

 

 

Once the data is in the UMB RAM at the correct address, then you can

 

G E800

 

and off it goes.

 

You still need ROM BASIC loaded at F600:0 also.  Both cartridge BASIC and disk BASIC(A) incorporate the cassette BASIC interpreter and add their own extensions using its hooks.  One thing you can say about IBM BASIC:  It's modular.

Link to comment
Share on other sites

22 minutes ago, bradhig1 said:

found several cartridge basic images and all keep generating the error message cartridge required.

Interesting.

 

Do you know which segment the cartridge BASIC is supposed to load into?  PCJr-aware DOS is supposed to look at the header of the cartridge and determine if any commands are supported directly by the cartridge instead of run from disk.

 

If you run debug.com (PC DOS disk 2), you should be able to see the header with the command:

 

D xxxx:0 L 80

 

where the xxxx are the BASIC cartridge address.

 

Starting at offset 6 should be a list of DOS commands.  One will be BASIC and the other will be BASICA.  Both will be followed by a 2-byte entry point that is supposed to start up DOS-aware PCJR cartridge BASIC.

 

I can look at it in more detail tonight.

Link to comment
Share on other sites

The cassette BASIC ROM expects cartridge ROM to be loaded at E800:0.

 

There's an undocumented extension to the boot command:

 

BOOT BASIC.JRC -e ?

 

Should print out the DOS commands that it implements.  However:

 

BOOT BASIC.JRC -e BASICA

 

just results in DOSBox bombing out.  So there's probably a reason that the extension is undocumented.  Out of curiosity, I downloaded the source code and plan to sniff through it to see if I can see where it goes wrong.

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...