+dhe Posted July 8, 2023 Share Posted July 8, 2023 Always enjoyed this program, always want to take a crack and making it different. Has anyone seen the source? Quote Link to comment Share on other sites More sharing options...
chris36 Posted July 8, 2023 Share Posted July 8, 2023 RINGDEST.ZIP There is a extended basic version and assembly version. 3 Quote Link to comment Share on other sites More sharing options...
+dhe Posted July 9, 2023 Author Share Posted July 9, 2023 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! 1 Quote Link to comment Share on other sites More sharing options...
chris36 Posted July 10, 2023 Share Posted July 10, 2023 I loaded that disk with MAME TI-99/4A/Extended Basic Cartridge/PEB HFDC Floppy and it ran fine. Quote Link to comment Share on other sites More sharing options...
ti99iuc Posted July 10, 2023 Share Posted July 10, 2023 (edited) @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 July 10, 2023 by ti99iuc 2 Quote Link to comment Share on other sites More sharing options...
+dhe Posted July 10, 2023 Author Share Posted July 10, 2023 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: 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. 2 Quote Link to comment Share on other sites More sharing options...
+dhe Posted July 10, 2023 Author Share Posted July 10, 2023 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. 1 Quote Link to comment Share on other sites More sharing options...
chris36 Posted July 10, 2023 Share Posted July 10, 2023 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. Quote Link to comment Share on other sites More sharing options...
ti99iuc Posted July 10, 2023 Share Posted July 10, 2023 (edited) @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 July 10, 2023 by ti99iuc Quote Link to comment Share on other sites More sharing options...
+dhe Posted July 11, 2023 Author Share Posted July 11, 2023 Do you know if the assembly language portion is embedded with the XB code - or is it hidden on the disk some where? Quote Link to comment Share on other sites More sharing options...
ti99iuc Posted July 11, 2023 Share Posted July 11, 2023 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? Quote Link to comment Share on other sites More sharing options...
chris36 Posted July 11, 2023 Share Posted July 11, 2023 (edited) 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 July 11, 2023 by chris36 Typo fixed. IUC instead of UIC. 3 Quote Link to comment Share on other sites More sharing options...
chris36 Posted July 12, 2023 Share Posted July 12, 2023 (edited) 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 July 12, 2023 by chris36 3 Quote Link to comment Share on other sites More sharing options...
+dhe Posted July 12, 2023 Author Share Posted July 12, 2023 I wasn't familiar with Texware, so I looked it up in the Cyc. Looks like they sold about a dozen programs mainly of the XB variety, written by different people. Sort of a small version of Asgard Software. Thanks @chris36 for sorting this out. 2 Quote Link to comment Share on other sites More sharing options...
chris36 Posted July 13, 2023 Share Posted July 13, 2023 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. 1 1 Quote Link to comment Share on other sites More sharing options...
chris36 Posted July 15, 2023 Share Posted July 15, 2023 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 5 1 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.