Jump to content
Willsy

Was GPL a mistake?

Was GPL a mistake?  

21 members have voted

  1. 1. TI BASIC is coded in GPL, an interpreted language. BASIC programs are double interpreted, hence slow. Was it a mistake to implement BASIC in GPL, and did it play a part in the TI

    • Yes, GPL is a terrible idea. What were they thinking?
    • It's a cool idea, but handicaps the machine
    • I love GPL, bring it on!


Recommended Posts

His real life name Bobbitt?

 

Marc, you had an interesting experience with Never-Lander, didn't you?

 

Suffice it to say that I am surprised that the SSGC entries have not shown up in his Ebay store by now. I should not have posted that here but every time that clowns name comes up my eyes go red.... Sorry folks...

 

Marc...

Share this post


Link to post
Share on other sites

ok folks, I have to ask this:

 

Were there any cool arcade games written in GPL ?

 

I mean Munchman, TI invaders, Parsec, ... that's all assembly language.

Is there a good example for a game running in GPL ?

 

 

This brings up memories. Back in the 80's one of our young TI club members got all excited about GPL.

I don't remember the details because I was a kid myself. Guess about 12 years old or so.

I do recall I was very impressed by this university student that got into GPL all the way.

He did little demos that looked pretty cool. Wonder how he did that cause there was hardly

any information available at the time.

Share this post


Link to post
Share on other sites

ok folks, I have to ask this:

 

Were there any cool arcade games written in GPL ?

 

I mean Munchman, TI invaders, Parsec, ... that's all assembly language.

Is there a good example for a game running in GPL ?

 

 

This brings up memories. Back in the 80's one of our young TI club members got all excited about GPL.

I don't remember the details because I was a kid myself. Guess about 12 years old or so.

I do recall I was very impressed by this university student that got into GPL all the way.

He did little demos that looked pretty cool. Wonder how he did that cause there was hardly

any information available at the time.

 

 

I doubt it (although I really have no idea.) It wouldn't make sense to handicap yourself in that manner. The third party games that did have GROM only used it for the cart header info. The TI games used it for data storage. The only people GPL seemed to make sense to was TI ;-) How did this guy execute his GPL ?

Share this post


Link to post
Share on other sites

I thought I read somewhere that ToD was written in GPL? Or did I make that up? Not exactly and "arcade" game, but it fits the part of being "cool". ;-)

 

Matthew

Share this post


Link to post
Share on other sites

I thought I read somewhere that ToD was written in GPL? Or did I make that up? Not exactly and "arcade" game, but it fits the part of being "cool". ;-)

 

Matthew

 

Well, ToD was lang. also, it loaded its real code itself in from disk or tape, it was all GPL interface, but the loaded sections had macro assembly in it. -- As for pure GPL arcade, maybe Zero-Zap would be the earlist one, and "The Attack" was the last. -- The rest of pure GPL modules were education type or home management type. -- Then you have the weird ones like Multiplan which was a GPL runner of P-Code, and Plato another GPL runner of another lang., plus the GPL Text Adventure, another runner for another lang. -- Talk about levels of code, 9900 runs GPL, it runs P-Code, or Text, but hey then did it with Basic, why not other langs.

Share this post


Link to post
Share on other sites

As far as I know, Parker Brothers used GROM's for the graphics storage... at least I think it was mentioned that way in an interview with the original programmer of Tutankham. I suppose the GROM's mainly contained the graphics and maybe the code to initialize the VDP with it, and then the main code of the games ran from the 8K of CPU ROM.

 

As for GROM in general, it wasn't that uncommon to use some form of intermediate language to program systems factory-side. I think even some handheld calculators of the 70's work this way. The Bally Astrocade also has some kind of intermediate language built in which you can use as a programmer - but you can of course also switch to use native Z80 code instead. And many systems, while not having a complete language built in, have a BIOS containing many system routines whose use is encouraged by the manufacturer or enforced in some technical way (for instance, on the Odyssey^2, you can access some hardware features only through the BIOS because using them out of your code would somehow conflict with the CPU adressing space). And those system calls tend to be slow too, which would explain the choppy animation on some of the Colecovision's games. Also, even if assembly is allowed on a machine, some programmers still prefer to use higher languages for ease of programming. I still can remember that some of the games on the Amiga were coded in C instead of assembly, and you could tell because of their poor performance.

 

