Jump to content
IGNORED

Start up Extended BASIC from an assembly program


senior_falcon

Recommended Posts

I would like to have an assembly program force Extended BASIC to start up without having to quit, press a key, and press 2 for XB. (In this application it is important to look for DSK1.LOAD.) Does anyone know how to do this?

 

I don't really know, but you might be able to GPLLNK to the routine that picking XB from the startup menu executes.

 

...lee

Link to comment
Share on other sites

I would like to have an assembly program force Extended BASIC to start up without having to quit, press a key, and press 2 for XB. (In this application it is important to look for DSK1.LOAD.) Does anyone know how to do this?

RXB is the only XB that allows you to bypass normal start up. With autostart of XB, but everyone claimed they hated this feature.

 

RXB would autostart and did not show other carts was a problem, so I could have fixed this with a simple keypress.

 

You can not have your cake and eat it too. I was forced to remove exactly what you request.

 

If you change 2 bytes in any module it will autostart that cart.

       GROM >6000
       AORG 0
       DATA >AA0F      * VALID GROM / VERSION
       DATA >0100      * (FUTURE EXPANSION)
       DATA >6372      * POWERUP -----------------CHANGE TO 6372 WILL AUTOSTART XB OR RXB
       DATA XBCART     * PROGRAMS
       DATA >0000      * DSR 
       DATA LINK1      * CALL
       DATA >0000      * INTERUPT
       DATA >0000      * BASIC CALL
Edited by RXB
Link to comment
Share on other sites

I think you misunderstand my request. When an assembly language program ends you can go to the master title screen easily with BLWP @>0000. But I want to bypass the master title screen and go directly from assembly into XB startup. Don't want to change the module or use RXB. The magic bullet would be something like BLWP @STARTXB but I doubt it is quite that simple

Link to comment
Share on other sites

I would like to have an assembly program force Extended BASIC to start up without having to quit, press a key, and press 2 for XB. (In this application it is important to look for DSK1.LOAD.) Does anyone know how to do this?

 

It's been a while but what I think you need to do is reset the grom read address to the XB cartridge startup address (0x6372 IIRC), set VDP for XB environment, ensure 0x8370 is pointing to the proper VDP address, clear the status register at 0x837c, and set GPLWS R13-R15 to the right addresses for a cartridge startup. GPLWS R13 is usually set to 9800 unless your XB cartridge is at a different base. Load your workspace pointer to GPLWS and branch into the interpreter at 0x006a. I -think- that gets you there, and lets XB find DSK1.LOAD.

 

If you need to replace DSK1.LOAD, you could steal the interrupt-driven method from MENU or BOOT.

Link to comment
Share on other sites

I think you misunderstand my request. When an assembly language program ends you can go to the master title screen easily with BLWP @>0000. But I want to bypass the master title screen and go directly from assembly into XB startup. Don't want to change the module or use RXB. The magic bullet would be something like BLWP @STARTXB but I doubt it is quite that simple

Do just like I said to XB or RXB and watch what happends after you do BLWP @>0000

 

It will instantly in XB or RXB go to DSK1.LOAD, but unlike XB you have the option in RXB to press a single key to change DSK#.LOAD to that key say like 9 and do DSK9.LOAD

 

This does EXACTLY what you wanted.

 

I even made a Video to show you it works exactly as I told you it would work:

 

 

Ok I forgot to show using Classic99 OPTIONS to change GROM 3 (>6000) but everything else in video is accurate.

Edited by RXB
Link to comment
Share on other sites

 

It's been a while but what I think you need to do is reset the grom read address to the XB cartridge startup address (0x6372 IIRC), set VDP for XB environment, ensure 0x8370 is pointing to the proper VDP address, clear the status register at 0x837c, and set GPLWS R13-R15 to the right addresses for a cartridge startup. GPLWS R13 is usually set to 9800 unless your XB cartridge is at a different base. Load your workspace pointer to GPLWS and branch into the interpreter at 0x006a. I -think- that gets you there, and lets XB find DSK1.LOAD.

 

If you need to replace DSK1.LOAD, you could steal the interrupt-driven method from MENU or BOOT.

I've been looking at the MG Explorer manual and Intern and that looks right to me. I will test it out tonight. What is this about the XB cartridge being at a different base?

 

(edit) Did a quick test:

LWPI >83E0, then write >6372 to the GRMWA at >9C02, then B @>006A and XB starts right up. I need to test whether other changes to the scratchpad are needed, but I think they won't be.

Edited by senior_falcon
Link to comment
Share on other sites

I've been looking at the MG Explorer manual and Intern and that looks right to me. I will test it out tonight. What is this about the XB cartridge being at a different base?

 

(edit) Did a quick test:

LWPI >83E0, then write >6372 to the GRMWA at >9C02, then B @>006A and XB starts right up. I need to test whether other changes to the scratchpad are needed, but I think they won't be.

GROM can reside in other bases when used with a device such as the HSGPL. I think Tony's (Gazoo) XB2.7 cartridge may start XB from base 9808. I only mention this because it can be a source of frustration. I don't recall any other gotchas besides the VDP environment and scratchpad. And of course, a hardcoded value like 6372 always runs the risk of being incompatible down the road, though it has worked well enough for me over the years. ;)

Link to comment
Share on other sites

GROM can reside in other bases when used with a device such as the HSGPL. I think Tony's (Gazoo) XB2.7 cartridge may start XB from base 9808. I only mention this because it can be a source of frustration. I don't recall any other gotchas besides the VDP environment and scratchpad. And of course, a hardcoded value like 6372 always runs the risk of being incompatible down the road, though it has worked well enough for me over the years. ;)

True RXB has so many other device and module adaptations that this address is problematic for me over the years.

Link to comment
Share on other sites

Nope. A major rewrite of the compiler to make it way easier to use, especially for new users. All the file names are filled in for you and you just have to press enter a bunch of times to get the finished product.

 

My question above is because I want the assembler to return to XB and not the title screen. This avoids a couple of keystrokes.

  • Like 3
Link to comment
Share on other sites

Using the SAMS would make it a piece of cake.

 

1. In assembly save to SAMS all memory including VDP 16K, Scratch Pad 256 bytes, Upper 24K = 40K+256 bytes + the program that does this.

2. After done restore all memory to original and increment XB program counter 1 line or to a specific line number.

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