THE +2A/+3 SPECTRUMS The +2A/+3 share the same timing information, sound chip, etc as the 128K/+2 machines; see above for details. Bit 6 of port #FE of the +2A/+3 does not show the same dependence on what was written to port #FE as it does on the other machines, and always returns 0 if there is no signal. Finally, reading from a non-existing port (eg #FF) will always return 255, and not give any screen/attribute bytes as it does on the 48K/128K/+2. Memory The basic principle of paging on the +2A and +3 is the same as for the 128K/+2. However, the +2A and +3 have four ROMs rather than two, and certain extra memory configurations. Port 7FFDh behaves in the same way as before, except that bit 4 is now the low bit of the ROM selection. The extra features are controlled by port 1FFDh. This port is also write-only, and its last value should be saved at 5B67h (23399). Port 1FFDh responds thus: Bit 0: Paging mode. 0=normal, 1=special Bit 1: In normal mode, ignored. Bit 2: In normal mode, high bit of ROM selection. The four ROMs are: ROM 0: 128k editor, menu system and self-test program ROM 1: 128k syntax checker ROM 2: +3DOS ROM 3: 48 BASIC Bit 3: Disk motor; 1=on, 0=off Bit 4: Printer port strobe. When special mode is selected, the memory map changes to one of four configurations specified in bits 1 and 2 of port 1FFDh: Bit 2 =0 Bit 2 =0 Bit 2 =1 Bit 2 =1 Bit 1 =0 Bit 1 =1 Bit 1 =0 Bit 1 =1 FFFFh+--------+ +--------+ +--------+ +--------+ | Bank 3 | | Bank 7 | | Bank 3 | | Bank 3 | | | | | | | | | | | | | | | | | | | | screen | | | | | C000h+--------+ +--------+ +--------+ +--------+ | Bank 2 | | Bank 6 | | Bank 6 | | Bank 6 | | | | | | | | | | | | | | | | | | | | | | | | | 8000h+--------+ +--------+ +--------+ +--------+ | Bank 1 | | Bank 5 | | Bank 5 | | Bank 7 | | | | | | | | | | | | | | | | | | | | screen | | screen | | screen | 4000h+--------+ +--------+ +--------+ +--------+ | Bank 0 | | Bank 4 | | Bank 4 | | Bank 4 | | | | | | | | | | | | | | | | | | | | | | | | | 0000h+--------+ +--------+ +--------+ +--------+ RAM banks 1,3,4 and 6 are used for the disc cache and RAMdisc, while Bank 7 contains editor scratchpads and +3DOS workspace. The contended memory timings differ on the +2A/+3 from the earlier machines; firstly, the timing differences mean that the top-left pixel of the screen is displayed 14364 T-states after the 50 Hz interrupt occurs, as opposed to 14336. The T-states (relative to the interrupt) at which delays occur are given in the following table: Cycle # Delay ------- ----- 14361 1 14362 No delay 14363 7 14364 6 14365 5 14366 4 14367 3 14368 2 14369 1 14370 No delay 14371 7 14372 6 and so on, until cycle 14490, when the display of the first scanline on the screen has been completed, and no more delays are inserted until 14589 (=14361+228) when the cycle repeats. The other difference occurs for instructions which have multiple 'pc+1' or 'hl' entries in the breakdown for the other machines: on the +2A/+3, these entries are combined into just one. This means that, for example, JR becomes pc:4,pc+1:8. Like the base 128K machine, RAM banks 4-7 are contended. However, port #FE is not; whether ports #7FFD and #1FFD are contended is currently unknown. Disk Drive Another useful bit of information is that it is possible to add an Amiga 3.5" drive to a Spectrum +3 by Simply wiring the pins by name and providing it with some external power source (which can be an Amiga PSU with increased amperage, used to power the entire +3 and external drive in one go). There is a public domain formatter around to format it to 720k - this is quite useful as 3" disks are now a rarity and were never that reliable. The added advantage is that PC users equipped with a copy of Sybex's shareware package 22Disk can read these files into a PC too. [Image]