Jump to content

Photo

xdt99: New TI 99 cross-development tools available


237 replies to this topic

#226 ralphb OFFLINE  

ralphb

    Dragonstomper

  • Topic Starter
  • 591 posts
  • Location:Germany

Posted Thu Sep 7, 2017 9:28 AM

You could create a file as.bat in your source folder, i.e., the folder that contains your assembly files:

.

@echo off
rem adjust paths to match your downloaded files
c:/development/xdt99/xas99.py -R %1.a99 -L %1.lst -S
c:/development/xdt99/xdm99.py -X sssd test.dsk -a %1.obj -f disfix80
rem start MESS
c:/emulators/mess64.exe ti99_4a -peb:slot8 hfdc -peb:slot8:hfdc:f1 525dd -peb:slot2 32kmem -cart C:/mytiroms/edasm.rpk -flop1 test.dsk

.

Then you just invoke with

.

as.bat myprogram

.

to assemble your file myprogram.a99 as E/A option #3, put the result on a disk, and start MESS and E/A with it.  You only need to adjust the paths of your programs in the batch file once.



#227 HackMac OFFLINE  

HackMac

    Chopper Commander

  • 164 posts
  • Skywalker
  • Location:Germany

Posted Sat Nov 18, 2017 10:48 AM

I've finally released a new version of the xdt99 suite.

The biggest change is the inclusion of two disassemblers xda99 and xdg99 for machine code and GPL bytecode, resp.  They support top-down disassembly as well as "run" disassembly that tries to follow the program flow and thus won't disassemble data segments.

Additionally, xas99 has some new features:

  • include filename in error message
  • create a textual version of the binary using BYTEs
  • include symbols in listing (option S of E/A)
  • generate EQU file of used symbols
Likewise, xga99 is moving ahead for feature parity with xas99:
  • generates listing
  • generate symbols (like xas99)
Since the disassemblers are brand new and not so thoroughly tested as the assemblers yet, I'm happy to receive bug reports and feature requests.
 
