A SAM Multiface is what I would like most... If you have the time, please elaborate!
Frans Andrew Gale wrote: > OK, since there seems to be some interest in this, I thought > I would mail my musings on the subject. > > The SAM's memory map, as you know, consists of 4 16K chunks > called A (0-3FFF) B (4000-7FFF) C (8000-BFFF) and D (C000-FFFF). > The Speccy 128 map also has 4 16K chunks, A being one of two > 16K roms - this would be replaced by the 32K RAM which would > be loaded with an image of the ROM before switching to 128 > mode. Incidentally, the z80 in the SAM would be disabled, > and a new z80 attached to the expansion port is being used > instead (for both SAM and 128 mode). > > Now, page D of the 128 map can point to one of 8 16K chunks > of ram, whereas pages B and C always point to the same > two 16K pages. By juggling the a14 and a15 lines from the > z80 before they reach the SAM's ASIC, we can map the > 128's memory map onto the ASIC's memory map like this: > > 128 Sam's ASIC > > A - (goes two one of two 16K pages in the 32K ram) > B B > C A > D D > > In other words, the non-pageable 32K chunk in the 128 map > maps onto a 32K page specified by the SAM's LMPR register, > whereas page D (which can bank in 16K pages) maps to a > 16K page specified by the SAM's HMPR register. > > The trick then is to catch any writes to the 128's banking > register and convert this to a write to the SAM's HMPR > register, with a certain amount of twiddling to the value > that is being written. The LMPR register would be set > prior to switching to 128 mode. Since the z80 is hanging > off the back of the SA, it is quite easy to catch writes > to an output port and divert them to a different port. > > There's one more snag: the 128 can take its screen from > one of two of its 16K pages, and this is determined > by setting or unsetting a bit in the same register > as is used to control the 128's memory paging for bank D. > Any modification to this bit has to be reflected in the > SAM's VMPR register. So, a writed to the spectrum 128's > memory/video port (port FD, I think) has to be converted > to a write to two SAM ports - HMPR and VMPR. This can be > achieved with a simple state machine. > > There are some other minor complications - the sam's FD > port will need to be re-mapped to elsewhere in the spectrum's > i/o map, other ports may need re-mapping, a soundchip will > be necessary to give the 128 sound, and 128 peripherals > may not like working at a 6MHz clock. A bonus is that the 32K > ram could be used as a soft-rom when in SAM mode. Also, speccy > peripherals may or may not be accessible in SAM mode - simple > things like joystick interfaces, speech synthesisers and so > on should be OK, but a multiface won't be. (That said, > I think I know how to make a SAM multiface if anyone is > interested). > > So there you go, something to think about. I think it's > very do-able, but possibly not worth the effort (except > for the challenge of the design). > > Andy