There are links to useful Quill resources here but most of the useful information came from the BBC and Spectrum Quill manuals (available online as PDFs).
My approach to SWRAM usage will almost certainly be the same as my abandoned adventure skeleton from 2021 (the original Duck! Me? prototype) using the power of copy & paste. While I made some poor decisions about many things therein, I was quietly quite content with the way I distributed data across the 4 available SWRAM banks in a Master 128. Whether I reuse the compression and word-wrapping code is undecided at this stage.
The JMP -> BRA switch is handled by passing the CPU type to CA65, which is then detected in my flow control macros and handled accordingly. While quite basic, this does give me nestable REPEAT...UNTIL, WHILE...ENDWHILE, IF...ELSEIF...ELSE...ENDIF and SWITCH...CASE...ENDSWITCH macros which I find useful. Some earlier notes here.
The Quill database is never written to by a game (AFAIK). The only writeable memory consists of the flags and object locations. The Quill primarily targeted cassette based systems (again, AFIAK) so virtual memory wasn't really a thing. Thinking about the data structures, you would only consider location, object and message text as being candidates for demand loading as the rest gets accessed each turn. The problem with that is, at least on the BBC version, the way text is stored means that to print message 100, you have to start from message 0 and scan forwards skipping the length of each message until you hit message 100, so you'd want to page in the whole message table each time. It's the same for object and location text, so I think this is a non-starter, at least for me.
Jeremy
My approach to SWRAM usage will almost certainly be the same as my abandoned adventure skeleton from 2021 (the original Duck! Me? prototype) using the power of copy & paste. While I made some poor decisions about many things therein, I was quietly quite content with the way I distributed data across the 4 available SWRAM banks in a Master 128. Whether I reuse the compression and word-wrapping code is undecided at this stage.
The JMP -> BRA switch is handled by passing the CPU type to CA65, which is then detected in my flow control macros and handled accordingly. While quite basic, this does give me nestable REPEAT...UNTIL, WHILE...ENDWHILE, IF...ELSEIF...ELSE...ENDIF and SWITCH...CASE...ENDSWITCH macros which I find useful. Some earlier notes here.
The Quill database is never written to by a game (AFAIK). The only writeable memory consists of the flags and object locations. The Quill primarily targeted cassette based systems (again, AFIAK) so virtual memory wasn't really a thing. Thinking about the data structures, you would only consider location, object and message text as being candidates for demand loading as the rest gets accessed each turn. The problem with that is, at least on the BBC version, the way text is stored means that to print message 100, you have to start from message 0 and scan forwards skipping the length of each message until you hit message 100, so you'd want to page in the whole message table each time. It's the same for object and location text, so I think this is a non-starter, at least for me.
Jeremy
Statistics: Posted by EdwardianDuck — Wed Aug 21, 2024 6:47 pm