📄 xgate.h
字号:
#ifndef __XGATE_H_
#define __XGATE_H_
#pragma DATA_SEG XGATE_VAR_INIT
extern volatile int PVISU ;//= (int)__SEG_START_XGATE_DATAVISU ;// : (offset 0) dynamic RAM visu pointer
extern volatile int CBLOC ;//: (offset 2) block counter (00 - 01 - 10 - 11)
extern volatile int CLINE ;//: (offset 4) line counter in a block of 60 lines
extern volatile int CPSV ;//: (offset 6) line counter for vertical synchro duration
extern volatile int PVISU0 ;//: (offset 8) start address of RAM visu buffer
extern volatile int REV;
extern volatile int VSYN_CNT;//CPSV2;
extern volatile int CLS_CNT;
extern volatile int CURRENT_BLOCK_MAX_LINE;
extern volatile int LAST_BLOCK_MAX_LINE;
#pragma DATA_SEG DEFAULT
// TFT Size
#define NB_PIXELS_PER_LINES 240
#define NB_LINES 320
#define NB_PIXELS_PER_WORD 1 //2
#define IMAGE_SIZE 76800 // NB_PIXELS_PER_LINES*NB_LINES
#define NB_WORDS_PER_LINES (NB_PIXELS_PER_LINES / NB_PIXELS_PER_WORD)
//#define NB_BLOCK_PER_SCREEN 10 //
//#define NB_LINES_PER_BLOCK 2 // (NB_LINES / NB_BLOCK_PER_SCREEN)
// R G B
#define BLACK 0x00 // 000 00 000
#define RED 0xE0 // 111 00 000
#define GREEN 0x18 // 000 11 000
#define BLUE 0x07 // 000 00 111
#define YELLOW 0xDC // 110 11 100
#define WHITE 0xFF // 111 11 111
extern const unsigned char Anim_ref[3200];
#pragma push
#pragma CONST_SEG __GPAGE_SEG MyBankedConst
extern const unsigned char Screen_Array_IN_ROM[76800];
#pragma pop
#pragma push
#pragma CONST_SEG __GPAGE_SEG MyAnimConst_EC
extern const unsigned char S12Animation_EC[0x3FFF];
#pragma pop
////////////////////////////////////////////////////////
#pragma push
#pragma CONST_SEG __GPAGE_SEG MyAnimConst_ED
extern const unsigned char S12Animation_ED[0x3FFF];
#pragma pop
#pragma push
#pragma CONST_SEG __GPAGE_SEG MyAnimConst_EE
extern const unsigned char S12Animation_EE[0x3FFF];
#pragma pop
#pragma push
#pragma CONST_SEG __GPAGE_SEG MyAnimConst_EF
extern const unsigned char S12Animation_EF[0x3FFF];
#pragma pop
#pragma push
#pragma CONST_SEG __GPAGE_SEG MyAnimConst_F0
extern const unsigned char S12Animation_F0[0x3FFF];
#pragma pop
#pragma push
#pragma CONST_SEG __GPAGE_SEG MyAnimConst_F1
extern const unsigned char S12Animation_F1[0x3FFF];
#pragma pop
#pragma push
#pragma DATA_SEG __GPAGE_SEG XGATE_DATA_SCREEN
// ROM to RAM Memory Transfer partitionning
//extern unsigned char Screen_Array_in_RAM[2*NB_LINES_PER_BLOCK*NB_WORDS_PER_LINES]; //2 Blocks
extern unsigned char Screen_Array_in_RAM[2*4096]; //SMALL 12288 =3*4096 Blocks
#define MAX_CARACT 19
struct Character{
unsigned char Status ;
unsigned int *Letter_Offset ;
unsigned char Color ;
unsigned char OriginPosX ;
unsigned int OriginPosY ;
} ;
extern struct Character Message[MAX_CARACT];
#define NUMBER_OF_BLOCK 19 //IMAGE_SIZE/PIXEL_PER_BLOCK
#define MAX_STRUCT_SIZE NUMBER_OF_BLOCK+1
typedef struct {
unsigned int source_addr; // source address
unsigned char dest_rpage; // ram_page
unsigned int length1;
unsigned char source_ppage1;
unsigned char source_ppage2;
unsigned int length2;
}Rom_Bank ;
extern Rom_Bank Bank[MAX_STRUCT_SIZE];
enum BankOffset {
source_addr_offset = offsetof(Rom_Bank, source_addr) ,
dest_rpage_offset = offsetof(Rom_Bank, dest_rpage) ,
length1_offset = offsetof(Rom_Bank, length1) ,
source_ppage1_offset = offsetof(Rom_Bank, source_ppage1),
source_ppage2_offset = offsetof(Rom_Bank, source_ppage2),
length2_offset = offsetof(Rom_Bank, length2)
};
typedef struct {
unsigned int source_addr; // source address
unsigned char dest_rpage; // ram_page
unsigned int length1;
unsigned int current_size;
unsigned char source_ppage1;
unsigned int dest_Offset;
// unsigned char source_ppage2;
// unsigned int length2;
}Anim_Bank ;
extern Anim_Bank BankAnim[40];
enum BankAnimOffset {
source_addr_offset2 = offsetof(Anim_Bank, source_addr) ,
dest_rpage_offset2 = offsetof(Anim_Bank, dest_rpage) ,
length1_offset2 = offsetof(Anim_Bank, length1) ,
current_size_offset2 = offsetof(Anim_Bank, current_size) ,
source_ppage1_offset2 = offsetof(Anim_Bank, source_ppage1),
dest_Offset2_offset2 = offsetof(Anim_Bank, dest_Offset),
// source_ppage2_offset2 = offsetof(Anim_Bank, source_ppage2),
// length2_offset2 = offsetof(Anim_Bank, length2)
};
extern unsigned char Image_Number ;
#pragma pop
void InitChar(void);
void ScreenUpdate(unsigned char);
/* XGATE vector table */
typedef void (*_NEAR XGATE_Function)(int);
typedef struct {
XGATE_Function pc; /* pointer to the handler */
int dataptr; /* pointer to the data of the handler */
} XGATE_TableEntry;
#pragma push
#pragma CONST_SEG __GPAGE_SEG XGATE_CONST /* for the HCS12X/XGATE shared setup, the XGATE constants must be in RAM. */
#define XGATE_VECTOR_OFFSET 0
extern const XGATE_TableEntry XGATE_VectorTable[];
#pragma pop
#endif /* __XGATE_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -