Jump to content
IGNORED

TI99/4A EXTENDED BASIC ROM CODE REWRITE


RXB

Recommended Posts

Hello as I have told many I am attempting to rewrite XB ROMs and add or change the code to be updated.

This is one I ran into that is more then strange.

If you load these text files and search for >6A you will find these labels:

CBH6A       BYTE >6A

CCBH6A     BYTE >6A

DCBH6A    BYTE >6A

 

Why did they knowingly waste these bytes when CBH6A would suffice?

I can not see any address counter needing the >6A so why was TI programmers adding two unneeded bytes?

 

My goal is to remove unneeded waste of bytes or data from XB ROMs first and best would be remove the problem of duplication of lower 4K XB ROM

This would make for more efficient code and also I can remove superfluous code for example:

LINE#:ROM ADDRESS:BYTES:ASSEMBLY COMMANDS

 0350     6126             C0CB   FCOMPB  MOV   R11,R3  
 0351     6128             0460                 B        @FCOMP+22   
             612A             0D50  

In the entire GPL code of XB this is only called ONE TIME why they did not put this into the upper 4K ROM makes no sense?

 

Another one is CNS (Convert a Number to String)

 0271     6070            0202    CNSSEL   LI   R2,CNS  
             6072            7016  
 0272      074             1002                  JMP  PAGSEL  

Why the hell not just use CNS instead of using this as main branch table as there is a built in page select there already????

Did the author not know page select was built in and existed?

 

I have include the text based listing in zip form here.

RXB ROMs.7z

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

Multiple people writing their pieces of code, everything would fit inside the needed boundaries, so there was no additional code optimization.  Just, it works, now lets get the product out the door.  There can always be a version 130 later on if needed, or a newer updated version for the TI-99/8.

 

Beery

  • Like 7
Link to comment
Share on other sites

1 minute ago, 9640News said:

Multiple people writing their pieces of code, everything would fit inside the needed boundaries, so there was no additional code optimization.  Just, it works, now lets get the product out the door.  There can always be a version 130 later on if needed, or a newer updated version for the TI-99/8.

 

Beery

Clearly you do not understand what I am doing!

I need to add more TOKEN symbols to the NUD Table that are the commands to XB and the ROMs have a lack of space to add them.

Example is adding new commands like MOD(value,divisor) and would return the MOD value just like other basics or C does.

Or down the line making XB integer based with Floating Point backwards compatible if loaded.

The speed up would be loved by all. I have currently already showed a insane speed up of commands like CALL HCHAR and CALL VCHAR and PRINT.

 

By the way GKXB was the first one to modify the XB ROMs so since then I have added a few modification to RXB ROMs.

If you want stick with old XB fine with me, I do not use a 9640 so please do not rain on my parade, I am not doing that to you!

(And not everyone is going to buy the TI-99/8 )

  • Thanks 1
Link to comment
Share on other sites

13 minutes ago, RXB said:

Clearly you do not understand what I am doing!

I read his response within the context of your questioning how TI approached various tasks and why there is some duplication in the code.  You might want to consider looking at it from that perspective.  Your reply won't earn many points on the charm scale.

  • Like 7
Link to comment
Share on other sites

4 minutes ago, InsaneMultitasker said:

I read his response within the context of your questioning how TI approached various tasks and why there is some duplication in the code.  You might want to consider looking at it from that perspective.  Your reply won't earn many points on the charm scale.

Thank you!  That was my intention and why I wrote what I wrote.  I was definitely not raining on Rich's parade and had nothing to do with the 9640 or his desire to expand RXB.  It was an answer to his question shown below.

 

37 minutes ago, RXB said:

 

If you load these text files and search for >6A you will find these labels:

CBH6A       BYTE >6A

CCBH6A     BYTE >6A

DCBH6A    BYTE >6A

 

Why did they knowingly waste these bytes when CBH6A would suffice?

I can not see any address counter needing the >6A so why was TI programmers adding two unneeded bytes?

 

 

Link to comment
Share on other sites

30 minutes ago, InsaneMultitasker said:

I read his response within the context of your questioning how TI approached various tasks and why there is some duplication in the code.  You might want to consider looking at it from that perspective.  Your reply won't earn many points on the charm scale.

Look if you are not going to help then please stop these comments.

Edited by RXB
Link to comment
Share on other sites

26 minutes ago, 9640News said:

Thank you!  That was my intention and why I wrote what I wrote.  I was definitely not raining on Rich's parade and had nothing to do with the 9640 or his desire to expand RXB.  It was an answer to his question shown below.

 

 

Ok thanks! I think a more helpful attempt would be to look at code and see why, as I have done. Why I asked for help.

The XB ROMs have NEVER BEEN UPGRADED (except GKXB changed 2 bytes) so not like we can not do this with some cooperation. 

Lee has been a great help and would like more onboard for this.

We need like 40 bytes opened up to have a real upgrade to the XB ROMs. 40 bytes is not a huge demand is it?

  • Thanks 1
Link to comment
Share on other sites

OMG made a breakthrough in how XB ROMs work! 

In the XB ROM NUD TABLE (NUD is the Symbol Table) like RANDOMIZE is token >95 but in ROM is defined as >8014 in ROM table?

Yet in GROM there is nothing at >8014???

There is however no ROM routine for RANDOMZE as it is only in GPL GROM and oddly in GROM is NUDTB and >14 bytes into that table is  NRNDMZ

So >8014 equals NRADMZ is actually the index into GROM NUDTB to execute the command RANDOMIZE in GROM.

 

Also another OMG moment was NONUD that always branched in ROM to SYNTAX error and all kinds of tokens did this like ELSE, ERROR, WARNING, &, AND, OR, XOR, NOT...

Did not make any sense till I remembered the TOKEN was retained so was submitted in ERROR to look up in another Table and of course ended up in GROM again.

This included all Alpha Numeric characters and things like <, >, =, + or spare tokens not used.

 

Yet another is NUDND1 in XB ROMs that is for commands like IMAGE or DATA or ! or REM that reset the program counter over those TOKENs like they do not exist.

 

XB ROMs are probably the most complicated Assembly listing ever made by TI. (Explains why no one has ever tried to figure them out.)

  • Like 2
Link to comment
Share on other sites

1 hour ago, RXB said:

Look if you are not going to help then please stop these comments.

There was nothing in his post that was demeaning or dismissive of the work you have put into RXB.

 

Since you edited your original post, I'll quote what you deleted (italicized below) and ask you to do the same. 

 

By the way, even if the Geneve BASIC isn't something you are interested in, the full assembly source code is available and it may help you in your efforts.  No umbrella required.
 

Quote

 

Look telling me not to do anything at all for my project is kind of mean too?

Should I thank him for telling to abandon what I am doing?

Then telling me his project should be the one to go with?

Does that not give you a little pause as to what I said?

 

  • Like 3
Link to comment
Share on other sites

9 hours ago, RXB said:

Clearly you do not understand what I am doing!

I need to add more TOKEN symbols to the NUD Table that are the commands to XB and the ROMs have a lack of space to add them.

Example is adding new commands like MOD(value,divisor) and would return the MOD value just like other basics or C does.

Or down the line making XB integer based with Floating Point backwards compatible if loaded.

The speed up would be loved by all. I have currently already showed a insane speed up of commands like CALL HCHAR and CALL VCHAR and PRINT.

 

By the way GKXB was the first one to modify the XB ROMs so since then I have added a few modification to RXB ROMs.

If you want stick with old XB fine with me, I do not use a 9640 so please do not rain on my parade, I am not doing that to you!

(And not everyone is going to buy the TI-99/8 )

Rich,

 

if your extended basic rewrite is to run on a FG99 or similar cartridge couldn’t you relocate some of the existing calls and move them to an extra bank. That would give you more space for the NUD table.

 

You then “just” need to add a trampoline function that goes to the extra bank and run the code there. 

Thinking about a vector table and stubs in the existing ROM bank for each of the relocated calls.

That would take less space then the actual code and free up some space for the NUD table.

Then again, FWIW probably should take a look at the extended basic source code again.

Can’t recall if the XB roms only have the meat of the interpreter or if the ROMs also have code for the extended basic calls themselves (there probably mostly in GPL right?)

 

On the topic of bank switching I did something similar in my Stevie editor, because 8K is never enough.

Started with an 16K rom bank and am up to 64K now (although not all banks are full because I keep spreading calls accross banks). Anyway source code is on github, if you want to take a look.

Edited by retroclouds
  • Like 6
Link to comment
Share on other sites

12 hours ago, retroclouds said:

Rich,

 

if your extended basic rewrite is to run on a FG99 or similar cartridge couldn’t you relocate some of the existing calls and move them to an extra bank. That would give you more space for the NUD table.

 

You then “just” need to add a trampoline function that goes to the extra bank and run the code there. 

Thinking about a vector table and stubs in the existing ROM bank for each of the relocated calls.

