Subversion Repositories pentevo

Rev

Rev 602 | 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.  
  88. #ifdef pgm_get_far_address
  89. #define GET_FAR_ADDRESS pgm_get_far_address
  90. #else
  91. #define GET_FAR_ADDRESS(var)                                            \
  92.  ({ uint_farptr_t tmp; __asm__ __volatile__(                            \
  93.  "ldi %A0,lo8(%1)\n\tldi %B0,hi8(%1)\n\tldi %C0,hh8(%1)\n\tclr %D0\n\t" \
  94.  :"=d"(tmp):"p"(&(var)) ); tmp;                                         \
  95.  })
  96. #endif
  97.  
  98. //-----------------------------------------------------------------------------
  99. extern u8 mode1, lang, int6vect;
  100. extern u8 flags1;
  101. extern volatile u8 newframe;
  102. extern u8 megabuffer[2048];
  103. //-----------------------------------------------------------------------------
  104. extern u8 ee_dummy[2] EEMEM;
  105. extern u8 ee_mode1[1] EEMEM;
  106. extern u8 ee_lang[1] EEMEM;
  107. //-----------------------------------------------------------------------------
  108. //выбор текущего регистра FPGA
  109. void fpga_sel_reg(u8 reg);
  110. //-----------------------------------------------------------------------------
  111. //обмен с регистрами в FPGA
  112. u8 fpga_reg(u8 reg, u8 data);
  113. //-----------------------------------------------------------------------------
  114. //обмен без установки регистра
  115. u8 fpga_same_reg(u8 data);
  116. //-----------------------------------------------------------------------------
  117. // п.сл.число
  118. u8 random8(void);
  119. //-----------------------------------------------------------------------------
  120. // 1) запрет прерываний
  121. // 2) инициализация SPI
  122. // 3) распаковка данных и загрузка FPGA
  123. void load_fpga(uint_farptr_t confdata);
  124. //-----------------------------------------------------------------------------
  125. void timers_init(void);
  126. //-----------------------------------------------------------------------------
  127. // in: timeout - таймайт, мс (1..16383)
  128. void set_timeout_ms(u16 *storehere, u16 timeout);
  129. //-----------------------------------------------------------------------------
  130. u8 check_timeout_ms(u16 *storedhere);
  131. //-----------------------------------------------------------------------------
  132. void menu_help(void);
  133. //-----------------------------------------------------------------------------
  134. void toggle_vga(void);
  135. //-----------------------------------------------------------------------------
  136. void save_lang(void);
  137. //-----------------------------------------------------------------------------
  138.  
  139. #endif // #ifdef __ASSEMBLER__
  140.  
  141. #endif // #ifndef _GLOBAL_H
  142.