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

Adds AMSTRADCPCPLUS and SAVECPR #217

Closed
wants to merge 5 commits into from
Closed

Conversation

lordheavy
Copy link
Contributor

@lordheavy lordheavy commented Aug 20, 2023

  • It adds AMSTRADCPCPLUS device (similar to AMSTRADCPC6128 but with 32 pages).
  • It adds SAVECPR directive (allows to save the memory in a cpr file per blocks of 16 KiB - supported by cpc+ emulators).
  • It adds tests for amstradcpcplus and savecpr

I updated documentation and kate syntax highlighting. Tests are missing - help needed !

All current tests passed.

@ped7g ped7g self-assigned this Aug 20, 2023
@redbug26
Copy link

Great job for Amstrad owners !

@ped7g
Copy link
Collaborator

ped7g commented Aug 22, 2023

I had a quick initial look and this looks very good, thank you.

One question I have is what is the exact relation between 464, 6218 and plus.
The way you wrote it they are completely separated, so savecpr is available only for plus, and savecdt, savecpcsna are available only for 464 and 6128. Are the machines that different and there's no overlap, that neither CPR or CDT is useful in the other model?

From a quick look the Plus seems to be same as 6128, only having more RAM, so it's not clear why for example CDT wouldn't be beneficial also for Plus machine. And other way, the .cpr don't support the smaller ones?
(Pardon my ignorance, but I'm not familiar with CPC machines at all).

If the directives could be useful in cross-way, I would suggest to add the Plus into the current cpc family (IsAmstradCPCDevice), and add extra logic in savecpcsna/savecdt to account for third machine (no idea if snapshot make sense). And similarly if savecpr makes at least some sense from 464 or 6128, making the savecpr support them too, so whichever CPC device is user using, all meaningful directives will be active and supported.

@lordheavy
Copy link
Contributor Author

Thanks for the quick review.

The amstrad plus machines are:

  • the GX4000 console (64K ram - only cartridge)
  • the 464+ (64k ram, cartridge, tape)
  • the 6128+ (128k ram, cartridge, disk)
    And have the same hardware capacities of the classic cpc - with some extra hardware features unrelated to cartridge support (sprites, dma, ...).

To keep code simple, I chose to focus the amstradcpcplus device to support the cartridge through the cpr file format. The 32 pages available for this device are more an image of the cartridge than an image of the ram (extra 64k of ram for the 6128(+) is mostly useless when you use a cartridge).

In a first patch, I added sna and cdt feature, then I changed my mind, because some more device should be added to manage ram differences between 464+, GX4000, 6128+, and hardware support differences (GX4000 only support cartridge). But this could be introduced in a future patch.

@lordheavy
Copy link
Contributor Author

Anything new ?

@ped7g
Copy link
Collaborator

ped7g commented Nov 25, 2023

Sorry, I had lately to minimize the time for hobby coding stuff. I do have this pretty high on the list, and I'm hoping to get back to it still this year, but can't give any promises right now. But I don't want it to fizzle out, should be part of next release, whenever that happens.

@ped7g
Copy link
Collaborator

ped7g commented Mar 16, 2024

merged manually on master branch, TY lordheavy.

@ped7g ped7g closed this Mar 16, 2024
@lordheavy lordheavy deleted the cpcplus branch March 16, 2024 20:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants