Write binary data to TRD from ASM

The place for codemasters or beginners to talk about programming any language for the Spectrum.
User avatar
Seven.FFF
Dizzy
Posts: 97
Joined: Sat Nov 25, 2017 10:50 pm
Location: USA

Re: Write binary data to TRD from ASM

Post by Seven.FFF » Fri Dec 22, 2017 9:12 pm

keith56 wrote:
Sat Dec 09, 2017 12:32 am
it seems my problem was not the code, or trdtool, but something with my emulator, I was using TR-DOS 5.04 (UK) and it was somehow failing to even save a bas file to a newly formatted disk from it's own interface (It was renaming the disk??!!)

Well, I've moved to 6.04 (Russian) and the example works perfectly, so I don't know if I had a corrupt rom, or something messed up on my emulator, but all is good now! - out of interest, what is the best rom to use for testing (compatibility wise?)
I've just hit this one too. My Uno is loaded with 5.04T (UK), and doesn't even get past the first DOS command in the basic loader. I think this might be the version where the entry points have changed. I need to write a good detection routine.

Somewhere I saw a handy list of differences between several TR-DOS versions, but I can't find it now.
Hikaru wrote:
Sun Dec 17, 2017 8:06 am
The whole 'leaving gaps' issue is normal in a sense, and is expected of programs that operate on the file level. Notice that, as long as the file you're working with is the last file on the disk, no gap would be left if it is deleted and subsequently saved back.
On the other hand, doing a MOVE within a game program is certainly an overkill and not what most people would expect. It's a bit like if a PC game tried to defragment the HDD on its own!

Random access and other unusual formats are best avoided. I doubt most people have any idea what those are (myself included), and I don't remember a single program that used those on a regular basis for its functionality.

(Why not just keep a single 961 byte file? Loading 4 sectors and 1 sector takes virtually the same time, and this is more efficient in terms of using the disk space.)
Thanks! Your suggestion works nicely (on 5.03)!
Hikaru wrote:
Sun Dec 17, 2017 8:06 am
Another option is to do the #0A/#08 thing once in the beginning, store the file locations/lengths in memory, and then just use #05/#06 as needed. This would help to reduce unnecessary drive head movements to track 0 and back (is faster). Also, #05/#06 have the advantage of not requiring the extra buffer in order to work.
This is great, thanks. I haven't got this working yet (lack of time). But I will try to do so :)
Hikaru wrote:
Sun Dec 17, 2017 8:06 am
The correct way to go about this is to intercept the Retry/Abort/Ignore message. The following code comes from my unfinished #3D13 driver so again, pretty much untested, but I believe it should be something along these lines.
Ah, brilliant, thanks! I tried to do this before but couldn't figure it out. Much better way of handling it. I want the language selection to always write back to the disk when you start, but silently fail if it is write protected or something else happens. Resetting the high score table should only happen when you pick that option, and should fail verbosely. That why I originally had them as separate files. I can still do it the way I want having them share a file, it's just a little more complicated.
Last edited by Seven.FFF on Fri Dec 22, 2017 9:57 pm, edited 1 time in total.
0 x
Robin Verhagen-Guest
SevenFFF / Threetwosevensixseven / colonel32
seven-fff.com/blog

User avatar
Seven.FFF
Dizzy
Posts: 97
Joined: Sat Nov 25, 2017 10:50 pm
Location: USA

Re: Write binary data to TRD from ASM

Post by Seven.FFF » Fri Dec 22, 2017 9:48 pm

Seven.FFF wrote:
Fri Dec 22, 2017 9:12 pm
I've just hit this one too. My Uno is loaded with 5.04T (UK), and doesn't even get past the first DOS command in the basic loader. I think this might be the version where the entry points have changed. I need to write a good detection routine.
Aaargh no, Everything looks the same between 5.03 and 5.04T, unless i missed something.
0 x
Robin Verhagen-Guest
SevenFFF / Threetwosevensixseven / colonel32
seven-fff.com/blog

User avatar
Seven.FFF
Dizzy
Posts: 97
Joined: Sat Nov 25, 2017 10:50 pm
Location: USA

Re: Write binary data to TRD from ASM

Post by Seven.FFF » Fri Dec 22, 2017 9:55 pm

Actually I'm completely wrong. Everything is working on 5.04T in SpecEmu. On the Uno, everything works except one of my #3D13 load commands, when the progress bar is about 85%.

I will need to hook up a debugger to see what is happening.
0 x
Robin Verhagen-Guest
SevenFFF / Threetwosevensixseven / colonel32
seven-fff.com/blog

User avatar
keith56
Berk
Posts: 10
Joined: Mon Nov 13, 2017 9:23 pm

Re: Write binary data to TRD from ASM

Post by keith56 » Tue Dec 26, 2017 10:04 am

Just a quick post to say I was finally able to test my game's TRD image on the DivMMC on the DivMMC Enjoy Duo (xmas present)- and it works great!

the Save/Load code Hikaru provided seems to work perfectly, and I wanted to post to say thanks, and let people know the code worked well for me on that disk emulator... I'm very happy as in the early days TRD seemed so confusing I was really worried if I could get it working at all.
0 x
Chibi Akuma(s) Comedy-Horror 8-bit Bullet Hell shooter for CPC - http://www.chibiakumas.com
「チビ悪魔」可笑しいゴシックSTG: http://www.chibiakuma.com
Chibi Akumas Episode 2:Confrontation for CPC ...Out Now!

Hikaru
Dizzy
Posts: 89
Joined: Mon Nov 13, 2017 1:42 pm
Location: Russia
Contact:

Re: Write binary data to TRD from ASM

Post by Hikaru » Tue Dec 26, 2017 5:30 pm

Good to know. I've had a similar experience recently trying to figure out the (low-level) +3DOS stuff. Those multi-byte OUTs/INs, madness. :lol:
0 x

Post Reply