[changes] 08/05/2021

New features and project activity between releases
Post Reply
User avatar
Well known member
Posts: 1414
Joined: Sun Jul 15, 2007 10:01 pm

[changes] 08/05/2021

Post by dom »

A little bit delayed, here's what's changed since the last time:

(classic) +cpm library

* (Release issue) Reading and writing files now returns the correct data regardless of the requested count
* Performance of reading and writing text files and byte-wise access to binary files is much improved. A record cache has been added which reduces bdos() read/write calls significantly.
* Performance of seek(...SEEK_END) much improved
* fread and fwrite are now available for -clib=8080
* Soft EOF now works for -clib=8080
* Default number of available FCBs reduced to 3 (from 10)
* Command line arguments are now parsed correctly

(classic) +msx MSXDOS enhacements

* Performance enhancements for msxdos1 file access (see +cpm above)
* Support for <time.h> and reading the RTC is now available
* Environment variables now supported with msxdos2

(classic) +laser500 keyboard scanning

* The whole of the keyboard is now scanned by default

(classic) +sam improvements

* <time.h> now works on the SAM Coupé and autodetects SAMbus or Dallas clocks
* highram and allram subtypes now provide a tick counter
* fat pixels (which are square) are now available in mode3

(classic) +vg5k 8x10 font support

* UDGs and fonts can now use 8x10 fonts on the VG5000. This allows the removal of the inter-row pixel gap.

(classic) +zx Plus3 fcntl

* opendir/readdir/closedir is now available

(classic) +zxn fcntl support

* Added mkdir/rmdir/rename/remove
* Added support for reading the hardware clock - <time.h> is now functional

(classic) Command line pragmas

* Pragma names controlling redirection have been cleaned up

math32 and math16

* Performance optimisations

(sdcc) Update to r12288

* --reserve-regs-iy bug fixes

(zcc) -startupoffset options/number options

* (Release issue) These options now accept hex values as well as decimal. This caused issues with +zxn and dot files in newline.

Windows fixes

* Nightly build now includes 32 bit binaries
* -create-app for targets that just rename files now works
* Temporary folders with spaces now work
Posts: 56
Joined: Mon Mar 26, 2018 1:49 pm

Re: [changes] 08/05/2021

Post by derekfountain »

Looking at these updates, and the previous ones, I'm seeing lots of activity in the classic library, but virtually nothing in newlib. Assuming I'm reading it right, is that deliberate? What's the development status with newlib?
User avatar
Well known member
Posts: 1414
Joined: Sun Jul 15, 2007 10:01 pm

Re: [changes] 08/05/2021

Post by dom »

The short answer in terms of code is that they've almost merged. The long answer is more complicated of course.

The key differences (from a user perspective) between newlib and classic are:

1. A different crt0 implementation and mechanism
2. A different stdio implementation which in classic supports fileio
3. classic provides portable abstractions across targets (graphics, sound, UDGs etc)
4. newlib provides more dedicated +zx libraries (bifrost, nirvana etc)
5. Setting up a new target in classic is a doddle compared to newlib

My personal focus is on classic, recently I've put quite a lot of work into harmonising the pragmas between newlib and classic so that although the implementation may be different, the user experience is the same. There are some good ideas in newlib which have been pulled back into classic, and there's a few more that I'm interested in doing the same with. With AA working on the next it's simply not feasible to migrate 100+ to newlib, but pulling concepts back to classic is possible, and pulling (immature) targets back can be done as well (the recent Genius Leader work being a good example).

That's not to say that newlib is frozen, a couple of features have gone in the past year, ZX0 and WYZtracker for example. With the code sharing with classic bug fixes also go in - for example strncpy() has just been fixed.
Post Reply