Paul wrote: ↑Sun Mar 19, 2023 9:31 am
Am I doing something wrong?
What you are doing is logical, but just does not match how EightyOne actually works. I imagine EightyOne was originally written to just emulate the ZX81 but was later expanded to support other similar models since these are basically just variations of the ZX81 design. As such, rather than having their own discrete (or inherited) implementations, new models were simply added as conditional statements within the core ZX81 emulation and the alternate ROMs used instead (if applicable). This approach doesn't scale well and makes the code messy (and hence prone to errors) when trying to take into account variations between models.
Support for enhanced functionality, such as high resolution graphics and sound, were added as independently selectable features. This provides a lot of freedom to select a combination that matches any number of real world scenarios, but also means many combinations can be selected that have never existed for real. For example, many interfaces (particularly RAM packs) don't provide a through expansion bus, but EightyOne has no concept of such physical constraints that prevent interfaces co-existing. It also doesn't really have the concept of an interface providing multiple features, but instead it is left to the user to select the feature set that matches the physical configuration they wish to emulate.
The RAM pack setting is a bit misleading as it really indicates the total RAM present. This is why if you have the computer set to a ZX81 with the RAM pack set to None (i.e. 1k), and then select the TS1500 the RAM pack automatically changes to 16k. For the TS1000 it automatically changes to 2k. However, it is still possible to downgrade the RAM pack size even though this would not be possible in reality (without tampering inside the computer or due to a fault).
I don't know how easy it would be to modify the current behaviour of EightyOne, although in theory it does not sound like it ought to be too tricky. If so then the base RAM level for the TS1000 would be set to 2k, for the TS1500 it would be set to 16k. Would this change be worth making to reduce confusion?
Does anyone know what the base RAM is in the Lambda 8300, Ringo R4760 and TK85?
And although not directly related, does anyone know what editions of the ZX81 ROM the TS1000 actually shipped with? Was it just the edition 3?
I've pondered about an alternate hardware dialog that would provide a wrapper around the discrete selectable features. It would instead provide a list of interfaces and would be aware of their limitations, e.g. no through expansion bus, and only allow the user to select the interfaces that could really co-exist. It would then simply set the underlying features. In a few real world scenarios it might even make a difference what order interfaces were connected, e.g. if multiple interfaces contain their own ROM, and so the alternate hardware dialog would ideally need to know this information also. Does such a mechanism sound a useful thing to have?