That would take less space then the actual code and free up some space for the NUD table.

Then again, FWIW probably should take a look at the extended basic source code again.

Can’t recall if the XB roms only have the meat of the interpreter or if the ROMs also have code for the extended basic calls themselves (there probably mostly in GPL right?)

 

On the topic of bank switching I did something similar in my Stevie editor, because 8K is never enough.

Started with an 16K rom bank and am up to 64K now (although not all banks are full because I keep spreading calls across banks). Anyway source code is on github, if you want to take a look.

Retroclouds

Thanks, lately I have gained a ton of space in GROMs by moving it to a 3rd bank of ROM and from GPL to Assembly.

As such my issue is lack of space in ROMs 1 and 2 that can not be moved or shared to ROM 3 without a complete rewrite as how XB switches ROMs.

How I access ROM 3 is different then how XB auto switches ROMs 1 and 2.

Yes you are correct all the calls for XB are in GPL, none in ROMs.

I would like to keep the lower 4K and only switch the upper 4K banks that way I can add up to 8 banks here is page switcher location:

 

          AORG >6000
          TITL 'XML359'
 
* PAGE SELECTOR FOR PAGE 1
PAGE1  EQU  $                 >6000
C2        DATA 2                 0
* PAGE SELECTOR FOR PAGE 2
PAGE2  EQU  $                 >6002
C7        BYTE >00
CBH7   BYTE >07               2
CBHA   BYTE >0A
CBH94  BYTE >94              4
C40      DATA 40                6
C100    DATA 100              8
C1000  DATA >1000          A
       DATA 0                      C
FLTONE DATA >4001          E

 

I can add up to 8 banks of ROM here >6000 to >600E using the built in XB ROM routine but this next code needs to be fixed:

 

* Determine if and how much ERAM is present
GDTECT MOVB R11,@PAGE1        First enable page 1 ROM
*-----------------------------------------------------------*
* Replace following line      6/16/81                       *
* (Extended Basic must be made to leave enough space at     *
* top of RAM expansion for the "hooks" left by the 99/4A    *
* for TIBUG.)                                               *
*      SETO R0                Start at >FFFF                *
* with                                                      *
*      LI   R0,>FFE7          Start at >FFE7                *
*************************************************************
* RXB 2020 change for PRAM command                          *
       MOV  @RAMTOP,R0        PRAM sets RAMTOP value
*-----------------------------------------------------------*
       MOVB R11,*R0              Write a byte of data
       CB   R11,*R0                 Read and compare the data
       JEQ  DTECT2                  If matches-found ERAM top
*-----------------------------------------------------------*
* Change the following line   6/16/81                       *
*      AI   R0,->2000         Else drop down 8K             *
       LI   R0,>DFFF            Else drop down 8K
*-----------------------------------------------------------*
       MOVB R11,*R0           Write a byte of data
       CB   R11,*R0              Read and compare the data
       JEQ  DTECT2               If matches-found ERAM top
       CLR  R0                      No match so no ERAM
DTECT2 MOV  R0,@RAMTOP        Set the ERAM top
       RT    

 

As you can see this only allows for 2 banks and that is it, I need to make it accommodates 8 banks.

8 banks would be 32K of ROM counting previous ROM 1 and 2 would be 12K so my expansion would be 20K of new ROM.

Currently my ROM 3 is les then 4K in total use.

  • Like 1
  • Thanks 1
Link to comment
Share on other sites

2 hours ago, RXB said:

I would like to keep the lower 4K and only switch the upper 4K banks that way I can add up to 8 banks here is page switcher location:

 

          AORG >6000
          TITL 'XML359'
 
* PAGE SELECTOR FOR PAGE 1
PAGE1  EQU  $                 >6000
C2        DATA 2                 0
* PAGE SELECTOR FOR PAGE 2
PAGE2  EQU  $                 >6002

To switch the upper 4K(using FinalGrom99).

You'll need to use RAM/GROM mode or RAM/GRAM mode.

To do this, the forth Byte of the GPL HEADER needs to be either an ASCII R or X(>52 or >58).

Than write to >6800 and >6802, Vs. >6000 and >6002.

  • Thanks 1
Link to comment
Share on other sites

22 minutes ago, HOME AUTOMATION said:

To switch the upper 4K(using FinalGrom99).

You'll need to use RAM/GROM mode or RAM/GRAM mode.

To do this, the forth Byte of the GPL HEADER needs to be either an ASCII R or X(>52 or >58).

Than write to >6800 and >6802, Vs. >6000 and >6002.

