Jump to content

Photo

That's why TI BASIC is so slow!


177 replies to this topic

#26 senior_falcon OFFLINE  

senior_falcon

    Dragonstomper

  • 862 posts
  • Location:Lansing, NY, USA

Posted Fri Apr 14, 2017 5:03 AM

 

 

GPL Assembler says unknown symbol in line 743 so how the hell do I know where line 743 is in a PC NotePad text file?

(I do not like Notepad + or Notepad 2 as they attempt to make everything a NotePad + or NotePad 2 file.)

1-Notepad shows the line and column numbers in the lower right corner.  (At least with XP - I dunno about windows 7 and 10 - sometimes Microsoft removes features)

2-I love Notepad++.  I don't know what a NotePad or Notepad 2 file is.  The files I save default to .TXT files that are perfectly compatible with Notepad and Classic99.  If that is not your experience there must be a setting that needs to be changed.  It seems to me that I had to make a change so everything wasn't jumbled together on one line.



#27 RXB OFFLINE  

RXB

    River Patroller

  • 2,651 posts
  • Location:Vancouver, Washington, USA

Posted Fri Apr 14, 2017 5:08 AM

I could make the entire Module in one pass by chaining the files and it would  14 inches thick on paper, well at least it was in RXB version 2001 and has gotten bigger since then.

RXB 2001 was FIVE  3 ring binders biggest about 4 inches and smallest 3 inches thick.

 

Problem was it took hours to assemble even in Classic99.

 

So I cut it back to one Text file per each GROM. The XB ROMs are going to make it worse.

 

Like I said after I am done with SAMS RXB and normal RXB upgrades I will make a RAM version of TI Basic using the SAMS, that should really speed it up.

 

All of these should be fully backwards compatible except of course if the XB programs are expecting strings or stack or symbols in VDP RAM.



#28 RXB OFFLINE  

RXB

    River Patroller

  • 2,651 posts
  • Location:Vancouver, Washington, USA

Posted Fri Apr 14, 2017 5:12 AM

1-Notepad shows the line and column numbers in the lower right corner.  (At least with XP - I dunno about windows 7 and 10 - sometimes Microsoft removes features)

2-I love Notepad++.  I don't know what a NotePad or Notepad 2 file is.  The files I save default to .TXT files that are perfectly compatible with Notepad and Classic99.  If that is not your experience there must be a setting that needs to be changed.  It seems to me that I had to make a change so everything wasn't jumbled together on one line.

 

Yea Notepad works fine for me and no need for a special version. I can use TIDIR to do what I need and do not need special setup to load disks as I just use the TI filesystem.

Besides I have to much crap loaded on my computer now.



#29 BJGuillot OFFLINE  

BJGuillot

    Star Raider

  • 51 posts

Posted Sat Apr 15, 2017 9:46 AM

How does the speed of Cortex BASIC compare to TI BASIC? I believe Cortex runs from a ROM cartridge (so no GROM and GPL bottlenecks), but not sure if it runs just off VDP RAM or uses 32KB expanded memory. Also, not sure if it uses floating point for all variables or if it has integer specific variable support.

I don't really know much about it and might have details wrong, but it could be a useful data point to understand what is really causing TI BASIC to be so slow.

#30 Stuart OFFLINE  

Stuart

    Dragonstomper

  • 668 posts
  • Location:Southampton, UK

Posted Sat Apr 15, 2017 10:32 AM

BJGuillot, on 15 Apr 2017 - 4:46 PM, said:

How does the speed of Cortex BASIC compare to TI BASIC? I believe Cortex runs from a ROM cartridge (so no GROM and GPL bottlenecks), but not sure if it runs just off VDP RAM or uses 32KB expanded memory. Also, not sure if it uses floating point for all variables or if it has integer specific variable support.

I don't really know much about it and might have details wrong, but it could be a useful data point to understand what is really causing TI BASIC to be so slow.

 

Cortex BASIC uses CPU RAM/ROM and needs 32K extended memory. Integer values in the range -32768 to +32767 are stored internally in an integer format, otherwise floating point format is used (you can't specifically define a variable as an integer).

 

Cortex BASIC is **very roughly** 1.5 times the speed of XB. There's a little bit of benchmarking in this thread: http://atariage.com/...lumn/?p=3376857. There's a bit about benchmarks using the 'top hat graph' here as well: http://atariage.com/...mode/?p=3183359. All very non scientific as two BASICs can't run the exact same BASIC program ...



#31 RXB OFFLINE  

RXB

    River Patroller

  • 2,651 posts
  • Location:Vancouver, Washington, USA

Posted Sat Apr 15, 2017 10:34 AM

How does the speed of Cortex BASIC compare to TI BASIC? I believe Cortex runs from a ROM cartridge (so no GROM and GPL bottlenecks), but not sure if it runs just off VDP RAM or uses 32KB expanded memory. Also, not sure if it uses floating point for all variables or if it has integer specific variable support.

I don't really know much about it and might have details wrong, but it could be a useful data point to understand what is really causing TI BASIC to be so slow.

LOL does anyone here use GPL as much as me?

 

"TI BASIC HAS NO ASSEMBLY ROUTINES FOR DEALING WITH INTERPRETATION OF BASIC CODE!"  (All written in GPL and only uses VDP for Storage.)

 

XB has 12K of Assembly that deals with Prescan, Fetch and Interprets XB code and returns to GPL.

XB also has Assembly routines that skip code or look for symbols or tables or rearranges memory.

 

TI Basic has very few like this at all and a Prescan in TI Basic 24K in size would be really slow as it is all done in GPL from VDP memory only.

TI Basic has no Assembly to skip tokens or look for symbols or tables. It does have some but they are much fewer and in the ROM 0 of the console.

 

12K of Assembly in XB vs 2K of Assembly in TI BASIC.



#32 Airshack OFFLINE  

Airshack

    Moonsweeper

  • Topic Starter
  • 419 posts
  • Location:Phoenix, AZ

Posted Wed Apr 19, 2017 9:48 AM

Several BASICS of the era supported straight integers as well as numerics... I believe they used the % symbol to indicate an integer variable or array.
 
I think the worst problem with the architecture is just the (near) lack of CPU memory. I understand why all the RAM was in the VDP only; memory was expensive at the time.
 
The memory issue cropped up even with cartridges as well. I know that several of TI's attempts to get commercial software produced for the TI failed in part because they demanded the 3rd party try and fit everything in the 8K memory slot for cartridges. In particular, Zaxxon was right out.


Wondering where you got this Zaxxon story? Interesting.


Sent from my iPhone using Tapatalk

#33 Airshack OFFLINE  

Airshack

    Moonsweeper

  • Topic Starter
  • 419 posts
  • Location:Phoenix, AZ

Posted Wed Apr 19, 2017 10:11 AM

And not on a TI Console, you have to use a PC and then you can run it on the TI99/4A or a Emulator.
 
I use Classic99 myself using text and using TIDIR99 to put into a TI DV80 Source file, then assemble it in Editor Assembler.
Most of what I do could be done on the TI instead, you are on the other hand have to use the PC.
 
Point is it is not TI in anyway it is all Emulation of TI.
Fine you can do that but do not pretend it is the same as using a real TI99/4A, and I do realize I am using a emulator not real hardware.


I'd suggest that the non-TI hardware emulation development via a PC is the way to go in 2017. You can't use your TI on an airplane, and the PC has many modern editors (and other tools) which make it FAR SUPERIOR to developing on vs our wonderful yet tedious 1979 hardware's programming environment.

Coding for the TI with a PC emulator is not at all pretending. It's simply an improved and powerful way to get more software into the system.








Sent from my iPhone using Tapatalk

#34 Airshack OFFLINE  

Airshack

    Moonsweeper

  • Topic Starter
  • 419 posts
  • Location:Phoenix, AZ

Posted Wed Apr 19, 2017 10:15 AM

1-Notepad shows the line and column numbers in the lower right corner.  (At least with XP - I dunno about windows 7 and 10 - sometimes Microsoft removes features)
2-I love Notepad++.  I don't know what a NotePad or Notepad 2 file is.  The files I save default to .TXT files that are perfectly compatible with Notepad and Classic99.  If that is not your experience there must be a setting that needs to be changed.  It seems to me that I had to make a change so everything wasn't jumbled together on one line.


Notepad++ shows line and column numbers on Windows 10. Great editor!


Sent from my iPhone using Tapatalk

#35 Airshack OFFLINE  

Airshack

    Moonsweeper

  • Topic Starter
  • 419 posts
  • Location:Phoenix, AZ

Posted Wed Apr 19, 2017 10:20 AM

 
Cortex BASIC uses CPU RAM/ROM and needs 32K extended memory. Integer values in the range -32768 to +32767 are stored internally in an integer format, otherwise floating point format is used (you can't specifically define a variable as an integer).
 
Cortex BASIC is **very roughly** 1.5 times the speed of XB. There's a little bit of benchmarking in this thread: http://atariage.com/...lumn/?p=3376857. There's a bit about benchmarks using the 'top hat graph' here as well: http://atariage.com/...mode/?p=3183359. All very non scientific as two BASICs can't run the exact same BASIC program ...


Harry Wilhelm's Compiled basic runs one of my benchmark BASIC programs (with Sprites and dynamic on screen text and graphing) in excess of 25X faster than regular XB.

Seems like GAME OVER for all the other BASIC variants?


Sent from my iPhone using Tapatalk

#36 RXB OFFLINE  

RXB

    River Patroller

  • 2,651 posts
  • Location:Vancouver, Washington, USA

Posted Wed Apr 19, 2017 11:09 AM

Harry Wilhelm's Compiled basic runs one of my benchmark BASIC programs (with Sprites and dynamic on screen text and graphing) in excess of 25X faster than regular XB.

Seems like GAME OVER for all the other BASIC variants?


Sent from my iPhone using Tapatalk

Wen Complied XB can do some of the stuff RXB can do I will be impressed.

 

Full SAMS support.

Full SCSI/WDS/IDE Support Except Format a Hard Drive.

Will run TI Basic without any modifications even using characters 15 & 16 normally in XB forbidden as this collides with sprite table.

Built in Editor Assembler Cart. (REA)

CRU access using CALL IO command with many demos doing device interface control, music auto play in background using VDP.

Ability to save Lower 8K in Program Image format being much quicker to load or save then normal XB methods. (CALL BSAVE and CALL BLOAD)

And a host of other subroutines only found in RXB.

https://www.youtube....RFCtNv5_xMuOqQw



#37 matthew180 OFFLINE  

matthew180

    River Patroller

  • 2,375 posts
  • Location:Castaic, California

Posted Wed Apr 19, 2017 11:14 AM

LOL does anyone here use GPL as much as me?
...

I think you are the keeper of the GPL torch.



#38 Airshack OFFLINE  

Airshack

    Moonsweeper

  • Topic Starter
  • 419 posts
  • Location:Phoenix, AZ

Posted Wed Apr 19, 2017 11:19 AM

It appears I have much to learn about this RXB! The best part about this hobby is there's always more to learn.

Apparently it's an apples to oranges comparison with regard to the highly capable RXB.

My earlier "GAME OVER" post requires clarification: Compiled BASIC and XB256 spell GAME OVER for TI BASIC and Extended BASIC.

That speed gain is too much to ignore. Not having to learn GPL or Assembly to write speedy code is nothing short of epic for this hobbyist.




Sent from my iPhone using Tapatalk

Edited by Airshack, Wed Apr 19, 2017 11:19 AM.


#39 --- Ω --- OFFLINE  

--- Ω ---

    --- Ω ---

  • 10,183 posts
  • TI-99/4A Fanatic
  • Location:In the den playing with my FinalGROM 99!

Posted Wed Apr 19, 2017 11:30 AM

I guess it all comes down to the specific needs, wants and requirements of an individual at the moment Rich.  For example if I want to play a simple game, or use any of the other pre-existing E/A 5 or FG99 compatible program, I care more about the programs speed of execution than I do about the capabilities of the host environments support features.  

 

I have a question for you, are any of these extra commands and features inside of your RXB supported by any of the compilers currently available?  If so, it might be a nice environment to code in before compiling into a finished product.



#40 RXB OFFLINE  

RXB

    River Patroller

  • 2,651 posts
  • Location:Vancouver, Washington, USA

Posted Wed Apr 19, 2017 8:13 PM

I guess it all comes down to the specific needs, wants and requirements of an individual at the moment Rich.  For example if I want to play a simple game, or use any of the other pre-existing E/A 5 or FG99 compatible program, I care more about the programs speed of execution than I do about the capabilities of the host environments support features.  

 

I have a question for you, are any of these extra commands and features inside of your RXB supported by any of the compilers currently available?  If so, it might be a nice environment to code in before compiling into a finished product.

No some examples only in RXB are:

CALL AMSBANK  switches SAMS banks in lower 8K from XB 2 4K pages at a time. Additionally AMSMAP, AMSPASS, ASMON, AMSOFF all control SAMS access.

CALL BLOAD and CALL BSAVE save Lower 8K to Program Image format which is much faster then any other way of loading he lower 8K, especially for SAMS access.

CALL CAT or CALL DIR both can catalog multiple drives in one command. As far as I know no other XB has this feature.

CALL COINC, CALL CHAR, CALL COLOR, CALL DISTANCE, CALL GCHAR, CALL HCHAR, CALL VCHAR all do something no other XB can do, a comma at end allows multiple calls to same command. Every other XB makes you put a new line for each time you need something done.

i.e. CALL COINC(#2,#3,tolerance,variable,#8,dotrow,dotcol,tolarance,variable,ALL,variable) ! no other XB can do this.

CALL FCOPY that will copy files from one device to another.

CALL XBPGM("DSK#.Filename",1) ! does a NEW, does a CALL FILES(1) then loads a XB program like RUN "DSK#.Filename" but this is done in one command.

CALL HGET or CALL VGET fetch off screen a string into a string variable. Much like a CALL GCHAR but does it multiple times.

CALL HPUT or CALL VPUT puts a string onto screen but unlike DISPLAY AT only uses 28 columns these use 32 columns.

CALL IO allows CRU direct control or access from XB, or play music lists from GPL or VDP and I did GPL video demos of this in my GPL HOW 2 videos.

CALL ISROFF or CALL ISRON that allows you from XB to turn on and off ISR HOOK and did a demo of this show running multiple unrelated Assembly from one XB program all from Lower 8K.

CALL ONKEY basically a version of CALL KEY but is like it has a IF true THEN  and ON variable GOTO built into one command.

CALL MKDIR that will make Directories on Hard Drives.

CALL MOVES that moves any type of memory to any type of memory of any size from a XB command. Many demos of this have been done.

CALL POKER that loads  VDP Registers with the values you want. Must be careful with this one to not change memory locations to much.

CALL RENAME that will not only rename files but Directories on hard drives.

CALL RMDIR that will remove Directories from a Hard Drive.

CALL RMOTION that reversed the direction of a sprite or multiple sprites or even all the sprites. Demos of this on video.

CALL SECTOR that allows from XB to read or write sectors on DISK or Hard Drives. Up to 8K of Sectors read or written into Lower 8K, so using SAMS you could do almost 1 Meg at a time read/write sectors.

CALL SIZE or SIZE reports size of SAMS, amount of Lower 8K assembly space and normal XB memory.

CALL USER the most powerful part of RXB that is a FILE CONTROL similar to DOS but can do anything you can do in XB even load and run multiple XB programs with assembly support.

 

I have done videos on almost all of these and the RXB Demo videos show most of these way back in 2001, since then more changes have occurred.


Edited by RXB, Wed Apr 19, 2017 8:43 PM.


#41 --- Ω --- OFFLINE  

--- Ω ---

    --- Ω ---

  • 10,183 posts
  • TI-99/4A Fanatic
  • Location:In the den playing with my FinalGROM 99!

Posted Wed Apr 19, 2017 8:34 PM

Definitely looks like a powerhouse for those wanting to program or run from within that environment.  Once I finally get a program written, I kind of have my heart set on slapping the program on the FG99 with everything else for quick and easy execution, but that will require compiling it first.  I'll want to share what I've developed as well, so for the widest audience possible, it'll have to be in a format most people can use.


  • RXB likes this

#42 sometimes99er ONLINE  

sometimes99er

    River Patroller

  • 3,851 posts
  • Location:Denmark

Posted Wed Apr 19, 2017 10:29 PM

I have a question for you, are any of these extra commands and features inside of your RXB supported by any of the compilers currently available?

 

I would like to add that XB256 also has a string of extra commands (mostly directed at the game developer). These new commands also compiles. You'll be able to have independent screens, more characters, windows, character and pixel scrolling, play sound lists and more.

 

;)

 



#43 --- Ω --- OFFLINE  

--- Ω ---

    --- Ω ---

  • 10,183 posts
  • TI-99/4A Fanatic
  • Location:In the den playing with my FinalGROM 99!

Posted Wed Apr 19, 2017 10:48 PM

Yes, XB256 has been on my radar lately... and will probably be on quite a few other peoples too after the 29th... but I probably should not have even said that...  stay tuned.  



#44 Airshack OFFLINE  

Airshack

    Moonsweeper

  • Topic Starter
  • 419 posts
  • Location:Phoenix, AZ

Posted Wed Apr 19, 2017 10:55 PM

I think you are the keeper of the GPL torch.


Matt's TIdBiT is extremely important to the modern BASIC workflow as well. I wouldn't code in any BASIC without exploiting the power of this wonderful BASIC code translator.


Sent from my iPad using Tapatalk

#45 sometimes99er ONLINE  

sometimes99er

    River Patroller

  • 3,851 posts
  • Location:Denmark

Posted Thu Apr 20, 2017 12:56 AM

My earlier "GAME OVER" post requires clarification: Compiled BASIC and XB256 spell GAME OVER for TI BASIC and Extended BASIC.

That speed gain is too much to ignore. Not having to learn GPL or Assembly to write speedy code is nothing short of epic for this hobbyist.

  
I guess many people could state:
Modern computers spell GAME OVER for the TI-99/4A Home Computer.
 
We come here to play with the TI-99/4A for different reasons. That may be writing TI BASIC and Extended Basic (XB) programs.
 
Yes, TI BASIC is slow. Also compared with many popular computers at the time.
 
Some are purists, more or less. Will it be original unexpanded hardware, emulation or something else.
 
Instead of compiling, you can turn on CPU Overdrive in Classic99. You may then notice that certain things misbehave relative to objective.
 
You may compile, but many programs won't compile, and those that do often fail or misbehave. Already there, it's not just GAME OVER.
 
When compiling, TI BASIC and XB programs often have to be adjusted. It does however open a new world of possibilities considering the speed gain alone. If you take advantage of speed and perhaps new facilities, you'll soon discover you are rewriting more than just adjusting. It's all fine. But again, it's not just GAME OVER. With other words, compiling is not just writing code as you know it, - but it's close.

 
You have to measure your level and success with your goals and time available. AtariAge member tibasic has done some amazing stuff lately in just that, TI BASIC.

 

x1f609.png.pagespeed.ic.wF21YceKxu.png


Edited by sometimes99er, Thu Apr 20, 2017 1:06 AM.


#46 --- Ω --- OFFLINE  

--- Ω ---

    --- Ω ---

  • 10,183 posts
  • TI-99/4A Fanatic
  • Location:In the den playing with my FinalGROM 99!

Posted Thu Apr 20, 2017 8:45 AM

Speaking of compiling stuff... I've noticed The Missing Link and XB256D are written by the same author....

Will stuff written under TML 2.0 also compile using the XB256 compiler?



#47 senior_falcon OFFLINE  

senior_falcon

    Dragonstomper

  • 862 posts
  • Location:Lansing, NY, USA

Posted Thu Apr 20, 2017 9:11 AM

No, The Missing Link is not compatible with the compiler.  At one time I was debating whether to expand the compiler from TI BASIC only and incorporate the routines from The Missing Link instead of going with normal XB.  But it didn't happen.



#48 Airshack OFFLINE  

Airshack

    Moonsweeper

  • Topic Starter
  • 419 posts
  • Location:Phoenix, AZ

Posted Thu Apr 20, 2017 9:24 AM

I was speaking mostly about program development in BASIC on the TI, not old programs.

The current day TI BASIC programmer has the option to compile code within: Regular TI BASIC, Extended BASIC, and XB256. So no, BASIC is not dead.

GAME OVER?

All three of these compile as long as you follow just a few rules (restrictions) dealing mainly with IF-THEN logic.

The Wilhelm compiler allows the BASIC programmer to run code 20-50X faster than usual! Also, it has many routines to enhance Extended BASIC.

Example: The game programmer can now code in BASIC and expect reasonably good collision detection vs abysmal collision detection in interpreted (slow assed) BASIC. That's a MAJOR game changer!

Old School Rule: "In order to write a really good graphic based game you need to code it in something other than BASIC or Extended BASIC because they're too slow on the TI."

Harry's compiler shatters that rule!

Let's say you're writing a new game and you haven't yet learned Assembly Language. Are you going to want to use the compiler and XB256 extensions?

XB256 enhancements are all coded in fast Assembly (not GPL) to include:

Two unique screens with unique character definitions (112 characters for screen one, 256 for screen two).

Seamless toggling between screens!

Room for defining 28 double-sized sprites and still room for 256 additional characters for screen graphics!

Scrolling of characters: up, down, left and right.

Scrolling in windows.

Scrolling by individual pixels!

Compressed string writes to VDP.

Auto-playing of sound lists in VDP RAM.

The list goes on and on....

The days of having to climb Mount Assembler in order to accurately manage game Sprites have come to an end with this compiler. It's at very least a GAME CHANGER!

Sure, one can always do better with Assembly Language programming. The BASIC compiler significantly empowers the less advanced coders is all!'

The return on your investment here is significant!

When coupled with Module Creator 2.0 you can even produce ROMs (.bin) for use with FlashROM99. Why not?

Purists shouldn't be concerned because this is all still used for producing TI-only software. The ultimate goal is getting the code to run on real TI hardware.

I maintain....GAME OVER!



Sent from my iPhone using Tapatalk

#49 --- Ω --- OFFLINE  

--- Ω ---

    --- Ω ---

  • 10,183 posts
  • TI-99/4A Fanatic
  • Location:In the den playing with my FinalGROM 99!

Posted Thu Apr 20, 2017 9:25 AM

No, The Missing Link is not compatible with the compiler.

 

Bummer!



#50 senior_falcon OFFLINE  

senior_falcon

    Dragonstomper

  • 862 posts
  • Location:Lansing, NY, USA

Posted Thu Apr 20, 2017 12:00 PM

Rich, did you realize that XB256 should be fully compatible with RXB, except that you cannot do anything to alter the 8K low memory, as that is where the XB256 routines reside.  Other than that, the two make a killer combination. 






0 user(s) are browsing this forum

0 members, 0 guests, 0 anonymous users