Jump to content
IGNORED

Seeking Source - Ring Destroyer by Republic Software.


dhe

Recommended Posts

Thanks Chris,

  Unfortunately, looking at the disk with ti99dir and looking at the first three files they are parts of extended basic code.

  The third file A$ is the high scores file.

 

  Thank you for looking!

 

 

image.png.2d0f707cda51160e5c4bada7b5da6db2.png

 

  • Like 1
Link to comment
Share on other sites

@dhe i don't know if i understand what you really search and if you already seen but i have published months ago this game on ti99iuc's database. I have dumped It personally so i am sure It Is complete and working

 

https://www.ti99iuc.it/web/index.php?pageid=database_cerca&archivioid=308

 

 

 

Edited by ti99iuc
  • Like 2
Link to comment
Share on other sites

Thank you both!

 

@chris36  I had no doubt that the program dsk you attached ran.

 

I was hoping someone had the assembly source.

 

Interestingly enough the disk provided by @ti99iuc has a different directory:

 

image.png.6065fcde2095fd49ea69ddacd150c6fe.png

 

As all files show an extended basic listing, without drilling in further, I can only guess they have embedded assembly similar to what systex was used for. 

 

And the manual makes it clear there is both an extended basic version and an assembly language version.

 

In any case, it might be fun at some point down the line to see if I can break it all down with TICodeED and then maybe try to assemble using something like GEM256.

 

Thanks to both of you.

  • Like 2
Link to comment
Share on other sites

As a slight aside....

 

I am often able to look up corporate records from companies that are long out of business with much easy.

 

Doesn't seem to be that easy to look through corporate records for those corporations, incorporated in DC.

  • Haha 1
Link to comment
Share on other sites

Hmm... might decide to dump the contents and see what the extra is between the disks.  As for assembly, I'd be in the same boat as you.  I'd have to look for any disassembler's that might exist. I've reversed engineered compiled python code and a java program.  Haven't tried TI-99/4A. 

Link to comment
Share on other sites

@dhe yes about the content of the disk, the credits file Is a simply text which I add to for website info.

 

The rest of the files, however, were on the original disk and copied as I found them.

 

The game starts in pure extended basic automatically when a 32k Is not connected.

 

With the 32k Memory expansion connected instead It loads the game using some assembly routines.The differences are striking and are immediately apparent in the game.

Edited by ti99iuc
Link to comment
Share on other sites

I didn't delve into this, i have not skill as developer but for my not-so-extensive knowledge, it seemed to me as if some routine within the extended basic code was being exploited. I didn't thought about an hidden code somewhere in the disk anyway, It could be possibile too?

 

 

Link to comment
Share on other sites

Summary of Extended Basic Files:
Note: Parenthesis contain my nomenclature which is explained later.
WHTECH: RINGDEST.DSK and RING_ERR.DSK from WHTECH are the same except they have different byte fill pattern at the end of the file.
WHTECH: RINGDEST.DSK has files: LOAD (loader v2), EXTBASIC (xbasic v2), ASSEMBLY (assembly v2)
IUC Floppy: RingD_disk.dsk has files: #RING-B (assembly v2), ASSEMBLY (assembly v2), EXTBASIC (xbasic v2), LOAD (loader v2), #RING-A (loader v1)
IUC XB32: RINGDEXB32.dsk has files: LOAD (loader v2), ASSEMBLY (assembly v1)
IUC XB: WAV File + RingDest-X.dsk has files: LOAD (xbasic v1)
I did not include the CREDITS file as that was added by IUC and not original TI file.  Also didn't include high score file.

 

We are missing the ASSEMBLY version from cassette on WHTECH/IUC.  Cassette should have extended basic version as one "file", followed by the assembly version as one "file".  It would have been nice to have the assembly as WAV file for this comparison.

 

The WHTECH RINGDEST.DSK LOAD file has BASIC starting with line number 8980.  The last line is IF Q THEN RUN "DSK1.ASSEMBLY" ELSE RUN "DSK1.EXTBASIC".  This code block is what I'm calling "loader v2".  In addition to testing for 32K memory, it also prints some title information to the screen.  The DSK1.EXTBASIC code starts at line 10 and I'm calling it "xbasic v2".  So the startup sequence for Extended Basic version is "loader v2" + "xbasic v2", or "loader v2" + "assembly v2".

 

Compare this with IUC XB ZIP/folder.  Since this is the only folder that includes a WAV file, I'm making the assumption that the WAV file is the primary source and that the DSK file was obtained from the WAV file.  The RingDest-X.dsk has one file LOAD which I am calling "xbasic v1".  This "xbasic v1" combines mostly the same BASIC as "xbasic v2", but it adds a slightly modified "loader" code block at the end.  This makes sense for tape loading since only one version is being loaded and run, either the extended BASIC or the Assembly.  So I infer that "xbasic v1" is meant for standalone running, while "xbasic v2" needs "loader v2" to start it.

 

