Jump to content

Search the Community

Showing results for tags 'gpl'.

More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type

Marker Groups

  • Members


  • Atari Systems
    • Atari General
    • Atari 2600
    • Atari 5200
    • Atari 7800
    • Atari Lynx
    • Atari Jaguar
    • Atari VCS
    • Dedicated Systems
    • Atari 8-Bit Computers
    • Atari ST/TT/Falcon Computers
  • Classic Consoles
  • Classic Computing
  • Modern Consoles
  • Gaming General
  • Marketplace
  • Community
  • Community
  • Game Programming
  • Site
  • PC Gaming
  • The Club of Clubs's Discussion
  • I Hate Sauron's Topics
  • 1088 XEL/XLD Owners and Builders's Topics
  • Atari BBS Gurus's Community Chat
  • Atari BBS Gurus's BBS Callers
  • Atari BBS Gurus's BBS SysOps
  • Atari BBS Gurus's Resources
  • Atari Lynx Programmer Club's CC65
  • Atari Lynx Programmer Club's ASM
  • Atari Lynx Programmer Club's Lynx Programming
  • Atari Lynx Programmer Club's Music/Sound
  • Atari Lynx Programmer Club's Graphics
  • The Official AtariAge Shitpost Club's Shitty meme repository
  • The Official AtariAge Shitpost Club's Read this before you enter too deep
  • Arcade Gaming's Discussion
  • Tesla's Vehicles
  • Tesla's Solar
  • Tesla's PowerWall
  • Tesla's General
  • Harmony/Melody's CDFJ
  • Harmony/Melody's DPC+
  • Harmony/Melody's BUS
  • Harmony/Melody's General
  • ZeroPage Homebrew's Discussion
  • Furry Club's Chat/RP
  • PSPMinis.com's General PSP Minis Discussion and Questions
  • PSPMinis.com's Reviews
  • Atari Lynx 30th Birthday's 30th Birthday Programming Competition Games
  • 3D Printing Club's Chat
  • Drivers' Club's Members' Vehicles
  • Drivers' Club's Drives & Events
  • Drivers' Club's Wrenching
  • Drivers' Club's Found in the Wild
  • Drivers' Club's General Discussion
  • Dirtarians's General Discussion
  • Dirtarians's Members' Rigs
  • Dirtarians's Trail Runs & Reports
  • Dirtarians's Wrenching
  • The Green Herb's Discussions
  • Robin Gravel's new blog's My blog
  • Robin Gravel's new blog's Games released
  • Atari Video Club's Harmony Games
  • Atari Video Club's The Atari Gamer
  • Atari Video Club's Video Game Summit
  • Atari Video Club's Discsuuions
  • Star Wars - The Original Trilogy's Star Wars Talk
  • PlusCart User's Bug reports
  • PlusCart User's Discussion
  • DMGD Club's Incoming!
  • DASM's General
  • AtariVox's Topics
  • Gran Turismo's Gran Turismo
  • Gran Turismo's Misc.
  • Gran Turismo's Announcements
  • The Food Club's Food
  • The Food Club's Drinks
  • The Food Club's Read me first!
  • The (Not So) Official Arcade Archives Club's Rules (READ FIRST)
  • The (Not So) Official Arcade Archives Club's Feedback
  • The (Not So) Official Arcade Archives Club's Rumor Mill
  • The (Not So) Official Arcade Archives Club's Coming Soon
  • The (Not So) Official Arcade Archives Club's General Talk
  • The (Not So) Official Arcade Archives Club's High Score Arena
  • Adelaide South Australia Atari Chat's General Chat & Welcome
  • Adelaide South Australia Atari Chat's Meets
  • Adelaide South Australia Atari Chat's Trades & Swaps
  • KC-ACE Reboot's KC-ACE Reboot Forum
  • The Official Lost Gaming Club's Lost Gaming
  • The Official Lost Gaming Club's Undumped Games
  • The Official Lost Gaming Club's Tip Of My Tounge
  • The Official Lost Gaming Club's Lost Gaming Vault
  • The Official Lost Gaming Club's Club Info
  • GIMP Users's Discussion


There are no results to display.

There are no results to display.


  • AtariAge Calendar
  • The Club of Clubs's Events
  • Atari BBS Gurus's Calendar

Product Groups

  • Subscriptions

Find results in...

Find results that contain...

Date Created

  • Start


Last Updated

  • Start


Filter by number of...


  • Start










Custom Status



Currently Playing

Playing Next

Found 7 results

  1. ** This question is about the crunch buffer in TI Basic, not the crunch buffer in Extended Basic ** ok, so I have been doing some experiments with TI Basic lately. For one of the tests I'm doing I am using the F18a with 30 rows mode. What I would like to do is add some information on the rows 25-30. The thing is that the VDP memory for that area is "blocked" by the TI Basic crunch buffer that starts at VDP >320 So here are my questions: Is it possible to move the TI Basic crunch buffer to another location in VDP memory? I presume it's hardcoded in the TI Basic interpreter in GPL. Was thinking about using a ISR routine in assembly routine that "kicks-in" and changes addresses (GPL registers, addresses) in a transparent way. Considering that TI Basic is so slow I might actually get away with it Any ideas on this one? Is the TI Basic disassembly available somewhere? I'm aware of TI XB disassembly, but not TI Basic itself. Actually I start liking TI Basic much. Yes it's slow, but I'd like to learn a lot more about its internals before addressing TI Extended Basic.
  2. Hi Guys, yesterday I have run into a nasty Syntax Error in Extended Basic, which also occurs in RXB. I don't understand it and wonder if the line really contains a Syntax Error or this is a Interpreter Bug. Version 1: 1 IF A=1 THEN 2 ELSE FOR I=1 TO 2 :: PRINT I :: NEXT I 2 END Version 2: 1 IF A=1 THEN 2 :: FOR I=1 TO 2 :: PRINT I :: NEXT I 2 END Both versions complain about a Syntax Error in Line 1. I would like to analyze it with the help of you and maybe RXB can be even fixed.
  3. As discussed a little yesterday in the Pandemic club 4A zoom call (thanks for the interesting discussion!) I started to look a bit how the GPL interpreter could be optimised. My original idea was to add some instructions to my FPGA processor core to speed up the interpretation with special purpose instructions, but as I started to look at the code it's quite clear that a lot can be achieved with normal code optimisation. @RXB mentioned that there has been a discussion with @Tursi about this topic. I somehow recall seeing that thread myself, but couldn't easily find it (which is probably my fault). As an obvious optimisation, instead of the multiple levels of tables, the GPL instruction decoding could be improved at the cost of using some more memory simply by having a 256 entry lookup table (occupying 512 bytes). For that part I could create a new instruction which could combine a few TMS9900 instructions, in pseudo code: // Address 0x78 MOVB *R13,R9 JGPL @TABLE,R9 // Here JGPL would be a new instuction, something like below. // The instruction would only perform 2 memory fetches: Read R9, and fetch the jump vector from TABLE. BANK 1 // Switch bottom 8K to a new bank, which has the jump table MOV R9,TEMP // Temp internal register SRL TEMP,7 // TEMP >> 7, shift to a word index MOV @TABLE(TEMP),TEMP // Fetch from table BANK 0 // Switch bottom 8K to normal bank B *TEMP In the arrangement above since the opcode would be passed to the new instruction JGPL, that instruction could also be developed further to understand some GPL instructions directly, executing them directly by the CPU instead of TMS9900. Many GPL instructions are quite involved, so it would best to be able to incrementally improve things, for example starting with branch instructions which seem to be rather simple. I also realised that I am jumping the gun - I should try to look at some GPL code before going to optimization phase to understand how things work. To that end I started using xga99.py to assemble the GPL code for Minimemory cartridge, as a test. Also since I think this a very cool cartridge which could be integrated and expanded in interesting ways in both my icy99 and StrangeCart projects. So I got the GPL source code for Minimemory from Thierry's excellent TI-99/4A tech pages. I guess that code is for his GPL assembler. But I wanted to use the xdt99 package. So I started to assemble the source with xga99.py, like so: xga99.py --aorg 6000 mmg.gpl -L mmg.lst I quite quickly ran into a few problems, due to differences in syntax, for example: The AORG directive in xdt99 does not accept addresses higher than 8K. This causes a number of problems, because there is a hole in the code, i.e. it AORGs to >70AC skipping a bunch of bytes. I guess I have to manually fill that range with some bytes. The multiplication instruction in the source is MPY, but xga99 uses MUL. Not a biggie. Many lines in the code contain comments (which is great) after the code. I have never understood why the comments don't start with a special character like semicolon or something, that would make parsing easier for the assembler and it could probably also prevent some mistakes. Anyway, xga99 could not assemble a number of lines because the comments were separated by just a space. I just removed those comments after the code (by moving them to a separate comment line). The HTEX instruction (in a FMT block) escapes hex bytes differently, simple change: from HTEX '[>0A]' to HTEX >0A Some other opcodes also are different: CAR -> CARRY, PARS -> PARSE, DCGTE -> DCGT The source code uses the BIAS command also outside a FMT - FEND block, it appears to specify a constant to be added to strings specified with the STRI directive. The source I used has first BIAS >60 to set the TI Basic character code offset. I did not find a way to replicate this functionality in xda99. The advice goes: "use the source, Luke". And so I did, and created a new directive STRI60 for xda99, as follows. It's hack for sure, but I didn't want to enter the text as BYTE statements. * Original source (disassembled and commented by Thierry) BIAS >60 G6E1A STRI "ILLEGAL TAG" G6E26 STRI "CHECKSUM ERROR" ---------------------------------- * Modified source for xda99: *EPEP BIAS >60 G6E1A STRI60 "ILLEGAL TAG" G6E26 STRI60 "CHECKSUM ERROR ---------------------------------- * xda99.py has been modified to support the new STRI60 as follows: # EP 2020-12-13 added new STRI60 operation to add the screen offset to each byte. # Used for Mini Memory porting @staticmethod def STRI60(asm, label, ops): asm.process_label(label) text = ''.join(asm.parser.text(op) for op in ops) asm.emit(len(text), *[ord(c)+0x60 for c in text]) And this is roughly where I am at the moment. I am comparing the generated GPL binary image to the original, and now the first >770 bytes match (except for the pointer to >70AC due the AORG stuff, need to come up with a solution for that - probably I'll just fill in the empty range with some bytes) to get to 70AC.
  4. The batari Basic programming language now has a new home at github. I discussed this change with @batari prior to making this move. We both felt it was important to give bB an official home again. At github batari basic gets backed up, changes are tracked, bugs are tracked, other programmers can easily contribute, it can be forked easily, etc. batari even suggested we go a step further and license the bB source code under the GPL, so we did! (your games are still your games, and the GPL doesn't attach to them) For the latest batari Basic (v1.2 at the time of this writing) you can visit the batari Basic release page. The page where I hosted the now-defunct "reveng" fork now points to that release page. A special thanks goes out to @Karl G who helped with OS X testing, and to @Nathan Strum who provided a monochrome version of his "built with bB" logo, which was used for the project logo. Feel free to comment or ask questions about this change. If you have bug reports, I'd ask that they be submitted to either github or the AA bB bug report thread, and not brought up in this thread. I'd prefer github issues be used (since everything is tracked, conversations about bugs are threaded, etc) but I completely understand that not everybody wants to have a github account. Lastly, 7800basic will be getting the same treatment. I just need a break, as the cleanup and prep for the bB move took more effort than expected.
  5. I'm trying to create an auto-starting cartridge, or more precisely, a cart with a menu translator that is used to start the cart without a menu selection. MBX and SF titles do this. But when I run this program . * GROM auto start sample grom >6000 data >aaff data >0100 data 0 data 0 ;menu data 0, 0, 0, 0 byte 0, 0, 0 ;menu: ; data 0 ; data autostart ; byte 9 ; text 'AUTOSTART' autostart: all 42 ; >6013 fmt row 10 col 10 htext 'AUTOSTART' fend back 14 stop: b stop end . the TI crashes with a white screen (in MESS). When I add a proper menu, everything works. Is there anything special that programs have to do when running as a menu translator? Note that my program does not return, but keeps on running.
  6. I posted a scan of a photocopy of the SDS Programmers Guide in the Development Resources sticky, but it was suggested I start a new thread, so here it is. I have some other stuff, SDSMAC source listings, additional documentation, etc. to put here, too. Coming soon. Anyone else have anything relevant, please post away. The SDS consists of a GPL assembler, linker, simulator, and debugger running under DX10 on a TI 990 mini, typically a /10. TI BASIC programs can be converted to GROM format to run on the simulator. [edit] Anyone has a copy of the SDS software or even a running system, or knows where such might be, please post here, message me, or email [email protected] Thanks! jbdigriz HCM_SDS.pdf
  7. Our intention is to collect as much historical background to the Why, When, Who and How GPL came to be. Please contribute by commenting to this topic. Things like : 1. When did it all start ? 2. Why ? 3. Who worked on it's development and interpreter ? 4. What was the real purpose ? 5. How does it compare to other languages ? 6. What can we do with it today ? 7. Coding in GPL in the 1980's compared to 2020 the stark difference. 8. What commercial software was written in GPL ? 9. Who were the important people around this language ? 10. Links to important material. If we can collect snippets of information from as many people as possible we can then compile it into a solid web page that will serve as a historical snapshot of this quirky yet beautiful language that time almost forgot. Thanks for your contributions. We will share a link to the webpage that will contain all you need to know about GPL as soon as we set it up.
  • Create New...