Releases: tebe6502/Mad-Pascal
Mad Pascal 1.7.6
Mad Pascal 1.7.5
- bugfixes and optimizations
- added support for SUBRANGE (low..high)
- new PACKFIRE, SAM, MD1 units
- added MD1, MD1PLAY resources
- improved parsing of real values, accepts additional characters ‘E’, ‘-’, e.g. 6.1858296469E-02
Mad Pascal 1.7.4
- Bugfixes and Optimizations
- improved operations on ENUM type (passing/returning to procedure/function)
- added support for WITH statement (WITH record_name)
- new units: SHA256, GIF, AES, BFONT
Mad Pascal 1.7.3
- Bugfixes and Optimizations
- added support for addressing a pointer to an array in OBJECT
- added new optimization 'opt_BOOLEAN_OR.inc'
Mad Pascal 1.7.2
- optimizations, bugfixes
- faster code for ABSOLUTE arrays
- unit SYSTEM added array 'mem: array [0..0] of byte absolute $0000'
- optimization for CASE (tail optimize)
- INC/DEC optimization for [striped] arrays
- new unit E80, handler E: in HiRes mode, 80 columns.
- new unit RC4, encryption with RC4 algorithm
Mad Pascal 1.7
-
[STRIPED] for arrays with a maximum range of 0..255
-
new target, neo6502 (-t neo)
-
GRAPH.INC: Circle (faster version)
-
fixes lib/aplib.pas
-
fixes lib/zx0.pas
-
improved CASE optimization
-
added directive {$UNITPATH filename} as equivalent to {$LIBRARYPATH filename}
-
added ability to specify a path for a module declared by USES, e.g:
uses crt, vector in '...\3d_vector.pas';
-
added support for LIBRARY modules
-
added EXTERNAL modifier for variables, procedures, functions
-
added ability to set compilation address from program level, e.g.:
program name : address;
library name : address;
Mad Pascal 1.6.9
- improved memory allocation for arrays [0..0], 'ABSOLUTE $0000' is enforced initially, 1 byte of memory is saved
- added possibility to declare arrays without specifying their size, e.g.:
var tab: array of byte = [1,3,4,3,1];
var tb: array of char = 'abcdefghij';
- new compiler directive {$bin2csv filename} allows you to initialize arrays e.g.:
var tb: array of byte = [ {$bin2csv filename} ];
- new compiler directive {$optimization loopunroll}, {$optimization noloopunroll}, performs FOR loop unrolling with fixed parameters
- new BLOWFISH module allowing to encrypt, decrypt character strings according to specified key
- new example a8\AES-Rijndeal
Mad Pascal 1.6.8
-
resignation of type expansion for expressions from SHR
-
new SAPR resource type, SAPRPLAY
-
for RMTPLAY, as the second parameter you can specify the address for variables on the zero page
-
SizeOfResource(variable, name)
-
unit SAPLZSS
-
unit SHANTI
-
unit SHA1
-
unit xSFX
-
unit SYSTEM: NtoBE, RorByte, RorWord, RorDWord, RolByte, RolWord, RolDWord, SarShortint, SarSmallint, SarLongint
-
possibility to instantiate an array of CHAR type by STRING (if string is shorter spaces will be inserted), e.g:
tab: array [0..15] of char = '0123456789ABCDEF';
-
fixed passing function values through arrays
-
added support for VBLKI interrupts (immediate) via SetIntVec, GetIntVec (https://mads.atari8.info/doc/pl/przerwania/)
-
rewritten compiler code for mod separable modules
-
rewritten code for handling arrays with pointers to records 'tab: array [0..x] of record^'
-
added optimization 'Common head/tail Sequence coalescing'
Mad Pascal 1.6.6
- improved implementation of EXIT
- added ability to generate code for RAW (-target)
- added support for INLINE modifier for procedures and functions
- added ability to declare a variable on the null page by using REGISTER modifier
- added support for TEXTFILE (TEXT) type
- new unit INIFILES
- unit SYSUTILS: CompareMem, TryStrToInt
- unit SYSTEM: CompareByte, Pos, Delete
- improved passing of parameters to objects (OBJECT) without participation of program stack :STACKORIGIN (in most cases)
- added possibility to mark a variable as ephemeral [volatile]
[volatile] vcount: byte absolute $d40b; - for OBJECT added methods CONSTRUCTOR, DESTRUCTOR
- added support for macros {$define label (parameters) := expression}
- added 'FOR element IN array' construction for arrays not exceeding 256 bytes
- more free memory on the zero page, FXPTR, PSPTR pointers are now allocated depending on whether they are used
- added support for FLOAT16 type
- added support for procedural type
- unit ZX2
Mad Pascal 1.6.5
- rewritten handling of CASE OF
- rewritten code optimization for arrays not exceeding 256 bytes
- optimization for conditions '>', '<='
- added memory allocation for STRING-type arrays (so far only the pointer was put away, it worked like 'array of ^string')
- new platform added, Commodore C4 Plus
- unit GRAPHICS: procedure Font(charset: pointer);
- unit STRINGUTILS
- unit MISC, RMT, CMC, MPT: DetectAntic
- unit SYSTEM revised to include ATARI, C64, C4Plus platforms
- unit ZX0
- unit HCM2
- added support of $resource (RCDATA, RCASM) for C64, C4Plus platforms, resources are sorted by ascending addresses
- extended RCDATA resource with possibility to specify ofset for read file
- added support for Pascal compliant syntax for ASM block, no { } brackets required
- added new directive {$codealign proc = value}, {$codealign loop = value} allowing to align generated code