Page 2 of 3

Re: CoCo cartridge Atom (1983) (26-3149) (Tandy)

Posted: Mon Jul 29, 2013 8:18 pm
by Rolo
Finally working. Not thoroughly tested yet, but playable.
Thanks everybody.

@admin: How do we proceed? Do you think, Dragon-modified Tandy-roms should be uploaded and stored anywhere (i. e. download/roms/dragon or download/roms/TandytoDragonTest)? There are just a few bytes to change, but there is no point in everybody doing it all over again and again. Ok, for xroar-users it's not a problem, but for cartridge-burners it is.

Re: CoCo cartridge Atom (1983) (26-3149) (Tandy)

Posted: Tue Jul 30, 2013 7:45 am
by admin
How about rom\dragon\TandyModified

CoCo cartridges

Posted: Sun Aug 25, 2013 6:47 pm
by Rolo
Perfect. Can you please mkdir that folder?

I made a little perl script, that disassembles all tandy roms with the help of 6809dasm.pl and greps for JMPs and JSRs into BASIC and KERNAL-Rom. The results are listed in a big textfile, which I would like to attach. That should make it easier to see which Tandy roms work with the Dragon and reveal "bad" rom calls that make them "misbehave". I still want to modify a few Tandy roms for usage with my multi cartridge.
It may be useful for somebody else.

I cannot upload:"The extension txt is not allowed." :?:

CoCo cartridge Atom (1983) (26-3149) (Tandy)

Posted: Sun Aug 25, 2013 7:12 pm
by Rolo
Here is a modified version of "Atom" for the Dragon Computer.
Atom modDragon.rom
(8 KiB) Downloaded 218 times

Re: CoCo cartridges

Posted: Sun Aug 25, 2013 9:21 pm
by tormod
Rolo wrote:I made a little perl script, that disassembles all tandy roms with the help of 6809dasm.pl and greps for JMPs and JSRs into BASIC and KERNAL-Rom. The results are listed in a big textile, which I would like to attach. That should make it easier to see which Tandy roms work with the Dragon and reveal "bad" rom calls that make them "misbehave". I still want to modify a few Tandy roms for usage with my multi cartridge.
It may be useful for somebody else.
Cool! Your script could also match the calls against the list at http://sourceforge.net/p/toolshed/code/ ... equivs.asm
and to some degree fix it up automatically.

By the way, a good while after I made that list (many hours of work) for porting HDB-DOS, I discovered that Phill Harvey-Smith had made a similar list for porting superdos to Dragon (also in Toolshed!) with at least half of my entries already found... Well, well, at least I could do some cross-checking of the two lists, and I think I even found something that can be fixed up in superdos. I guess we ought to come up with a good machine- and human readable format and make one master list we can maintain and reuse for all these projects. My list is tab-separated but the comments and "classic" names like CHROUT and CkComa are not all consistent. Phill used more structured names, but having a column for the "classic" names could also be nice. See superdos/romdefs.asm, it doesn't list equivalents one by one, but such formats can be generated from it.
I cannot upload:"The extension txt is not allowed." :?:
A retro forum that doesn't accept plain text... :) Maybe you can just zip if for now.

Re: CoCo cartridge Atom (1983) (26-3149) (Tandy)

Posted: Mon Aug 26, 2013 8:34 pm
by Rolo
Hi tormod,
please don't be disappointed. It's just a dumb script (maybe 25 lines) making a dumb list at the moment. I did not print the many JMP/JSR within cartridge space above $C000. The jumps within the program should be ok, shouldn't they? I filtered the jumps from $8000 to $BFFF. And those are amazingly few :!: Maybe I'm doing something wrong!? If you notice an error, please tell me, so that I can change my script.

Here is the zipped txt-file:
tandyRomSearchResults.txt.zip
(4.2 KiB) Downloaded 178 times

Re: CoCo cartridge Atom (1983) (26-3149) (Tandy)

Posted: Mon Aug 26, 2013 9:58 pm
by tormod
You're right, calls within the cartridge above $C000 are no problem. Also, most (all?) indirect ROM calls at $A0xx are portable.

Note that the disassembler easily gets out of sync with the code when it encounters data fields without knowing, and tries to interpret data as code. I guess this is the reason for some rather strange addresses seen in your list. So in some cases you'll have to inspect the disassembly around a detected JMP/JSR to see if the code makes somewhat sense. Somewhere down my TODO list I have some ideas for a superdisassembler that tracks possible code flow to find all code correctly on basis of well-known entry points, initially for ARM code but it should be architecture independent so that 6809 code could be analysed too...

Alternatively, XRoar could be of help here: It could collect all ROM calls cleanly while you run the program in CoCo emulation. We would just need volunteers to play the sh** out of those games :)

CoCo Basic interpreter: documented source code

Posted: Mon Oct 07, 2013 7:30 pm
by Rolo
I finally found a very good source of information concerning Color Basic and Extended Color Basic, which already has been of great use to me, patching CoCo-cartridges for the Dragon. Very well documented source code! I think more people might be interested in that:

"Color Basic Unravelled II" - For the Tandy TRS-80 Color Computer (dealing with $A000 ... $BFFF) and
"Extended Color Basic Unravelled II" - For the Tandy TRS-80 Color Computer (dealing with $8000 ... $9FFF)

both revised by Walter K Zydhek
Original by Spectral Associates


I don't put a link in here. You'll find a couple of links for pdf-files in Google.

It's not exactly the same Basic, of course, but it is very similar. It is easy to find and recognize corresponding parts in both versions. Check it out.

Re: CoCo cartridge Atom (1983) (26-3149) (Tandy)

Posted: Mon Oct 07, 2013 7:37 pm
by KenH
There is also a good reference of the Dragon rom with cross reference to CoCo addresses here:
http://dragon32.info/info/romref

Re: CoCo cartridge Atom (1983) (26-3149) (Tandy)

Posted: Mon Oct 07, 2013 8:19 pm
by Rolo
Yes, I know that and it's helpful, but sometimes it is not enough. There also are jumps into routines not mentioned in this list and there also are jumps into the middle of routines. Some routines are slightly different between the two computers (i.e. Dragon pushing addresses on stack, CoCo not; => jumping into the routine causes stack error and crash). Comparing the documented CoCo source with the disassembled Dragon rom reveals this kind of information. ;)