- Version 0.19 (25.6.2002)(dc.e: 24944 lines, 798513 bytes):
18.11.2001 alpha1:
- finaly added the OPT LIBRARY to generate a library, currently very
limited, but it's just a beginning :)
Special thanks to Marco Antoniazzi, without his help, it wouldn't be that
simple :)
30.11.2001 alpha2:
- INCBIN '*file' is now allowed. (* means the path of the source code)
- added support for local OBJECTs
- bugfixes reported by Marco Antoniazzi
- fixed a bug related to alignment for OPT LIBRARY
9.12.2001 alpha3:
- announced support for OOP4A project
(more: http://www.geocities.com/SiliconValley/Bridge/5737)
- in some occasions (when no external references used), phxass produced
executable directly without the intermediate object file, that PowerD
requires
- all the LIBRARY definition only modules did an error, fixed
- bugfixes reported by Michel Bagmeijer
- pr2m: some string fixed and at last translated from E to D :)
- removed few enforcer hits
12.1.2002 alpha4:
- (partial) direct support of oop.library (oop4a project):
- You can use: DEF obj('class') instead of: DEF obj=new('class')
- deallocation of the class is done automaticaly on the procedure end, no need for: del(obj)
- added german powerd.catalog by Olaf Groening (thanks!)
- updated dmod tool to handle new binary module features
- fixed struct and cunion saving in binary modules
- fixed object loading from binary modules
- number defined like a string ("xyz0") can now use also the "\j#" string extension
- fixed global/local variable definition
- SUB can now contain a variable/constant definition
- IF x-- or WHILE x++ or similar do now work correctly
- You can now use #else in conjunction with #ifdef/#ifndef and #endif
- bugfixes reported by Michel Bagmeijer
- no more 'OPT WB' is needed for the click-on-icon-launching,
all the startup headers (except some selected) do now contain a wbmessage handler
which makes it possible to launch a compiler proggy from workbench. Each header is
from this reason 126 or 128 bytes longer.
- fixed gadgets/layout.m module
17.2.2002 alpha5:
- inlined assembly (ASM/ENDASM) didn't work at all, fixed
- PowerPC inlined assembly can now use constants (eg.: addi r3,r4,CONST)
- added support for multi dimensional items in objects (upto 3d)
- improved TDEF support
- binary modules supports now OFFSET/RELOFS/ALIGN keywords in OBJECTs
- You can now use a[][]:CHAR instead of a:PTR TO PTR TO CHAR in OBJECTs and variable DEFinitions
- multiple pointers do now work correctly a[][]:CHAR can be accessed with c:=a[x][y] correctly
- fixed a stack problem with functions as function arguments (68k and ppc)
- fixed ieee Pow() function
- added F2I() function (double to integer conversion with rounding)
- added Rnd() and RndQ() functions for ppc
- Rnd() doesn't produce exactly the same results as 68k function, reason: cpu differences
68k generates carry bit as unsigned operation, while ppc as signed
- improved preprocessor, macros without arguments are now allowed: '#define macro() xyz'
- bugfixes reported by Michel Bagmeijer
- fixed createlib.html
- removed some enforcer hits
- h2m now supports structs with names defined at the end of the struct
- modules are now OS3.9 compatible
- updated ifunc.html
- a small fix of fd2m
- bugfixes reported by Miklos Nemeth
- no more phxlnk needed, PowerD use now only the vlink
- movea.b bug fixed
- bugfixes reported by Kai Wolf
- fixed a bug or newer modules message
13.4.2002 alpha6:
- You can replace (not only) powerd.lib functions just by defining them
- fixed length arg in RealStr() function
- fixed EStrCopy(), EStringF() functions
- improved support of OOP4A project
- You are allowed to use directly: var.func(args) instead of domethode(var,'func',args)
- added ppc functions: EStringF(), RealStr(), RealEStr()
- added/fixed all the quoted-expression functions: Eval(), MapList(), ForAll(), Exists(), SelectList()
- 68k only!!!, ppc knows currently only Eval()
- bugfixes reported by Marco Antoniazzi
- IF (~x) compiled wrong
- IF (a) AND ~(b) compiled wrong
- NOR and NAND keywords do now work
- added '#include' preprocessor keyword
- fixed assembler error when EXCEPTDO without Raise() occured
- bugfixes reported my Kai Wolf
- fixed a bug of too many args...
- bugfixes reported by Michel Bagmeijer
- Rem() isn't supported anymore
- DC can now compile also data only sources without any procedures
- added syntax error when 'CASE something:' used. (if the colon is used)
- bugfixes reported by Nemeth Miklos
- added a warning when assigning a value to an array (not item of array)
16.6.2002 alpha7:
- added a ddbg tool to debug Your sources!!!!! :)
- everything located in ddbg drawer
- currently heavily unusable and buggy
- read the ddbg.readme first to know how the things should go
- fixed assembler error when EXCEPTDO without Raise() occured in ppc code generator
- fixed eight enforcer hits
- when compiling a library, the library is placed in source's directory
- a bit fixed line statement in error reporting
- prohibited JUMPing to another procedure
- renumbered warnings, now starts with 900
- fixed IF for ppc
- fixed UWord() for 68k
- fixed some structure scanning, added new error messages
- debug file do at last support (not yet finished) debugger :)
- END do now check, if allocation (NEW) was successful
- added error message, when SUB is called and not found
- fixed [~CONST]:x (CONSTants with single operators in lists)
- bugfixes reported by Marco Antoniazzi
- fixed a problem with DEF a: TYPE (the space between ':' and 'TYPE' caused a problem)
- preprocessor didn't process correctly x:=y+/**/b(z) where b is a macro
- fixed alignment in library generation
- added relative path support for #include '*file'
- added preprocessing for #included file
- added OPT GM equivalent of GM/S argument for creation of external module
- bugfixes reported by Nemeth Miklos
- fixed the Store to array warning
- fixed types in module generated when compiling a library
- oop do work again (very limited)
- improved startup files to make working link libs, that use SysBase instead of ExecBase
- Added C-like CStrCmp() function
- bugfixes reported by Michel Bagmeijer
- added a warning when using JUMP keyword to jump out of procedure
- added devices/newstyle.m module
- added dutch catalog
- fixed IF ~(x) in 68k and ppc
- fixed IF `(x) in ppc
- added KickVersion() for ppc
- h2m: some improvements
- local labels can now be same in different procedures
- NEW a[x] do now allocate x*SIZEOF_a correctly
- fixed some docs
25.6.2002 full 0.19:
- fixed rexx/storage module
- fixed one enforcer hit
- fixed a lr storing problem with ppc, caused a crash
- debug file do now support global variables
- bugfixes reported by Michel Bagmeijer
- '\xDf' changed to '\xDS' to get full name of day
- bugfixes reported by Marco Antoniazzi
- global labels didn't compile
- Version 0.18 (5.11.2001)(dc.e: 23815 lines, 761307 bytes):
- added new tool x2d
- GM=GENMODULE/K argument has been changed to GM=GENMODULE/S,
now You don't have to (and can't ;) enter the module name anymore
- this switch now adds to the generated module also the object file name
- AC=ASMCOMMENT/S argument now works correctly
- &x... should now work correctly in all cases
- line numbering should be exact also with #ifdef/#endif used
- new types defined by TDEF keyword are now recognised also in OBJECTs
- strings that contains '\0' characters are now processed correctly
- labels works again
- removed bug of 'unknown error' message in ppc compiling
- RAISE doesn't produce twiced labels in powerpc asm output anymore
- added local data in ppc code
- exceptions should work much better in ppc code now
- AllocVecPooledPPC/AllocVecPooled and FreeVecPooledPPC/FreeVecPooled are now different
functions, because exec's and powerpc's pools aren't compatible
- made wrong code, when ELSEWHILEs used without ALWAYS
- small improvements in global binaries (LONG xxx etc)
- APROC xxx() now exits correctly with ENDPROC
- procedures can from now contain registers as arguments (eg.: PROC xxx(a IN d0))
- multiple return values are (at last) implemented in powerpc generator
- completely rewritten 68k ASM code reader/writer, higher flexibility
- added most of 68k fpu instruction
- the argument reader is still the old one, so it may not work very well, will be fixed later
- use only the mnemonics supported by Your processor, D still doesn't recognize it, as above ;)
- JUMP keyword now works in ppc code
- ops, added two forgotten instructions (jmp and jsr)
- fixed a modulo computation in PPC code (was negative)
- fixed a bug in constant scanner, now is possible to make spaces between operators (CONST A=B + 1 + C)
- fixed a freezing problem with module generator and improved default values for arguments of EPROCs
- fixed another problem related to signed/unsigned conversions
- fixed another bug in intuition.m module (SetAttrs() wasn't defined)
- fixed uncompilable ppc sources, when local lists were used
- fixed loading of negative (etc) values like: 'IF a<-b' in ppc code
- fixed negations in most cases (I hope) in ppc code
- fixed some register overloading in ppc code
- fixed bug in object item finding
- fixed problems with variables defined like array of object (var:obj)
- fixed a bug in function-as-function's-argument
- zero shifts/rotations (<<,<|,>>,>|) doesn't produce assembling error any more
- local list alignment fixed in ppc code
- doesn't produce that much useless ppc code ;)
- new (68k and ppc) functions for memory (de)allocation: NewR(), NewM() and Dispose()
- removed the Free() function and the New() function changed in order to the above
- improved the dmodules:asl.m module (direct tag support was missing)
- small changes in Flare.d example, small speedup (mainly when compiled for ppc)
- some docs improvements
- added a library example by Marco Antoniazzi
- bug fixes reported by Marco Antoniazzi
- DEF a='Hi' didn't work as a global variable
- retyping of members now works (a:=obj.member::etc.etc)
- a:=~ %01 or similar expressions with the space between the operator and the hex/oct/bin
number type produced errors
- '*module' is now relative from the source file directory, not from compilation directory
- You can now use also "/*" or "*/" or "//" without problems
- added Math functions Add(), Sub(), Mul(), Div(), Mod() for 68k and ppc
- dc didn't leaved properly when too many errors (>=100) occured, fixed
- LOOP/ENDLOOP made just one loop in 68k only (why? ;), fixed
- to a function like BltBitMap(s,sx,sy,d,dx,dy,w,h,$C0,-1,0), weren't loaded arguments correctly
- labels can now be normally used as addresses
- a bug in the dmodules:intuition.m module fixed
- You can now use also IF ~a THEN ... and similar
- unused global variables aren't automaticaly removed anymore
- 'ENDSELECT value' now works as it should
- graphics/rastport.m module fixed
- fixed a bug in comparation of signed and unsigned values
- global data (LONG etc) handles labels correctly
- a bit improved def.html document
- fixed a error in IF THEN RETURN
- added forgotten instructions in 68k asm: rts, rtd, rte, rtr
- ASM keyword can now be used outside the procedures
- retyping in equations fixed
- fixed problem with zero constant loading to some ax register
- IF ~(...) or IF -(...) weren't compiler correctly
- bug fixes reported by Michel 'DMX' Bagmeijer
- Min() and Max() functions swapped
- added some error reportings when FOR is defined wrongly
(eg.: FOR x:=0 TO 10 STEP -1)
- flare.d and raytrace.d doesn't try to open a VGA only screen anymore
- main.html has been renamed to index.html
- swapped GetOPen() and GetOutlinePen() in gfxmacros.m
- added 3 new options to string extension '\xd': '\x#d' where # is 0-3
- brackets () are now better handled, You are allowed to use (w).RPort etc.
- fixed the h2m version string
- h2m now supports the #undef keyword
- removed the '\x0d' string extension, use '\xd' instead
- added '\x4d' and '\x5d' string extensions
- fixed one unknown error when compiling for ppc
- added the pmulti.html
- PowerPC's Min() and Max() functions fixed
- fixed a printing of 'Cleaning...' string
- fixed a '\xF' and '\xf' on 060
- no more AslBase vs ASLBase in ppc code
- improved opt.html and setopt.html and few more
- some docs improved/fixed
- added the Exp() function for ppc and EToX() function in 68k changed also to Exp()
- if You wish to compile a module, it's not needed to enter it with the .m extension
- some enforcer hits removed
- fixed a stupid buggy in the intuition/gadgetclass module ;)
- fixed a crashing bug, when reading multiple-line strings (adom.d)
- bugs/ideas reported by Miklós Németh
- h2m.d some reading improvements, watch the source/h2m.d
- 'stack size' required for the compiled executable is now
shown if the I=INFO/S switch argument used. It's nothing
exact and have sense only with larger projects with lots
of local variables/lists and recursion. It computes the
stack upto to depth of 16 (procedures in procedures).
- Version 0.17 (8.5.2001)(dc.e: 22057 lines, 694035 bytes):
- Added inlined PowerPC assembly (ASM/ENDASM)
- all standard mnemonics supported
- most of extended mnemonics supported
- easy usage of local/global variables directly in the assembly code
via special mnemonics (lw, sw, etc.)
- new feature TDEF for definition of custom types (like C's typedef)
- binary modules support it ofcourse too
- finally added UNIONs to binary modules!!!
- improved OBJECT support
- You can now define internal objects with OBJECT and ENDOBJECT keywords
- You can use [ and ]:name instead of OBJECT name and ENDOBJECT keywords inside the object
- Added OFFSET and RELOFS keywords and a new feature to setup the item positions in the object
- Added ALIGN keyword
- Improved unions, each can be now followed with OF keyword like the OBJECT keyword itself
- Added C alike unions
- CASE can now handle equations (CASE a+1 TO b-1,10,11)
- added support for empty arguments (like: func(,1,,3), or: [1,2,,3,,]:list)
- now prints all unused procedures
- improved AmigaE support:
- AmigaE support is enabled by '.e' extension in source name
- all variables/objects and it's items names are converted to lower case
- all constants are converted to upper case
- I can't recomend to write bigger E projects in D, but if You need it
You can switch to original AmigaE or CreativE...
- powerd.lib news
- BitSize(0) now returns 0 instead of 1
- WriteF() function added
- StrCmpNC() (case free string compare) function added
- lots of powerpc native assembly functions added
- and some less important improvements
- modules news
- graphics/gfxbase.m should work
- minor changes in handling 68k library functions in the ppc native code.
- all the modules in the dmodules: directory (not in it's subdirectories)
must now have it's own link library in d:lib/modules directory. Take a
look at new LIBGEN=LG/K cli argument, which will
generate for You all the 68k function launchers for the ppc.
- removed NOPP argument
- bug fixes
- FOR a:=0 TO -1 made one loop, fixed
- BitSize(0) now returns 0 instead of 1
- removed infinite loop when object item wasn't found
- OPT NOHEAD didn't produce executable file, only the object file
- if expressions were build only from constants and all of them were
integers, the result was computed also as an integer, also if the
destination was float (DEFD a=1/2), fixed, thanks to Maciej Po³yga!
- post and pre decrementation/incrementation can be now combined (++a--)
- definition of local constants can contain also global constants
- fixed a bug in static list definition
- fixed bug in PowerPC optimizations (blr,blr)
- fixed bug in FOR loop
- fixed problem with stack in ppc code
- fixed lots of another ppc related problems
- UNTILN now works
- compiler reports if two or more procedures with the same name appeared
- division by zero when compiling a module fixed
- sources can now end with a comment (/* */) without ending linefeed
- x[]++:=y now works (but ++x[]:=y still doesn't, sorry)
- no more error reporting, when JUMPing to a local label
- items after UNIONs has now correct offset (very long standed bug)
- binary modules containing objects was saved incorrectly (althought was working),
such modules doesn't need to be recompiler, but I recomend it :)
- GM=GENMODULE/K argument now does always correct return types
- fixed some sign extensions in functions in powerd_ppc.m module
- fixed external procedure definitions in binary modules, the binary modules
containing external procedures definitions (all in dmodules:lib) are changed
- fixed a bug in global data definition for PowerPC code
- removed optimization which caused a bug if SUB was used
- known enforcer hits removed
- and several more or less important fixes
- Version 0.16 (31.12.2000)(dc.e: really exactly 20000 lines :) , 622424 bytes):
- added currently limited PowerPC support!!!
- added quoted expressions
- improved equation generator, now creates much better and safer code
- multiple conditions are now also allowed (a
- now work stuff like a,b,c+=test() correctly
- completely changed stack usage
- added NEXTIF keyword
- new tool pc - PowerD Project Compiler v0.4, it simplifies multiple source compilation
- improved Val() and RealVal() functions
- all errors/warnings are now written also into file 't:powerd.err.log' file
- added support for multiple names per object
- highly improved static list writing routine, much more flexible
- improved some parts of documentation to be more lucid
- improved LIBRARY definition, now allows You to define also PPC functions in library
- LONG <label> now works
- new option WB added to allow to start Your proggies also from wb directly (via icon)
- added wbstartup.o
- added EXEICON option
- new SUB feature added
- added cli switch DF=DELFILES/S which enables deleting of #?.ass and #?.o files when executable file is succefuly generated
- added hash table for macro finding what improves speed of preprocessing pass upto 20 times
- added hash table for object finding what improves speed of working pass a lot
- added large data model, now is possible to compile files that produces executables longer then 32 kilos
- local constants works again
- added some new warnings and error messages
- improved multiple value returning, now doesn't require definition for longs, but warns!
- improved preprocessor comment handling, line numbers on errors should be again exact
- recursive comments works again
- item names in object's definitions can now start also with numbers
- comments in macros are now better handled/removed
- added new functions to powerd.lib
- new string functions: LoChar(), HiChar(), VStringF(), VEStringF()
- new miscelaneous functions: Double(), Float(), PutDouble(), PutFloat(), ReByte(), ReWord(), ReUByte(), ReUWord()
- new quoted expression functions: Even(), Exists(), ForAll(), MapList()
- shortest functions from powerd.lib are rewritten to be inlined
- added and improved some examples
- added support for C-like constants (ie: 0x10 or 0b110011)
- added rtgmaster.library and chunky.lib support
- chunky.lib contains several functions to work with 8/24/32bit chunky graphics
- added two examples of rtg and chunky usage
- added module cache, extreme speedup of module loading
- added dcache tool to show and/or flush the cache
- object oriented programming is temporarily removed because of many
improvements, sorry, hope it will work in 0.17
- fixed several bugs
- several bugs in inline assembly
- preprocessor's keywords didn't work, except #define
- binary module loading/saving, recursive module now works
- very old and stupid bug in RealStr() and RealEStr() functions
- BitSize() now returns correct bit field size also if it is one bit wide
- Bounds() function fixed
- ELSEIFN and ELSEWHILEN now works
- modulo (a\b) now works correctly in all cases
- lists in lists are now handled correctly
- backslash ('\') in strings now works
- CASE xxx TO yyy works again
- multi-dimensional arrays (x[i,j,k]) now works
- multi-level pointers (x[i][j][k]) now works
- x[] is now correctly x[0]
- and more... [and probably some new added :P]
- added ALIGN keyword to allow better alignment of object items
- REPROC feature changed and improved
- improved local variables, now allows also local static variables (SDEF)
- added ASMPPC/ENDASM for ppc routines in 68k code.
- improved function reading, You are now allowed to use code like here:
- x().a:=1, where x() is a function that returns a pointer to object,
which contains an item called a.
- x()[3]:=2, where x() is a function, that returns a pointer to a list.
- Version 0.15 (8.5.2000)(dc.e: 14387 lines, 453366 bytes):
- added localization support (currently very limited, czech only)
- maximal length of single string expanded from 256 characters to 1024 characters
- improved preprocessor (thanx to Miklos Nemeth for bug-reports)
- added #include,#undefine, #* (where * is a number) keywords
- added DEBUG macro when DEBUGSYM option active
- preprocessor now removes comments => faster Reading pass
- high speedup - much more eficient macro reading
- removed many and many bugs and enforcer hits
- improved object reading:
- new member separator "/" for multiple members with same type
- stack lists changed to static lists, like in AmigaE => faster (in some cases shorter)
- also constant-only equations are now recognized => shorter code
- inline assembler (ASM) now works much better
- again added dmod - powerd binary module viewer
- added New() and Free() functions
- You are now able to use SELECT <const>;CASE func() etc.
- removed bugs in:
- string optimizations
- function calling
- inline lists
- powerd.lib, some functions rewritten to be faster and/or shorter
- global lists now works also with non objects
- heavy bug in SELECT with arrays
- and many other
- as You can see, documentation in HTML :)
- This is highly undone, I'm heavily working on it, but currently not
all parts are rewritten. Thanks to Richard Korber for his great
GuideML V1.5 converter.
- Version 0.14 (2.4.2000)(dc.e: 13185 lines, 409393 bytes):
- removed FPU OPTion/argument
- improved CPU/MACHINE OPTion/argument
- improved #?.o/#?.lib file recognition, no more fpu/ieee problems
- in 0.13: macros couldn't be used
- removed small bug in constants in binary modules
- preprocessor is now completely global => new PreProcessong pass added
- removed bug in constant conversion (eg: DEFD q=10 had to be used as DEFD q=10.0 before)
- removed also other bugs and some enforcer hits
- Version 0.13 (5.3.2000)(dc.e: 12688 lines, 395821 bytes):
- added REPROC/DREPROC feature
- added RAISE feature
- Raise() moved to powerd.lib
- improved retyping
- removed many bugs
- unsigned word and unsigned byte storing
- Generating pass renamed to Reading pass :)
- nearly all types changed, so old binary modules won't work, use new or ascii :(
- improved multi-dimensional arrays and pointers
- added generated assembler source description in this document. (highly undone)
- swap (:=:) can be now used also for different types
- whole asm-writer has been rewritten, now allows much faster and better optimizations
- many new optimizations (currently are all optimizations always on)
- about 100 kB of code rewritten
- added some new functions to powerd.lib:
- DupStr(), DupEStr(), NewStr(), RemStr(), DupStrPooled(), DupEStrPooled(), NewEStrPooled(), RemStrPooled(), RemEStrPooled(), NewStrPooled()
- in many cases improved register handling
- improved finding routines (it can now find what it couldn't find before :)
- it should never more try to find on illegal addressed, now about 40% faster!
- object oriented programming should now work better
- if two or more same arguments/variables, an error appear
- return values preset to zeros, so not su much dull messages :) (but still some)
- changed string and list order, now it has same order as in dsource
- renumbered errors
- nonfpu floats are currently not completed, complete version will be released asap!
- also powerd_ieee.lib not completed, sorry
- about 40 kB shorter !!!
- dmod not included, I had not enough time to complete it, sorry
- Version 0.12 (4.2.2000)(dc.e: 12345 lines, 396396 bytes):
- removed bug in optimizations
- removed some bugs in docs :)
- powerd.lib functions added into index of this document
- some new things added into index
- added few new functions (intuition, graphics, pools):
- OpenW(), CloseW(), OpenS(), CloseS(), SetStdRast()
- Plot(), Line(), Box(), Circle(), Ellipse(), Colour(), SetColour()
- AllocVecPooled(), FreeVecPooled(), SizePooled()
- removed some bugs in binary modules
- saved binary modules has now slightly different format
- added EDEFs and #defines
- added dmod tool, to show binary modules
- improved macros, now You can use #ifdef, #ifndef, #else and #endif
- proprocessor can from now convert: xxx:=.yyy to xxx:=xxx.yyy
- this slightly slowed down generate pass, because preprocessor is now called always
- I rewrote many functions to don't use stack, but registers = shorter and faster from powerd.lib
- Even() and Odd() flipped :)
- local e-strings now works again
- improved asm string writer, now You can use eg: '\0\0\0\0', to allocate 4 bytes long string of zeros
- main code reader routine is rewritten to be faster
- added Syntax Error (sorry :)
- I finally added description of some errors in this document, very incomplete
- this error currently quits powerd
- added many new string extensions
- removed some enforcer hits
- Version 0.11 (17.1.2000)(dc.e: 11066 lines, 361271 bytes):
- added ¸ (ascii 184) decimal number separator
- improved LOOP x where x can be now constant/number
- added binary module support (still very limited)
- improved procedure/function finding routines, up to 28 times faster
- added few new functions:
- UByte(), UWord(), ULong(), HiBit(), LoHit(), BitCount(),BitSize()
- improved startup files, arg variable now work
- added startup_dosarg.m module and DOSARGONLY OPTion to allow arg variable with dos opening only
- inlined IF now work better
- added one new example
- no more linker error like line too long or similar
- removed some bugs in modules and added ExecBase variable
- removed some other bugs
Older history