| |
Six
Registered: Apr 2002 Posts: 289 |
DTL Jetpack BASIC
This was never properly cracked. There's a copy @ http://www.haddewig.de/nogames64/tools.html but it still has dongle protection and won't run. There's a non-protected program on the disk ("ERROR LOCATE"), but the main compiler still needs the dongle to run. There are also no docs.
Why is this one so important to preserve? Because literally LEGIONS of c64 games were written with it.
I had a go at trying to break the protection, and I'm sure I eventually could - but it's a bear.
At the end of each file (and the compiler is compiled with itself, btw) there is a byte sequence. TWO of those bytes indicate whether or not the program is dongle-protected. BUT, fixing a protected DTL-BASIC program is not as simple as changing those bytes. It uses them to calculate a bunch of other values, in multiple places in the runtime library.
The (tape-port) dongle check is also obfuscated, but easy enough to find.
So, this is going to take some serious skill to bust - but once its busted, it opens the door for reversal tools that can be used to resource games like Roadwar 2000.
Any takers? Can I persuade anyone to at least have a look at it? |
|
| |
TNT Account closed
Registered: Oct 2004 Posts: 189 |
So you want to have something like this in the end? ;) |
| |
Six
Registered: Apr 2002 Posts: 289 |
So there's a decompiler or you did this by hand?
Is there also a proper cracked of the compiler? |
| |
Zer0-X Account closed
Registered: Aug 2008 Posts: 78 |
http://www.sid.fi/~zrx/DTL-BASIC-Jetpack-644c.zip
Can't find much use for this as it's just a compiler. |
| |
Six
Registered: Apr 2002 Posts: 289 |
Aye, but having a cracked version of the compiler is a step towards both writing a decompiler (if one doesn't yet exist) and understanding how the dongle protection works. |
| |
Six
Registered: Apr 2002 Posts: 289 |
Oh, forgot to ask, since you guys seem to have a better knowledge of this software than I do, have you found a manual?
Thanks, btw, I was worried no-one would be interested to discuss this compiler because of its relative obscurity. |
| |
TNT Account closed
Registered: Oct 2004 Posts: 189 |
Yes, there is a decompiler, and yes, I have the manual. I think I have scanned it already, I just need to locate those scans from some old computer backup. I also own PET version of the compiler with manual. Same problem with that one :D |
| |
Moloch
Registered: Jan 2002 Posts: 2924 |
Excellent, would love a copy of that manual when you can find it |
| |
Six
Registered: Apr 2002 Posts: 289 |
TNT, is the decompiler available, or private?
If I had a good description of the file format, I could add it as an output target on my txt2prg tokenizer.
BTW, found the dongle at my warehouse today, but not the docs. The dongle goes in the tape port and has the serial # 355-012-500-201. It'd be interesting to see how specific the dongle is - if any copy of the software will run with any dongle. |
| |
TNT Account closed
Registered: Oct 2004 Posts: 189 |
http://sid.fi/~tnt/dtl/
Contains C64 version manual + disks which I believe are my original dumps and their cracked counterparts.
PET manual scans are probably in some directory named "old computer" inside another directory with similar name :) |
| |
Six
Registered: Apr 2002 Posts: 289 |
Awesome! Thanks for posting this, I'd been looking for it for a while. That decomp of part of Roadwar 2000 gives me enough to work from for figuring out the tokenization.
You mentioned there was a decompiler. Did you write it? |
| |
TNT Account closed
Registered: Oct 2004 Posts: 189 |
PET manual added.
Decompiler is for internal use only for a moment. I have fixed a bunch of bugs since July when the above source was generated, but there are still couple of things which need fixing. BASIC extensions and overlays are the latest thing corrected, but there's still work to be done I'm sure. |
| |
TNT Account closed
Registered: Oct 2004 Posts: 189 |
Yes, I wrote the decompiler after I did complete disassembly of the runtime library. I get the raw P-code and decompiled basic. Basic code is then fed through another program to do some post-processing like changing "line numbers" to decimal. |
| |
Moloch
Registered: Jan 2002 Posts: 2924 |
Thanks for posting all of this! Like Six, I've been searching for this manual for a long time. My bad luck, I routinely missed DTL packages on eBay in the last few years. |
| |
Zer0-X Account closed
Registered: Aug 2008 Posts: 78 |
I guess no one has a spare dongle to sell?
Could reverse what's it made of, but as it's likely potted in epoxy it would be somewhat "destructive" process. |
| |
Six
Registered: Apr 2002 Posts: 289 |
I have a dongle. I guess I could sacrifice it for deconstruction if someone was going to document how it worked in such a way that I'd be able to build a new one. |
| |
TNT Account closed
Registered: Oct 2004 Posts: 189 |
It would be interesting to see if you get the same key from dongle as I did - 24 02. Just run dongle2.prg with the dongle connected and check the first two hex numbers. My dongle reported 00 after first 16 bits.
I would just use two 74165 chained together for the dongle, Zer0-X wants to know what exactly was used :) |
| |
Six
Registered: Apr 2002 Posts: 289 |
I should be able to test this this weekend. The printed numbers on all of them are the same, at least. I'm assuming the side that says "DTL BASIC" is up? |
| |
Six
Registered: Apr 2002 Posts: 289 |
Just ran the test. 2402 and then all 0000 from there.
So those match the target bytes in the protected original compiler. Did you crack this yourself?
If so, could you give us a rundown of how it was protected, for history's sake? |
| |
Count Zero
Registered: Jan 2003 Posts: 1920 |
Six mentions "LEGIONS of c64 games" compiled with this. During my active time I didn't really come across anything "mastered" using this compiler AFAIR.
Is there a list? Is DTL somewhere near RTL64 which I think was used for e.g. Silent Service? Or do I mix something up here?
Did anybody document a little more regarding c64 compilers? On my local collection there of course are several Blitz/Austro versions, Basic Boss is somewhat "new age" and also Laser Genius sounds interesting next to petspeed or simon's compiler. Next to speed, origin/clone, also the availability of a decompiler would be of interest. Is there such a comparison or did I just miss something on my websearch? |
| |
Six
Registered: Apr 2002 Posts: 289 |
I've seen that RTL-64 file on many a floppy over the years. The big three that always come to mind when this discussion arises are Roadwar 2000, F-15 Strike Eagle, and Silent Service. It was used on a number of SSI titles, I'd have to review them to make a solid list.
At one point I did a filename search across all of my floppy image collection and came up with something like 800 instances of the RTL-64 file. |
| |
blacky
Registered: Sep 2007 Posts: 41 |
(non working) emulation of this dongle is now present in VICE, if any-1 wants to play around with the source code and get the dongle emulation to actually work, be my guest. |
| |
TNT Account closed
Registered: Oct 2004 Posts: 189 |
I made a quick check with the dongle and it looks like toggling cassette sense resets the bit sequence to beginning. That just might be enough to make it work.
Remember that this pin is normally input to C64, so it will usually be pulled up to 5V even if last $01 write tells it should be GND. |
| |
blacky
Registered: Sep 2007 Posts: 41 |
The current emulation does the following:
1- wait for the sense line to go high.
2- wait for the sense line to go low.
3- wait for the write line to go high.
4- wait for the write line to go low.
5- set the first bit of the bit sequence 0010 0100 0000 0010 (0x2402) on the read line.
After setting the first bit of the sequence the following needs to happen before setting the next bit:
1- wait for the write line to go high.
2- wait for the write line to go low.
Be aware that the current emulation keeps the 'old' bit set between steps 1 and 2.
The emulation 'shows' the correct bit pattern when using the 'dongle2.prg' file, but does not work (good enough) for the actual software. |
| |
David Hughes Account closed
Registered: Jul 2016 Posts: 5 |
As the person who wrote DTL Basic several decades ago I'm really surprised and pleased that anyone still cares about it!
I'm also quite impressed that the protection is still doing its job; I only ever came across one person who cracked it.
Though if I could, I'd be pleased to help anyone get around it now.... but I'm not sure I can be much help sadly. |
| |
blacky
Registered: Sep 2007 Posts: 41 |
@David Hughes
Well, it could help if you can shed some light on how the dongle works.
Just to be clear, this is about preservation of the software and usability in an emulator. |
| |
chatGPZ
Registered: Dec 2001 Posts: 11350 |
cracking (as in removing/disabling) it should be fairly easy actually... but where is the fun in that? =) |
| |
Fierman
Registered: Feb 2002 Posts: 85 |
There are two different versions of DTL Basic it seems.
A tape one and a disk one. The tape one is not protected by a dongle, but is missing a lot of functionality.
I have the original of the tape here, including manual.
Cleaned tap images:
https://fierman.org/c64/tape/clean.dtl-basic_1983_side_a.tap
https://fierman.org/c64/tape/clean.dtl-basic_1983_side_b.tap
Quick&dirty scan of tapecover+manual:
https://fierman.org/c64/tape/dtl-basic_tape_manual_1983.pdf |