4Andy Posted July 31, 2016 Share Posted July 31, 2016 Hi guys, does anyone know of any other TMS9900 assemblers for the PC similar to WinAsm99.exe that I can use with Classic99, and that can also output Uncompressed Object Code and Compressed Object Code? WinAsm99.exe has a couple of bugs that I've found, once of which is a deal breaker for the projects I am working on, with the way it handles Relocatable Addresses. Quote Link to comment Share on other sites More sharing options...
4Andy Posted July 31, 2016 Author Share Posted July 31, 2016 Alternatively, does anyone have commented Assembly Source of the Assembler that runs on the TI, that I can convert to PC myself? Quote Link to comment Share on other sites More sharing options...
sometimes99er Posted July 31, 2016 Share Posted July 31, 2016 http://atariage.com/forums/topic/233677-xdt99-new-ti-99-cross-development-tools-available/ Quote Link to comment Share on other sites More sharing options...
4Andy Posted July 31, 2016 Author Share Posted July 31, 2016 Thanks! I found that earlier, but I was put off by the Python requirement, but I'll try it out. Are there any others, so I can weigh up the pro's and con's? Quote Link to comment Share on other sites More sharing options...
Asmusr Posted July 31, 2016 Share Posted July 31, 2016 xas99 is the best 2 Quote Link to comment Share on other sites More sharing options...
+Lee Stewart Posted July 31, 2016 Share Posted July 31, 2016 Hi guys, does anyone know of any other TMS9900 assemblers for the PC similar to WinAsm99.exe that I can use with Classic99, and that can also output Uncompressed Object Code and Compressed Object Code? WinAsm99.exe has a couple of bugs that I've found, once of which is a deal breaker for the projects I am working on, with the way it handles Relocatable Addresses. What version are you using? You should be using v3.010, which fixed a serious bug (I forget what it was, but will get back to you). I use it all of the time for the development of my fbForth 2.0. So far, I have found only a couple of irritations with it, viz., a limitation in the number of labels (~2800 or so) and needing to avoid labels with the same names as its undocumented macros. If you are using v3.010, What bugs are you finding? ...lee Quote Link to comment Share on other sites More sharing options...
+Lee Stewart Posted July 31, 2016 Share Posted July 31, 2016 The Win994a webpage (http://www.99er.net/win994a.shtml) says this about the mods to the cross-assembler: “The assembler application has been revised and updated to correct a problem with the resulting machine code generated by a few conditional branch op codes.” ...lee Quote Link to comment Share on other sites More sharing options...
4Andy Posted July 31, 2016 Author Share Posted July 31, 2016 Hi guys, thanks for your replies and I'm sorry for the delay, I was getting some 'easy to communicate' examples together. The version I am using is V3.010. The first bug is only a small one, and that is that the "-" prefix on TEXT opcodes, which negates the last character is not supported. I was using that in my TI code to detect the end of string, but I can deal with that issue. The one that is causing me a major issue is that some addresses become Absolute when they should be Relative. I'm a firm believer in one version of the source code and executable that'll run anywhere, so I am working on code that is in a Relocatable Program Image format, for want of a better term. The code detects where it's running from (nothing new there) and all BL's and BLWP's use an offset register that contains the LOAD address of the program segment and this is used to access a bunch of core routines and all program segments can be paged into / from VDP when required (especially on 9938/58) to maximise the 32K or 4K (if running from MM). That's all working, but just to be awkward, I also want to be able to use exactly the same source code contained in my standard routine libraries without modification in a more traditional way for other programs that don't need the dynamically relocatable shenanigans. When I started this I thought I would just use labels and use their offset from the beginning of the program and when I wanted to use them in a more traditional way I would just make sure the value used to calculate the offset from the beginning would be zero. I discovered that this worked on the original TI Assembler, but didn't work in WinAsm99. I'm using Classic99 for most of the development, so I need to assemble on the PC. The following code shows basic examples of the approach and the second exhibits the problem. Example 1) When used as Relocatable. (BASE is defined at the beginning of the source code of the program segment. Each segment is assembled as an individual program (which cuts assembly time on the TI). ME is obviously just a register that contains the LOAD address of the program segment and the code can be moved around in memory, as long as ME is adjusted) ** main program BASE ... ** Get LOAD address here and place in ME register BL @STARTP(ME) ... ** routine contained in source file library STARTP EQU $-BASE ... RT Example 2) When used in the more traditional way of TI Assembler coding. (BASE is set to zero and as long as STARTP is a Relative address will be adjusted when it is loaded by the Object Loader.) ** main program BASE EQU 0 ... BL @STARTP ... ** routine contained in source file library STARTP EQU $-BASE ... RT In example 2, STARTP is flagged as a Relative address in the original TI assembler (correctly, in my mind) but flagged as an Absolute address in WinAsm99, so when the program loads, the machine code copy of BL @STARTP contains a destination that just consists of the offset, and so is not being correctly resolved by the Object Loader by adjusting it to the location it is loaded into, i.e. it becomes BL @>00FE, instead of BL @>A0FE. Quote Link to comment Share on other sites More sharing options...
+adamantyr Posted August 1, 2016 Share Posted August 1, 2016 I use A99EXE myself, although I had to ask for a 64-bit version to be compiled for me to use on my modern PC. It doesn't create memory image files (E/A #5) but I can load it up into Classic99 and use the built-in tool for that. I've even added AORG so I can compile my CRPG and have it locate code and data in the CPU cartridge memory. No complaints. It's an old cross-assembler, the original files date back to 1988 and an Alan Beard... the version I had I got from someone here on AtariAge, regrettably I have lost his name and contact info. :/ Quote Link to comment Share on other sites More sharing options...
Tursi Posted August 1, 2016 Share Posted August 1, 2016 I mostly use the assembler that comes with GCC these days, but I don't do anything overly fancy like relocatable code. Quote Link to comment Share on other sites More sharing options...
4Andy Posted August 2, 2016 Author Share Posted August 2, 2016 A99EXE, seems like a no-go, then, if it's difficult to obtain. Tursi - from your video, gcc looks like a hassle, but I'll bear it in mind if I ever want to develop on the TI in C. I'm going to give xas99 a try as I'd forgotten I already have Python installed for Reaper. Thanks again all. Quote Link to comment Share on other sites More sharing options...
+adamantyr Posted August 2, 2016 Share Posted August 2, 2016 I can send you a copy of A99EXE if you want. Quote Link to comment Share on other sites More sharing options...
4Andy Posted August 2, 2016 Author Share Posted August 2, 2016 Yes, please. :-) Cheers! I'll give it a go too! Quote Link to comment Share on other sites More sharing options...
RickyDean Posted August 2, 2016 Share Posted August 2, 2016 I use A99EXE myself, although I had to ask for a 64-bit version to be compiled for me to use on my modern PC. It doesn't create memory image files (E/A #5) but I can load it up into Classic99 and use the built-in tool for that. I've even added AORG so I can compile my CRPG and have it locate code and data in the CPU cartridge memory. No complaints. It's an old cross-assembler, the original files date back to 1988 and an Alan Beard... the version I had I got from someone here on AtariAge, regrettably I have lost his name and contact info. :/ If you wouldn't mind I would like a copy too. 32 and/or 64 bit versions. thanks Quote Link to comment Share on other sites More sharing options...
+adamantyr Posted August 2, 2016 Share Posted August 2, 2016 Sure, here's a zip file containing both versions and the source as well. a99.zip 2 Quote Link to comment Share on other sites More sharing options...
4Andy Posted August 2, 2016 Author Share Posted August 2, 2016 Many thanks. :-) 1 Quote Link to comment Share on other sites More sharing options...
Tursi Posted August 3, 2016 Share Posted August 3, 2016 Tursi - from your video, gcc looks like a hassle, but I'll bear it in mind if I ever want to develop on the TI in C. GCC is much easier than my video these days, there's a download/patch/build/install script included with it. 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.