Jump to content
IGNORED

looking for guidance on choosing a programming language for project.


broettger

Recommended Posts

I have not really programmed on my TI since the 80's when I was a kid. Back then it was mostly typing in BASIC games from magazines or books. It was then that I decided to go to college and get a degree in Computer Science and I have made a living as a programmer ever since.

 

Anyway, I have just recently pulled my TI's out of storage and started messing around with them again after I found the forums here on AtariAge. I have been reviewing the info here and on Ninerpedia about the various programming languages available. While the information is good, I haven't found a good resource that would lead me to pick any one language over another. The information has been good, but I just end up with more questions than answers.

 

Is it all just personal preference? or is there some features or functionality that would lead me to pick a certain language? I know this answer would be different based on the type of program I wanted to create. For example an arcade or platformer game vs a terminal emulator or FTP client. What about execution speed or development libraries? Why would I want to use GPL ,Assembly or one of the versions of Forth vs one of the newer Extended Basic variants? If I want to take advantage of the F18A, would any of them be better suited to that? So many questions.

 

My personal preference would be to have some type of matrix with info on all of the available languages where you could quickly compare them. Perhaps I will need to put one together and share it.

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

GPL allows you to put a 40K program into a cartridge (along with several 8K banks of ROM containing Assembly--currently the banking limit on a board with GROM capability is 64 banks, but if you want an Assembly only board, you could go to 256 banks on existing cartridge board hardware. Several trampoline routines have been developed to help make bank switching easier.

 

You could also program a lot of nice things in Forth (several currently supported flavors exist), C, UCSD Pascal, Turbo Pasc-99, Logo, 99-FORTRAN, or BASIC (again, lots of currently supported flavors). I would say the real limiter is the type of programming you are comfortable with as opposed to feature sets, as most of them will do what you need them to do.

 

We only have two folks out there doing programming in GPL, so that is one that needs some programmer love, especially as it is a programming language unique to our machine.

Link to comment
Share on other sites

In my experience, some suitable combination of a useful higher level language and assembly works best. It's often difficult to do everything the best way in high level, and it's unnecessary to spend the time to do everything in assembly.

 

Back in the 80's, when I used my TI a lot, Pascal provided the best overall development environment. But it was also expensive to acquire, so not many actually did.

Link to comment
Share on other sites

In my experience, some suitable combination of a useful higher level language and assembly works best. It's often difficult to do everything the best way in high level, and it's unnecessary to spend the time to do everything in assembly.

 

Back in the 80's, when I used my TI a lot, Pascal provided the best overall development environment. But it was also expensive to acquire, so not many actually did.

 

 

I like that approach as well.

 

And it is worth noting that since the 1980s things have improved. :-)

 

Most notably for the casual programmer there are excellent BASIC compilers available that give you the performance you were craving from TI BASIC back in the day with just a little more complexitiy.

Link to comment
Share on other sites

For what it's worth, I think Forth would be the ideal high level language to use. It's runs at near assembly speeds, it is very flexible, and if you need to allows for easy assembly embedding. There is definitely a learning curve, but it's more related to the mindset change of thinking in terms of stack and the reverse Polish notation than difficulty with the language itself. That said, if you have any experience programming an HP calculator, then you will be right at home.

 

Personally however, I have a very weak spot for Pascal even though many might retch at the mere thought of it :D Unfortunately it's very cumbersome to use on the TI but it is a full featured implementation comparable to Turbo Pascal 5 on the PC, minus the ease of use. So probably not a good choice for you unless you have an emotional attachment to the language.

 

The easiest way to program for the TI is probably compiled Extended Basic using Harry Willhem's compiler. There are some restrictions, but people are coming up with amazing games with it (check out the tigameshelf.net site under Assembly for some fine examples). Harry has extensively refined the compiler, and that has led to an explosion of new games from programmers proficient only in Extended Basic but historically put off by its inherent slowness. No more!

 

Finally if you know C, then there is limited implementation of it for the TI called c99. It's main issue is that it's not very optimized and memory might become an issue for larger programs. On the other hand, there are now PC based cross-compilers that can take C code and do a very decent compilation into TMS9900 machine language. Tursi, Rasmus et al can give you all the gory details on this one.

 

I should also mention that there is a Fortran package available for the TI as well. I have never used it even though I own a copy. It's on my list of things to try, but I have developed an acute aversion to Fortran ever since high school. I am going to blame the teacher and the horrendous textbook he had us use (I still have it and it still induces a mild feeling of nausea when I accidentally glance at it), but it could also have been just me :) I don't know of anyone ever coming up with a program using it. Someone please correct me here.

 

In other words, you have plenty of options outside of just TI Basic/Extended Basic and in the end it all depends on your inclination and personal masochistic tendencies...

Link to comment
Share on other sites

Welcome back!

 

I have a similar story. I took my TI out of storage when I went back to school in my late 20's to complete my computer science degree. I then wanted to master assembly language, something that had always eluded me as a teenager. And that's what my current project is in.

 

You are correct that the context of your project is important. If you've been away from it awhile, I found the best thing to do is start where you left off. I'd tool around in BASIC and Extended BASIC, maybe take a look at the various programs written here in it.

Link to comment
Share on other sites

I advocate doing everything in FORTH. If you want to experiment with low level features like writing to VDP for sprites or Bitmap mode, it's interactive.


As a teenager, I went that route. FORTH was my second language after BASIC. But constructing large programs in FORTH, especially main loops, was beyond me.

All I did was (bitmap mode) circle drawing routines and typing up code to make bitmap images drawn on graph paper.


I ended up adding bits of assembly to my Extended Basic programs (draw lots of graphics, scroll, do RS232 communications) until I was comfortable migrating everything to

assembly. If I had stuck with FORTH, I might have learned to structure things better.


The thing that bugs me about FORTH now is how to package a program for delivery. I think folks just want to download one file and run it.. TI FORTH has blocks

(entire disk image) and other FORTHs have multiple files. I'm not sure how to transition a FORTH game into the cartridge space either (at the very least this

would still require 32k RAM expansion.)
Link to comment
Share on other sites

 

I advocate doing everything in FORTH. If you want to experiment with low level features like writing to VDP for sprites or Bitmap mode, it's interactive.
As a teenager, I went that route. FORTH was my second language after BASIC. But constructing large programs in FORTH, especially main loops, was beyond me.
All I did was (bitmap mode) circle drawing routines and typing up code to make bitmap images drawn on graph paper.
I ended up adding bits of assembly to my Extended Basic programs (draw lots of graphics, scroll, do RS232 communications) until I was comfortable migrating everything to
assembly. If I had stuck with FORTH, I might have learned to structure things better.
The thing that bugs me about FORTH now is how to package a program for delivery. I think folks just want to download one file and run it.. TI FORTH has blocks
(entire disk image) and other FORTHs have multiple files. I'm not sure how to transition a FORTH game into the cartridge space either (at the very least this
would still require 32k RAM expansion.)

 

Check out Jetpac on the tigameshelf.net under Assembly. I wrote entirely in TurboForth and it is available as a dsk image as well as cartridge. The latter actually included the entire TurboForth language along with the Jetpac executable. Mark Wills figured out how to do this,but it was not trivial.

Link to comment
Share on other sites

Well you can give RXB a shot, it has many improvements over other XB packages:

 

CALL EXECUTE(address) ! Unlike CALL LINK in XB it is faster and does not stack pushing or checking