I think other than for control reasons, TI also tried to optimize for ROM usage since you could implement more functionality in the same ROM space through GPL than you could through Assembler. I also think the 16-bit nature of the TMS9900 made for longer assembly code than you would have on an 8-bit CPU, but of course it also depends on how powerful the commands are, so I'm not sure if this is true.

 

I doubt it (although I really have no idea.) It wouldn't make sense to handicap yourself in that manner. The third party games that did have GROM only used it for the cart header info. The TI games used it for data storage. The only people GPL seemed to make sense to was TI ;-) How did this guy execute his GPL ?

Share this post


Link to post
Share on other sites

A snip from interview in 99'er Magazine ... :)

 

How much of Car Wars and Munch Man did you actually do ?

 

Car Wars and Munch man were basically my own - games that I was responsible for and did the programming on. Car Wars, my first game, was one GROM; that was all programmed in GPL. Prior to actually starting work on the game, I attended GPL classes here and took a couple of weeks just to familiarize myself with the GPL manual and the architecture of the Home Computer. Basically I learned the GPL language by doing the programming for Cars Wars. Similarly, with Munch Man, I learned 9900 code [Assembly Language].

 

Can you give us an account of the evolution of Car Wars from idea to finished program ?

 

In a lot of these games, we don't just go off in a corner and dream them up. We get good suggestions, help, and ideas from a lot of different people - even systems programmers on how to improve or write a subroutine. I had the basic game design idea, and the first thing I wanted to make sure was that GPL had enough speed to handle the motion, or whether I would have to use automotion. In this program, I did not use automotion of sprites. Those cars are doublesized, magnified sprites. I moved them one, two and four-pixel increments myself.

One of the main problems in the game was the logic. For instance, the track has all different characters that tell me whether the car can turn left, right, or change lanes. Once I got that programmed and working well, the rest of the game was really just polishing up - making the track look better, adding scoring and color, extra computer cars, etc. The whole effort took two and a half to three months of programming.

 

Now, let's get into Munch Man. Why did you decide to do a game like that ?

 

I wanted to take advantage of our machine's color graphics and sprites. A mazetype game seemed to offer interesting possibilities. The logic in Munch Man is similar to Car Wars, where I was moving the sprites pixel by pixel; I needed the logic to recognize special characters in the maze that determined whether I could go left, right, up, or down. This was the same obstacle I had in Car Wars, so I took the main Car Wars routine and converted it from GPL to 9900 code. That took about a month. Then I tried to design some type of maze that was interesting and would take advantage of our graphics and color.

 

Did you run into any major problems where outside help was needed ?

 

There weren't any major problems. I only needed help on a few subroutines. No one can be expected to know everything about the machine, so when someone runs into a problem, he'll take a lot of suggestions from fellow programmers because often they have gone through the same thing in another project. In fact, they may already have a subroutine that you can take and just modify. I used at least three or four subroutines that were in TI Invaders.

Share this post


Link to post
Share on other sites

Prior to actually starting work on the game, I attended GPL classes here and took a couple of weeks just to familiarize myself with the GPL manual and the architecture of the Home Computer. Basically I learned the GPL language by doing the programming for Cars Wars. Similarly, with Munch Man, I learned 9900 code [Assembly Language].

 

Taking GPL classes. Hey, does it get any cooler than that ? :D

 

On a sidenote, I didn't know that Car Wars was written in GPL.

That game has quite some arcade action.

Pretty sure you could do some fine games in GPL.

 

Too bad Texas Instrument didn't do more quality arcade games.

  • Like 1

Share this post


Link to post
Share on other sites