Guess I should have included the XML TABLE as those are the ones that automatically pick which ROM page.

 

      AORG >6000
       TITL 'XML359'
 
* PAGE SELECTOR FOR PAGE 1
PAGE1  EQU  $                 >6000
C2     DATA 2                 0
* PAGE SELECTOR FOR PAGE 2
PAGE2  EQU  $                 >6002
C7     BYTE >00
CBH7   BYTE >07               2
CBHA   BYTE >0A
CBH94  BYTE >94               4
C40    DATA 40                6
C100   DATA 100               8
C1000  DATA >1000             A
       DATA 0                 C
FLTONE DATA >4001             E
*************************************************************
* XML table number 7 for Extended Basic - must have         *
*     it's origin at >6010                                  *
*************************************************************
*           0      1      2      3      4      5     6
       DATA COMPCG,GETSTG,MEMCHG,CNSSEL,PARSEG,CONTG,EXECG
*           7      8    9     A    B    C      D
       DATA VPUSHG,VPOP,PGMCH,SYMB,SMBB,ASSGNV,FBSYMB
*             E     F
       DATA SPEED,CRNSEL
*************************************************************
* XML table number 8 for Extended Basic - must have         *
*     it's origin at >6030                                  *
*************************************************************
*           0   1      2    3      4  5     6      7
       DATA CIF,CONTIN,RTNG,SCROLL,IO,GREAD,GWRITE,DELREP
*           8    9    A      B      C      D      E
       DATA MVDN,MVUP,VGWITE,GVWITE,GREAD1,GWITE1,GDTECT
*           F
       DATA PSCAN
 
* Determine if and how much ERAM is present
GDTECT MOVB R11,@PAGE1        First enable page 1 ROM
*-----------------------------------------------------------*
* Replace following line      6/16/81                       *
* (Extended Basic must be made to leave enough space at     *
* top of RAM expansion for the "hooks" left by the 99/4A    *
* for TIBUG.)                                               *
*      SETO R0                Start at >FFFF                *
* with                                                      *
*      LI   R0,>FFE7          Start at >FFE7                *
*************************************************************
* RXB 2020 change for PRAM command                          *
       MOV  @RAMTOP,R0        PRAM sets RAMTOP value
*-----------------------------------------------------------*
       MOVB R11,*R0           Write a byte of data
       CB   R11,*R0           Read and compare the data
       JEQ  DTECT2            If matches-found ERAM top
*-----------------------------------------------------------*
* Change the following line   6/16/81                       *
*      AI   R0,->2000         Else drop down 8K             *
       LI   R0,>DFFF          Else drop down 8K
*-----------------------------------------------------------*
       MOVB R11,*R0           Write a byte of data
       CB   R11,*R0           Read and compare the data
       JEQ  DTECT2            If matches-found ERAM top
       CLR  R0                No match so no ERAM
DTECT2 MOV  R0,@RAMTOP        Set the ERAM top
       RT                     And return to GPL
CNSSEL LI   R2,CNS
       JMP  PAGSEL
CRNSEL LI   R2,CRUNCH
* Select page 2 for CRUNCH and CNS
PAGSEL INCT @STKADD           Get space on subroutine stack
       MOVB @STKADD,R7        Get stack pointer
       SRL  R7,8              Shift to use as offset
       MOVB R11,@PAD0(R7)     Save return addr to GPL interpeter
       MOVB @R11LB,@PAD1(R7)
       MOVB R11,@PAGE2        Select page 2
       BL   *R2               Do the conversion
       MOVB R11,@PAGE1        Reselect page 1
       MOVB @STKADD,R7        Get subroutine stack pointer
       DECT @STKADD           Decrement pointer
       SRL  R7,8              Shift to use as offset
       MOVB @PAD0(R7),R11     Restore return address
       MOVB @PAD1(R7),@R11LB
       RT                     Return to GPL interpeter

 

I have no clue how you could do >6800 unless you to it from GPL like I do now and it is slower then a XML that decides in Assembly.

It appears I might have to just stick with what I have but still add things to ROM 1 and 2 if I can.

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

56 minutes ago, RXB said:

Guess I should have included the XML TABLE as those are the ones that automatically pick which ROM page.

 

      AORG >6000
       TITL 'XML359'
 
