Jump to content
IGNORED

Extended BASIC - Programs you cannot live without


Omega-TI

Recommended Posts

Over the decades most of the programs that are 'well known' or have 'withstood the test of time' have been Editor/Assembler programs, but sometimes there are XB programs the we use and hold dear.  Are there any Extended BASIC programs that you still use or cannot live without?  How about non-game honorable mentions?

 

 

Link to comment
Share on other sites

You've never seen SYSTEX? You need to get out more. :waving:

 

My most-used XB programs I wrote were my programmable multi-step Timer for my darkroom and Catman, which appended floppy disk directories into a single DV80 file and also converted them into a TI-Base format searchable, sortable database.

 

My darkroom & photo biz was shut down with the proliferation of digital cameras  and color printers. And once I had my floppy collection listed, I no longer needed Catman much, though I still refer to the master list to see if I have a program and which disk it's on.

-Ed

  • Like 2
Link to comment
Share on other sites

3 hours ago, --- Ω --- said:

Hey, post that sucker!  I'd like to see it!

Should be on WHT :)    Heatwave leverages Systex to load its assembly support. Oh, I suppose I should have also included my BBS programs.  That's a whole lotta XB programming (and assembly called by XB) that gets used many times a day! 

  • Like 1
Link to comment
Share on other sites

On 1/25/2020 at 10:04 PM, Ed in SoDak said:

Catman, which appended floppy disk directories into a single DV80 file and also converted them into a TI-Base format searchable, sortable database.

 

 

The program I remember that did that was called CatLib. . .I don't think I've ever seen Catman.

Link to comment
Share on other sites

1 hour ago, Ksarul said:

The program I remember that did that was called CatLib. . .I don't think I've ever seen Catman.

You didn't see it because it never saw wide release. I may have been the only user. :roll: I took several small XB utilities and glued them together into one large pot of spaghetti code. I had TI-Base and wanted to use it to maintain a database of my TI disks and wanted to semi-automate the catalog creation. CatLib was in my collection but didn't use it. That program may have been some inspiration for Catman. Or not. So long ago I don't remember.

 

My version of a Disk Librarian lets you add where a disk is stored, gives each disk an auto-incrementing number and includes space for notes and comments on a disk and each file. Multi-session, new additions are appended to a pair of associated files. I also created several TI-Base files to sort and use the data, so you'll see options for that within Catman.

 

Sadly, it didn't play well with MacV9T9 but worked fine on the iron. I haven't tried it much in other emulators.

 

Here's version 2.14, first as TIFILES, then in V9T9 and my last version 2.2 in V9T9 format. Also my disk library created by the program converted to normal text. Enjoy! Or delete, as you see fit. :lol: I liked using it and spent a lot of time working on it. I still refer to the master disk listing it helped me create.

-Ed

catman214 CATMAN21.4 CATMAN22 TI disk libprg 91.txt

  • Like 2
Link to comment
Share on other sites

10 hours ago, Ksarul said:

The program I remember that did that was called CatLib. . .I don't think I've ever seen Catman.

I liked a BASIC program named 'Diskrunner' . It was the fastest turnaround per-floppy. You could feed it your whole library, then get an index in DV80. I don't remember if it handled updates. 

 

 

Link to comment
Share on other sites

On 1/25/2020 at 3:49 PM, InsaneMultitasker said:

SYSTEX utility.  First fairware contribution I ever made and I still use the program to this day.

I wrote RXB CALL BLOAD to replace SYSTEX as it is faster as no start up and you can use a interrupt switch to freeze a program utility and start at that point.

CALL BSAVE saves the LOWER 8K to disk as PGM Image, that CALL BLOAD loads that PGM Image.

CALL ISROFF turns off any ISR hook and saves the address for CALL ISRON to restart it.

 

I have a demo of me running 44K of Assembly on a TI using the SAMS card back in 2001 so not like this is new.

Watch how fast SYSTEX is compared to RXB CALL BLOAD you will be surprised at how much faster RXB is to SYSTEX.

 

  • Like 1
Link to comment
Share on other sites

9 hours ago, RXB said:

I wrote RXB CALL BLOAD to replace SYSTEX as it is faster as no start up and you can use a interrupt switch to freeze a program utility and start at that point.

CALL BSAVE saves the LOWER 8K to disk as PGM Image, that CALL BLOAD loads that PGM Image.

 

