- #ifndef _GLOBAL_H 
- #define _GLOBAL_H 1 
-   
- #include <avr/io.h> 
-   
- #define ENABLE_DIRECTUART       0b00000001 
- #define ENABLE_UART             0b00000010 
- #define ENABLE_SCR              0b00000100 
- #define ENABLE_SD_LOG           0b00001000 
- #define BIT_ENABLE_SD_LOG       3 
- #define RTSCTS_FLOWCTRL         0b00010000 
- //----------------------------------------------------------------------------- 
- //регистры fpga 
- #define TEMP_REG        0xA0 
- #define SD_CS0          0xA1 
- #define SD_CS1          0xA2 
- #define FLASH_LOADDR    0xA3 
- #define FLASH_MIDADDR   0xA4 
- #define FLASH_HIADDR    0xA5 
- #define FLASH_DATA      0xA6 
- #define FLASH_CTRL      0xA7 
- #define SCR_LOADDR      0xA8    // текущая позиция печати 
- #define SCR_HIADDR      0xA9    // 
- #define SCR_ATTR        0xAA    // запись атрибута в ATTR 
- #define SCR_FILL        0xAB    // прединкремент адреса и запись атрибута в ATTR и в память 
-                                 // (если только дергать spics_n, будет писаться предыдущий ATTR) 
- #define SCR_CHAR        0xAC    // прединкремент адреса и запись символа в память и ATTR в память 
-                                 // (если только дергать spics_n, будет писаться предыдущий символ) 
- #define SCR_MOUSE_TEMP  TEMP_REG 
- #define SCR_MOUSE_X     0xAD 
- #define SCR_MOUSE_Y     0xAE 
- #define SCR_MODE        0xAF    // .7 - 0=VGAmode, 1=TVmode; .2.1.0 - режимы; 
-   
- #define MTST_CONTROL    0x50 
- #define MTST_PASS_CNT0  0x51 
- #define MTST_PASS_CNT1  TEMP_REG 
- #define MTST_FAIL_CNT0  0x52 
- #define MTST_FAIL_CNT1  TEMP_REG 
-   
- #define COVOX           0x53 
-   
- #define INT_CONTROL     0x54 
- //----------------------------------------------------------------------------- 
-   
-   
- #ifdef __ASSEMBLER__ 
- /* ------------------------------------------------------------------------- */ 
- #define xl r26 
- #define xh r27 
- #define yl r28 
- #define yh r29 
- #define zl r30 
- #define zh r31 
- /* seed (32bit) */ 
- .extern _rnd 
- /* буфер в RAM (размером 2048 байт) */ 
- .extern megabuffer 
- /* (16bit) */ 
- .extern mscounter 
-   
- .extern flags1 
- .extern int6vect 
- .extern newframe 
- /* ------------------------------------------------------------------------- */ 
- #else // #ifdef __ASSEMBLER__ 
-   
- #include "_types.h" 
- #include "_messages.h" 
- #include "_output.h" 
-   
- //----------------------------------------------------------------------------- 
-   
- #define GO_READKEY  0 
- #define GO_REPEAT   1 
- #define GO_REDRAW   2 
- #define GO_RESTART  3 
- #define GO_CONTINUE 4 
- #define GO_ERROR    5 
- #define GO_EXIT     6 
-   
- //----------------------------------------------------------------------------- 
-   
- #define SetSPICS()  PORTB|=(1<<PB0) 
- #define ClrSPICS()  PORTB&=~(1<<PB0) 
-   
- //----------------------------------------------------------------------------- 
-   
- #ifdef pgm_get_far_address 
- #define GET_FAR_ADDRESS pgm_get_far_address 
- #else 
- #define GET_FAR_ADDRESS(var)                                            \ 
-  ({ uint_farptr_t tmp; __asm__ __volatile__(                            \ 
-  "ldi %A0,lo8(%1)\n\tldi %B0,hi8(%1)\n\tldi %C0,hh8(%1)\n\tclr %D0\n\t" \ 
-  :"=d"(tmp):"p"(&(var)) ); tmp;                                         \ 
-  }) 
- #endif 
-   
- //----------------------------------------------------------------------------- 
- extern u8 mode1, lang, int6vect; 
- extern u8 flags1; 
- extern volatile u8 newframe; 
- extern u8 megabuffer[2048]; 
- //----------------------------------------------------------------------------- 
- extern u8 ee_dummy[2] EEMEM; 
- extern u8 ee_mode1[1] EEMEM; 
- extern u8 ee_lang[1] EEMEM; 
- //----------------------------------------------------------------------------- 
- //выбор текущего регистра FPGA 
- void fpga_sel_reg(u8 reg); 
- //----------------------------------------------------------------------------- 
- //обмен с регистрами в FPGA 
- u8 fpga_reg(u8 reg, u8 data); 
- //----------------------------------------------------------------------------- 
- //обмен без установки регистра 
- u8 fpga_same_reg(u8 data); 
- //----------------------------------------------------------------------------- 
- // п.сл.число 
- u8 random8(void); 
- //----------------------------------------------------------------------------- 
- // 1) запрет прерываний 
- // 2) инициализация SPI 
- // 3) распаковка данных и загрузка FPGA 
- void load_fpga(uint_farptr_t confdata); 
- //----------------------------------------------------------------------------- 
- void timers_init(void); 
- //----------------------------------------------------------------------------- 
- // in: timeout - таймайт, мс (1..16383) 
- void set_timeout_ms(u16 *storehere, u16 timeout); 
- //----------------------------------------------------------------------------- 
- u8 check_timeout_ms(u16 *storedhere); 
- //----------------------------------------------------------------------------- 
- void menu_help(void); 
- //----------------------------------------------------------------------------- 
- void toggle_vga(void); 
- //----------------------------------------------------------------------------- 
- void save_lang(void); 
- //----------------------------------------------------------------------------- 
-   
- #endif // #ifdef __ASSEMBLER__ 
-   
- #endif // #ifndef _GLOBAL_H 
-