CALL MOVES('type-memory",number-bytes,from-address,to-address) ! Any size of any type of memory to any type of memory

CALL HPUT(row,col,string or numbers) ! Puts XB DISPLAY AT to shame in speed and uses entire screen

CALL USER("batch-file") ! Makes DOS on a PC look like crap, anything you can type in can been done from a text file.

(Show me a PC DOS file that can re-write itself while running that same file?)

CALL BLOAD("DSK.FILENAME") ! A program image loader for XB Assembly that makes XB CALL LOAD look primitive

CALL CHAR(chr#,string-definition) ! Unlike XB can define characters 30 to 159

CALL COINC(#sprite,#sprite) ! A upgraded version of COINC

CALL FCOPY("DSK.FILE","DSK.FILE") ! Built in File copy program also works with all hard drives types

CALL HGET(row,col,string-variable) ! Ever wanted something better then the single GCHAR routine? This does up to 255 at a time.

CALL IO(type,#bits,address or cru,value) ! This allows control of CRU IO chip, or play songs from VDP or GROM, or control CASSETTE

CALL SECTOR("device-path",read/write-flag,#sectors,sector-string) ! Sector routine that works with hard drives or disks or RAMDISKS

 

Or you can go with GPL and my videos on GPL or RXB:

 

https://www.youtube.com/user/CarbonicHolyPally/videos?view_as=subscriber

Link to comment
Share on other sites

Thanks for the suggestions everyone! I will try several of them out. I think I will start with RXB and look into GPL and some flavor of forth after that since I have never used them before.

I have done plenty of c and Pascal programming in the past, perhaps I will try them out eventually.

 

I have to say that COBOL and FORTRAN would be the only languages that I have no desire to relearn after trying to wipe them from my memory banks for the last 30 years. :_(

  • Like 2
Link to comment
Share on other sites

If you are using any flavor of Basic or Extended Basic, you'll want to use TIdBit, it allows you to program using labels instead of line numbers

 

http://codehackcreate.com/archives/237

 

It is invaluable to me in iterating quickly and making wholesale changes in code order.

 

I set up batch files that run the interpreter and copy the resulting code to clipboard making it easy to paste it into Classic 99.

Link to comment
Share on other sites

I will add my encouragement for using/learning Forth. If you decide to try fbForth 2.0, please let me know to prompt me to finish my upgrade to fbForth 2.0:11, which fixes a bug I introduced in a previous upgrade. I made a few other improvements as well. If you do not want to wait for the upgrade, see the main fbForth thread (see below) posts #1426 for a description of upgrades and #1430 for a copy of the beta version binaries. I apologize for being slow in the upgrade—I just got home from four months in Florida, where I was working on it, but with less vigor than at home.

 

...lee

  • Like 1
Link to comment
Share on other sites

Wouldn't it be fun to use learn to use Forth on the TI99 then take some of that knowledge to the latest computing platforms....now you can..

www.8th-dev.com

 

I know the author of 8th and Aaron is a Forth Grand Master having written an excellent Forth system. (I think it is REVA Forth)

 

8th is a language where he looked at the expectations of modern developers and changed Forth to incorporate the things that people think are essential in a modern language while maintaining the rapid development features of Forth. Concatenitive language, interpreted and compiled, stack based implicit parameter passing etc.

 

He also built the compiler so that you can write one program that can be compiled to run on Windows, OS/X, or Linux.

 

It's a very impressive work.

 

BF

Link to comment
Share on other sites

I would be remiss if I didn't put in a plug for CAMEL99 Forth. :-)

 

I have the system in a state now with version 2 where I am happy to offer it to people who prefer source code in files. It requires that you use the E/A Editor at the moment if you are on real hardware. On Classic99 of course you can past source code into the window.

 

My current project is documenting a set of "training wheels" for TI BASIC programmers who want to try Forth. My thinking is similar to 8th in that I provide a set of files that add "expected" functions to Forth that TI BASIC has for the new Forth user.

 

The Extensions to the language provide Graphics, Sound, Random numbers, Sprites and string functions that replicate TI BASIC's functionality. One simple thing that I remember wishing I had was an INPUT statement. Forth can do this stuff, but it is more like a bunch of Lego blocks that you put together. The training wheels package has a $INPUT and a #INPUT that even BEEP when they run and HONK on a bad #INPUT. :-)

 

The job at hand is creating an instruction manual to document how to use these language extensions with BASIC programs from the TI BASIC manual re-written in Forth but using the training wheels extensions. It's a lot of work. :)

 

I should add that you can accomplish all of these things in FB-Forth and Turbo Forth which are full-featured systems and provide everything you need to created finished programs.

 

CAMEL99's only claim to fame is that it tries to comply with the ANS/ISO Forth standard and it only uses DV80 files for source code like the E/A Package.

 

B

  • Like 2
Link to comment
Share on other sites

Bit of a TI FORTH summit happening late nights at Midwest Gaming Classic. We will be sure to check out Camel FORTH!

 

Thursday: Tour Yerkes Observatory, namesake of YERK (i.e. MOPS) OO FORTH on the Mac II.

 

Friday: set up TI FORTH exhibit, fbFORTH cartridge. Scan pile of newfound old floppies for any lost FORTH code! First public demo of FORTi sidecar.

mini-hackathon. Write a game in FORTH!

 

(My other exhibits include TI LOGO on the original 99/4, games on the F18A, Geneve 9640.)

 

Saturday: talk about FORTH to anyone who will listen as ten thousand folks walk through exhibit hall.

 

We will also play with the TI LaunchPad MSP430FR33 running FORTH variants.

  • Like 1
Link to comment
Share on other sites

Ever thought about a looping video on a monitor in addition to having just a work station for demonstration? Might be able to highlight a lot more things quicker and pick up some additional interest.

Just a thought if you are not already doing something similar.

Beery

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