forked from z88dk/z88dk
-
Notifications
You must be signed in to change notification settings - Fork 2
/
changelog.txt
569 lines (499 loc) · 28 KB
/
changelog.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
Concise Record of Changes to Z88DK Releases
-------------------------------------------
z88dk vX.XX - XX.XX.XXXX
- [classiclib] The value of FOPEN_MAX can now be controlled at link time with
-pragma-define=CLIB_FOPEN_MAX=YY. The default for YY is 10.
- [classiclib] A new port to the Pacman arcade hardware is availble
- [classiclib] Bug fixes for memrchr() and gets()
- [classiclib] Compiler intrinsics are now available
- [classiclib] fmemopen is now available
- [classiclib] ROM cartridge support for PC6001
- [classiclib] +test target now supports amalloc and command line arguments
- [classiclib] printf format %s now supports a precision field
- [classiclib] printf format %x, %p, %X, %B now disable the + flag
- [classiclib] printf now supports 64 bit values when used with sdcc
- [classiclib] +c128 improvements
- [classiclib] [math48] #108: Single parameter library math functions now work correctly
- [classiclib] +rcmx000 support has been restored and optimisations applied
- [classiclib] builtin functions are enabled for both sccz80 and zsdcc, disable with
-D__SDCC_DISABLE_BUILTIN or -D__SCCZ80_DISABLE_BUILTIN as appropriate
- [classiclib] +sms fixed an issue with tile corruption due to sdcc compatiblity
code being inserted in the wrong place
- [classiclib] +nc100 graphics support has been added
- [classiclib] +msx fixed an initialisation error that prevented ROMs from
working correctly
- [sccz80] #36: Defining an extern variable with @ no longer exports symbol
- [sccz80] #9: The sdcc directives __z88dk_fastcall and __z88dk_callee are now
supported. Additionally __preserves_regs() is ignored.
- [sccz80] #81: Now supports const qualifier for assigning read-only data to ROM
- [sccz80] #94: Right to left parameter passing is now supported with __stdc directive
- [sccz80] #112: Typedef pointers are now supported
- [sccz80] Optimisations for long multiplication
- [sccz80] #109: Callee functions now cleanup correctly without corrupting return values
- [sccz80] #103: Bug fixes around double + int/long operands
- [sccz80] #98: Bug fix for handling expressions with a const on lefthand side
- [sccz80] #90: Bug fix for result of comparison
- [sccz80] #118: static doubles can now be initialised
- [sccz80] #116: Optimisations for operations with constants
- [sccz80] Constant floating point expressions are now folded
- [sccz80] [math48] #104: Non commutative FP operations with constant on left now work
- [sccz80] #138: Aggregate (arrays, structs) auto variables can now be initialised
- [sccz80] #139: Added support for __naked directive to prevent generation of any code
for marked functions
- [sccz80] #78: __sfr (__banked__) __at [address] [name] syntax is now supported for
IO ports. Specific code is generated for Z80, Z180, Rabbit compilations.
- [sccz80] #26: A whole bunch of casting issues have been resolved
- [sccz80] #176: sizeof() now works on a wider range of lvalues
- [sccz80] #155: The section names used by sccz80 can now be configured
- [sccz80] #188: sccz80 now provides builtin functions for memcpy, memset, strcpy, strchr
- [sccz80] #220: sccz80 now supports __critical blocks and functions
- [ticks] [classiclib] #101,#106: Now supports the +test target
- [zcc] Spaces in filenames (and paths) are now supported.
- [zcc] Custom optimisation rules can be supplied with -custom-copt-rules=
- [zcc] A target must now be supplied to zcc
- [zcc] The option -sccz80-inline-ints will inline any calls generates to l_gint and l_pint.
This can improve performance at the cost of a small increase in binary size
- [zpragma] Support for #pragma printf and #pragma scanf which take a format string
argument and configure the appropriate printf converters.
- [zpragma] has now been completely renamed, scanner is no more
- [newlib] +sms devKit SMS has been incorporated
- [all] #105: main() always takes its parameters in r->l format regardless of compiler
z88dk v1.99B - 10.01.2017
- [package] The win32 and osx packages are complete and now include the zsdcc & zsdcpp
binaries.
- [package] VS2015 solution file is now available in z88dk/win32 for building all z88dk
binaries except zsdcc & zsdcpp under Windows.
- [zcc] M4 has been added as an optional macro pre-processor.
- [zcc] In conjunction with the above, a collection of useful M4 macros has been started
in "z88dk.m4" that can be included in any ".m4" file processed by zcc.
- [zcc] List files ending with extension ".lst" can be used to specify a list of source
files for the current compile, one filename per line.
- [zcc] zcc now processes all files it is given to the final output file type specified.
- [zcc] -v gives more information on what steps zcc takes to process each source file.
- [zcc] -x now builds a library out of the source files listed.
- [zcc] -c coupled with an output filename "-o name" will cause a single consolidated
object file to be generated out of all source input.
- [zcc] Better error reporting for source files with unrecognized types.
- [zcc] Pragma integer parameters can now be in decimal, hexadecimal or octal.
- [zcc] -pragma-include added to allow a list of compile time pragmas to be read from a
file as in "-pragma-include:zpragma.inc".
- [zcc] -pragma-export added, similar to -pragma-define but the assembly label is made
public.
- [zcc] --list generates .lis files for each source file. .lis files are assembly
listings generated just prior to input to the linker.
- [zcc] --c-code-in-asm causes C code to be interspersed as comments in any generated
assembly listing associated with C source files.
- [zcc] .s files are understood to be asz80-syntax assembly language source files for
better compatibility with sdcc. This is still a work-in-progress feature.
- [zcc] --no-crt allows compiles to proceed without using the library's supplied crt for
a target.
- [zcc] Temporary files are always created in the temp directory. The option "-notemp"
has been removed.
- [zcc] Library and include search paths fixed to honour the order specified on the
compile line.
- [zcc] All source files are processed from their original location so that includes can
be properly resolved.
- [zcc] clang/llvm compilation is in an experimental state.
- [sccz80] Correct floating point constant handling.
- [sccz80] New __SAVEFRAME__ function decorator to allow saving of ix during a function call.
- [sccz80] -standard-escape-chars to make \n and \r output standard character codes
- [zsdcc] Updated to SDCC 3.6.5 #9824.
- [zsdcc] SDCC's native C pre-processor is now used so that line numbers corresponding to
reported errors are accurate.
- [zsdcc] Peephole-z80 fixed to accurately report registers affected by instructions.
- [zsdcc] inSequence('stride' %1 %2 %3 ...) added as peephole rule qualifier.
- [zsdcc] Peephole-z80 made aware of z88dk special functions.
- [zsdcc] ~300 new peephole rules added to the aggressive peephole set (-SO3).
- [zsdcc] Peephole rules added to fix some known code generation bugs and to fix SDCC's
critical sections for nmos processors.
- [zsdcc] --opt-code-size significantly reduces code size for programs using 32-bit
longs, 64-bit longlongs and floats.
- [zsdcc] chars have been made unsigned by default.
- [zsdcc] For loops can declare variables in the initializer statement.
- [zsdcc] rodata section has been properly implemented so that all constant data generated
by sdcc is assigned there.
- [z80asm] Handle input files more predictably: link .o files; assemble any other
extension; append a .asm or .o option to the file name to allow just the basename.
- [z80asm] Make a consolidated object file with -o and not -b: all the object modules
are merged, the module local symbols are renamed <module>_<symbol>
- [z80asm] Link the library modules in the command line sequence (it was depth-first).
- [z80asm] Add directory of assembled file to the end the include path to allow includes
relative to source location.
- [z80asm] Remove all generated files at start of assembly to remove files from previous
runs.
- [z80asm] Remove deprecated directives: XREF and LIB (replaced by EXTERN), XDEF and XLIB
(replaced by PUBLIC), OZ (keep CALL_OZ).
- [z80asm] Rename DEFL to DEFQ to reserve DEFL for macro variables; rename DS.L by DS.Q
- [z80asm] Constants for section sizes: prune empty sections, rename ASMHEAD, ASMTAIL and
ASMSIZE to __head, __tail and __size respectively, rename
ASM<HEAD|TAIL|SIZE>_<section_name> to __<section_name>_<head|tail|size>
- [z80asm] Environment variables no longer used: Z80_OZFILES, Z80_STDLIB
- [z80asm] Command line option -r, --origin: accept origin in decimal or hexadecimal with
'0x' or '$' prefix
- [z80asm] Command line options: -i, -x: require a library name
- [z80asm] Command line options: remove -RCMX000, keep only --RCMX000
- [z80asm] Command line options: remove -plus, keep only --ti83plus
- [z80asm] Command line options: remove -IXIY and --swap-ix-iy, keep --IXIY
- [z80asm] Command line options: remove --sdcc, -nm, --no-map, -ng, --no-globaldef, -ns,
--no-symtable, -nv, --no-verbose, -nl, --no-list, -nb, --no-make-bin, -nd,
--no-date-stamp, -a, --make-updated-bin, -e, --asm-ext, -M, --obj-ext, -t
- [z80asm] Make symbol files, map files and reloc files optional; do not merge symbols in
the list file; do not paginate and cross-reference symbols in list file; rename list file
to file.lis (@file.lst is used as project list)
- [z80asm] Unify format used in map files, symbol files and global define files, output
list of symbols only once.
- [z80asm] Include symbols computed at link time in the global define file.
- [z80asm] Simplify output of --verbose
- [appmake] +rom can now generate binaries for ROM chips mapped into a specific address range.
- [appmake] +sms now generates bankswitched .sms files as output.
- [appmake] +zx now has option to generate headerless .tap files.
- [appmake] Appmake now understands three compile models -- ram, rom and compressed rom.
- [classiclib] SDCC can now be used to compile using the classic library.
- [classiclib] Rewritten and modular printf core, added (v)snprintf.
- [classiclib] Rewritten and modular scanf core.
- [classiclib] Ports are now section aware.
- [classiclib] Support for compressed data section model.
- [classiclib] Support for copied data section model.
- [classiclib] User overridable fputc_cons.
- [classiclib] New target: Microbee. Support for various GFX modes and 1 bit sound.
- [classiclib] New target: Robotron kc. Support for various GFX modes and 1 bit sound.
- [classiclib] New target: z1013. Support for various GFX modes and 1 bit sound.
- [classiclib] New target: z9001. Support for various GFX modes and 1 bit sound.
- [classiclib] CP/M Plus on Spectrum.
- [classiclib] CP/M extenstions forced to upper case.
- [classiclib] CP/M extensions improved on Aussie Byte, trs-80 and Epson PX.
- [classiclib] GFX Library: improved the vector rendering functions, now bigger pictures
can be drawn and higher resolutions are supported. Various fixes.
- [classiclib] Custom text configuration (font, resolution) can be done at compile time
for targets with ansi VT support on graphics display.
- [newclib] 64-bit integers are now fully supported in the library.
- [newclib] The fprintf/fscanf cores can now have conversion specifiers individually
enabled or disabled at compile time.
- [newclib] fprintf %aefg precision formatting corrected.
- [newclib] Intrinsics introduced as a method to inline assembly code without disturbing
optimization.
- [newclib] preserves_registers attribute attached to every function in the library.
- [newclib] aplib added as another data decompression utility.
- [newclib] setjmp/longjmp state increased to include the value of IY for sdcc compiles.
- [newclib] New target: rc2014 (preliminary).
- [newclib] New target: Sega Master System. The target is able to automatically create
bankswitched rom cartridges with signatures.
- [newclib] ZX Spectrum target: interfaces to the bifrost and nirvana multicolour sprite
engines added.
- [newclib] The CRT startup code has been made more flexible allowing a wide range of
features to be selected via pragmas at compile time.
Known issues:
* Spaces in paths or filenames can be a problem.
* When --c-code-in-asm is active, unicode characters from .c source files appearing as
comments in translated asm may cause the tools to crash.
z88dk v1.99A - 24.12.2015
- [z80asm] Sections have been introduced for generating memory maps and compiling to
bankswitched memory.
- [z80asm] Modern logical operators have been adopted.
- [z80asm] New scoping keywords PUBLIC, EXTERN and GLOBAL introduced.
- [z80asm] Relocate files are generated for output binaries for patching assembled code to
a new address at load time.
- [sccz80] Numerous bugfixes.
- [sdcc] SDCC is now fully supported as alternate C compiler for the new C library.
- [sdcc] SDCC's generated code is improved by a large set of aggressive peephole rules
(use -SO3 to enable).
- [sdcc] SDCC's calls to its primitive functions are modified to use callee linkage.
- [new c lib] New C library written in assembly language from scratch aiming for a subset
of C11 compliance. Contains more than 700 functions currently.
- [new c lib] Stdio made object-oriented so that drivers can inherit library code to
implement features with a minimal amount of additional code.
- [new c lib] Stdio base classes currently include serial character i/o and terminal i/o
implementing windows and proportional fonts. Disk i/o is missing in this release.
- [new c lib] Unique stdio implementation allows removal of high level buffers without
affecting performance.
- [new c lib] Many functions from GNU and POSIX are present beyond the C11 standard.
- [new c lib] Many unique libraries including some C++ STL containers, data compression,
obstacks, game libraries, sound, fzx proportional fonts, etc. The new C lib contains
libraries not present in the classic C lib and vice versa. Over time the two libraries
will homogenize.
- [new c lib] CRTs are supplied for three initial targets: embedded (generic z80), cpm,
zx (zx spectrum). Specialized crts allow immediate compilation without customization by t
he user.
- [new c lib] The library and crts are highly configurable at library build time and at
compile time. Options allow easy generation of binaries for ROM or RAM targets.
- [tools] New tool ticks is a command line z80 emulator able to exactly measure execution
time of a code block.
- [tools] New tool dzx7 is a decompressor counterpart to zx7.
- [tools] New tool zx7 is an optimal lz77/lzss data compressor with companion
decompression subroutines in the z80 library.
- [appmake] +rom added to manipulate raw binaries; options include code injection,
extraction and conversion to intel hex format.
z88dkv1.9 12.7.2009
- [z80asm] Supports -I and -L directives to specify library and include paths
- [z80asm] the # include identify is no longer required
- [z80asm] Bug fixes for rabbit support
- [sccz80] Support for alternate assemblers
- [zcc] Support for alternate assembler/linkers
- [z80nm] Improvements and bug fixes
- [lib] MSX: Many improvements
- [lib] TRS80: Graphics support
- [lib] CPC: Better handling of firmware calls
- [lib] Galaksija: New target
- [lib] C128: Improvements
- [lib] Many other improvements and bug fixes
z88dkv1.8 9.3.2008
- [sccz80] Bug fixes
- [cpp] DATE directive now outputs the date in a sensible format
- [lib] crt0: Different versions of the library are built to avoid index
registers or alternate registers depending on the target
- [lib] A simple Xlib emulation has been imported and is available to ports
with graphics capabilities
- [lib] CPC: Stability improvements
- [lib] ZX: Direct access to Opus Discovery is available
- [lib] ZX81: Stability improvements
- [lib] ZX81: High Res graphics are available
- [lib] ZX81: SP1 sprite ackage support
- [lib] TS2068: SP1 sprite package support
- [lib] Newbrain: fcntl support
- [lib] MSX: Improved support
- [lib] MSX: 1 bit sound
- [lib] ABC80: graphics
- [lib] TEST: New test target for supporting a testing infrastructure
z88dkv1.7 15.7.2007
- [sccz80] Bug fixes, tweaks to single parameter function pointer calls
- [z80asm] Z80asm supporting Rabbit
- [zcpp] End of file fix for win32
- [zcc] -Cz flag to pass through to appmake
- [appmake] Support for most z88dk targets
- [lib/crt0] Support for Newbrain, Rabbit, Sega Master System SMS, TS2068
- [lib] Much of the library rewritten to use FASTCALL and CALLEE linkage
for faster and small library function calls
- [lib] malloc library can now allocate from a scattered map of available
RAM and supports multiple heaps
- [lib] balloc library introduced as a block memory allocator
- [lib] interrupt mode 2 library added
- [lib] stdlib and strings now completely implemented in assembler and expanded
- [lib] abstract data types library introduced initially containing linked list,
heap, stack and queue algorithms library begun initially containing an implementation
of the A* search algorithm
- [lib] ZX Spectrum : SZX basic fcntl driver
- [lib] ZX Spectrum : SP1 software sprite engine added
- [lib] ZX Spectrum : Improved Spectrum library includes new display functions
- [lib] ZX Spectrum : Input library added for direct access to keyboard, joystick and mouse devices
z88dkv1.5 16.12.2002
- [sccz80] Optimizations for if/while statements
- [sccz80] Many, many bugfixes
- [support] ar clone to view the contents of library files
- [libs] Many new machines added
- [libs] 3 ports now support command line arguments
Basically about 18 months of changes!
z88dkv1.33 (sccz80v1.10b72) 11.5.2001
- [sccz80] Many changes to #pragma directive
- [sccz80] FP division now works! (Helps if I call fdiv instead of fmul!)
- [zcpp] Should now understand various LF/CR conventions
- [z80asm] Labels can now end in ':' and don't have to start with '.'
- [z80asm] The options page is too long, so by default we just print version number,
z80asm -h now displays the options
- [include] Fixed the annoying csleep prototype problem
- [libs] Added support for new machines from Stefano (MSX, SVI etc)
- [libs] z88 now has ANSI terminal support
- [libs] Untested Spectrum +3 file support
- [libs] Xircom Rex support (untested) - mail me (dom) for the includes etc
- [doc] Platforms.txt details what is suppported on which machine
z88dkv1.32 (sccz80v1.10b71pre4) 6.2.2001
- [sccz80] Fixed long pointer arithmetic
- [sccz80] Added int blah @ nnnn type as alternative (and better implemented)
version of int blah (nnnn)
- [sccz80] Added ability for FP constants to be evaluated at run time
- [sccz80] Got rid of *annoying* int<->ptr warning when calling func with
difference between two pointers
- [zcc] Add -Cp flag to pass through to frontend (for GNU cpp purposes)
- [zcc] Added -Ca flag to pass through to assembler
- [z80asm] INVOKE opcode for ti calcs
- [libs] Added z80s183_crt0.lib (minor change in l_long_case)
- [libs] Added Stefano's TI calc support routines
- [libs] Fixed things so that compilation is possible
- [opt] More rules in level 3 and fixed some as well
z88dkv1.31 (sccz80v1.10b71) 3.7.2000
- [sccz80] __SHARED__ no longer implies __LIB__
- [sccz80] long arithmetics sorted out (const on LHS etc)
- [sccz80] *argv[{n}] now gets correct offset for near (but not far) types
- [libs] strtol fixed
- [libs] Fixed open_z88 (ooops!)
- [libs/crt0] new support for CP/M, ZX81, Sharp MZ, TI86, ABC80
z88dkv1.3 (sccz80v1.10b70) 20.4.2000
- [sccz80] Long subtraction bug (finally!) fixed
- [sccz80] Sane initialisation of auto variables
- [sccz80] Little bit of framepointer support (-frameix/-frameiy)
- [sccz80] far xx ** type correctly passed to function
- [sccz80] unions can now be initialised (first member taken +pad)
- [sccz80] stack cleaning on goto fixed
- [sccz80/crt0] Improved printf handling [2]
- [zcc] Improved config file handling
- [lib] new stdio library (see doc/stdio.txt for details)
- [lib] new z88 far functions (by Garry Lancaster)
- [lib] strncmp finally fixed
- [lib] strncpy finally usable
- [lib] strchr/strrchr rewritten in asm
- [lib] ZX print routine now scrolls
- [lib] Start of +3 file routines (not usable at present)
- [lib] z88 time routines (untested)
- [lib] z88 DOR routines
- [lib] z88 stat() routine (check for sanity someone please!)
- [lib] fopen_z88/open_z88 to return explicit filename being opened
- [lib] z88 wildcard handler routines
- [lib] z88 exec_cli routine
- [lib] Spectrum ANSI display routine (by Stefano Bodrato)
- [lib] Most gfx routines now work on Spectrum
- [lib/crt0] VZ200/300 libs and crt0 (by Stefano Bodrato)
- [lib/crt0] NC100/200 libs and crt0 - untested (send me one!!)
- [inc] getchar() macro added for getkey()
- [egs] Artic Adventure A added for ZX (and z88)
[1] Handling for ** types is quite flakey in prototypes - I just store
the fact that it's a pointer and not a pointer to pointer. Fixing this
would require extra storage so it's being left
[2] Printf handling has improved greatly with this release - previously it
was possible to end up with both sets of printf() functions within the
executable, now only one is possible, this is done by having the crt0 file
jp to the chosen vfprintf function. These escalate upwards so here's what
they can do (in order of complexity):
vfprintf_mini - supports %d,u,s,c,%,ld,lu fields
vfprintf_comp - supports width specifiers and %d,x,c,s,u,% fields
vfprintf_float - As above but with floating point (%e etc), only generic,
untested
Once a complexity escalation has been made within a project then it's not
possible to undo - i.e. if you want to printf longs then don't specify a
width anywhere within the project. Sorry, but until I/someone upgrades
vfprintf_(comp|float) this limitation will remain.
z88dkv1.2p5 (sccz80v1.10b69) xx.3.2000
- z80asm patched so it now accepts '_' as first letter of symbol
- Hence the smc_ prefix is now consigned to history
- Archaic and obsolete HDRPRTYPE kludge removed
- Long standing bug removed in function prototypes
- Miniprintf now understands %u, %ld, %lu types
- ZSock API & doc distributed
- Package support (both utilisation and creation)
- More library routines are in C (more efficient than mildly
optimised!)
- Arrays of pointers to functions now supported
- ANSI compliance! Well, in literal escapes at least!
- assert.h, setjmp.h features now available
- stdarg.h - variadic arguments supported - see note in stdarg.h for
caveats
- Improved Spectrum library - 32/64 column font routine now usable
sccz80v1.10b67
- iferror { } else { } now evaluates first clause(!)
- Output in asxx compatible format (Flag=-asxx)
- if (always true) bug fixed
- Unreachable code warning following above
- __CALLEE__ function flag (ask me!)
- Internal flag rearrangement
- Casts patched up a bit more
- Stupid mistake in appmake sorted..
sccz80v1.10b66
- Sorted out coping with initialising xx *[]={ ,, } types
- Warnings if these are left empty
- Sorted out L,U,S specifiers after constants
- Default to int type for wild auto/register defns
- Support for #line (supplied by some pre-processors) instead of #
- Initialising of auto variables is now supported (not arrays or
structs!!!)
sccz80v1.10b65
- Added octal parsing for constants (prefix with 0)
- Sorted out goto problems (tags now stored on global stack)
- Typdef-ing stucts which contain pointers no longer gives out
(incorrect) warning
z88dkv1.2p3 (sccz80v1.10b64)
- Fixed broken compiler (postincrement of structure pointers)
- Improved compiler (l_mult no longer pushs/pop de)
- More opt rules + fixes
- Some mem* routines (see string.h)
- Improved spectrum library (miniprintf etc)
- Fixed memset, some str* routines
- Increased size of structure table (so more structures can be
defined)
- Addition of return_c return_nc iferror -stackoffset for dealing
with packages/shared libs (also __SHAREDC__ )
- zcc.cfg has a default of /lib/cpp for the preprocessor which
is usually something with more intelligence than zcpp
- Start up file changed to include near malloc variables so
apps using them can be ROMmed correctly..
z88dkv1.2p2
(p1 was not widely circulated)
Changes (in no particular order):
- Removed SEGV when defining external pointers - extern int blah (addr); type
- Easy rebuilding of libraries - now makefile'd
- Major changes in handling of conditionals - we now use c/nc to detect
true or false (logical true or false is also return in hl), this removes
two bytes for each expression (except for double expressions, sorted
next releasse)
- Fixed z88 atan2() by Keith Rickard
- Loads of new optimization rules (We now have over 200 in total!) which
results in vastly better (smaller & quicker) code - please let me know
of any problems.
- Fixed a few of the rules as well (stupid(!) mistakes)
- Removed annoying error which fails compilation if argument types to
a function differ only a sign - a warning is now emitted
- New appmake by Dennis Groning that doesn't allocate entire 64k but
only allocates what is needed (ideal for MSDOS)
- zcc now uses local files instead of temporary files if issued the
-notemp flag (ideal for MSDOS)
- Always been there but..feature: Use -cc to get the C code interspersed
with the assembler, warning: this will clobber some of the opt rules
so what you see ain't what you get if you don't use it (still thinking
of a way around this)
- float is now accepted as a synonym for double
- More compile time options - they be breeding! See doc/options.txt for
a short guide
- Switch stmt for chars is now done by a cp,jp z method - faster than previously
(for large switch statements cast to int and old method used (less space
but slower))
z88dkv1.2
Improvements & fixes:
- Fixed strcmp() - it was the worlds most useless one before
- Added goto functionality to the compiler, but just cos its there don't
mean you have to use it!!!
- Fixed many incorrect warnings that the compiler was giving out
- Unfixed the "if symbol not found declare as local routine", it reverts to
being an unmet function to not break some programs
- Major internal reorganisation - lets say I was ill and wanted to distract
myself with something almost completely pointless!
- Much improved frontend - we now use tmpnam() files to save garbage in the
working directory and copy back when complete, gets round the "writing to
{zcc}/lib problem" as well - now you can compile several projects at the
same time
- Hopefully SEGV bug squashed frontend
- Removed -show-errs flag, pointless since it really needs to be on all
the time! All errors are shown now, including those that occur during
assembly
- Z80asm v1.0.7 - this is the only version supported! Source code included
with very nice makefile. NB. I will support any new features of z80asm as
and when they are ready - so always use the latest version!
- Slightly better installation instructions (comments please!)
- Added missing l_long_case symbol to z88_crt0.hdr
- Another truly pointless demo app - wc.c
- It's just better (and bigger :( ) okay?
z88dkv1.1p4
I've got tired of endlessly updating html files, so, here's a quick
text file detailing whats new for p4
- Fixed exit() routine - this now returns the exit code correctly
- More Z88 application features - mail checking, safe data
- Fixed bug with long comparisons with 0
- Added a __FASTCALL__ function modifier (see below)
- Added a __LIB__ function modifier
__FASTCALL__
This is quite a dangerous thing to use, it calls functions without
passing parameters on the stack, it instead leaves them in registers
or in the case of fp values in the floating point accumulator. Hence
this can only be used if the function only has one parameter.
This type of call is ideal if you want to make your code smaller (say
you call one function a lot of times), or if you're combining machine
code and c in a single file - say swapping data between big and
little endian formats, it makes the code smaller and can also speed it
up.
exit() is defined as being __FASTCALL__ (out of necessity really, some
of my optimization rules were a bit too clever and did a jp exit instead
of a call exit, the saving is worth it though I think).
NB. In order for __FASTCALL__ to be effective you have to fully prototype
your function, the __FASTCALL__ goes between the type specifer (int, long
etc) and the function name.
__LIB__
This is a new solution to the "Is the function to be LIB'd or XREF'd
problem", the old method #pragma proto is still supported, but for future
header files I'll be using the new method, arguable it's a little less
kludgey, and also makes it easier to see whats going on.