Jump to content
IGNORED

RXB - Rich Extended Basic


Bones-69

Recommended Posts

Why? A routine that does it all has to make decisions and that takes more time than dedicated routines.

Well one routine that always uses the same registers and same 3 variables is much more efficient then

7 routines that all use 10 different registers and 9 different variables.

It is not like you could use 3 of them at same time and need to maintain these values?

 

Routine to use 1 to 7 routines = R0

Number of bites variable = R1

Source Variable = R2

Destination Variable = R3

 

To me I always try to make programs more efficient and not waste space or memory.

Edited by RXB
Link to comment
Share on other sites

Hmm how long would it take to use a single Register like R0 to decide one of seven routines?

 

Versus loading 3 new word values from GPL and then loading 3 new Registers with those values never to be used again?

 

Example is like GVWITE that uses @FFF, @EEE, @DDD and no other routines ever use these address?

Which means every time called these have to be loaded and never used again, does this sound efficient?

(Basically 3 words wasted in GPL and 3 Registers that are dumped and reloaded for something else,

but have to be saved thus wasting even more memory!)

 

Register R0 to R5 never are retained in the XB ROMs but for some insane reason they use R7 and R9,

which has to be copied and restored each call?

Link to comment
Share on other sites

Which means every time called these have to be loaded and never used again, does this sound efficient?

Doesn't sound efficient the way you put it. I showed above how the loop in the machine language routine had way fewer istructions than the GPL version and so would be faster. I haven't looked at the assembly code to see if it can be improved and have no desire to do so. If you can come up with something that runs faster and is smaller then go for it.

Link to comment
Share on other sites

Why? A routine that does it all has to make decisions and that takes more time than dedicated routines.

 

There would be very little overhead if you use a jump table. But unless the loops are very short the only thing that really matters is the inside of the loops. Unrolling is much more important for performance than how you get to the loops.

Link to comment
Share on other sites

 

There would be very little overhead if you use a jump table. But unless the loops are very short the only thing that really matters is the inside of the loops. Unrolling is much more important for performance than how you get to the loops.

XML's are GPL jumps.

***********************************************************
*    Equates for XMLs
SYNCHK EQU  >00               SYNCHK XML selector
SEETWO EQU  >03               SEETWO XML selector
COMPCT EQU  >70               PREFORM A GARBAGE COLLECTION
MEMCHK EQU  >72               MEMORY check routine: VDP
PARSE  EQU  >74               Parse a value
VPUSH  EQU  >77               Push on value stack
VPOP   EQU  >78               Pop off value stack
PGMCHR EQU  >79               GET PROGRAM CHARACTER
SYM    EQU  >7A               Find Symbol entry
SMB    EQU  >7B               Find Symbol table entry
SCHSYM EQU  >7D               Search symbol table
SPEED  EQU  >7E               SPEED UP XML
CRUNCH EQU  >7F               Crunch an input line
CONTIN EQU  >81               Continue after a break
SCROLL EQU  >83               SCROLL THE SCREEN
IO     EQU  >84               IO utility (KW table search)
GREAD  EQU  >85               READ DATA FROM ERAM
GWRITE EQU  >86               WRITE DATA TO ERAM
DELREP EQU  >87               REMOVE CONTENT FROM VDP/ERAM
MVDN   EQU  >88               MOVE DATA IN VDP/ERAM
MVUP EQU    >89               MOVE DATA IN VDP/ERAM
VGWITE EQU  >8A               MOVE DATA FROM VDP TO ERAM
GVWITE EQU  >8B               WRITE DATA FROM GRAM TO VRAM
GDTECT EQU  >8E               ERAM DETECT&ROM PAGE 1 ENABLE
SCNSMT EQU  >8F               SCAN STATEMENT FOR PRESCAN

This the list of only GROM 3, there are many more in XB ROMs not shown here.

 

My main complaints the insane waste of using so many variables in GPL and Assembly ROMs that do exactly the same thing.

Any time you have to dump a variable then restore it and not use a unused one instead seems pretty stupid to me.

 