Why go with an interpreted language that is shrouded in mystery when you can talk directly to the hardware with 9900, and there are many people willing to help in that language as well. :) GPL? Who knows GPL syntax, really? I know one or two of you are sitting there saying, "I know some GPL syntax!!." The reality of it is, though, that if you took everyone on Atariage who ever read about GPL, put them in a room with a GPL terminal--- I doubt much of a game could be written. There's just not enough info---- as Gary said. 9900 is, by definition and by default, faster and it's really not too hard to understand once you get past the language barrier from a high level language. :) God, listen to me..... Hahaha!!!

 

No seriously, don't listen to me... I just recently started in assembly--- but once you get the taste for it--- it's kind of hard to go back. I'm loving it. :cool:

  • Like 1

Share this post


Link to post
Share on other sites

Why go with an interpreted language that is shrouded in mystery when you can talk directly to the hardware with 9900, and there are many people willing to help in that language as well. :) GPL? Who knows GPL syntax, really? I know one or two of you are sitting there saying, "I know some GPL syntax!!." The reality of it is, though, that if you took everyone on Atariage who ever read about GPL, put them in a room with a GPL terminal--- I doubt much of a game could be written. There's just not enough info----

 

Well I could always start some GPL Classes. -- Back when I was redoing the original GPL operating system on the TI for my SOB product, I used to say there was many dozen good GPL programmers in the world, that could master the language, and now most likely after 20 years since SOB was designed, that number might be down to 3 or hey just ME! - Ugh!

 

Yep, 9900 is the way to go on the TI99 when it comes to programming, and you could always use the GROM memory space for storage of data if you have a device that emulators GROM memory.

 

But GPL is nice to learn, you can use it to do all the basic outside stuff, prompts, text, loading of files, asking for input, saving of files, various house-keeping tasks, and then switch into 9900 for the hardcode game focus code.

 

It would be neat, if the two could run side by side, but that would need some more tweaking of the GPL monitor in the console rom, but I think that was one of original plans, your GPL program can be stepping along every interrupt, when you are running your 9900 code, but writing 9900 code with interrupts enabled means more thought on the programmer.

 

Sadly, I had a major hard drive crash this weekend, so my own TI99 site will be delay by a few days or week, as I rescan alot of printed info back into PDF searchable format. -- But on that site at some point I will be publishing alot of GPL syntax and notes, and some very useful info for those that will want to explore it for some reason or other.

Share this post


Link to post
Share on other sites

I'm half thru the Intern from 1985 by Heiner Martin. Learning quite a bit about GPL etc. At page 119 now. Bit reversal routine is machine code loaded from GROM to RAM.

 

:cool:

Share this post


Link to post
Share on other sites

ok folks, I have to ask this:

 

Were there any cool arcade games written in GPL ?

 

