Page 5 of 6

Re: SuperCharge Decompiler

Posted: Wed Jul 04, 2018 5:46 pm
by dden
As the author of the xwords program, I'm happy to try to explain any aspects of the program which cause any problems or which require clarification.

It is some time since I wrote the program. So it might take me a while to understand my own code!

Re: SuperCharge Decompiler

Posted: Sun Jul 22, 2018 6:16 pm
by Martin_Head
I have been doing some work on TurboDisCharge. I have reorganized the Library files into one for each of the versions of the code generator that I know about.
And the TurboProcessDump program will pick the corresponding files to use. Note that the Library files are not complete, I add to them as I identify routines.

I have also included the results of decompiling the Xwords program by dden.

xwordsOriginal_bas - The original BASIC program
xwords5_bas - The raw output from the decompiler
xwords_bas - After I tidied up xwords5_bas to get it to load and run (compare the two to see what I had to do)
xwords_ext - SuperBASIC extensions for Xwords that were embedded in the executable file, and extracted by the TurboProcessDump program

Re: SuperCharge Decompiler

Posted: Tue Nov 06, 2018 11:11 am
by Martin_Head
It's been a while since I posted anything on the Super/Turbo Decompiler. So here's an update.

There are now two versions of the Turbo decompiler, One for included line numbers, and one for omitted line numbers. Trying to get one program to handle both was getting a bit messy.

Note that the technical notes document is far from complete.

I have also supplied a worked example of decompiling a program called Super Kit Merger, which includes the original source SuperBASIC program. So you can compare the result of the decompilation with it.

Hope I have not forgot any files.

Re: SuperCharge Decompiler

Posted: Wed Nov 07, 2018 9:58 am
by tcat
Hi Martin,

I have been away from QL scene for a while, however reading QL forum now and then, this project of yours caught my attention. I am curious what development tools and system you used for it, I can see some _libs but no executables, only _bas programs.

Cheers
Tomas

Re: SuperCharge Decompiler

Posted: Wed Nov 07, 2018 10:57 am
by Martin_Head
tcat wrote:Hi Martin,

I have been away from QL scene for a while, however reading QL forum now and then, this project of yours caught my attention. I am curious what development tools and system you used for it, I can see some _libs but no executables, only _bas programs.

Cheers
Tomas
Talent/Quanta Assembler Workbench to produce disassembler listings (but you could use any disassembler you liked, though you may need to modify my programs to accept a different disassembly listing) , QPC2 and a text editor. (I use a Windows based one)

There are no machine code routines, it's all done in SBASIC. With some work you could probably convert the SBASIC to SuperBASIC and run it on a QDOS system.

The _lib files are libraries of routines that Super/TurboCharge use in the compiled code. If my decompiler identifies all the routines in the compiled program, then the _lib files are not needed. They are only needed to help you when you have to identify them yourself to teach the decompiler the new routines.

Re: SuperCharge Decompiler

Posted: Wed Jan 16, 2019 10:56 am
by Martin_Head
Here's an update to the decompiler.

The SuperCharge decompiler has had a rewrite to make it work in the same way as the Turbo decompiler. And the decompiler now recognizes sections of 'Inline' code that is surrounded by a REMark + and a REMark -. That is machine code, that gets embedded inside the coded version of the SuperBASIC program.

The decompiler does not decompile this code, but highlights where it is in the decompiled program.

So far I have only found one compiled program that uses 'Inline' code, and I can't think of a straight forward way of getting the decompiler to decompile it. So for the moment you will have to decompile this code by hand.

Re: SuperCharge Decompiler

Posted: Mon Jun 10, 2019 10:11 am
by Martin_Head
Here is an update to the DisCharge decompiler.


DisCharge now supports 7 SuperCharge versions, and 6 Turbo code generator versions.

I have also tried to make the decompiler a little easier to use by automating the process of disassembling.

When you run the DisCharge program, It now asks you for the file name of the executable program.

It then starts the Talent/Quanta Assembler Workbench monitor (available here http://www.dilwyn.me.uk/asm/talentaw22.zip). Does the disassembly, processes the result and then gives you the option of automatically starting the correct main decompiling program.

For anyone interested in seeing the kind of outputs DisCharge generates for the same program compiled with different options, I have included some samples.

Re: SuperCharge Decompiler

Posted: Mon Jun 10, 2019 1:50 pm
by martyn_hill
Dear Martin

Just in case I forget to say it, your development of the Decompiler remains a truly valuable project for us and I for one am grateful for your on-going efforts!

Re: SuperCharge Decompiler

Posted: Mon Jun 10, 2019 2:06 pm
by bixio60
Ditto! :)

..one of the most valuable project of the last years.
Fabrizio
martyn_hill wrote:Dear Martin

Just in case I forget to say it, your development of the Decompiler remains a truly valuable project for us and I for one am grateful for your on-going efforts!

Re: SuperCharge Decompiler

Posted: Mon Jun 10, 2019 9:02 pm
by mk79
First of all, very cool project, congratulations! Now do Qliberator ;)
Martin_Head wrote:It then starts the Talent/Quanta Assembler Workbench monitor
Wow, I didn't know this version existed! I've been using a patched Talent version for the last 25 years, it's an invaluable tool.

Cheers, Marcel