Nice approach.  RXB wasn't on my radar back in the 90s, and most people who registered my BBS software used the standard XB cartridge.  For me it wasn't really necessary to go beyond XB for cost and compatibility reasons.  I did create a variation of Brad Snyder's SAMS loader to start the BBS by loading the VDP, 32K, and scratchpad into memory.  If I remember correctly it dumped PAD to a small buffer in the 8k section so that the entire state could be saved/restored.  Lost that with other code during one of the Faires.  Travel was often tough on hard drives.  Ah well. 

  • Like 1
Link to comment
Share on other sites

On 1/31/2020 at 6:24 PM, InsaneMultitasker said:

Nice approach.  RXB wasn't on my radar back in the 90s, and most people who registered my BBS software used the standard XB cartridge.  For me it wasn't really necessary to go beyond XB for cost and compatibility reasons.  I did create a variation of Brad Snyder's SAMS loader to start the BBS by loading the VDP, 32K, and scratchpad into memory.  If I remember correctly it dumped PAD to a small buffer in the 8k section so that the entire state could be saved/restored.  Lost that with other code during one of the Faires.  Travel was often tough on hard drives.  Ah well. 

If you want test my RXB BLOAD/BSAVE routines and compare the speeds against SYSTEX. 

See the one advantage I have compared to them is the loader is built into XB and does not need to be initialized or loaded in order to load something.

This is why SYSTEX is so slow compared to RXB.

Link to comment
Share on other sites

2 hours ago, RXB said:

If you want test my RXB BLOAD/BSAVE routines and compare the speeds against SYSTEX. .... This is why SYSTEX is so slow compared to RXB.

BLOAD.gif.3af01b5f2ebba3977b8ca7551cb59b83.gif

For this test I used BSAVE to save XB256  as XB256BS. Then, to be sure we are comparing equivalent programs, I wrote a 2 line XB loader:

1 CALL BLOAD("DSK7.XB256BS")
2 CALL PEEK(-4,X):: CALL LOAD(10574,144+X):: CALL LINK("XB256A")


For comparison, the XB256 SYSTEX like loader is:

1 !XB256 "Isabella"            H. Wilhelm 2019
2 CALL INIT :: CALL LOAD(8192,255,152):: CALL LINK("X"):: CALL PEEK(-4,X):: CALL LOAD(10574,144+X):: CALL LINK("XB256A")
 

It looks like BLOAD is a bit faster, which makes sense. SYSTEX loads an XB program to VDP ram, then transfers it to CPU high memory, then transfers that to CPU low memory. BLOAD cuts out the middle man. It loads 8K to high memory, then transfers that directly to low memory.

In fairness, this is not SYSTEX. It is my own loader called KWIKLOAD, but I believe that the two are essentially identical.

 

Both are useful tools. The files in KWIKLOAD are a bit smaller. Here XB256 is 7.12K long while XB256BS is 8.12K long. That's because KWIKLOAD uses CALL INIT to load some of the code. Also, it doesn't save junk bytes. If there is 1K of assembly routines, then it will only save those 1000 bytes. I believe SYSTEX works the same way. If you have an XB program that requires some A/L support routines, KWIKLOAD/SYSTEX would be a good choice because it can all be put into one file. And of course, they can be used with any version of XB.

 

On the other hand, BLOAD is a bit more universal. You can imagine an XB program with a lot of assembly support routines. Unlike SYSTEX, BLOAD can change to different assembly routines on the fly with no disruption to the running XB program.  (edit - May not work because it overwrites VDP ram starting at >1020) The 8K segment of code can be an assembly program that has nothing to do with XB. BLOAD seems to be ideally suited for use with the AMS system. 

 

I have attached a zipped folder with KWIKLOAD and KLOADNEW. These are almost identical. The difference is that KWIKLOAD leaves the XB program intact when it runs. KLOADNEW will transfer the code to low memory, then erase the XB loader program. To embed low memory assembly routines in an XB loader:

1 - Load the assembly routines to low memory with CALL LOAD(...)

2 - CALL LOAD("DSK1.KWIKLOAD.OBJ") or CALL LOAD("DSK1.KLOADNEW.OBJ")

3 - CALL LINK("X") 

Now the assembly routines are embedded in an XB loader. You can either save this or add lines of XB code to it.

KWIKLOAD.zip

Edited by senior_falcon
  • Like 4
Link to comment
Share on other sites

4 hours ago, RXB said:

If you want test my RXB BLOAD/BSAVE routines and compare the speeds against SYSTEX. 

See the one advantage I have compared to them is the loader is built into XB and does not need to be initialized or loaded in order to load something.