Maybe TOD. All the utility stuff (PRK, Personal Finances (or whatever they're called) were all written in GPL. In fact, when you put (for example) PRK in the console and run it up, you'll find new commands have been added to TI BASIC! CALL A was one that I seem to remember!

 

Mark

Share this post


Link to post
Share on other sites

Hey, just call me a geek :D

But I would be interested in learning more about GPL.

 

Me too. It's right up there on my to-do list. Emulation is the perfect environment for it, since, on the real hardware you would need some sort of GRAM device.

Share this post


Link to post
Share on other sites

I'm half thru the Intern from 1985 by Heiner Martin. Learning quite a bit about GPL etc. At page 119 now. Bit reversal routine is machine code loaded from GROM to RAM.

 

:cool:

 

Ha ha! I noticed that just yesterday! I was looking at KSCAN in the console ROM. Oh dear, what a mess. :?

Share this post


Link to post
Share on other sites

If I wanted to call a GPL routine from my assembly language program and return safely, what would be the things I have to take care of ?

 

1. Setup scratch-pad memory as required, GPL workspace in particular ?

2. Enable interrupts, is that really required ?

3. ????

Share this post


Link to post
Share on other sites

If I wanted to call a GPL routine from my assembly language program and return safely, what would be the things I have to take care of ?

 

1. Setup scratch-pad memory as required, GPL workspace in particular ?

2. Enable interrupts, is that really required ?

3. ????

 

I have a GPLLNK routine that runs in a cartridge (not based on TI's code), see below. It needs 32 bytes at >2000, so memory expansion is required. MAYBE you could mod it to run completely from scratch-pad, if you can find 32 bytes spare... You might struggle with that though, as, by definition, when you use GPLLNK to call a GPL routine then it means (obviously) the GPL interpreter is invoked, which has its own scratch-pad requirements.

 

Anyway, here's the code, which seems to work just fine...

 

;[ GPLLNK     
; This routine is based on the routine published in the July 1986 edition of 
; Smart Programmer. Modified by yours truly to allow it be executed from ROM.
gplws	equ >83e0		; GPL workspace
gr4	equ gplws+8		; GPL R4
gr6	equ gplws+12		; GPL R6
stkpnt	equ >8373		; GPL stack pointer
ldgadd	equ >60			; load and execute grom address entry point
xtab27	equ	>200e		; low mem XML table location 27
getstk	equ >166c

; cpu register data - this data is copied into >200e onwards, so that it sits
; in R7 onwards
gpllnk	data glnkws		; [mapped to R7] set up BLWP vectors
data glink1		; [mapped to R8] 
rtnad	data xmlrtn		; [mapped to R9]
gxmlad	data >176c		; [mapped to R10] GROM address for GPL XML 0F27 opcode
data >50		; [mapped to R11] Initialised to >50 where PUTSTK 
			; address resides

; this routine runs in it's own workspace, starting at >2000
glnkws	equ >2000		; GPLLNKs workspace of which only registers R7 thru R15
			; are used

glink1	li r0,gpllnk		; we need to copy the cpu register data (above) to
li r1,>200e		; RAM. R0=Source, R1=Destination
li r2,5			; R2=Word count
gpllop	mov *r0+,*r1+		; copy the data above into r7 onwards...
dec r2			; copied all of it?
jne gpllop		; loop if not

mov *r11,@gr4		; put PUTSTK address into R4 of GPL WS
mov *r14+,@gr6		; put GPL routine address in r6 of GPL WS
mov r9,@xtab27		; put XMLRTN address into >200e
lwpi gplws		; load GPL workspace
bl *r4			; save current GROM address on stack
mov @gxmlad,@>8302(r4)	; push GPL XML address on stack for GPL return
inct @stkpnt		; adjsut the stack pointer
b @ldgadd		; execute our GPL routine
xmlrtn	mov @getstk,r4		; get GETSTK pointer
bl *r4			; restore GROM address off the stack
lwpi glnkws		; load our ws
rtwp			; all done - return to caller
;]

 

You call it with BLWP @GPLLNK just like normal.

Edited by Willsy
  • Like 1

Share this post


Link to post
Share on other sites

Thanks for the GPLLNK routine willsy! I'm currently working on my spectra2 arcade game library and would like to have

a gate into GPL. Still working on the scratch pad memory setup and maybe I'll be able to squeeze the 32 bytes in :)

Share this post


Link to post
Share on other sites

Sadly, I had a major hard drive crash this weekend, so my own TI99 site will be delay by a few days or week, as I rescan alot of printed info back into PDF searchable format. -- But on that site at some point I will be publishing alot of GPL syntax and notes, and some very useful info for those that will want to explore it for some reason or other.

 

Do you have any notes on "Monitor" the Operating System used in the TI-99/4A ?

Section 1.7 "Applicable Documents" in the GPL Programmers Guide mentions a document called "System Monitor Specification".

Have you ever seen or had access to this document ?

Share this post


Link to post
Share on other sites

Do you have any notes on "Monitor" the Operating System used in the TI-99/4A ?

Section 1.7 "Applicable Documents" in the GPL Programmers Guide mentions a document called "System Monitor Specification".

Have you ever seen or had access to this document ?

 

I am sure I have it. -- I dig around this weekend and see if I can scan it in. - Been slowly redoing all my TI stuff, transfering stuff out of buried archives and loading them up, and printing out various manuals, etc. -- I keep you posted if I come across it.

Share this post


Link to post
Share on other sites

Since I know little about GPL itself, I can't really say whether or not GPL itself was a mistake. Writing BASIC in GPL instead of assembly *was* a mistake, as was using proprietary GROMs.

Share this post


Link to post
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.

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