1. Introduction
   SpectrEm is an attempt to emulate a Spectrum 48k computer.


2. Control
   Most functions of the emulator can be accessed via the PC keyboard. The
   GUI (see section 3) relies on the PC mouse, however.

Keyboard breakdown:

   F1 - Reset the Spectrum (hard reset).
        This is like turning the power off and then on again).

   F2 - Reset the Spectrum (soft reset).
        Generates a non-maskable interrupt, causing the Spectrum to
        reset. This does not clear all the registers and memory like a hard
        reset does).

   Esc - Halt emulation.
        Stops the emulator in its tracks and brings up the GUI (see
        section 3).

   Alphanumeric keys - Equivalent Spectrum keypress.
        Whilst emulation is running pressing these keys is the same as
        pressing the equivalent key on a real Spectrum.

   Shift keys - Equivalent to Spectrum 'Caps Shift' key.

   Alt keys - Equivalent to Spectrum 'Symbol Shift' key.

   Extended keys - Equivalent to several Spectrum keypresses.
        Keys such as '+', '-', comma, and '.' needed two keypresses on the
        real spectrum. To save time and headaches trying to remember which
        keys contained which symbols you can use the PC keyboard keys as a
        shortcut. The backspace key operates like 'Caps Shift' + '0' (delete)
        on a real Spectrum.

   Arrow keys - Equivalent to joystick movements.
        The up, down, left, and right keys are used in place of a real
        joystick.

   Tab key - Equivalent to joystick fire button.
        Tab is used in place of the joystick fire button.


3. Gui

   SpectrEm contains a Graphical User Interface (GUI) to allow more intuitive
   modification of certain settings.   

GUI buttons:

   Run! - Start emulation
      Use this to start SpectrEm running. This is equivalent to pressing the
      ESC key.
      NOTE: If you are viewing the Debug or Mem screens (see below) the
            emulator will only execute a single Z80 instruction before
            halting and bringing up the GUI again. To start running properly
            again switch your view to the About screen by clicking on the
            about button.

   About - Information about SpectrEm
      This displays information about SpectrEm. You should be viewing this
      screen when you click 'Run!' if you want the emulator to run without
      jumping back to the gui every Z80 instruction.
      The Emulator starts on this screen.

   Exit - Quit SpectrEm
      A box will pop up asking if you are sure. Click 'Indeed' to exit or
      'No Way!' to continue with SpectrEm.

   Load - Load a snapshot (SNA) file
      A file selector will appear. Use the up and down arrow keys to scroll
      through all the available files and directorys. Double clicking on a
      file will load it and display a box telling you if it was sucessful.
      Click on the 'Righto' button to return to the GUI. Double clicking on
      a directory will show you the contents of that directory and allow you
      to pick files from there. All directories are preceded by a '*'. The
      '*..' directory will take you to the parent directory.
      Only files with the extension SNA will appear in the file selector
      window.

   Save - Save a snapshot (SNA) file - DOESN'T WORK YET
      Saving is not yet possible and will simply display the message:
      "Saving not implemented!"

Debugger buttons:
   These buttons are for those who want to watch the emulator at work. When
   you are viewing the debugger output the emulator will automatically single
   step through the code.

   Debug - displays debug information
      Disassembly of the current opcode and those immediately following it is
      displayed here. Register information and various miscellaneous
      information is also displayed here. All values are in hexadecimal with
      the exception of the opcode and tstate counters.

   Mem - displays memory
      Shows the spectrum memory from the current program counter or the
      current breakpoint if one is set. The first column is the address being
      viewed whilst the second is the byte at that address. All values are
      in hexadecimal.

   Runto - sets a breakpoint
      This brings up a simple hexadecimal input box. Only the keys 1-0 and
      'a'-'f' will produce any input. The backspace key may also be used to
      delete the last inputed character, placing a 0 in the high nibble of
      the high byte. The return key will accept the value. The Esc key or
      'Forget it' button will reject cancel the 'Runto' operation.
      Runto operates differently depending on what is currently being viewed
      in the main box. If 'Mem' is being viewed it will simply jump to the
      corresponding address in memory and display the data stored there.
      If 'Debug' is selected a breakpoint will be set at the given address.
      Starting the program execution with Esc or 'Run!' will run the emulator
      as normal until that address is encountered or the Esc key is hit again.
      Only one breakpoint can be stored at any time. If you wish to cancel the
      breakpoint click on any other display related button (ie. 'Mem' or
      'About') and then click on 'Debug' again. You should be aware that
      setting breakpoints in the 'Debug' screen alters the address at which
      the 'Mem' screen starts to display the Spectrum's memory.


4. Disclaimer

   SpectrEm is not fully tested and you use it at your own risk. I am not
   responsible for any damage it may cause to your computer or any components
   of your computer.