This is why SYSTEX is so slow compared to RXB.

Speed was never really an issue as I wasn't performing the SYSTEX operation every day, but I have learned some neat things from yours and senior falcon's posts.    Anyway.. Systex is an XB program I can't "live without" which is what the original post was about.... ;)

  • Like 3
Link to comment
Share on other sites

23 hours ago, senior_falcon said:

BLOAD.gif.3af01b5f2ebba3977b8ca7551cb59b83.gif

For this test I used BSAVE to save XB256  as XB256BS. Then, to be sure we are comparing equivalent programs, I wrote a 2 line XB loader:

1 CALL BLOAD("DSK7.XB256BS")
2 CALL PEEK(-4,X):: CALL LOAD(10574,144+X):: CALL LINK("XB256A")


For comparison, the XB256 SYSTEX like loader is:

1 !XB256 "Isabella"            H. Wilhelm 2019
2 CALL INIT :: CALL LOAD(8192,255,152):: CALL LINK("X"):: CALL PEEK(-4,X):: CALL LOAD(10574,144+X):: CALL LINK("XB256A")
 

It looks like BLOAD is a bit faster, which makes sense. SYSTEX loads an XB program to VDP ram, then transfers it to CPU high memory, then transfers that to CPU low memory. BLOAD cuts out the middle man. It loads 8K to high memory, then transfers that directly to low memory.

In fairness, this is not SYSTEX. It is my own loader called KWIKLOAD, but I believe that the two are essentially identical.

 

Both are useful tools. The files in KWIKLOAD are a bit smaller. Here XB256 is 7.12K long while XB256BS is 8.12K long. That's because KWIKLOAD uses CALL INIT to load some of the code. Also, it doesn't save junk bytes. If there is 1K of assembly routines, then it will only save those 1000 bytes. I believe SYSTEX works the same way. If you have an XB program that requires some A/L support routines, KWIKLOAD/SYSTEX would be a good choice because it can all be put into one file. And of course, they can be used with any version of XB.

 

On the other hand, BLOAD is a bit more universal. You can imagine an XB program with a lot of assembly support routines. Unlike SYSTEX, BLOAD can change to different assembly routines on the fly with no disruption to the running XB program.  (edit - May not work because it overwrites VDP ram starting at >1020) The 8K segment of code can be an assembly program that has nothing to do with XB. BLOAD seems to be ideally suited for use with the AMS system. 

 

I have attached a zipped folder with KWIKLOAD and KLOADNEW. These are almost identical. The difference is that KWIKLOAD leaves the XB program intact when it runs. KLOADNEW will transfer the code to low memory, then erase the XB loader program. To embed low memory assembly routines in an XB loader:

1 - Load the assembly routines to low memory with CALL LOAD(...)

2 - CALL LOAD("DSK1.KWIKLOAD.OBJ") or CALL LOAD("DSK1.KLOADNEW.OBJ")

3 - CALL LINK("X") 

Now the assembly routines are embedded in an XB loader. You can either save this or add lines of XB code to it.

KWIKLOAD.zip 1.11 kB · 5 downloads

I have fixed BLOAD and BSAVE in the next version of RXB they both do not use >1020 they instead work like variables and allot a location not used, also the new

versions are not 8K but 4K so less VDP space used and can load 4K into anywhere in 32K thus even use the highest line numbers of a program replacing them with 

another page with same line numbers but different lines in them.

Example would be:

32000 ! this is a data statement for lower in program

32010 DATA AB94202C6393614C

32020 DATA 345BDF94572EA753

At different page would have totally different lines, but also reside at same location with same line numbers.

Of course you have to pad the program so that the end result of these line numbers are on a 4K boundry of memory, but you have unlimited XB program sizes.

If you do this in SAMS it is instantaneous switching of pages.

 

This makes SYSTEX seem pretty archaic in comparison let alone by speed.

This new versions will allow Assembly to be loaded in upper 24K area not being used by XB programs.

Can you think of any other ways to use this?

Edited by RXB
  • Like 1
Link to comment
Share on other sites

21 hours ago, InsaneMultitasker said:

Speed was never really an issue as I wasn't performing the SYSTEX operation every day, but I have learned some neat things from yours and senior falcon's posts.    Anyway.. Systex is an XB program I can't "live without" which is what the original post was about.... ;)

When next version of RXB comes out you will be impressed as to what it can do loading mulitple pages of Assembly or XB programs or lines.

Combined with SAMS it will be blazing fast. (Well for a TI99/4A)

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