* PAGE SELECTOR FOR PAGE 1
PAGE1  EQU  $                 >6000
C2     DATA 2                 0
* PAGE SELECTOR FOR PAGE 2
PAGE2  EQU  $                 >6002
C7     BYTE >00
CBH7   BYTE >07               2
CBHA   BYTE >0A
CBH94  BYTE >94               4
C40    DATA 40                6
C100   DATA 100               8
C1000  DATA >1000             A
       DATA 0                 C
FLTONE DATA >4001             E
*************************************************************
* XML table number 7 for Extended Basic - must have         *
*     it's origin at >6010                                  *
*************************************************************
*           0      1      2      3      4      5     6
       DATA COMPCG,GETSTG,MEMCHG,CNSSEL,PARSEG,CONTG,EXECG
*           7      8    9     A    B    C      D
       DATA VPUSHG,VPOP,PGMCH,SYMB,SMBB,ASSGNV,FBSYMB
*             E     F
       DATA SPEED,CRNSEL
*************************************************************
* XML table number 8 for Extended Basic - must have         *
*     it's origin at >6030                                  *
*************************************************************
*           0   1      2    3      4  5     6      7
       DATA CIF,CONTIN,RTNG,SCROLL,IO,GREAD,GWRITE,DELREP
*           8    9    A      B      C      D      E
       DATA MVDN,MVUP,VGWITE,GVWITE,GREAD1,GWITE1,GDTECT
*           F
       DATA PSCAN
 
* Determine if and how much ERAM is present
GDTECT MOVB R11,@PAGE1        First enable page 1 ROM
*-----------------------------------------------------------*
* Replace following line      6/16/81                       *
* (Extended Basic must be made to leave enough space at     *
* top of RAM expansion for the "hooks" left by the 99/4A    *
* for TIBUG.)                                               *
*      SETO R0                Start at >FFFF                *
* with                                                      *
*      LI   R0,>FFE7          Start at >FFE7                *
*************************************************************
* RXB 2020 change for PRAM command                          *
       MOV  @RAMTOP,R0        PRAM sets RAMTOP value
*-----------------------------------------------------------*
       MOVB R11,*R0           Write a byte of data
       CB   R11,*R0           Read and compare the data
       JEQ  DTECT2            If matches-found ERAM top
*-----------------------------------------------------------*
* Change the following line   6/16/81                       *
*      AI   R0,->2000         Else drop down 8K             *
       LI   R0,>DFFF          Else drop down 8K
*-----------------------------------------------------------*
       MOVB R11,*R0           Write a byte of data
       CB   R11,*R0           Read and compare the data
       JEQ  DTECT2            If matches-found ERAM top
       CLR  R0                No match so no ERAM
DTECT2 MOV  R0,@RAMTOP        Set the ERAM top
       RT                     And return to GPL
CNSSEL LI   R2,CNS
       JMP  PAGSEL
CRNSEL LI   R2,CRUNCH
* Select page 2 for CRUNCH and CNS
PAGSEL INCT @STKADD           Get space on subroutine stack
       MOVB @STKADD,R7        Get stack pointer
       SRL  R7,8              Shift to use as offset
       MOVB R11,@PAD0(R7)     Save return addr to GPL interpeter
       MOVB @R11LB,@PAD1(R7)
       MOVB R11,@PAGE2        Select page 2
       BL   *R2               Do the conversion
       MOVB R11,@PAGE1        Reselect page 1
       MOVB @STKADD,R7        Get subroutine stack pointer
       DECT @STKADD           Decrement pointer
       SRL  R7,8              Shift to use as offset
       MOVB @PAD0(R7),R11     Restore return address
       MOVB @PAD1(R7),@R11LB
       RT                     Return to GPL interpeter

 

I have no clue how you could do >6800 unless you to it from GPL like I do now and it is slower then a XML that decides in Assembly.

It appears I might have to just stick with what I have but still add things to ROM 1 and 2 if I can.

Here’s how I switch banks in Stevie on the FG99:

https://github.com/MirrorPusher/Stevie/blob/master/src/modules/rom.farjump.asm

 

To get the bigger picture, look at the files with the rom prefix (e.g. rom.vectors.bankX.asm and rom.stubs.bankX.asm)

https://github.com/MirrorPusher/Stevie/tree/master/src/modules

 

Forgot to mention that I run the trampoline function itself from RAM at >3000

https://github.com/MirrorPusher/Stevie/blob/master/src/modules/ram.resident.3000.asm

 

Switching banks itself is not complicated, the challenge is more that after switching banks you need to have the PC on an address where it continues doing something useful. So either program code need to be very properly alligned or you switch banks while the PC is in RAM (or in the part of ROM bank that is not switched).

 

 

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

