LASooner Posted January 1, 2019 Share Posted January 1, 2019 All set to release this but just discovered that the changes to the compiler make it with certain sequences of instructions. I'm probably mesing up a register that should be left alone. Tonight's new years eve, so I will turn off the computer and have a few drinks to celebrate. Happy New Year Harry, and thanks for all you've done this last year. Quote Link to comment Share on other sites More sharing options...
Opry99er Posted January 1, 2019 Share Posted January 1, 2019 Happy new year Harry!!!!! Thanks so much!! Quote Link to comment Share on other sites More sharing options...
senior_falcon Posted January 2, 2019 Author Share Posted January 2, 2019 (edited) Here is GRECHETTO, the latest version of the XBGDP. Changes include: The compiler is still an XB/Assembly hybrid program, but it was rewritten so the main loops are all in assembly. This makes it about 5-6x faster. Nested arrays can now be used Multiple variables can be assigned with one LET statement. i.e. 10 A,B,C,D=23 or 10 IF Z=12 THEN A$,B$,C$="YOU WIN!" The compiler looks for decimal points and gives a NON INTEGER message next to the line number. This way when you return to XB you know which lines need attention. Speech is supported with both SAY and SPGET. As always, these changes may cause unexpected trouble in other parts of the program, so for now this is a BETA release. (Edit) - reuploaded with a second folder in the package. This is GRECHETT99. All the files are modified to work directly with a real TI. You can put this in DSK1 and it will work as described in the manual, only using -S and -O instead of .TXT and .OBJ (Edit) - Uploaded GRECHETTOBETA2. The files in GRECHETT99 are modified to provide the proper defaults when running on a real TI99. The disk access bug is fixed. There are two other changes that (hopefully) won't cause trouble: 1 - The runtime files have been rearranged to use memory more efficiently - i.e. XB256 routines are not loaded unless needed. 2 - The runtime files in GRECHETT99 have been stripped of comments to be more compact. Hopefully no code was inadvertently stripped out. GRECHETTOBETA2.zip Edited January 8, 2019 by senior_falcon 6 Quote Link to comment Share on other sites More sharing options...
Opry99er Posted January 2, 2019 Share Posted January 2, 2019 awesome! Going to be re-doing "Riding for the Brand" later this year for an official release using this package. My original efforts maxed out the speed in XB and I just hung up the spurs. Hopefully I'll be able to run in, guns a'blazin' this time... knowing those mangy varmints known as 'missed COINCs' will be 6 feet under up at Boot Hill once Grechetto is done with em. 1 Quote Link to comment Share on other sites More sharing options...
atrax27407 Posted January 3, 2019 Share Posted January 3, 2019 Does anyone know if this package works satisfactorily on real iron? I have not gotten an answer back about this from Harry. Quote Link to comment Share on other sites More sharing options...
senior_falcon Posted January 3, 2019 Author Share Posted January 3, 2019 There are two parts to your question: 1 - The package is designed to run using Classic99 and optionally Asm994a. It uses windows text format for the source code. At one time I was trying to maintain compatibility with both real iron and Classic99. There would have to be a few changes made for the compiler to work on real iron. You would have to convert the runtime routines to DV80 format and make a few changes to the file extensions (i.e. change .TXT to -S, .OBJ to -O and probably a few more) so it will run on real iron. For me, that proved to be a pain in the rump and with the ease of using Classic99, plus the option for CPU overdrive, there is really no reason for it because: 2 - The XB256 or compiled programs this creates have always been 100% compatible with real iron, although I have not actually tested that in a while. 2 Quote Link to comment Share on other sites More sharing options...
atrax27407 Posted January 3, 2019 Share Posted January 3, 2019 Oh well, maybe someday Quote Link to comment Share on other sites More sharing options...
senior_falcon Posted January 3, 2019 Author Share Posted January 3, 2019 Oh well, maybe someday ???? Quote Link to comment Share on other sites More sharing options...
Retrospect Posted January 3, 2019 Share Posted January 3, 2019 ???? Might be referring to it working on real iron someday. Mind you, it's a much more comforting experience to do it all on a PC and then the compiled game works on all as you said. Quote Link to comment Share on other sites More sharing options...
senior_falcon Posted January 3, 2019 Author Share Posted January 3, 2019 If your heart is set on running the entire package on a real TI99 I can post instructions on how to convert the .TXT files to DV80 format and tell which lines in the XB programs need to be changed. There are just a couple of lines. 1 Quote Link to comment Share on other sites More sharing options...
+arcadeshopper Posted January 3, 2019 Share Posted January 3, 2019 actually tipi will allow you to just open them .. if they are txt they become dv80 Quote Link to comment Share on other sites More sharing options...
atrax27407 Posted January 3, 2019 Share Posted January 3, 2019 I would like to see the instructions for converting the files. Quote Link to comment Share on other sites More sharing options...
senior_falcon Posted January 4, 2019 Author Share Posted January 4, 2019 (edited) All done for you. Check post #403. There is another folder called GRECHETT99 with the files modified to work with a real TI99. One thing to remember is that the files take up a lot of room. I think I got DSR ERROR 0082 and wondered what was wrong. It turns out the disk was full. You should use 2 disks if you can and DSDD if possible. Edited January 4, 2019 by senior_falcon Quote Link to comment Share on other sites More sharing options...
atrax27407 Posted January 4, 2019 Share Posted January 4, 2019 (edited) What is the correct filename for YRUNTIME1-S in the package? It is one character too long. Would it be YRUNTIME-S? Also, there are "artifacts" in the source of the RUNTIME files that I assume are tabs since the code is not in the usual source code format. Edited January 4, 2019 by atrax27407 Quote Link to comment Share on other sites More sharing options...
senior_falcon Posted January 4, 2019 Author Share Posted January 4, 2019 (edited) YRUNTIME1 is the old TI BASIC only compiler. You normally wouldn't be using it but If your program will run in TI BASIC, using it can save a few thousand bytes. You have to uncomment line 230. You can rename it "YRUNTIM1-S" and then change line 490 so it trims off the E: 490 PRINT #2:" COPY """&RT$&BX$&SEG$("RUNTIME",1,7-LEN(BX$))&STR$(I)&"-S""" As you surmised, tabs are used in the source code. The TI Assembler handles them just fine. (edit) - Come to think of it, what is probably easiest would be to rename all the RUNTIME files and omit the "E" i.e. RUNTIM1 etc. Then line 490 could be the original line and just change RUNTIME to RUNTIM and all should be well. I think I'll change the little conversion program I wrote so it strips off the comments and that way it would save some disk space. Edited January 4, 2019 by senior_falcon Quote Link to comment Share on other sites More sharing options...
atrax27407 Posted January 4, 2019 Share Posted January 4, 2019 I get a "Bad Value" in 120 message in the LOAD program i.e., CALL SPRITE(#1,62,2,R*8+137,21) Ideas? Quote Link to comment Share on other sites More sharing options...
senior_falcon Posted January 4, 2019 Author Share Posted January 4, 2019 (edited) If there is a bad value it is because R is not a value from 0 to 5. R comes from peeking a value left in the mailbox starting at -8. If there is garbage in there then R could be anything. This should be set to zero when you power on the computer. If you give the computer the "microsoft treatment" i.e. restart it then it should work. Or you could try CALL LOAD(-8,0,0,0,0,0,0,0,0) This has never been a problem, but I guess the program should see if the value in the mailbox is reasonable and if not then reset the values to default. Edited January 4, 2019 by senior_falcon Quote Link to comment Share on other sites More sharing options...
atrax27407 Posted January 4, 2019 Share Posted January 4, 2019 (edited) I just added a "garbage collection line" after the pre-scan to make sure the values are reset in all cases. 8 Call Load(-8,0,0,0,0,0,0,0,0) That should take care of any problems with weird values in the mailbox. Thanks! It also works if you execute the same from the command line to reset the values. Edited January 4, 2019 by atrax27407 1 Quote Link to comment Share on other sites More sharing options...
senior_falcon Posted January 4, 2019 Author Share Posted January 4, 2019 Problem with that is that you are resetting the mailbox and will lose the suggested prompts. Better would be: 8 CALL PEEK(-7,X)::IF X<0 OR X>5 THEN CALL LOAD(-8,0,0,0,0,0,0,0,0) (I think -7 is where R is stored; you might want to check that) 1 Quote Link to comment Share on other sites More sharing options...
atrax27407 Posted January 4, 2019 Share Posted January 4, 2019 Works great. Thanks! 1 Quote Link to comment Share on other sites More sharing options...
senior_falcon Posted January 5, 2019 Author Share Posted January 5, 2019 Well, a while back I did some work on the disk handling part of the compiler so that ArcadeShopper's program could work with the gigantic filenames he was using. That messed up something when writing to disk. The older version works fine and I will soon know why the new one doesn't. If you are using disk access with GRECHETTO don't be surprised if it doesn't work. Grrr.... 1 Quote Link to comment Share on other sites More sharing options...
Asmusr Posted January 7, 2019 Share Posted January 7, 2019 10 CALL SPGET("HELLO",A$) 20 CALL SAY(,A$) 30 GOTO 10 Gives chirping sounds in Classic99. Sometimes works in Win994a. This makes testing pretty much impossible. But the direct speech in Parsec works with both emulators. Maybe this has something to do with my equipment - I'm doing my TI work using XP running in a virtual box. This works in js99er now. 2 Quote Link to comment Share on other sites More sharing options...
senior_falcon Posted January 7, 2019 Author Share Posted January 7, 2019 Excellent! Thank you. Quote Link to comment Share on other sites More sharing options...
senior_falcon Posted January 8, 2019 Author Share Posted January 8, 2019 GRECHETTOBETA2 was uploaded to posts #1 and #403. The files in GRECHETT99 are modified to provide the proper defaults when running on a real TI99. The disk access bug is fixed. There are two other changes that hopefully won't cause trouble: 1 - The runtime files have been rearranged to use memory more efficiently - i.e. XB256 routines are not loaded unless needed. 2 - The runtime files in GRECHETT99 have been stripped of comments to be more compact. Without the comments they are about half the size. Hopefully no code was inadvertently stripped out. 3 Quote Link to comment Share on other sites More sharing options...
senior_falcon Posted January 9, 2019 Author Share Posted January 9, 2019 I have had some insights on how to add named subprograms to the compiler. I am not saying that it will actually happen, but there is a good possibility that this can be done. I have come up with a syntax for the compiled code and have roughed out the runtime routines for CALL, SUBEND and SUBEXIT that can process that code. This looks quite straightforward - I know how to handle the stack and how to pass values back and forth. There is no doubt that the assembly code would run as it should. The tricky part is getting the compiler to produce code that is in the proper syntax without breaking something else. I will look into whether this can be done. All I have right now is some general ideas on how to proceed. 4 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.