This is like digging 2 holes only to fill a third hole with the dirt from the second one.

The more you keep digging the more stupid it becomes.

Link to comment
Share on other sites

Rich,

 

Is the new iteration of RXB going to be released in the relatively near future or is it still a "moving target"?

I think I will release RXB 2018 a couple of months around September.

 

Unlikely to be any later than that.

  • Like 2
Link to comment
Share on other sites

Got a IDEA!

 

New option on RXB Menu Screen either SHIFT KEYS:

 

DRIVE TO LOAD SAMS CARD: ?

 

When you put in that drive it would load a file named: @0000000000

 

Would load SAMS card memory pages 2,3,A,B,C,D,E,F according to a single file then start XB as that would be loaded also.

 

File format would be Internal Fixed 136 as no one has ever used that size and format before.

First byte is memory address to be loaded. i.e. 2 or 3 or A or B or C or D or E or F

Second byte is bank of 1Meg pages of SAMS. i.e. >00 (normal 1Meg SAMS) up to >FF (255 page of a 16Meg SAMS)

Third byte is 4K number >00 to >FF i.e. >00 page zero and >FF would be page 255 like in a 1Meg SAMS

 

After SAMS is loaded it would execute XB program in upper 24K or EA program in memory.

 

Is this a cool idea?

  • Like 1
Link to comment
Share on other sites

Changes file format to Display/Fixed 255 so first byte in where to load load page. i.e. 2, 3, A, B, C, D, E, or F

 

Current testing saves all RAM to DISK in 130 sectors as DF255.

 

Next is SAMS version.

  • Like 1
Link to comment
Share on other sites

UPDATE RXB 2018 SAMS SAVE ROUTINE:

 

CALL SAMS("SAVE","PATH.FILENAME",#32K BANKS)

 

This saves a file the number of 32K banks in SAMS to DISK or HARD DRIVE, from 1 to 31 BANKS. (32K to 992K)

(NOTE: 32K of SAMS is reserved for Future expansions)

 

We are looking at RXB 2018 be able to load multiple programs ASSEMBLY/XB and switching them INSTANTLY all in SAMS memory.

 

Some changes to what was previously announced exist, but overall this is a brand new development in the TI world.

  • Like 2
Link to comment
Share on other sites

Rich,

Your new RXB 2018 is looking to be pretty sweet. Are you going to include an accompanying manual in PDF format for features/commands not in regular Extended BASIC?

Of course I always do that.

  • Like 2
Link to comment
Share on other sites

Have to change how the SAMS save and load routines works.

Need to allow oddball pages to be used, saving the entire 1Meg not a viable option, as unlikely 31 BANKs of 32K would be needed.

 

So need to allow variable sections and loader has to be as friendly.

 

EXAMPLE TO SAVE:

 

CALL SAMS("SAVE","DSK4.SAMSFILE",4) ! This would save four 32K banks to disk.

 

EXAMPLE TO LOAD:

 

CALL SAMS("DSK4.SAMFILE",address) ! This would load four 32K banks to SAMS with tag bytes at end of file >994A,>994A,>994A ending loader.

 

Also how do you know which 32K bank to switch to say in another 32K bank?

 

CALL SAMS("32K",BANK,address) ! BANK would be from 1 to 31 switching SAMS memory to that bank then execution of that memory address.

 

Now how does RXB get away with this and not lock up?

 

RXB 2018 uses the VDP CRUNCH BUFFER so from program mode or edit mode this works........cool huh?

 

Of course anything in current memory is not lost and you can return the same way.

 

CURRENT FORMATS FOR CALL SAMS:

*******************************************************************
* CALL SAMS(lowbank#,highbank#,...)
* CALL SAMS("PASS",...)
* CALL SAMS("MAP",...)
* CALL SAMS("OFF",...)
* CALL SAMS("ON",...)
* CALL SAMS("SAVE","PATH.FILENAME",#32BANKS)
* CALL SAMS("LOAD","PATH.FILENAME",ADDRESSS)
* CALL SAMS("LOAD","PATH.FILENAME","LINKNAME")
* CALL SAMS("32K",BANK#,ADDRESS)
* CALL SAMS("32k",BANK3,"LINKNAME")
*******************************************************************
Edited by RXB
Link to comment
Share on other sites

Using Tursi Clock built into Classic99 I ran this program for new RXB command CALL SAMS("SAVE","DSK4.TEST",31)

10 OPEN #1:"CLOCK"
20 INPUT #1:A$,B$,C$
30 CALL SAMS("SAVE","DSK4.TEST",31)
40 INPUT #1:X$,Y$,Z$
50 PRINT A$:B$:C$
60 PRINT
70 PRINT X$:Y$:Z$

Results:

4

07/05/18

12:36:00

4

07/05/18

12:41:25

 

So took 5 minutes 25 seconds to save a DF255 file of 10387 sectors.

That means it will take that amount of time to load a SAMS with 992K of saved memory.

WOW is going to fit on a Quad Density Floppy?

 

On the plus side you can switch to one of 31 Assembly or XB programs instantly like FW or DM2000 or anything else.

BONUS: Quit and go to RXB and switch again as long as you do not turn off P-Box, thus no reload needed.

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

DOUBLE POSTING THIS AS SO EXCITED TO SHOW IT OFF....

 

Just so you guys know RXB new routine

CALL SAMS("LOAD","DSK#.FILENAME")

will load SAMS 1Meg takes 5 minutes.

(Classic99 or RAMDISK speeds, SCSI slightly slower at just under 6 minutes.)

Once done you have 31 (32K banks) memory loaded and can switch with

CALL SAMS("32K",BANK#,ADDRESS)

EVEN IF FORTH IS IN ONE OF THOSE BANKS.

CARTS are great but they do not SAVE WHAT WAS DONE!!!!!

Run your 32K memory exit to another 32K memory program or another....

But save it all to disk with

CALL SAMS("SAVE","DSK#.FILENAME",#of banks to save) ! you can save from 1 (32K) to 31 (32K) banks.

Tell me this is not a new idea in the TI99/4A world?????

  • Like 1
Link to comment
Share on other sites

A "Quad Density" floppy will only hold 720K (or 2880 sectors). That looks to be about a quarter of your file, Rich. . .

Yea using SAMS or even the new F18 MK2 will present problems in storage space limits as Floppy just doesn't cut it anymore.

 

Going to have to go Hard Drive or USB storage or something new......

Link to comment
Share on other sites

 

TIPI? icon_mrgreen.gif

TIPI ? Hmmm as far as I know is it designed for storage like a Hard Drive?

 

Can you make a Display Variable 255 file of over 10K sectors on TIPI?

 

EXAMPLE:

CALL SAMS("SAVE","TIPI.VOLUME.FILENAME",31)

Link to comment
Share on other sites

I don't quite understand how this works. Is there a command to load an E/A#5 file directly into SAMS, or do you load it normally first and then copy it to SAMS? Are you only saving and restoring the 32K or do you also save and restore the scratchpad?

Have you considered data compression? It could probably reduce the file size a lot.

  • Like 1
Link to comment
Share on other sites

TIPI ? Hmmm as far as I know is it designed for storage like a Hard Drive?

 

Can you make a Display Variable 255 file of over 10K sectors on TIPI?

 

EXAMPLE:

CALL SAMS("SAVE","TIPI.VOLUME.FILENAME",31)

 

Dunno, never tried it. TIPI uses FIAD, so if the program can handle the file, I don't suppose it would be an issue. Also there is no 127 file limit per folder either.

 

While the TIPI does use some overhead, a modern 64 Gigabyte SD card in a TIPI probably still gives you as much space, maybe even more, than many of those older SCSI drives.

I would also hazard to guess an RPI 3 and the P-Box TIPI will still cost less than an old used and rare SCSI card setup. Plus it gives you BBS/Internet access and mouse capability with TI-Artist too. Also, since it's actively supported and new, there is a reasonable expectation of added capabilities as well.

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