RXB Posted November 12, 2013 Share Posted November 12, 2013 My TIImageTool has a GPL disassembler. You could use a GROM dump and create the source code from it. However, I had the problem that there was no standard for GPL syntax. My diassembler, for example, uses a different argument order than shown in TI Intern listings. In fact, the official GPL source files (which I have for the TI-99/8) also adhere to the version I implemented. Moreover, the official GPL sources contain constructs that disappear in the object code (like loops). So it depends on which GPL assembler you plan to use whether the output of TIImageTool is useful or not. I use the RYTE DATA GPL Assembler for that reason. The only code that would not run from the original XB source had a couple of Macro Commands that were very easy to rewrite and only used a few times. These are noted in the GPL XB Source I included in RXB Source files. TI Intern used a backwards listing like most GPL Disassemblers do. To bad no one fixed this issue. Quote Link to comment Share on other sites More sharing options...
RXB Posted November 12, 2013 Share Posted November 12, 2013 OCR? Not really. This is what I get from GROM0. As I said, it is just a matter of creating a syntax that is understood by the GPL assembler Rich is going to use. Well I was thinking more of what I am doing typing in by hand real source code that will work: * TI INTERN ******************************************************************************** * * * CONSOLE GROM 0 ANALYSIS TI99/4A * * * * 9.6.84 H. Martin * * * ******************************************************************************** * Header: Header DATA >AA02 DATA >0000 DATA >0000 Power-up (isn't here) DATA >0000 Program (isn't here) DATA >1310 DSR DATA >1320 Subroutine DATA >0000 Interupt (isn't here) DATA >0000 * Jump Table: BR G@G03D9 GROM DSRLNK BR G@G0439 GSR return BR G@G09A5 Number to string BR G@>0393 Load standard character set BR G@G039B Load small capital letters BR G@G0443 Warning information BR G@G0446 Error information BR G@G0449 Execution of a Basic program in GROM BR G@G004F Power-up routine BR G@G11FA Greatest integer BR G@G0C7E Involution routine BR G@G0D55 Square root BR G@G0DB0 Exponent BR G@G0E60 LOG BR G@G0EF5 COS BR G@G0EFD SIN BR G@G0F5B TAN BR G@G0F7C ATN BR G@G03CB Accept tone BR G@G03D3 Bad response tone B G@G4D12 Get string space BR G@G2844 Reserved space in VDP RAM B G@G37B4 Set program pointers BYTE >60 BYTE >0D BYTE >00 BYTE >11 BYTE >00 BR G@G03BF Load lower case set BYTE >B0 Here change in some GROMS: Set pointers to the BYTE >B0 character blocks. The other routines are shifted BYTE >70 3 bytes upwards. * Power up routine DCLR @>83CE Clear sound bytes ST >70,@>9400 Load speech write ST >9F,@>8400 Set sound generators ST >BF,@>8400 ST >DF,@>8400 ST >FF,@>8400 DST >FF7E,@>8372 Load data/substack MOVE >0007,G@G044E,#1 Load VDP register CLR @>8300 MOVE >0071,@>8300,@>8301 Clear scratch pad >00->71 MOVE >003E,@>8300,@>8382 >82->C0 * - 100 - Of course after done I have to put in all the EQU and adddress references also. This is going to take some time as I am doing GROM0, GROM1 and GROM2. Quote Link to comment Share on other sites More sharing options...
+InsaneMultitasker Posted November 12, 2013 Share Posted November 12, 2013 This 99/4a ROM source may or may not be of benefit to you. I used to have a disk with GROM source though I sadly believe it bit the dust long ago. I will check my disks anyway... !994A-ROM.zip Quote Link to comment Share on other sites More sharing options...
Tursi Posted November 13, 2013 Share Posted November 13, 2013 OCR? Not really. This is what I get from GROM0. As I said, it is just a matter of creating a syntax that is understood by the GPL assembler Rich is going to use. Don't be snarky. A disassembly doesn't preserve the comments, which are the far more valuable part of such a work. Quote Link to comment Share on other sites More sharing options...
Tursi Posted November 13, 2013 Share Posted November 13, 2013 Actually.. isn't TI Intern already formatted with text? We should be able to just copy and paste the code out of it.... I'll take a look later tonight. Quote Link to comment Share on other sites More sharing options...
+InsaneMultitasker Posted November 13, 2013 Share Posted November 13, 2013 I wasn't sure I should post again into the sound list discussion... Rich, maybe a GPL thread would be good to start fresh with some of the discussion? I did look for the GPL source and could only find the ROM source disks. Sorry Quote Link to comment Share on other sites More sharing options...
+mizapf Posted November 13, 2013 Share Posted November 13, 2013 BTW, as I said, the "official" GPL sources look a bit different to the source code in TI Intern or other GPL listings. Take this as an example of how TI engineers wrote GPL programs (taken from the 99/8 sources, power-up routine): PWRUP$ DCLR @>CE CLEAR SOUND LIST INDICATOR* RESET SPEECH 9 TIMES, IN CASE IN SPEAK EXTERNAL ATA ST 9,@FAC ATASPRSET ATA ST >70,@>1100 TURN OFF SPEECH DEC @FAC ATA BR SPRSET ATA ST >9F,@>100 TURN OFF SOUND ATA ST >BF,@>100 ATA ST >DF,@>100 ATA ST >FF,@>100 ATA DST >FF7E,@STACK INITIALIZE THE SUBROUTINE STACK ATA CLR @GMODE ATA CALL MODE$$ ATA* DST >021C,@SCLEFT USE 28 COLUMNS GFH 8/08 MOVE 7 FROM ROM(#VDPRG$+1) TO VDP(0) but now move sgt,pct ATA MOVE 7 FROM ROM(#VDPRG$+1) TO @SHAD0 ATA** LAST POWER UP ROUTINE DOES SCREENS AND MENUS***** THIS INITIALIZATION IS FOR THE ARMADILLO BREADBOARD #2 ONLY ATA* CLR @0 CLEAR CPU RAM MOVE >71 FROM @0 TO @1 MOVE >3E FROM @>00 TO @>82 MOVE >B FROM @>00 TO @>74 MOVE 22 FROM @0 TO @>C2 ATA DST >0605,@CRLIST+1 DISABLE KBD INTERRUPTS ATA I/O @CRLIST,3 DST >1801,@CRLIST+1 TURN ON AUDIO GATE ATA I/O @CRLIST,3 INV @CLEARU WRITE A ONE TO CRU DST >0102,@CRLIST+1 ENABLE VDP AND EXTERNAL INTERRUPTS I/O @CRLIST,3 DST >1601,@CRLIST+1 TURN ON CASSETTE MOTOR ATA I/O @CRLIST,3 CALL TON1$$ BEEP AT PERSON ST 8,@>FD INDICATE 16K RAM ATA DST #>3FFF,@MEMTOP WE ALWAYS HAVE 16K OF RAM ATA MOVE 1 FROM ROM(#H20) TO VDP(1) DATA XML2,FILLV,#>300,#>D00,0 CLEAR 4K OF VIDEO RAM ATA* (LESS SCREEN) ATA DATA XML2,TIMVDP Determine Euro/USA model GFH CALL INITC1 CLEAR SCREEN AND LOAD LARGE CHARS ATA MOVE 32 FROM ROM(#TABLE$) TO TABLE(0)**** MOVE 512 FROM ROM(#CHAR1$) TO CHAR(>20) ATA MOVE 80 FROM ROM(#TIBUG$) TO CHAR(1)**** ALL : : ATA ST 5,YPTRSCAN ST YPT,@KEYBD RESET ALL KEYBOARDS FOR SCAN ATA SCAN DEC YPT BR RSCAN DCLR YPT $REPEAT ST >60,@RKEY ATA $REPEAT FMT 2('@RKEY'),>11^,30<,2('@RKEY') ATA SUB >12,YPT ADD >8,@RKEY ATA $UNTIL @RKEY .EQ. >E0 ATA $UNTIL YPT .EQ. 3 HOME UNLM ATA FMT 5^,15<,'1,2,3',29<,'4,5,6',29<,'7,8,9'; 8^,16<,':READY-PRESS ANY KEY TO BEGIN:' LISTM ATA MOVE 17 FROM ROM(#TI) TO RAM(296) MOVE 29 FROM ROM(#TI1979) TO RAM(706) ATA MOVE 8 FROM ROM(#HC) TO RAM(364) ATA 8/12 Quote Link to comment Share on other sites More sharing options...
Tursi Posted November 13, 2013 Share Posted November 13, 2013 BTW, as I said, the "official" GPL sources look a bit different to the source code in TI Intern or other GPL listings. Take this as an example of how TI engineers wrote GPL programs (taken from the 99/8 sources, power-up routine): Yes, of course, but it's easy to massage the text into something compliant once we have it. Sorry, Rich, I forgot to check the PDF last night, I ended up tied up all night. I have sent myself a note to check tonight, and let you know. Maybe save some typing at least. Quote Link to comment Share on other sites More sharing options...
+mizapf Posted November 13, 2013 Share Posted November 13, 2013 I found the $REPEAT ... $UNTIL structures quite interesting. Also, they seem to have an issue with special XML instructions (XML2); they used a DATA line to force the GPL assembler to produce the intended object code. Quote Link to comment Share on other sites More sharing options...
Tursi Posted November 14, 2013 Share Posted November 14, 2013 Here Rich... with luck this might save you some typing. This is all the code from TI Intern copied into text files and reformatted with a script to match the GPL syntax sample that you posted. Have a look and see, you may still need to fix some stuff up, but hopefully much less than starting from scratch. The ROM code I assembled with Asm994A and it looks correct. The GPL code I didn't assemble, so you'll have to review and see how it looks. The included readme file lists exactly what my script changed. Hope that helps! TIIntern_ROMSrc.zip Quote Link to comment Share on other sites More sharing options...
RXB Posted November 14, 2013 Share Posted November 14, 2013 BTW, as I said, the "official" GPL sources look a bit different to the source code in TI Intern or other GPL listings. Take this as an example of how TI engineers wrote GPL programs (taken from the 99/8 sources, power-up routine): PWRUP$ DCLR @>CE CLEAR SOUND LIST INDICATOR * RESET SPEECH 9 TIMES, IN CASE IN SPEAK EXTERNAL ATA ST 9,@FAC ATA SPRSET ATA ST >70,@>1100 TURN OFF SPEECH DEC @FAC ATA BR SPRSET ATA ST >9F,@>100 TURN OFF SOUND ATA ST >BF,@>100 ATA ST >DF,@>100 ATA ST >FF,@>100 ATA DST >FF7E,@STACK INITIALIZE THE SUBROUTINE STACK ATA CLR @GMODE ATA CALL MODE$$ ATA * DST >021C,@SCLEFT USE 28 COLUMNS GFH 8/08 MOVE 7 FROM ROM(#VDPRG$+1) TO VDP(0) but now move sgt,pct ATA MOVE 7 FROM ROM(#VDPRG$+1) TO @SHAD0 ATA * * LAST POWER UP ROUTINE DOES SCREENS AND MENUS * * *** THIS INITIALIZATION IS FOR THE ARMADILLO BREADBOARD #2 ONLY ATA * CLR @0 CLEAR CPU RAM MOVE >71 FROM @0 TO @1 MOVE >3E FROM @>00 TO @>82 MOVE >B FROM @>00 TO @>74 MOVE 22 FROM @0 TO @>C2 ATA DST >0605,@CRLIST+1 DISABLE KBD INTERRUPTS ATA I/O @CRLIST,3 DST >1801,@CRLIST+1 TURN ON AUDIO GATE ATA I/O @CRLIST,3 INV @CLEARU WRITE A ONE TO CRU DST >0102,@CRLIST+1 ENABLE VDP AND EXTERNAL INTERRUPTS I/O @CRLIST,3 DST >1601,@CRLIST+1 TURN ON CASSETTE MOTOR ATA I/O @CRLIST,3 CALL TON1$$ BEEP AT PERSON ST 8,@>FD INDICATE 16K RAM ATA DST #>3FFF,@MEMTOP WE ALWAYS HAVE 16K OF RAM ATA MOVE 1 FROM ROM(#H20) TO VDP(1) DATA XML2,FILLV,#>300,#>D00,0 CLEAR 4K OF VIDEO RAM ATA * (LESS SCREEN) ATA DATA XML2,TIMVDP Determine Euro/USA model GFH CALL INITC1 CLEAR SCREEN AND LOAD LARGE CHARS ATA MOVE 32 FROM ROM(#TABLE$) TO TABLE(0) **** MOVE 512 FROM ROM(#CHAR1$) TO CHAR(>20) ATA MOVE 80 FROM ROM(#TIBUG$) TO CHAR(1) **** ALL : : ATA ST 5,YPT RSCAN ST YPT,@KEYBD RESET ALL KEYBOARDS FOR SCAN ATA SCAN DEC YPT BR RSCAN DCLR YPT $REPEAT ST >60,@RKEY ATA $REPEAT FMT 2('@RKEY'),>11^,30<,2('@RKEY') ATA SUB >12,YPT ADD >8,@RKEY ATA $UNTIL @RKEY .EQ. >E0 ATA $UNTIL YPT .EQ. 3 HOME UNLM ATA FMT 5^,15<,'1,2,3',29<,'4,5,6',29<,'7,8,9'; 8^,16<,':READY-PRESS ANY KEY TO BEGIN:' LISTM ATA MOVE 17 FROM ROM(#TI) TO RAM(296) MOVE 29 FROM ROM(#TI1979) TO RAM(706) ATA MOVE 8 FROM ROM(#HC) TO RAM(364) ATA 8/12 BTW, as I said, the "official" GPL sources look a bit different to the source code in TI Intern or other GPL listings. Take this as an example of how TI engineers wrote GPL programs (taken from the 99/8 sources, power-up routine): PWRUP$ DCLR @>CE CLEAR SOUND LIST INDICATOR * RESET SPEECH 9 TIMES, IN CASE IN SPEAK EXTERNAL ATA ST 9,@FAC ATA SPRSET ATA ST >70,@>1100 TURN OFF SPEECH DEC @FAC ATA BR SPRSET ATA ST >9F,@>100 TURN OFF SOUND ATA ST >BF,@>100 ATA ST >DF,@>100 ATA ST >FF,@>100 ATA DST >FF7E,@STACK INITIALIZE THE SUBROUTINE STACK ATA CLR @GMODE ATA CALL MODE$$ ATA * DST >021C,@SCLEFT USE 28 COLUMNS GFH 8/08 MOVE 7 FROM ROM(#VDPRG$+1) TO VDP(0) but now move sgt,pct ATA MOVE 7 FROM ROM(#VDPRG$+1) TO @SHAD0 ATA * * LAST POWER UP ROUTINE DOES SCREENS AND MENUS * * *** THIS INITIALIZATION IS FOR THE ARMADILLO BREADBOARD #2 ONLY ATA * CLR @0 CLEAR CPU RAM MOVE >71 FROM @0 TO @1 MOVE >3E FROM @>00 TO @>82 MOVE >B FROM @>00 TO @>74 MOVE 22 FROM @0 TO @>C2 ATA DST >0605,@CRLIST+1 DISABLE KBD INTERRUPTS ATA I/O @CRLIST,3 DST >1801,@CRLIST+1 TURN ON AUDIO GATE ATA I/O @CRLIST,3 INV @CLEARU WRITE A ONE TO CRU DST >0102,@CRLIST+1 ENABLE VDP AND EXTERNAL INTERRUPTS I/O @CRLIST,3 DST >1601,@CRLIST+1 TURN ON CASSETTE MOTOR ATA I/O @CRLIST,3 CALL TON1$$ BEEP AT PERSON ST 8,@>FD INDICATE 16K RAM ATA DST #>3FFF,@MEMTOP WE ALWAYS HAVE 16K OF RAM ATA MOVE 1 FROM ROM(#H20) TO VDP(1) DATA XML2,FILLV,#>300,#>D00,0 CLEAR 4K OF VIDEO RAM ATA * (LESS SCREEN) ATA DATA XML2,TIMVDP Determine Euro/USA model GFH CALL INITC1 CLEAR SCREEN AND LOAD LARGE CHARS ATA MOVE 32 FROM ROM(#TABLE$) TO TABLE(0) **** MOVE 512 FROM ROM(#CHAR1$) TO CHAR(>20) ATA MOVE 80 FROM ROM(#TIBUG$) TO CHAR(1) **** ALL : : ATA ST 5,YPT RSCAN ST YPT,@KEYBD RESET ALL KEYBOARDS FOR SCAN ATA SCAN DEC YPT BR RSCAN DCLR YPT $REPEAT ST >60,@RKEY ATA $REPEAT FMT 2('@RKEY'),>11^,30<,2('@RKEY') ATA SUB >12,YPT ADD >8,@RKEY ATA $UNTIL @RKEY .EQ. >E0 ATA $UNTIL YPT .EQ. 3 HOME UNLM ATA FMT 5^,15<,'1,2,3',29<,'4,5,6',29<,'7,8,9'; 8^,16<,':READY-PRESS ANY KEY TO BEGIN:' LISTM ATA MOVE 17 FROM ROM(#TI) TO RAM(296) MOVE 29 FROM ROM(#TI1979) TO RAM(706) ATA MOVE 8 FROM ROM(#HC) TO RAM(364) ATA 8/12 I do not think anyone has a GPL Assembler that will run this GPL code. That is why I used the RYTE DATA GPL Assembler as it can handle more LABELS then any other GPL Assembler I have tried. RYTE DATA is the only one that is Endless pass and can resolve complicated References along with all the GPL Labels used. And believe me I have tried them all many times with it being much more complicated to run the others vs RYTE DATA Quote Link to comment Share on other sites More sharing options...
RXB Posted November 14, 2013 Share Posted November 14, 2013 Here Rich... with luck this might save you some typing. This is all the code from TI Intern copied into text files and reformatted with a script to match the GPL syntax sample that you posted. Have a look and see, you may still need to fix some stuff up, but hopefully much less than starting from scratch. The ROM code I assembled with Asm994A and it looks correct. The GPL code I didn't assemble, so you'll have to review and see how it looks. The included readme file lists exactly what my script changed. Hope that helps! TIIntern_ROMSrc.zip Tursi thank you! What kind of files are these that have a .asm ? Quote Link to comment Share on other sites More sharing options...
+mizapf Posted November 14, 2013 Share Posted November 14, 2013 Is there a description of that GPL assembler? Because in that case I could add a compatibility mode to the GPL disassembler in TIImageTool to produce code that can be assembled. Quote Link to comment Share on other sites More sharing options...
RXB Posted November 14, 2013 Share Posted November 14, 2013 (edited) Is there a description of that GPL assembler? Because in that case I could add a compatibility mode to the GPL disassembler in TIImageTool to produce code that can be assembled. Here is the entire RXB Package including in the Object File the RYTE DATA GPL Assembler and GPL@LOADER and CSAVE and EDIT. Everything is here for anything you would want to do in the attached ZIP. Rich Here are the demos of using the RYTE DATA GPL Assembler. http://www.youtube.com/watch?v=Cs4D_Gn0Le8 RXB2012.zip.zip Edited November 14, 2013 by RXB Quote Link to comment Share on other sites More sharing options...
Tursi Posted November 15, 2013 Share Posted November 15, 2013 (edited) Tursi thank you! What kind of files are these that have a .asm ? ASCII text. (Windows format - should open in any PC or Mac text editor - adapt as needed. ) Edited November 15, 2013 by Tursi Quote Link to comment Share on other sites More sharing options...
RXB Posted November 16, 2013 Share Posted November 16, 2013 ASCII text. (Windows format - should open in any PC or Mac text editor - adapt as needed. ) Ok it turns out they are Visual Studio files only and I have to load a addon just to read them as I do not have Visual Studio loaded on my computer. When you said they are text that is true but ONLY if you have Visual Studio or a addon specifically loaded to see them and view them. Otherwise you get what I get which is that window that says "You can not load this file as you do not have the proper program to view or load it!" Thanks after some investigation I changed the extension to .txt and they work great. Again big thanks. Rich Quote Link to comment Share on other sites More sharing options...
Tursi Posted November 16, 2013 Share Posted November 16, 2013 Ok it turns out they are Visual Studio files only and I have to load a addon just to read them as I do not have Visual Studio loaded on my computer. When you said they are text that is true but ONLY if you have Visual Studio or a addon specifically loaded to see them and view them. Otherwise you get what I get which is that window that says "You can not load this file as you do not have the proper program to view or load it!" Thanks after some investigation I changed the extension to .txt and they work great. Again big thanks. Rich Rich: The extension does not change the content of the file. I wrote them in NOTEPAD. Yes, Visual Studio understands .ASM as an extension, but they did not require any form of extension to be installed. If you had said you were having trouble I would have told you to just rename them. I used ".asm" to try and /avoid/ confusion! Glad you sorted it, anyway. Quote Link to comment Share on other sites More sharing options...
slinkeey Posted November 16, 2013 Share Posted November 16, 2013 (edited) Rich, Just open them with any text editor.. Notepad or even Wordpad if you have windows. They are text files with an asm extension. Just like xml is a text file. No need to give it a different extension. Edited November 16, 2013 by slinkeey Quote Link to comment Share on other sites More sharing options...
RXB Posted November 17, 2013 Share Posted November 17, 2013 Rich, Just open them with any text editor.. Notepad or even Wordpad if you have windows. They are text files with an asm extension. Just like xml is a text file. No need to give it a different extension. I have Windows 7 and did not open. Like I said I got that window that says you need the proper program to load them. After looking it up on Google I found I could just change the Extensions from .asm to .txt but everyone learns something everyday. This was mine. I was not complaining just saying exactly what happened. I always assume that people do not have my programs or my knowledge on things like this. It does create problems as they think I am saying they are stupid or something, but really I am heading off confusions as that is the source of most disagreements. Like writing a manual or article always assume that they know nothing of the Nomenclator or symbols or abbreviations. So Slinky I assume you have something loaded that I do not have loaded. I keep my OS pretty clean of excess stuff that would slow it down. But I do have Movie editing software and converter programs. Just no Visual Studio stuff. Quote Link to comment Share on other sites More sharing options...
slinkeey Posted November 17, 2013 Share Posted November 17, 2013 I use xubuntu. On my Windows desktop at work I just right click files and choose "Open With" or something like that. Quote Link to comment Share on other sites More sharing options...
+Lee Stewart Posted November 17, 2013 Share Posted November 17, 2013 I have Windows 7 and did not open. Like I said I got that window that says you need the proper program to load them. After looking it up on Google I found I could just change the Extensions from .asm to .txt but everyone learns something everyday. This was mine. I was not complaining just saying exactly what happened. I always assume that people do not have my programs or my knowledge on things like this. It does create problems as they think I am saying they are stupid or something, but really I am heading off confusions as that is the source of most disagreements. Like writing a manual or article always assume that they know nothing of the Nomenclator or symbols or abbreviations. So Slinky I assume you have something loaded that I do not have loaded. I keep my OS pretty clean of excess stuff that would slow it down. But I do have Movie editing software and converter programs. Just no Visual Studio stuff. Rich... Stop, and take a deep breath! Om-m-m-m... Left-clicking on a file (at least in Windows) causes Windows to try to open the file in whatever program Windows has associated with that extension. Any one of us may have a different program associated with a given file extension because Windows allows us to change it. You could tell Windows to default to TI-ImageTool for TXT files and any time you left-click on a file with that extension TI-ImageTool would be launched to attempt opening it. All you need to do if the wrong program is launched or Windows tells you you don't have the program you need is to RIGHT-click on the file and choose "Open with" and, if the program you want to use isn't one of the options, choose "Choose default program..." to select whatever program you want to open the file. After that, left-clicking that kind of file will open it in your chosen application. The other alternative is to launch the program you want to use to open the file and then choose "Open", find the file and open it. ...lee Quote Link to comment Share on other sites More sharing options...
Tursi Posted November 17, 2013 Share Posted November 17, 2013 I didn't think twice about it.. in truth I don't rely on the associations, I explicitly open files in my text editor of choice. Anyway, sorry. I'll just use .txt from here on out so that nobody is confused. Quote Link to comment Share on other sites More sharing options...
RXB Posted November 17, 2013 Share Posted November 17, 2013 Sorry Tursi just pointing out stupid people like me. Quote Link to comment Share on other sites More sharing options...
slinkeey Posted November 18, 2013 Share Posted November 18, 2013 Oh relax.. No one is stupid here.. 1 Quote Link to comment Share on other sites More sharing options...
RobertLM78 Posted November 18, 2013 Share Posted November 18, 2013 Oh relax.. No one is stupid here.. Especially not someone who puts together a fully implented BASIC that kicks backside . 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.