That is freaking huge to switch banks you are using.

That is like 168 bytes you are using and the one I need to cut down presently in ROM is 106 bytes.

But I am including the >6010 and >6030 XML tables for ROM 1 and 2, so I need something that is around 40 bytes in size.

 

I can switch from GPL like I am doing now for ROM 3 bank and could do it for other banks, just would prefer Assembly for speed.

Currently I have found about 27 bytes free I can use by using bytes already exist example like >A000 is used by AI  R1,>A000

and I can replace  the DATA >A000 with that address instead with a label. 

I am thinking if I move some stuff around like there are 2 routines in ROM 1 and 2 that are only ever called 1 time by XB that is

another 12 bytes giving me 39 bytes so close to that 40 bytes I need.

 

Using GPL I can switch banks by using ST  >60,@>6000 or ST >60,@>6002 or ST >60,@>6004 yes slower but it looks like this

ST   >60,@>6004 * ROM 3 Bank

XML HCHAR          * Assembly version of HCHAR

ST  >60,@>6000  * ROM 1 Bank

 

This only takes 8 bytes of GROM.

 

 

  • Like 4
  • Thanks 2
Link to comment
Share on other sites

Yes, the code is not optimized for space. Premature optimisation is the root of all evil.?

 

With the FG99 there’s so much space it does not make sense for me to do that much space optimisation. At least not while the program is very much still a work in progress.

More of a concern was to get things working properly and stable. Space optimisation can happen once it is stable.

 

Anyway, the way the trampoline works is that you have 32 vectors per bank, so you can have up to 32 routines per bank you can call.

There is also stacking,  you can basically have a call chain like: bank1.funcA -> bank2.funcB -> bank1.funcC and safely return.

The trampoline function all takes care of that, so the individual subroutines do not need to keep track of where they came from (saving some space there).

 

Having said all that, obviously for your extended basic rewrite you don’t want to have such routine in place.

It could be much simpler as you pointed out. Only wanted to get the idea accross.

  • Thanks 2
Link to comment
Share on other sites

3 hours ago, OLD CS1 said:

@RXB's version of Extended BASIC adds a butt-tonne of new useful features, and his project right now is to also make it faster than any other release of XB on the 99/4A.

Thank you but that is kind of not accurate, it will be faster version of XB 110 expanded like GKXB but will not be the fastest one.

To be much more accurate it would be faster then previous versions of same code, there are other XB out there faster, but not 100% backwards compatible.

Also only RXB can run any TI Basic programs or XB programs as the modifications allows this that other XB's do not have.

Now that part is the factual faster part that RXB can say without a doubt.

  • Thanks 1
Link to comment
Share on other sites

5 hours ago, SkyPilot said:

How will this benefit the end user?

My answer is RXB is FREEWARE so the source code can benefit everyone.

This includes the GPL and ROM source code.

 

Everyone benefits with OPEN SOURCE unlike most Computer Hardware/Software that is proprietary.

  • Like 4
  • Thanks 1
Link to comment
Share on other sites

1 hour ago, RXB said:

Also only RXB can run any TI Basic programs or XB programs as the modifications allows this that other XB's do not have.

Now that part is the factual faster part that RXB can say without a doubt.

There are at least two other XB's that can do this:

Winfred Winkler's XB3

XB 2.8 G.E.M.

  • Like 2
Link to comment
Share on other sites

I am flattered that XB3 used many of my concepts and sometimes duplicated them entirely.

Tony did much the same so again flattered I could help them.

Tony and I had many phone calls and exchanges before XB 2.3 was introduced.

 

 

 

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

5 hours ago, RXB said:

I am flattered that XB3 used many of my concepts and sometimes duplicated them entirely.

Tony did much the same so again flattered I could help them.

Tony and I had many phone calls and exchanges before XB 2.3 was introduced.

 

 

 

Actually, in Winfried Winkler's case, he was inspired by the original GKXB files from Danny Michael (on the GK Utilities 1 disk, a copy of which showed up in the library of another Berlin user shortly after it was released as he had a GRAM Kracker), subtracting (or modifying) routines he didn't like and adding his own material from there to develop XB3. Your modifications to XB were completely unknown in Europe at the time he was developing it (though they did show up a year or so after I beta tested his original version). Europeans mostly went their own way with GRAM software, with significant enhancements built into modified Editor/Assembler GRAMs, some of which also made it into XB3. As a lot of desired European features mirrored the desired features on the North American side, many of the most interesting features appeared independently on both continents.

  • Like 4
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...