Retrospect Posted April 23, 2015 Share Posted April 23, 2015 I was reading somewhere online, some time ago, that the TI has an internal GPL interpreter that is not user accessible. So .... IS there a way to interface with it if you're really clever, or is it just sat there for no reason other than to accept GPL code from cartridges? Bare in mind I don't code in GPL but I find it fascinating that there's something in the TI that isn't being used. 1 Quote Link to comment Share on other sites More sharing options...
+mizapf Posted April 23, 2015 Share Posted April 23, 2015 I guess they referred to the fact that users could not create cartridges on their own (using GROMs) but write machine language programs (if they can't resist, well, at least let's make it expensive). In that sense, the GPL interpreter is not useful for users. Quote Link to comment Share on other sites More sharing options...
Willsy Posted April 23, 2015 Share Posted April 23, 2015 Difficult question to answer. For example, it is possible to call GPL code, using a routine called GPLLNK (which is in ROM) which will set up the software environment for running GPL, execute a GPL routine (which of course means the GPL interpreter has to execute) and return to the calling routine. So, in that respect, the interpreter is accessible, but you can only access pre-existing GPL code. You can't for example (as far as I know) put some GPL code in RAM or VDP RAM and execute it. It has to be in a GROM or GRAM. In that respect, it's essentially inaccessible, yes. A fascinating machine, our little TI. Nothing like it. Quote Link to comment Share on other sites More sharing options...
RXB Posted April 23, 2015 Share Posted April 23, 2015 If you change the pointer from GROM/GRAM to VDP it will run GPL code from VDP. So sorry you are incorrect Willsy. My video tutorials all use this with the Ryte Data GPL Linker using Ryte Data GPL Assembler: Look at the GPLHOW2 series I have produced with links and tutorial Youtube Videos. http://atariage.com/forums/topic/153704-ti-994a-development-resources/ At least watch the first two as they explain. 3 Quote Link to comment Share on other sites More sharing options...
senior_falcon Posted April 23, 2015 Share Posted April 23, 2015 Hi Rich: Can you run GPL out of VDP on a real TI or do you need to modify the groms? Can the interpreter handle VDP access properly (writing to the screen or character definitions) when running out of VDP? Quote Link to comment Share on other sites More sharing options...
RXB Posted April 24, 2015 Share Posted April 24, 2015 (edited) Hi Rich: Can you run GPL out of VDP on a real TI or do you need to modify the groms? Can the interpreter handle VDP access properly (writing to the screen or character definitions) when running out of VDP? http://atariage.com/forums/topic/153704-ti-994a-development-resources/ Scroll down to my GPLHOW2 Tutorials and download the GPL Assembler, GPL Linker (RUNS GPL from VDP), GPL Disassembler, GPL Loader and videos on using GPL. UTIL1 is the GPL Linker for running GPL from VDP. RYTE DATA wrote all of these for the TI99/4A in 1980 to 1983, the GPL Loader was originally written in 1986. Edited April 24, 2015 by RXB Quote Link to comment Share on other sites More sharing options...
Willsy Posted April 24, 2015 Share Posted April 24, 2015 If you change the pointer from GROM/GRAM to VDP it will run GPL code from VDP. So sorry you are incorrect Willsy. Cool! I learned something. Glad to be corrected! 2 Quote Link to comment Share on other sites More sharing options...
RXB Posted April 24, 2015 Share Posted April 24, 2015 Cool! I learned something. Glad to be corrected! So little you do not know 1 Quote Link to comment Share on other sites More sharing options...
sometimes99er Posted April 25, 2015 Share Posted April 25, 2015 It looks as if the Java compiler (Grinder) could "relatively easy" be made to output GPL. I mean Java bytecode looks like a cousin of GPL code. And the concept of this is kinda cool. The GPL interpreter (like a JVM) is built-in (stock console has a lot of ROM and GROM for that (sole) purpose). And GPL is actually getting a speed benchmark up close to that of TurboForth. Unfortunately I'm not going to pursue that (sticking with other TI software projects). Consider it a breadcrumb. 4 Quote Link to comment Share on other sites More sharing options...
+Vorticon Posted April 25, 2015 Share Posted April 25, 2015 Rich, are there any limitations to the GPL programs run through the VDP as far as size or otherwise? I have always been intrigued by GPL, and the idea of being able to create and run programs using your utilities is a very attractive proposition. Quote Link to comment Share on other sites More sharing options...
+Lee Stewart Posted April 25, 2015 Share Posted April 25, 2015 ... You can't for example (as far as I know) put some GPL code in RAM or VDP RAM and execute it. It has to be in a GROM or GRAM. In that respect, it's essentially inaccessible, yes. ... If you change the pointer from GROM/GRAM to VDP it will run GPL code from VDP. ... Hi Rich: Can you run GPL out of VDP on a real TI or do you need to modify the groms? Can the interpreter handle VDP access properly (writing to the screen or character definitions) when running out of VDP? ... GPL Linker (RUNS GPL from VDP), GPL Disassembler, ... UTIL1 is the GPL Linker for running GPL from VDP. ... Rich, are there any limitations to the GPL programs run through the VDP as far as size or otherwise? I have always been intrigued by GPL, and the idea of being able to create and run programs using your utilities is a very attractive proposition. Actually, the GPL programs linked by Monty Schmidt’s GPL Linker load/run them to/from expansion RAM—not VRAM. The GPL Linker links a GPL simulator to the GPL object code into EA5 files that can be loaded and run from either EA or XB. ...lee 1 Quote Link to comment Share on other sites More sharing options...
senior_falcon Posted April 25, 2015 Share Posted April 25, 2015 One reason this intrigues me is this: if you can run GPL out of VDP ram, then you should be able to make a loader that brings the program into VDP ram embedded in a TI BASIC program and then run it directly from VDP using an unexpanded console and cassette recorder. (Naturally, you could load from disk as well.) This would be a good fit for the unexpanded console, since you could write the program normally. Playground can run assembly from an unexpanded console, but you have to be very aware of the memory limitations when programming, which means programming in pages no greater than 112 bytes, no use of BLWP and other challenges. Quote Link to comment Share on other sites More sharing options...
+OLD CS1 Posted April 26, 2015 Share Posted April 26, 2015 One reason this intrigues me is this: if you can run GPL out of VDP ram, then you should be able to make a loader that brings the program into VDP ram embedded in a TI BASIC program and then run it directly from VDP using an unexpanded console and cassette recorder. (Naturally, you could load from disk as well.) This would be a good fit for the unexpanded console, since you could write the program normally. Playground can run assembly from an unexpanded console, but you have to be very aware of the memory limitations when programming, which means programming in pages no greater than 112 bytes, no use of BLWP and other challenges. I had a short PM discussion about this a while back about the possibility of running something like Car Wars from VDP RAM. Quote Link to comment Share on other sites More sharing options...
Gazoo Posted April 26, 2015 Share Posted April 26, 2015 (edited) I was reading somewhere online, some time ago, that the TI has an internal GPL interpreter that is not user accessible. So .... IS there a way to interface with it if you're really clever, or is it just sat there for no reason other than to accept GPL code from cartridges? Bare in mind I don't code in GPL but I find it fascinating that there's something in the TI that isn't being used. Being one that uses GPL equally as much as assembly, I probably would have given up the TI long ago were it not for the merits of the GPL interpreter. "... there's something in the TI that isn't being used ..." is a completely untrue statement. Without it, there would be no ubergrom cartridges. I could not disagree more with your comment. Mixing GPL and assembly code as a programmer is the best way to make full use of the TI's memory and take complete control of the TI. QED = Extended Basic v2.7 Suite. Gazoo Edited April 26, 2015 by Gazoo 2 Quote Link to comment Share on other sites More sharing options...
RXB Posted April 26, 2015 Share Posted April 26, 2015 Rich, are there any limitations to the GPL programs run through the VDP as far as size or otherwise? I have always been intrigued by GPL, and the idea of being able to create and run programs using your utilities is a very attractive proposition. Yes as you are limited to mostly 8K in GPL programs that run from VDP but I have made a 12K one work by some small memory tricks. Obviously GRAM/GROM has more memory than VDP and with GROM/GRAM you can load 40K or more as 16K of TI Basic can also be used for 56K of program space. Personally if you put Assembly in GPL and link it using GPL as a Menu and Program manager it is much more powerful then any other language for the TI99/4A. Name another way to manage all devices and memory on the TI with as much ease of use and management? 2 Quote Link to comment Share on other sites More sharing options...
RXB Posted April 26, 2015 Share Posted April 26, 2015 Actually, the GPL programs linked by Monty Schmidt’s GPL Linker load/run them to/from expansion RAM—not VRAM. The GPL Linker links a GPL simulator to the GPL object code into EA5 files that can be loaded and run from either EA or XB. ...lee Looking at TI Intern OS of the TI99/4A I see how to run GPL from GROM/GRAM/VDP but do not see anyway to do it from RAM? If it runs from RAM then running GPL from a SAMS and without delays would be insanely fast would it not? Quote Link to comment Share on other sites More sharing options...
+Lee Stewart Posted April 26, 2015 Share Posted April 26, 2015 Looking at TI Intern OS of the TI99/4A I see how to run GPL from GROM/GRAM/VDP but do not see anyway to do it from RAM? If it runs from RAM then running GPL from a SAMS and without delays would be insanely fast would it not? I don't know how GPL might actually run from VRAM. I just know (from the manual, at least) that Schmidt's linker is not doing that. It is setting up a GPL simulator that walks through GPL byte code loaded into RAM space and interprets it. It is limited to 4 banks that are menu-selected, so I doubt that the GPL can be written to execute as one large GPL program to be run with this simulator. ...lee Quote Link to comment Share on other sites More sharing options...
Willsy Posted April 26, 2015 Share Posted April 26, 2015 How does one launch a GPL program that is in VDP? Is it GPLLNK? Quote Link to comment Share on other sites More sharing options...
+mizapf Posted April 26, 2015 Share Posted April 26, 2015 What I don't understand: Is there really no situation where the address is read? You may change the pointer from 9c00 to 8c00, but you cannot read the VDP address register. Quote Link to comment Share on other sites More sharing options...
Willsy Posted April 26, 2015 Share Posted April 26, 2015 I'm thinking there must be a special entry address into the GPL interpter, or a flag that is set to tell the GPL interpter to get its data from the VDP read port, rather than the GROM read port? Quote Link to comment Share on other sites More sharing options...
Tursi Posted April 26, 2015 Share Posted April 26, 2015 (edited) The GPL interpreter reads the GROM address all the time. I'm curious how this works as well. Edited April 26, 2015 by Tursi 2 Quote Link to comment Share on other sites More sharing options...
Retrospect Posted April 26, 2015 Author Share Posted April 26, 2015 Being one that uses GPL equally as much as assembly, I probably would have given up the TI long ago were it not for the merits of the GPL interpreter. "... there's something in the TI that isn't being used ..." is a completely untrue statement. Without it, there would be no ubergrom cartridges. I could not disagree more with your comment. Mixing GPL and assembly code as a programmer is the best way to make full use of the TI's memory and take complete control of the TI. QED = Extended Basic v2.7 Suite. Gazoo " is a completely untrue statement." Fine, okay, well, I came to that conclusion because TI stated it was not user accessible. So, if it IS user accessible, great, fine, that's cool. "I could not disagree more with your comment." Good to know. It's nice to have someone reply with such enthusiasm, I like a bit passion in written words, it portrays emotion. One good thing came of my topic though, it got people talking about the GPL Interpreter. Who knows what will come of it? Quote Link to comment Share on other sites More sharing options...
RXB Posted April 26, 2015 Share Posted April 26, 2015 I don't know how GPL might actually run from VRAM. I just know (from the manual, at least) that Schmidt's linker is not doing that. It is setting up a GPL simulator that walks through GPL byte code loaded into RAM space and interprets it. It is limited to 4 banks that are menu-selected, so I doubt that the GPL can be written to execute as one large GPL program to be run with this simulator. ...lee Hmm using the SAMS and this method would allow a 1Meg GPL Program that could be a combination of GPL and Embedded Assembly. (Much like the current mega cart available with many programs and software.) I have already proven that GPL does of great job of managing pages of the SAMS with GPL in RXB. 1 Quote Link to comment Share on other sites More sharing options...
+Lee Stewart Posted April 26, 2015 Share Posted April 26, 2015 Hmm using the SAMS and this method would allow a 1Meg GPL Program that could be a combination of GPL and Embedded Assembly. (Much like the current mega cart available with many programs and software.) I have already proven that GPL does of great job of managing pages of the SAMS with GPL in RXB. ... Great!—but, that is not running GPL byte code from VRAM. You said you do it “by some small memory tricks”. Could you explain how you do this? Do you change a GPL workspace register to point to VRAM for the next GPL byte? Given that writing a VRAM address starts with the LSB and writing a GROM/GRAM address starts with the MSB, how do you pass the VRAM address to the GPL interpreter for the next GPL byte when that byte is not the one ready for reading after autoincrement from the previous read? ...lee Quote Link to comment Share on other sites More sharing options...
Gary from OPA Posted April 27, 2015 Share Posted April 27, 2015 Great!—but, that is not running GPL byte code from VRAM. You said you do it “by some small memory tricks”. Could you explain how you do this? Do you change a GPL workspace register to point to VRAM for the next GPL byte? Given that writing a VRAM address starts with the LSB and writing a GROM/GRAM address starts with the MSB, how do you pass the VRAM address to the GPL interpreter for the next GPL byte when that byte is not the one ready for reading after autoincrement from the previous read? ...lee Not a problem, since the 9918 also has an autoincrement reading, maybe its time for refresh'ing course, this one is good read: http://spatula-city.org/~im14u2c/vdp-99xx/e3/1980_Arizona_Technical_Symposium_Draft.pdf And if you scroll down to page 14 you will see from TI Guru himself 'Karl' that he mentions right there how well the VRAM can be used by the interpreter. In fact TI BASIC does that also, auto reading each byte out of VRAM to decode the opcode bytes of your BASIC program. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.