Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

z88dk - changes for v2.2 #1989

Merged
merged 35 commits into from
Jul 21, 2022
Merged

z88dk - changes for v2.2 #1989

merged 35 commits into from
Jul 21, 2022

Conversation

feilipu
Copy link
Collaborator

@feilipu feilipu commented Mar 9, 2022

Files to change in preparation for the v2.2 Release.

Open for any further files missing, or documentation, copyright changes, other things to add, etc, etc...

@feilipu feilipu added help wanted help building a solution toolchain labels Mar 9, 2022
@feilipu feilipu requested a review from suborb March 26, 2022 06:03
@suborb
Copy link
Member

suborb commented Apr 3, 2022

@feilipu I think this the main stuff we usually update but..

  • sccz80 has a date of 2017

@feilipu
Copy link
Collaborator Author

feilipu commented Apr 4, 2022

sccz80 has a date of 2017

Fixed.

Updated the Pi benchmarks too, noting they were also from 2017 in part.

Just need to update the xxx marked dates on merge.

@desertkun
Copy link
Collaborator

I think [ticks] Start of symbolic debugging should mention something about z88dk-gdb as well.

@feilipu
Copy link
Collaborator Author

feilipu commented Apr 6, 2022

I think [ticks] Start of symbolic debugging should mention something about z88dk-gdb as well.

Added a new [gdb] line to changelog as it is a completely new capability. 👍

@feilipu feilipu removed the help wanted help building a solution label May 3, 2022
@suborb
Copy link
Member

suborb commented May 4, 2022

Thanks for a lot of repetitive work/judicious use of sed!

I know we're very late with this one. Funnily enough I've got nothing planned so I'm guessing we could just snapshot on a convenient date.

@desertkun
Copy link
Collaborator

Uhhh since this is getting released I feel the need to polish some z88dk-gdb code, to have clean interfaces, good docs, etc. Hope you can hold off till the end of weekends.

@feilipu
Copy link
Collaborator Author

feilipu commented May 7, 2022

Funnily enough I've got nothing planned so I'm guessing we could just snapshot on a convenient date.

I think I've tagged all the date fields with xxx, to make them easy to find. But of course, April has become May. 👍😃

@feilipu
Copy link
Collaborator Author

feilipu commented Jun 16, 2022

I think the last thing to do is to pen a summary of changes since v2.1, a bit more conversational than the changelog.

My perspective is not complete, so please edit this comment with what has happened (what you did) into better words where possible...


z88dk-gdb - IDE debugging is now supported using CLion/VSCode with MAME, or FUSE (Spectrum Emulator).

z88dk-z80asm - Is now a MACRO assembler, supporting all of the classic macro assembly key words. Additionally many synthetic instructions have been added across all platforms. A new FLOAT directive allows the assembly of floating point numbers in any one of the library's formats. The Intel 8085 undocumented instructions are now supported, as are all Z80N extension instructions.

z88dk-zsdcc - The latest stable release SDCC 4.2.0 has been patched to support z88dk and is included. The traditional z88dk calling conventions (__z88dk_fastcall & __z88dk_callee) have been retained.

Further integration of the classic and new libraries has been completed. To a large extent Z80 machines now share the same code base across both libraries. For the other machine types found in the classic library (I8080, I8085, and GBZ80) code has been organised for hierarchical inheritance, rewritten to be re-entrant, and provide callee support wherever possible.

The floating point maths libraries have been extended, with the Microsoft mbf32 library receiving code optimisation paths with I8085 and Z80 specific instructions. The IEEE math32 Z80 support has been further performance optimised. The am9511 APU maths library now works with I8085 CPUs and the classic library.

Improved or new support for many machines including the GL6000, the homebrew Micro85, the Radio86 family, the SAM support was extensively reworked, the Sharp MZ800 video was reworked, and support for the PTC Sol 20 was added. Support for the RC2014 using the I8085 CPU was added, making use of the tighter integration between classic and new libraries. The CP/M target has been extended to support disc creation for Amstrad, Televideo, and Bondwell systems, and Amstrad PCW Graphics support was added. A generalised CP/M GSX graphics library is also now available.

And finally, building z88dk from source on ARM64 (AArch64) architecture (eg Apple M1, or Raspberry Pi 3 or later) is now supported, enabling a new generation of host systems.


