Jump to content
senior_falcon

Extended BASIC G.E.M.

Recommended Posts

I don't want to assume anything so I just have to ask this: Will the compiler work with T40XB?

Share this post


Link to post
Share on other sites

I have a similar question. Will the compiler work with T80XB?

 

I‘m still working on my Mega Menu program. For this I‘m using XB and compile it with the XB compiler and the option for large programs, so most of the lower RAM is used by the compiler library I think.

 

 

Share this post


Link to post
Share on other sites

No. The compiler will work with XB256 but at present it is not compatible with The Missing Link, T40XB or T80XB. In the future I hope to be able to make it compatible with not just these, but most assembly support programs. I hope to have XB 2.8 G.E.M. finished in a week or so and then will take a long vacation from this stuff. Maybe in the winter I will look into combining assembly with the compiler.

  • Like 7

Share this post


Link to post
Share on other sites

senior_falcon - I have been out of the TI dev space for a while.

But I have been watching XB G.E.M. refinement and have been a little bit inspired.

I have 2 or 3 projects started that I feel are worth spending the time to finish.

I figure when 2.8 is ready, I should be as well.

 

The future support of Missing Link etc. sounds amazing also!

 

I just want to Thank you for your efforts!  The Compiler and Classic99 have changed everything for me in the TI world!  So a quick Thank you to Tursi as well!

 

  • Like 4

Share this post


Link to post
Share on other sites

As noted in an earlier post, XB 2.8 G.E.M. lets you customize XB so it looks the way you want. CALL LOAD(-2,COLOR,FONT) does the trick. If you add 128 to the font number it tells GEM to invert the DSK1.LOAD routine. Normally when you hold a key down it suppresses DSK1.LOAD.  If you add 128, you have to hold a key down for a few seconds to make DSK1.LOAD happen.

Also, if you set the second bit by adding 64, GEM should return to Force Command. I'm not positive this will work because I get no feedback from those who care about this feature, but in any case I see nothing else that can be done, and if it doesn't work at least nothing else will be broken.

Edited by senior_falcon

Share this post


Link to post
Share on other sites

JediMatt reminded me that using CALL LOAD(-2,COLOR,FONT) uses the vector for "Load Interrupt", which is at >FFFC to >FFFF.

What will this interfere with that people care about?

I could move these two bytes to -6 but would prefer not to because it means doing some rework of the compiler.

  • Like 1

Share this post


Link to post
Share on other sites

Working on the docs now. 

Let me restate my earlier question in a different form:

Does anyone use hardware along with XB that utilizes  the "Load interrupt" hook at >FFFC?

Speak now or forever hold your peace.

  • Like 2

Share this post


Link to post
Share on other sites
7 hours ago, senior_falcon said:

Working on the docs now. 

Let me restate my earlier question in a different form:

Does anyone use hardware along with XB that utilizes  the "Load interrupt" hook at >FFFC?

Speak now or forever hold your peace.

They can always use a classic XB :) The idea of new software being compatible with 100% of all things written on top of a different program is an irrational expectation, even if you've come extremely close! 

 

People don't print all that often anymore... the types of programs I recall were screen dump tools.

 

It is my intention to eventually have an Load Interrupt triggered menu, but I don't actually use XB... so I'm holding my peace.

  • Like 2

Share this post


Link to post
Share on other sites

Docs for XB 2.8 G.E.M. are pretty much done. Now the docs for XB256, TML, TMLGA, T80 and T40 must be revised to reflect the changes. Hoping to be done by the end of August.

Edited by senior_falcon
  • Like 5

Share this post


Link to post
Share on other sites

Great to hear.  I have been digging into some old work.  Wow, Amazingly bad flow.  LOL

When I feel creative, I just start and go.  No planning...  Ah, let me add that!  Gosub xx.  oh yeah, need this to... And soon, I nice plate of spaghetti ;)

 

Time to break it apart and make a game loop.

  • Like 1

Share this post


Link to post
Share on other sites

XB28GEM.zipAt long, long, last XB 2.8 G.E.M. is ready to be released.  There are some instructions for setting it up in the README file. Once you have it up and running, try this:

CALL LOAD(-2,78,145)    This will set the colors to dark blue on gray, and use font 18, with XB autoload inverted. That is, if your finger is off the key autoload will not happen. You have to hold a key down to RUN "DSK1.LOAD"

You can quit or bye and the colors will still be there when you select any of the XB choices from 2 to 8.

Also, take a look at CALL HELP 

I imagine there will be some rough edges that need to be polished.

Enjoy!

 

XB28GEM.zip

 

 

(edit) I predicted some rough edges. The first is that the file XB27GEM_8.BIN should be renamed XB28GEM_8.BIN

I have uploaded XB28GEM with this change.

(edit 9/3) revised version of XB28GEM with two bug fixes and revised README and XB28GEM files. CALL VERSION(X) now returns 2.820200903

(EDIT 9/22) SEE POST #276, PAGE 12 FOR THE LATEST VERSION

Edited by senior_falcon
  • Like 7

Share this post


Link to post
Share on other sites

Question about CALL WAIT: is a duration value of 50 for one second correct for NTSC consoles?

Share this post


Link to post
Share on other sites

I had a CALL DELAY(value) similar to XB 2.4 CALL WAIT(value)

But you could do CALL DELAY(value,value) and the second value would be the number of times for first value repeated.

Sort of like a FOR  NEXT loop inside of a FOR NEXT loop.

 

I removed it as it interfered with Assembly access, I do not know what the one in XB 2.7 is used for?

 

Share this post


Link to post
Share on other sites

I have tried several times this afternoon to get G.E.M. to load and work in Classic99. Following the instructions in the README text file, I created a folder named "CARTS" in the Classic99 folder and saved both binaries into it. I then inserted the test in the README file immediately after my [Usercart0] in the .ini file.

G.E.M. appeared as a "User Cart" and could be normally selected upon boot up of Classic99. So far, so good. However, the only menu options that would load were those associated with TML. Everything else either produced a blank screen or, in the case of Extended Basic 2.8, produced a screen full of "artifacts" When I got the screen full of artifacts with XB 2.8, I got the following message in the debugger - "Illegal opcode (0008) at >0012, Bank 0000". I am now at a standstill as far as loading it into Classic99. Maybe Tursi can be of some assistance - I have sent him a series of PMs. Any suggestions would be appreciated.  

Share this post


Link to post
Share on other sites

As always, "read the debug log". The filename in the archive does not match the filename in the README file, and Classic99 tells you this:

Loading file (D:\classic99\mods\XB28GEM\XB28GEM\XB28GEM_G.BIN) from disk: Type G, Bank 0, Address 0x6000, Length 0xA000
Failed to load 'D:\classic99\mods\XB28GEM\XB28GEM\XB28GEM_8.BIN', error 2

Error 2 is "file not found", and if you look in the archive, you'll see it's not XB28GEM_8.BIN, but XB27GEM_8.BIN.

 

This would break drag and drop, too, since the two files has different names.

 

Rename the file and it will work. ;)

 

Share this post


Link to post
Share on other sites

Renaming the file did the trick. I hadn't noticed that the binary had been mis-named as XB27GEM instead of XB28GEM. Probably needs to be corrected in the archive. I just went ahead and copied the files and used the README template.

Edited by atrax27407

Share this post


Link to post
Share on other sites

I was about to come here to mention the mismatch of the filenames of these two files. I also noticed that the XB27GEM_8.BIN file has an older date & time stamp (by 18 hours & 20 minutes) than the G file does. Can senior_falcon verify that this is the correct one to be using, or was it an earlier version that was still being used with 2.7?

 

image.png.9f12edf754eb43bee876eaa0d713a540.png

Share this post


Link to post
Share on other sites

Yep, that is the correct one. Just rename it to XB28GEM_8.BIN. i will upload again, but the only change is the renamed file.

  • Like 3

Share this post


Link to post
Share on other sites
5 hours ago, Tursi said:

As always, "read the debug log". 

 

A lesson that has been driven home in this computer room :) 

Share this post


Link to post
Share on other sites

I'm still torn on whether load errors should pop up a message. When I first wrote that loader code way back when, they couldn't. But it's never going to do what you want if it failed to load a file, so maybe the interruption is warranted... ;)

 

  • Like 1

Share this post


Link to post
Share on other sites

My constructive comments / questions on the documentation:

 

  •  Page 4 states
More information on using RUN, RUNL1 and SAVEIV can be found in the section starting on page 26
entitled AUTOLOADING AND CHAINING PROGRAMS.

Since the manual is only 12 pages, this actually starts on page 11.

 

  • Regarding the new CALL RUN / RUNL1, it states that these are used to run XB256 programs. Is it safe to say this will also work to T40XB/T80XB/XB 2.8 programs too? Based on the discussion on pages 11 & 12, that would appear to be the case, but as Benny Hill once said - NEVER ASSUME! I am guessing that the XB256 naming may be left over from earlier versions of the documentation.

 

  • On page 8, to be consistent with the documentation changes to CALL VPEEK & CALL VPOKE, this line:
CALL GPEEK is now PEEKG

would be clearer if it was

CALL GPEEK is now CALL PEEKG

 

  • On page 11, this is confusing:
CALL SAVEIV(”DSKn.PROGNAME”)
XB 2.8 G.E.M. has a subprogram that will to force XB to save a program of any length in IV254 format.
In the immediate mode, with your program loaded, simply type:CALL LINK(“SAVEIV”,”DSKn.PROGNAME”)

I'm guessing that it is indeed CALL SAVEIV, unless the CALL LINK also works.

 

  • Also on page 11, just a typo where line 10 should be A$ instead of D$:
10 D$=”DSK1.PROGRAM”
20 CALL RUN(A$)

 

THANK YOU SO MUCH for designing these incredible tools that make programming the TI so much easier and fun!

Share this post


Link to post
Share on other sites

Thank you for finding those. CALL SAVEIV was copied from the XB256 docs where it is CALL LINK("SAVEIV"). That is also the reason for the page errors.

I'm sorry about the errata - I was getting pretty sick of all the documentation. There is not 1, not 2, not 3, but seven manuals that all needed to be edited and amended for this.

 

CALL RUN and RUNL1     Is it safe to say this will also work to T40XB/T80XB/XB 2.8 programs too?"

I think that is correct, but will check to be sure. I also think those will work with The Missing Link, but probably only in the 2 color mode.

 

 

Edited by senior_falcon
  • Like 1

Share this post


Link to post
Share on other sites

First of all I would like to thank @senior_falcon for all your hard work.  This is truly incredible. I was able to get this up and running on Classic99 without issue.  Has anyone loaded onto their FinalGROM?  I tried, but all I get when I choose a option is a blank screen.  The original GEM from post #1 works fine on my FG, I simply cannot get 2.8 to work on my FinalGROM.  Any ideas?   

  • Like 2

Share this post


Link to post
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.

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