Subversion Repositories pentevo

Rev

Rev 292 | Rev 364 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. #ifndef __MAIN_H__
  2. #define __MAIN_H__
  3.  
  4. /**
  5.  * @mainpage  General program for ATMEGA128 ZX Evolution.
  6.  *
  7.  * @section history Revision history
  8.  *
  9.  * @subsection current Current version.
  10.  *
  11.  * - Keyboard mapping without using RAM.
  12.  * - Add setting resolution for PS/2 mouse [1..4]
  13.  *   (left and right mouse buttons and pad'*' - default [1], pad'+' - increment, pad'-' - decrement).
  14.  * - Add PS/2 mouse resolution saving to RTC register.
  15.  *
  16.  * @subsection ver_2010_11_29 Version 29.11.2010
  17.  *
  18.  * - "NumLock" switch mode to beeper/pwm or tapeout ("NumLock" led light on tapeout mode).
  19.  * - Create full translation map (0x00-0x7f for extended scan codes).
  20.  *
  21.  * @subsection ver_2010_10_17 Version 17.10.2010
  22.  *
  23.  * - "F9","F10","F11" on PS/2 keyboard not used for reset function.
  24.  * - "F12" on PS/2 keyboard soft/hard reset. Short press (<5sec) - soft reset, long press (5sec) - hard reset.
  25.  * - "Ctrl-Alt-Del" on PS/2 keyboard reset ZX (hard reset). If all keys is mapped to ZX keyboard - function not work.
  26.  * - Create translation map (PS/2 to ZX keyboard) in eeprom (default in progmem).
  27.  * - Fix PS/2 mouse and keyboard send mode (without 'delay' function).
  28.  * - Support load from tape input.
  29.  *
  30.  * @subsection ver_2010_03_30 Version 30.03.2010
  31.  *
  32.  * - Fix fpga load and ZX part init (optimize).
  33.  *
  34.  * @subsection ver_2010_03_28 Version 28.03.2010
  35.  *
  36.  * - Fix PS/2 mouse error handler (analize error and reinit mouse if need it).
  37.  * - Add support for get version info (via Gluk cmos extra registers 0xF0..0xFF).
  38.  * - Optimize sources, some correction (log, fpga load).
  39.  * - Fix PS/2 timeout error handler.
  40.  *
  41.  * @subsection ver_2010_03_24 Version 24.03.2010
  42.  *
  43.  * - Fix Power Led behavior (it off while atx power off).
  44.  * - "Print Screen" PS2 keyboard key set NMI on ZX.
  45.  * - Soft reset (Z80 only) to service (0) page if pressed "softreset" key <5 seconds.
  46.  *
  47.  * @subsection ver_2010_03_10 Version 10.03.2010
  48.  *
  49.  * - Add PS2 keyboard led controlling: "Scroll Lock" led equal VGA mode.
  50.  * - Fix mapping gluk (DS12887) nvram to PCF8583.
  51.  * - Fix Update Flag in register C (emulation Gluk clock).
  52.  * - Add modes register and save/restore it to RTC NVRAM.
  53.  * - Add support for zx (mechanical) keyboard.
  54.  * - Add support for Kempston joystick.
  55.  *
  56.  * @subsection ver_2010_02_04 Version 04.02.2010 - base version (1.00 in SVN).
  57.  *
  58.  */
  59.  
  60. /**
  61.  * @file
  62.  * @brief Main module.
  63.  * @author http://www.nedopc.com
  64.  */
  65.  
  66. /** Common flag register. */
  67. extern volatile UBYTE flags_register;
  68. /** Direction for ps2 mouse data (0 - Receive/1 - Send). */
  69. #define FLAG_PS2MOUSE_DIRECTION 0x01
  70. /** Type of ps2 mouse (0 - classical [3bytes in packet]/1 - msoft [4bytes in packet]). */
  71. #define FLAG_PS2MOUSE_TYPE      0x02
  72. /** Ps2 mouse data for zx (0 - not ready/1 - ready). */
  73. #define FLAG_PS2MOUSE_ZX_READY  0x04
  74. /** Spi interrupt detected (0 - not received/1 - received). */
  75. #define FLAG_SPI_INT            0x08
  76. /** Direction for ps2 keyboard data (0 - Receive/1 - Send). */
  77. #define FLAG_PS2KEYBOARD_DIRECTION  0x10
  78. /** Version type (0 - BaseConf /1 - BootLoader). */
  79. #define FLAG_VERSION_TYPE       0x20
  80. /** Last tape in bit value. */
  81. #define FLAG_LAST_TAPE_VALUE    0x40
  82. /** Hard reset flag (1 - enable hard reset). */
  83. #define FLAG_HARD_RESET         0x80
  84.  
  85. /** Common flag register. */
  86. extern volatile UBYTE flags_ex_register;
  87. /** Ps2 mouse command (0 - not/1 - process). */
  88. #define FLAG_EX_PS2MOUSE_CMD    0x01
  89. /** Ps2 keyboard map (0 - default/1 - user). */
  90. #define FLAG_EX_PS2KEYBOARD_MAP 0x02
  91.  
  92. /** Common modes register. */
  93. extern volatile UBYTE modes_register;
  94. /** VGA mode (0 - not set/1 - set). */
  95. #define MODE_VGA 0x01
  96. /** Tapeout mode (0 - beeper or pwm mode/1 - tapeout). */
  97. #define MODE_TAPEOUT 0x02
  98.  
  99. /** Data buffer. */
  100. extern UBYTE dbuf[];
  101.  
  102. /** FPGA data index. */
  103. extern volatile ULONG curFpga;
  104.  
  105. /**
  106.  * Writes specified length of buffer to SPI.
  107.  * @param size [in] - size of buffer.
  108.  */
  109. void put_buffer(UWORD size);
  110.  
  111. #endif //__MAIN_H__
  112.