Great Work Ketilo.

However,

I am still unable to use RAdASm with TASM on full throttle because:

My Procedures are written like this (this is the TASM style)


Create_Label PROC
USES ecx,ebx,esi,edi
ARG @@token_start,@@token_size:dword
ARG @@symbol_type,@@symbol_value:dword
LOCAL @@tmp_id:dword

[...some code here]

ENDP



Unfortunately i still can NOT see the parameters of my procedures in the Properties Window ... :(
Am i doing something wrong in setup/project ini ?

Also there is no setup for an TASm Win32Console application? (ie like my assembler)

Also some options in project command line are just wrong: like /mx ....only global symbols are case sensitive...why? /kh# option is critical for large projects (#=16384 ..65536 etc)

Tlink32 options should use "-" and not "/" for command line switches, some other minor switches are kind of inappropiate but nothing criticall

Also importing huge existing projects into RadAsm (in my case) is pretty hard to do. And i need to do this as i hesitate to move all my work under Radasm because of those issues.

I also like to keep projects in my own folders structure but RadASM insists on starting to brows from its own paths. So i try to move them under Radasm control for testing but this is pretty hard.

If i create an empty project in an attemp to copy and paste my own .ASM files and then add them one by one into project... they all end up under "Added Files" ? and NOT ASM files?

Beeing able to have the same file opened in at least 2 windows in the same time (but most likely in 3 windows) while making edits in all 3 windows at different locations is also critical for my huge projects.

Saving and syncronization between those 3 MDI windows is also critical ;)

Just a few things i have noticed while testing. As i notice more issues regarding TASM i will post them here.

Please note that my own assembler is going to use TASM styles...

Best regards
Bogdan Ontanu
Posted on 2004-02-20 00:51:37 by BogdanOntanu
Hi Bogdan,

For the command line options you can change the defaults in TASM.INI to have them set to whatever you like. For a one shot deal you can change them in Project Properties.

If you create your sub folders when you add a new file you can select that subfolder to create it in. I set up the browse paths to my subfolders (File Browser in the Option menu) it lets me click through a list of folders and view the files in them by pressing the File Browser button on the Project window toolbar. Use the arrow buttons to move between folders. You can also browse normally with the File Browser enabled but you cannot browse above the root folder you specify. I generally put the main folder for each of my projects in the list then I can move around in each as I please.

I would very much like to have parameters on separate lines as well, also when using invoke it would be nice if it could recognize the continuation character (\)

For templates, I create my own. I generally don't install the ones that come with RadASM as I find mine match my coding much better. Just create a skeleton and save it as a template from the project menu. It will save any command lines that you specify with the template as well.
Posted on 2004-02-20 01:10:52 by donkey
Thanks Donkey

I will do so...

On the very bright side i have noticed big (for me) improvements on the properties Window (like find and stuff)
This helps me a lot on seraching Procedures and data structures in huge projects ...

And curently i think i can live with it not showing the right parameters for TASM style notation since a double click will locate meat the procedure anyway and i can inspect parameters on site ;)

So once again i am moving all my projects to RadAsm :alright:

I was also wondering how can i will do with my SolOS that is made of 3 modules (boot, system16, and system32)
and has very special build options, i will try to change the TASM.ini for this and see what happens ;)

Do we have custom after build commands?, like i used to copy files arround to release folders with xcopy

Once again:
Thank you for the great work Ketilo :)
Posted on 2004-02-20 02:27:33 by BogdanOntanu
Hi Bogdan



Create_Label PROC
ARG @@token_start,@@token_size:dword
;This is a comment
LOCAL @@tmp_id:dword
USES ecx,ebx,esi,edi
ARG @@symbol_type,@@symbol_value:dword

[...some code here]

ENDP


What more than the above example can be put in between the ARG's

KetilO
Posted on 2004-02-20 08:21:53 by KetilO
Hi Ketilo,

In TASM style (and upcoming SOL_ASM that is):

1)USES has to be the first statement after the PROC name definition
2)Multiple ARG lines can folow stating the procedure's arguments as required
3)Multiple LOCAL lines can folow but only afterthe "ARG" ones stateing as many local variables and types as required

4) the procedure body (and internally the PROLOGUE) will start at the first code producing instruction.

That means that further ARG/LOCAL/USES are ilegal and/or errors after that...

So order is: 1)USES 2)ARG 3)LOCAL while theoretically USES are a single line statement but ARG/LOCAl can be on multiple lines. Of course any of those can be just missing and comments are alowed at the end of line at least.

Also parameters are separated by comma not spaces

One extra thing is that the procedure name "may" OR "may not" be placed in front of the ENDP statement.
Both versions beeing acceptable in TASM.

Myself i just ommit this and got by in RADASM by cutting the $ in front of ENDP in TASM.ini
Posted on 2004-02-20 14:34:45 by BogdanOntanu
Hi Bogdan