Changelog for reference.

  • [all] Compressed data can now use ZX0 compression tools
  • [all] math32 optimisations
  • [appmake] Compressed ROM data sections can now use zx0
  • [classic] features.h added for improved portability
  • [classic] ZX0,1,2 decompression functions added
  • [classic] math MBF32: 8085 and Z80 instruction optimisation
  • [classic] math AM9511: support for 8085
  • [classic] sccz80 8080, 8085, gbz80 l_ primitive reentrancy
  • [classic] string function loop overhead optimisation
  • [classic] string callee functions made 8080, 8085 safe
  • [classic] +cpc: Screen driver fixes
  • [classic] +cpc: Banking support
  • [classic] +cpm: Amstrad, Televideo, Bondwell disc creation
  • [classic] +cpm: support for Bondwell 2 console and graphics
  • [classic] +cpm: Amstrad PCW Graphics library
  • [classic] +cpm: New subtypes for Bondwell 12/14 and 2
  • [classic] +cpm: Removal of code that made it incompatible with the z180
  • [classic] +cpm: GSX graphics library
  • [classic] +cpm/msxdos1: fcntl speedup via caching
  • [classic] +gl: GL6000 support improved
  • [classic] +micro85: Support for the homebrew Micro85 added
  • [classic] +msx: (msxdos) Time functions now available
  • [classic] +pc88: Graphics reworked and optimised
  • [classic] +radio86: New target for the Radio86 family
  • [classic] +sam: Extensively reworked and improved
  • [classic] +sol20: Support for the PTC Sol 20 added
  • [classic] +vg5k: 8x10 fonts and UDGs now usable
  • [classic] +ts2068/zxn: "fatpix" available in hires mode
  • [classic] +z88: Support for the OZ5 apps and shell
  • [classic] +zx: Improved Interface 1/Microdrive support
  • [classic] +zx: esxdos and plus3 fcntl enhancements
  • [newlib] ZX0 decompression functions added
  • [newlib] +rc2014: 8085 CPU support through new/classic hybrid library
  • [newlib] +zxn: dot files are now created correctly
  • [gdb] Debugger interface from ticks, connects to a gdbserver
  • [sccz80] Temporary files now removed on windows
  • [sccz80] Bug fixes + optimisations
  • [sccz80] Debug information using -debug
  • [ticks] Start of symbolic debugging
  • [z80asm] Now supports assembling undocumented 8085 instructions
  • [z80asm] Replace --cpu=r2k with --cpu=r2ka
  • [z80asm] Macros are now supported
  • [zsdcc] Upgraded to SDCC 4.2.0 r13131

@pauloscustodio
Copy link
Member

I would add to the z88dk-z80asm:
A new FLOAT directive allows the assembly of floating point numbers in one of the library used formats.

@feilipu
Copy link
Collaborator Author

feilipu commented Jul 11, 2022

Is it time to pull the trigger on this? Or is there something outstanding to do?

@pauloscustodio
Copy link
Member

Good for me. My current work is long term (evolution to C++ to allow implementation of some new features)

@feilipu
Copy link
Collaborator Author

feilipu commented Jul 17, 2022

Ok. I think we're all done here. 👍

@desertkun
Copy link
Collaborator

Good for me. My current work is long term (evolution to C++ to allow implementation of some new features)

C++ on my speccy? Kind of ambitious don't you think? 😅

@suborb
Copy link
Member

suborb commented Jul 21, 2022

Right, lets do this....I'll snapshot the builds tomorrow.

@suborb suborb merged commit 740ccef into master Jul 21, 2022
@feilipu
Copy link
Collaborator Author

feilipu commented Jul 21, 2022

LOL typical.

Was just working on a linkage failure for classic/sdcc/math32. And thought I had all week.

Anyway. That's life. 🤷‍♂️

Right, lets do this....I'll snapshot the builds tomorrow.

Can I fix these before you do the snapshot? Just grinding through.
Not sure whether sdcc stopped using (eg) _cos_fastcall in classic or whether it never did do that and the error's always been there.

@feilipu feilipu deleted the z88dk_v2.2 branch July 21, 2022 09:17
@suborb
Copy link
Member

suborb commented Jul 21, 2022

I thought everyone was getting annoyed with me for not pulling the trigger!

I’m happy to delay the snapshot by a bit.

@feilipu
Copy link
Collaborator Author

feilipu commented Jul 21, 2022

I thought everyone was getting annoyed with me for not pulling the trigger!

😄 Started getting bored, and poking about in corners. And found things I'd have preferred to ignore.

Not sure whether sdcc stopped using (eg) _cos_fastcall in classic or whether it never did do that and the error's always been there.

sdcc issues _cos in classic, but issues _cos_fastcall in new.
So I see there's a few things I'll need to adjust. Now I know, it won't take long.

@feilipu
Copy link
Collaborator Author

feilipu commented Jul 21, 2022

OK I've fixed the faulty linkages and pushed them.
CI is a PITA tonight...

I believe that I'm done.

@feilipu
Copy link
Collaborator Author

feilipu commented Jul 21, 2022

@suborb obv. remember to fix the dates in the README.md and changelog.txt, They're still set to xxx June.

@feilipu feilipu mentioned this pull request Dec 4, 2023
11 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants