Short: Pragmas, LVOs for Aztec, Dice, SAS, Maxon Author: wiedmann@mailserv.zdv.uni-tuebingen.de Uploader: wiedmann mailserv zdv uni-tuebingen de Type: dev/misc Architecture: m68k-amigaos This is a new version of my fd2pragma utility. It introduces support of tag functions, either by using the SAS pragma "tagcall" or by creating stub routines automatically. (Don't look at these functions: They look BCPL-like, horrible! But I hope, they'll work. ;-) As before, the following pragma formats are supported: Program Recommended filename pragma format (example) Aztec-C xxx_lib.h #pragma amicall(xBase,0x1e,xfunc(a0,d1)) Maxon xxx_pragmas.h #pragma amicall(xBase,0x1e,xfunc(a0,d1)) Dice xxx_pragmas.h #pragma libcall xBase xfunc 1802 SAS-C xxx_pragmas.h #pragma libcall xBase xfunc 1802 Aztec-As xxx_lib.asm xdef _LVOxfunc _LVOxfunc equ -30 The tag functions are supported by certain comments. (Note, that the official includes from the Native Developer Update Kit don't have this comments included.) Lets look at an excerpt from the fd-file muimaster_lib.fd: MUI_NewObjectA(class,tags)(a0,a1) *tagcall MUI_DisposeObject(obj)(a0) MUI_RequestA(app,win,flags,title,gadgets,format,params)(d0,d1,d2,a0,a1,a2,a3) *tagcall MUI_AllocAslRequest(type,tags)(d0,a0) *tagcalltags The comments tell us, that MUI_NewObjectA, MUI_RequestA and MUI_AllocAslRequest should have stub routines. The respective names are MUI_NewObject, MUI_Request (as the comment has just the word tagcall) and MUI_AllocAslRequestTags (as the comment has the word tags included). Another possibility would be to write something like SystemTagList(command,tags)(d1/d2) *tagcall-TagList+Tags This would create a stub-routine SystemTags (dropping the word TagList, adding the word Tags). Tag functions with arguments on the stack are supported in two different ways: - SAS-C allows special pragmas called "tagcall". Pragmas for the above functions would look like this: #pragma tagcall MUIMasterBase MUI_NewObject 1e 9802 #pragma tagcall MUIMasterBase MUI_Request 2a BA9821007 #pragma tagcall MUIMasterBase MUI_AllocAslRequestTags 30 8002 #pragma tagcall DOSBase SystemTags 25e 2102 - Other C compilers need stub routines which are compiled separately and linked to the program. fd2pragma can create these stub routines for you. The command template pf fd2pragma is fd2pragma fdfile/a,aztec/k,as/k,dice/k,sas/k,maxon/k,tagdir/k where "fdfile" is the file to convert. The arguments aztec, as (Aztec-As), dice, sas and maxon are the pragma or LVO files that should be created. The tagdir argument is the name of a directory where to store stub routines. This program is in the public domain. Use it as you want, but WITHOUT ANY WARRANTY!