Subversion Repositories pentevo

Rev

Rev 601 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed | ?url?

  1. #ifndef _GLOBAL_H
  2. #define _GLOBAL_H 1
  3.  
  4. #include <avr/io.h>
  5.  
  6. #define ENABLE_DIRECTUART       0b00000001
  7. #define ENABLE_UART             0b00000010
  8. #define ENABLE_SCR              0b00000100
  9. #define ENABLE_SD_LOG           0b00001000
  10. #define BIT_ENABLE_SD_LOG       3
  11. #define RTSCTS_FLOWCTRL         0b00010000
  12. //-----------------------------------------------------------------------------
  13. //регистры fpga
  14. #define TEMP_REG        0xA0
  15. #define SD_CS0          0xA1
  16. #define SD_CS1          0xA2
  17. #define FLASH_LOADDR    0xA3
  18. #define FLASH_MIDADDR   0xA4
  19. #define FLASH_HIADDR    0xA5
  20. #define FLASH_DATA      0xA6
  21. #define FLASH_CTRL      0xA7
  22. #define SCR_LOADDR      0xA8    // текущая позиция печати
  23. #define SCR_HIADDR      0xA9    //
  24. #define SCR_ATTR        0xAA    // запись атрибута в ATTR
  25. #define SCR_FILL        0xAB    // прединкремент адреса и запись атрибута в ATTR и в память
  26.                                 // (если только дергать spics_n, будет писаться предыдущий ATTR)
  27. #define SCR_CHAR        0xAC    // прединкремент адреса и запись символа в память и ATTR в память
  28.                                 // (если только дергать spics_n, будет писаться предыдущий символ)
  29. #define SCR_MOUSE_TEMP  TEMP_REG
  30. #define SCR_MOUSE_X     0xAD
  31. #define SCR_MOUSE_Y     0xAE
  32. #define SCR_MODE        0xAF    // .7 - 0=VGAmode, 1=TVmode; .2.1.0 - режимы;
  33.  
  34. #define MTST_CONTROL    0x50
  35. #define MTST_PASS_CNT0  0x51
  36. #define MTST_PASS_CNT1  TEMP_REG
  37. #define MTST_FAIL_CNT0  0x52
  38. #define MTST_FAIL_CNT1  TEMP_REG
  39.  
  40. #define COVOX           0x53
  41.  
  42. #define INT_CONTROL     0x54
  43. //-----------------------------------------------------------------------------
  44.  
  45.  
  46. #ifdef __ASSEMBLER__
  47. /* ------------------------------------------------------------------------- */
  48. #define xl r26
  49. #define xh r27
  50. #define yl r28
  51. #define yh r29
  52. #define zl r30
  53. #define zh r31
  54. /* seed (32bit) */
  55. .extern _rnd
  56. /* буфер в RAM (размером 2048 байт) */
  57. .extern megabuffer
  58. /* (16bit) */
  59. .extern mscounter
  60.  
  61. .extern flags1
  62. .extern int6vect
  63. .extern newframe
  64. /* ------------------------------------------------------------------------- */
  65. #else // #ifdef __ASSEMBLER__
  66.  
  67. #include "_types.h"
  68. #include "_messages.h"
  69. #include "_output.h"
  70.  
  71. //-----------------------------------------------------------------------------
  72.  
  73. #define GO_READKEY  0
  74. #define GO_REPEAT   1
  75. #define GO_REDRAW   2
  76. #define GO_RESTART  3
  77. #define GO_CONTINUE 4
  78. #define GO_ERROR    5
  79. #define GO_EXIT     6
  80.  
  81. //-----------------------------------------------------------------------------
  82.  
  83. #define SetSPICS()  PORTB|=(1<<PB0)
  84. #define ClrSPICS()  PORTB&=~(1<<PB0)
  85.  
  86. //-----------------------------------------------------------------------------
  87. #define GET_FAR_ADDRESS(var)                                            \
  88.  ({ uint_farptr_t tmp; __asm__ __volatile__(                            \
  89.  "ldi %A0,lo8(%1)\n\tldi %B0,hi8(%1)\n\tldi %C0,hh8(%1)\n\tclr %D0\n\t" \
  90.  :"=d"(tmp):"p"(&(var)) ); tmp;                                         \
  91.  })
  92. //-----------------------------------------------------------------------------
  93. extern u8 mode1, lang, int6vect;
  94. extern u8 flags1;
  95. extern volatile u8 newframe;
  96. extern u8 megabuffer[2048];
  97. //-----------------------------------------------------------------------------
  98. extern u8 ee_dummy[2] EEMEM;
  99. extern u8 ee_mode1[1] EEMEM;
  100. extern u8 ee_lang[1] EEMEM;
  101. //-----------------------------------------------------------------------------
  102. //выбор текущего регистра FPGA
  103. void fpga_sel_reg(u8 reg);
  104. //-----------------------------------------------------------------------------
  105. //обмен с регистрами в FPGA
  106. u8 fpga_reg(u8 reg, u8 data);
  107. //-----------------------------------------------------------------------------
  108. //обмен без установки регистра
  109. u8 fpga_same_reg(u8 data);
  110. //-----------------------------------------------------------------------------
  111. // п.сл.число
  112. u8 random8(void);
  113. //-----------------------------------------------------------------------------
  114. // 1) запрет прерываний
  115. // 2) инициализация SPI
  116. // 3) распаковка данных и загрузка FPGA
  117. void load_fpga(uint_farptr_t confdata);
  118. //-----------------------------------------------------------------------------
  119. void timers_init(void);
  120. //-----------------------------------------------------------------------------
  121. // in: timeout - таймайт, мс (1..16383)
  122. void set_timeout_ms(u16 *storehere, u16 timeout);
  123. //-----------------------------------------------------------------------------
  124. u8 check_timeout_ms(u16 *storedhere);
  125. //-----------------------------------------------------------------------------
  126. void menu_help(void);
  127. //-----------------------------------------------------------------------------
  128. void toggle_vga(void);
  129. //-----------------------------------------------------------------------------
  130. void save_lang(void);
  131. //-----------------------------------------------------------------------------
  132.  
  133. #endif // #ifdef __ASSEMBLER__
  134.  
  135. #endif // #ifndef _GLOBAL_H
  136.