Download link here (don't download the source)     Manual link here
 
For the next release, I'm going to tackle my huge backlog and bug list, before I'll do a big refactoring after that.

 

 
Today, I pushed an update of my sources of the Objective-C wrapper classes and the sources of the sample App SimpleXDTIDE to be synchronously.
Link to the release at GitHub



#228 adamantyr OFFLINE  

adamantyr

    Stargunner

  • 1,392 posts

Posted Tue Nov 28, 2017 4:08 PM

Hey, just a quick note...

 

I've been having some problems with my CRPG running on the actual hardware.... after a lot of sweat and tears and flummoxed testing I finally narrowed it down to the HFE image not being quite right.

 

My disk image has a 128K file on it and it was missing the last handful of sectors whenever I tried to load them. So I created a new 360K DSK image in TI99Dir and re-copied the files, only to have the loader fail hard-core immediately and dump back to the master title screen with copious screen corruption. :?

 

I managed to find an older DSK image I knew worked and re-copy the files, and finally everything is working as it should... but I am curious as to why the HFE image had issues. Are there any known issues interacting with TI99DIR created DSK images? I should add that the catalog commands for xhm99/xdm99 worked just fine with no issues on the HFE image, plus it cataloged just fine on the actual TI. It only failed on load attempts.

 

The only other thing I can think of is the loader is an E/A Option 5 file generated with Classic99's save utility, and it's also placed in low RAM at >3000. I can try and get a "working" and "broken" HFE image for comparison purposes if you want to investigate it.



#229 mizapf OFFLINE  

mizapf

    River Patroller

  • 3,420 posts
  • Location:Germany

Posted Tue Nov 28, 2017 4:27 PM

Maybe TIImageTool can say something about that, since it can read and write HFE. Please send me the images or upload them here.



#230 adamantyr OFFLINE  

adamantyr

    Stargunner

  • 1,392 posts

Posted Tue Nov 28, 2017 4:57 PM

I would, but when I went to make a new fresh image and replicate the issue, it didn't replicate.  :-o  It may have been because TI99Dir and all the other tools were freshly opened, I don't know.

 

If I have further issues of this nature I'll be sure to save the images and share them here immediately.



#231 ralphb OFFLINE  

ralphb

    Dragonstomper

  • Topic Starter
  • 591 posts
  • Location:Germany

Posted Wed Nov 29, 2017 12:35 AM

Just a note: xhm99 can also create HFE files, or decode them back to DSK.  So next time you create a nonworking HFE file with TIDIR you can decode that file with xhm99 and compare the DSK images, or vice versa.



#232 Asmusr OFFLINE  

Asmusr

    River Patroller

  • 2,943 posts
  • Location:Denmark

Posted Mon Nov 26, 2018 3:35 PM

I'm having problems calculating the high and low bytes of a label. For instance for this test:

       aorg >a000
       limi 0
label  jmp  label
       byte (label/256),(label%256)
       data label/256
       data label%256
       data label
       end

This is the result:

XAS99 CROSS-ASSEMBLER   VERSION 1.7.0
**** **** ****     > test.a99
0001                      aorg >a000
0002 A000 0300  24        limi 0
     A002 0000 
0003 A004 10FF  14 label  jmp  label
0004 A006 A1FC            byte (label/256),(label%256)
0005 A008 FFA1            data label/256
0006 A00A 00FC            data label%256
0007 A00C A004            data label
0008                      end

Only the last data directive gives the correct result (label=>A004).



#233 Asmusr OFFLINE  

Asmusr

    River Patroller

  • 2,943 posts
  • Location:Denmark

Posted Mon Nov 26, 2018 3:51 PM

After more experimenting, it appears that this gives the wanted result:

byte (label&>ff00)/256,label



#234 Lee Stewart OFFLINE  

Lee Stewart

    River Patroller

  • 3,832 posts
  • Location:Silver Run, Maryland

Posted Mon Nov 26, 2018 6:31 PM

I'm having problems calculating the high and low bytes of a label. 

 

You must be needing to do this for a reason that is not obvious because “data label” gives exactly the same code as the desired result for “byte hi-label-byte,lo-label-byte”.

 

...lee



#235 Asmusr OFFLINE  

Asmusr

    River Patroller

  • 2,943 posts
  • Location:Denmark

Posted Mon Nov 26, 2018 11:11 PM

 

You must be needing to do this for a reason that is not obvious because “data label” gives exactly the same code as the desired result for “byte hi-label-byte,lo-label-byte”.

 

...lee

 

Sure, in the real use case the absolute addresses are inside a non-word-aligned byte stream.


Edited by Asmusr, Mon Nov 26, 2018 11:12 PM.


#236 Asmusr OFFLINE  

Asmusr

    River Patroller

  • 2,943 posts
  • Location:Denmark

Posted Tue Nov 27, 2018 12:11 AM

I can see in the xas99 code that the reason I run into this issue is because division of a negative number x is coded as: -((-x)/y). For compatibility with the E/A assembler, I guess. 

 

So ->A004 = >5FFC , >5FFC/>0100 = >005F , ->005F = >FFA1. 

 

If I use AND before the division:

 

>A004 & >FF00 = >A000 , ->A000 = >6000 , >6000 / >0100 = >0060 ,  ->0060 = >FFA0.


Edited by Asmusr, Tue Nov 27, 2018 12:11 AM.


#237 ralphb OFFLINE  

ralphb

    Dragonstomper

  • Topic Starter
  • 591 posts
  • Location:Germany

Posted Tue Nov 27, 2018 5:22 AM

Yes, unfortunately, xas99 has to live with quite a few warts from the original E/A.  For division, it probably makes sense to add an unsigned division operator, like "//".  I put it on my todo list.  Also, I always wanted to implement shift operators, but '>' is already taken.  :)



#238 Asmusr OFFLINE  

Asmusr

    River Patroller

  • 2,943 posts
  • Location:Denmark

Posted Tue Nov 27, 2018 11:19 AM

Yes, unfortunately, xas99 has to live with quite a few warts from the original E/A.  For division, it probably makes sense to add an unsigned division operator, like "//".  I put it on my todo list.  Also, I always wanted to implement shift operators, but '>' is already taken.  :)

 

You could also add a switch to use 32-bit (signed) arithmetic in the preprocessor.






0 user(s) are browsing this forum

0 members, 0 guests, 0 anonymous users