The IUC XB32 ZIP/folder, appears to be an Assembly only DSK.  It has a "loader v2" (same as WHTECH Disk), and "assembly v1".  I haven't looked into the assembly yet.  But the ASSEMBLY files are BASIC instructions that probably load and run the assembly code.  Both versions of assembly are the same except for the first line, "1 ON WARNING NEXT" (assembly v1), or "1 ON BREAK NEXT :: ON WARNING NEXT" (assembly v2).

 

Finally, we get to the IUC Floppy ZIP/folder.  For auto loading, it starts with file LOAD (loader v2), the same as the WHTECH disk. That loads the same files, either EXBASIC (xbasic v2) or ASSEMBLY (assembly v2).  This is the same as the WHTECH disk.  However, this floppy also has two extra files, #RING-B (repeat of assembly v2), #RING-A (a different loader v1).  This loader v1 is different from loader v2 in that it starts with low line numbers and ends with IF Q THEN RUN "DSK1.#RING-B" ELSE RUN "DSK1.LOAD".  Note that #RING-B is assembly.  So this says, run either assembly or run the other loader.  Then the other load says run assembly or extended basic.  ???  Not sure what "feature" this is providing.

 

Bottom line: It appears both disks are equivalent as far as Extended Basic operation goes.  At first glance, Assembly BASIC startup looks the same.

Also of note, you can copy/paste the xbasic code from the "txt" folder inside IUC XB ZIP/Folder into classic99 emulator and it runs.  So it doesn't appear that the code is loading anything hidden.  So that's a good start to modify if interested in standalone Extended Basic version.

 

Edited by chris36
Typo fixed. IUC instead of UIC.
  • Like 3
Link to comment
Share on other sites

While looking to see how the Assembly was done, I noticed that the high score file $A, on the WHTECH file, was length 1 (x256 bytes) which seems right.  The $A file on the IUC floppy is length 15 (yikes!).  The first 256 bytes look like high scores shown in game,   The other 14 sectors contain BASIC code.  This code contains these strings:

 

TEXWARE ASSOCIATES

350 FIRST NORTH STREET

WELLINGTON, IL   60973

(C)  COPYRIGHT 1983

BY:   MARK L. GREEN

 

HERE COMES OH NO

HERE COMES ROUND ABOUT

HERE COMES MEAN SQUARE

HOW DO THEY GET ME

HELP ME TO PLAY WELL

SOMEONE DOES NOT LIKE ME TO PLAY

THEY WILL NOT LET ME PLAY

 

Looks like another game mixed in here.  Floppy had old content and reused?  But then why does the high score file length include this?  Weird.  Anyone recognize this other game?

 

Edited by chris36
  • Like 3
Link to comment
Share on other sites

I think that the machine code, or assembly, is at the end of the ASSEMBLY Extended Basic program. The xBASIC code uses INIT, PEEK, LOAD, and LINK statements to handle running the machine language parts of the program. Using hexdump on RINGDEST.DSK shows the following. Note all values hexadecimal.

 

File offset 0x2300 is the start of the ASSEMBLY xBASIC content. The header shows:

Length?: 0xf825 (anyone have details on this?)

VDP Address of BASIC Code: 0x14d3

VDP Address of Line Pointers: 0x1308

VDP Address of end of Code: 0x37d7

 

This is followed by a block of line number pointers at file offset 0x2308. This is followed by the start of the xBASIC code at file offset 0x24d4. The xBASIC code appears to end at file offset 0x3832. However, there is still content that appears in the rest of this file which ends at file offset 0x47ff. It doesn’t look like xBASIC. I suspect this is the machine code that the LINK statements are executing.

  • Like 1
  • Thanks 1
Link to comment
Share on other sites

I extracted the section of the disk file that appears to be assembly.  It's attached as ringdest_assembly.bin.  I used the disassembler, xda99, found at https://github.com/endlos99/xdt99.  The resulting file, ringdest_disassembly.txt, is also attached.  There are multiple subroutines in there.  From the xBasic code, RINGDEST_xBasic_ASSEMBLY.txt, there are two LINK statements for subroutines "A" and "B".  The LOAD statement at line 210 sets up the Routine Name Table.  Routine "A" is always at address >a200.  Routine "B" can change locations, depending on the values in variables X and Y.

I think this is about where I'm dropping out on this topic.

ringdest_assembly.bin ringdest_disassembly.txt RINGDEST_xBasic_ASSEMBLY.txt

  • Like 5
  • Thanks 1
Link to comment
Share on other sites

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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...