TestProc1 proc
USES ecx,ebx,esi,edi
ARG @@token_start,@@token_size:dword
ARG @@symbol_type,@@symbol_value:dword
LOCAL @@tmp_id:dword

mov eax,@@token_start
ret

endp

TestProc2 proc
LOCAL @@tmp_id:dword
ARG @@token_start,@@token_size:dword
;This is a comment
USES ecx,ebx,esi,edi
ARG @@symbol_type,@@symbol_value:dword

mov eax,@@token_start
ret

endp

TestProc3 proc
ARG @@token_start,@@token_size:dword
;This is a comment
LOCAL @@tmp_id:dword
USES ecx,ebx,esi,edi
ARG @@symbol_type,@@symbol_value:dword

mov eax,@@token_start
ret

endp


The above example assemble without errors and looking at the code in OllyDbg everything seem ok to me.
Are you shure you are correct?

KetilO
Posted on 2004-02-20 15:09:51 by KetilO
I am somehow sure,

Yes unfortunately TASM is NOT reporting a lot of errors, esp when in MASM "non-IDEAL" mode

But i recall i once had missplaced an USE after some ARG and some registers have not been saved corectly, ... but it could depend on pass numbers. I recall a few instances in SolOS and HE Game when this has stroke me down.

Well i have not checked it lately as i have learned THAT lesson and started to behave my PROCs in the way i have described in above messages. I might be wrong though...

However this issue is relevant for the compiler and/or the well function of the executable.
When i will find the time i will research this matter a little more deeper with multiple tests on executables...so i can be sure is like i say.

For RAdASM my problem is that USES, ARG and LOCAL do not get promoted to the Properties window
Posted on 2004-02-20 17:41:14 by BogdanOntanu
Hi Ketil,

While you are working on that :) Is there a possibility to have this:

Label:

USEDATA DlgProc ; use the parameters from the DlgProc stack frame
LOCAL Hello :D ; local to this USEDATA block only
.
.
.
ENDU


Currently I have USEDATA in the macro slot for GoAsm (there is no way RadASM can distinguish a macro from a constant and it's not important). So the USEDATA/ENDU collapse but they do not appear in the maco list because RadASM cannot see their label. The locals are insignificant but it would be nice to have the labels enumerated.

Ofcourse GoAsm has much more powerful LOCAL data handling than other assemblers such as the ability to have multiple LOCAL blocks within a procedure or to free the locals and define new ones with LOCALFREE but for the most part they are not needed. It would be nice to have the label for USEDATA though...
Posted on 2004-02-20 17:53:43 by donkey
One more extra thing:

With TASM structures



LABEL_STRU STRUC
label_name db 128 dup(?)
label_name_len dd ?
label_next dd ?

label_type dd ?
label_size dd ?

label_segment dd ?
label_offset dd ?

ENDS


because TASM does NOT allow 2 structure members to have the same name (ouch)
I CAN write:


mov eax,[esi.label_next]

without actually having to use the structure name:


mov eax,[esi.LABEL_STRU.label_next]

So ultimately, the disadvantage of forcing distinct structure members names helps a lot in writting expressions..

However in RAdASm i must use the structure name pre-qualifying IF i want to have a list of members names opened on shift+space...

Clearely i need an option somewhere...
Posted on 2004-02-21 01:22:11 by BogdanOntanu
Also another small bug i think:
part_table and other variables defined in code below
do not appear in .data list in properties window
Why?

I am programming for my OS here and i do not have distinct .data .code sections but IMHO
below code defines part_table as a data variable



PART_STRU STRUC
boot db ?
beg_head db ?
beg_cylsect dw ?
par_type db ?
end_head db ?
end_cylsect dw ?
lba_addr dd ?
lba_size dd ?
ENDS

fat32bs0 FAT_BOOT_SECTOR <?>
ide_id0 ide_ident_struct <?>

part_table PART_STRU 16 dup(<?>)



However the Structures themselfes do appear corectly in the .struct section of properties
Posted on 2004-02-22 07:15:43 by BogdanOntanu
Hi Bogdan

Make shure that section Code in tasm.ini:

Data={C},$ db,$ dw,$ dd,$ dq,$ df,$ dt,$ byte,$ word,$ dword,$ qword,$ <?>,$ {?},$ <>

KetilO
Posted on 2004-02-22 09:33:34 by KetilO
Thank you,

that did it for 2 structures but not for this one:


part_table PART_STRU 16 dup(<?>)


I suspect it is something related to the dup(...) stuff

TASM cries that it needs left ( and right ) after dup so i can not use {} instead

Finally:

$ dup(<?>) did fixed it

:alright:
Posted on 2004-02-22 10:50:06 by BogdanOntanu