Master 128
==========

Sideways ROMs

F Terminal
E View
D ADFS
C Basic
B Edit
A Viewsheet
9 DFS
8 Socket (ANFS)
7 RAM
6 RAM
5 RAM
4 RAM
3 Cartridge
2 Cartridge
1 Cartridge
0 Cartridge

Memory Map

0000-2FFF main RAM
3000-7FFF screen RAM or Shadow RAM
8000-BFFF sideways ROM/RAM
(8000-8FFF 4k MOS RAM)
C000-DFFF MOS or Filing System RAM
E000-FBFF MOS
FC00-FCFF FRED
FD00-FDFF JIM
FE00-FEFF Sheila
FF00-FFFF MOS
50 Bytes of CMOS Ram in a 146818 Real time clock and Ram chip
(probably I/O mapped somewhere - appears to be on the system via slow data
bus instead of the speech processor)

NB. In mode 135 (Shadow Mode 7) the MOS uses the extra 19K of shadow ram to
    increase the speed of inter-filing system transfers (*MOVE).

Private Ram

8000-83FF  Soft key expansion buffer
8400-87FF  VDU Workspace (Flood fill only)
8800-88FF  VDU variables and ECF
8900-8FFF  Character definitions (Software fonts)

C000-DBFF  Paged rom workspace
DC00-DCFF  MOS Cli buffer
DD00-DEFF  Transient utility workspace (*MOVE)
DF00-DFFF  MOS Private workspace

Rom Select Register (ROMSEL) at &FE30

b7   b6   b5   b4   b3   b2   b1   b0
RAM  0    0    0    PM3  PM2  PM1  PM0

RAM (bit 7) : 1 - Map 4K MOS Ram into &8000-&8FFF
PM0-PM3     : Determine sideways rom/ram paged in.

Access Control Register (ACCCON) at &FE34

b7   b6   b5   b4   b3   b2   b1   b0
IRR  TST  IFJ  ITU  Y    X    E    D

IRR (bit 7) : 1 - Cause an IRQ to the CPU
TST (bit 6) : 0 at all times
IFJ (bit 5) : 1 - &FC00-FDFF directed to cartridge
              0 - &FC00-FDFF directed to 1Mhz bus
ITU (bit 4) : 1 - CPU can access internal co-pro
              0 - CPU can access external co-pro
Y   (bit 3) : 1 - &C000-DFFF 8K Private ram
              0 - &C000-DFFF VDU driver code (MOS)
X   (bit 2) : 1 - 20K Shadow ram at &3000-7FFF
              0 - Main ram at &3000-7FFF
E   (bit 1) : 1 - Causes either the main or shadow RAM to be accessed in
                  locations 3000-7FFF depending on the current operation.
                  RAM in the main map is accessed in all cases except when
                  the address of the current operation code lies in the range
                  C000-DFFF, ie within the MOS VDU code.
              0 - All accesses to locations 3000-7FFF are directed to the
                  RAM in the main map.
D   (bit 0) : 1 - Causes the shadow ram to be displayed by the CRT
              0 - Causes the main memory to be displayed by the CRT

CMOS Ram Allocations

0      Econet station number
1-2    Econet file server ID
3-4    Econet printer server
5      Default filing system/language
6-7    Rom frugal bits (*INSERT/*UNPLUG)
8      EDIT Startup options
9      Reserved for telecommunication applications (modem?)
10     VDU Mode and *TV settings
11     ADFS Startup options, Keyboard settings, floppy drive parameters
12     Keyboard auto-repeat delay
13     Keyboard auto-repeat rate
14     Printer ignore character
15     Default printer type, serial baud rate, ignore status, tube select
16     Default serial data format, auto boot option, internal/external tube,
       Bell amplitude
17-19  ANFS
20-    Spare

Keyboard Table - Extra Master Keypad Only

    C10   C11   C12

R0  4     5     6

R1  0     1     3

R2  #     *     ,

R3  /     DEL   .

R4  +     -     RET

R5  8     9

R6  6     7

R7

NB. No keyboard links (it's in CMOS!)

During idle (free run) mode depression of any keys other than SHIFT/CTRL
will cause an IRQ to be generated via the system 6522.  The keyboard column
lines C0-C12 are continually scanned by incrementing a counter, decoding its
outputs and pulling low a column line.  Any key depressed will cause an
interrupt to be generated.  A keyboard enable signal (KBEN) is generated to
stop free running mode at which point the counter contents are loaded by CPU
operation to determine on which column the key was pressed.  The rows are
then individually selected to determine which key was pressed.

NB. This appears to contrast to the BBC B way of doing things.
