📄 cpu12isrs.c
字号:
Mask = Mask>>1;
}// every bit
if (count >90) {
Message[0].Letter_Offset = Message[0].Letter_Offset-6 ;
count = 0;
}
else {
count++;
if (Message[0].Letter_Offset < (unsigned int *) Fig0) {
Message[0].Letter_Offset = (unsigned int *) Fig9;
if (Message[1].Letter_Offset!=(unsigned int *) Fig0) Message[1].Letter_Offset -= 23;
else Message[1].Letter_Offset = (unsigned int *) Fig8;
}
}//else
}//if
ptr++;
}// for j
// Second digit
ptr = (unsigned int *)Message[1].Letter_Offset;
//Test Valid position in current Block
for (j=0;j<23;j++){ // rows in a character
if( ((Message[1].OriginPosY+j)>=Block_Offset)&&((Message[1].OriginPosY+j)<(Block_Offset + CURRENT_BLOCK_MAX_LINE))) {
Mask=0x8000;
for (k= Message[1].OriginPosX;k<Message[1].OriginPosX+20;k++ ){
if (*ptr & Mask){
Screen_Array_in_RAM[Offset_Position+(Message[1].OriginPosY+j-Block_Offset)*NB_PIXELS_PER_LINES+k] = ~Message[1].Color;
if (ptr<=(unsigned int *) Fig5) Message[17].Status =1;
else Message[17].Status = 0;
}
Mask = Mask>>1;
}// every bit
} //if
ptr++;
} // for j
// PORTB_PB4=0;
}
// TFT Size
//unsigned char Block_number;
void ScreenUpdate(unsigned char Block_number) {
unsigned char oldrpage;
Rom_Bank *bankPtr;
// PORTB_PB6=1;
oldrpage = RPAGE;
bankPtr = &Bank[Block_number];
asm {
LDX bankPtr
LDAB dest_rpage_offset, X // Load RPAGE
STAB RPAGE
LDAB source_ppage1_offset, X // Load PPAGE1
STAB PPAGE
LDY #0x1000 // Y contains 0x1000, destination address
LDD length1_offset, X // D contains length /2 due to word trasfert
LSRD
LDX source_addr_offset, X // X contains source address
loop:
MOVW 2,X+,2,Y+
DBNE D, loop
// test if (Bank[Block_number].length2)
LDX bankPtr
LDD length2_offset, X // D contains length /2 due to word trasfert
BEQ exit
LDAB source_ppage2_offset, X // Load PPAGE2
STAB PPAGE
LDD length2_offset, X // D contains length /2 due to word trasfert
LSRD
LDX #0x8000 // Beginning of page
loop2:
MOVW 2,X+,2,Y+
DBNE D, loop2
exit:
}//asm
if (!PORTB){
if (Block_number==4){
_asm{
LDY #0x15C3 // Offset Anim
LDX #0x1000 // Bank A
LDAB #10 // Number of line Block 4
PSHB
LDAB #160 // Pixel per line
PSHB
LDAA RPAGE
PSHA
line: // One Lines
STAB 1,SP
LDAA #0xFA
STAA RPAGE
LDAA 1,X+
LDAB 0,SP
STAB RPAGE
STAA 1,Y+
LDAB 1,SP
DBNE B, line
// Next Line
LDAB 2,SP
DECB
BEQ exitB4
STAB 2,SP
ADDY #80 // 45 + 35
LDAB #160 //reinit
BRA line
exitB4:
PULB
PULB
PULB
}//asm
}//if
else if (Block_number==5){
_asm{
LDY #0x1023 // 1000 + 35 Offset Anim
LDX #0x1640 // Bank A + 10lines offset
LDAB #10 // Number of line Block 4
PSHB
LDAB #160 // Pixel per line
PSHB
LDAA RPAGE
PSHA
line5: // One Lines
STAB 1,SP
LDAA #0xFA
STAA RPAGE
LDAA 1,X+
LDAB 0,SP
STAB RPAGE
STAA 1,Y+
LDAB 1,SP
DBNE B, line5
// Next Line
LDAB 2,SP
DECB
BEQ exitB5
STAB 2,SP
ADDY #80 // 45 + 35
LDAB #160 //reinit
BRA line5
exitB5:
ADDY #80
LDX #0x1000
LDAB #6 // 6 more line s on FB
STAB 2,SP
LDAB #160 // Pixel per line
line52: // One Lines
STAB 1,SP
LDAA #0xFB
STAA RPAGE
LDAA 1,X+
LDAB 0,SP
STAB RPAGE
STAA 1,Y+
LDAB 1,SP
DBNE B, line52
// Next Line
LDAB 2,SP
DECB
BEQ exitB52
STAB 2,SP
ADDY #80 // 45 + 35
LDAB #160 //reinit
BRA line52
exitB52:
PULB
PULB
PULB
}//asm
}//if
else if (Block_number==6){
_asm{
LDY #0x1023 // 1000 + 35 Offset Anim
LDX #0x13C0 // Bank A + 6lines offset
LDAB #14 // Number of line Block 4
PSHB
LDAB #160 // Pixel per line
PSHB
LDAA RPAGE
PSHA
line6: // One Lines
STAB 1,SP
LDAA #0xFB
STAA RPAGE
LDAA 1,X+
LDAB 0,SP
STAB RPAGE
STAA 1,Y+
LDAB 1,SP
DBNE B, line6
// Next Line
LDAB 2,SP
DECB
BEQ exitB6
STAB 2,SP
ADDY #80 // 45 + 35
LDAB #160 //reinit
BRA line6
exitB6:
ADDY #80
LDX #0x1000
LDAB #2 // 2 more line s on FC
STAB 2,SP
LDAB #160 // Pixel per line
line62: // One Lines
STAB 1,SP
LDAA #0xFC
STAA RPAGE
LDAA 1,X+
LDAB 0,SP
STAB RPAGE
STAA 1,Y+
LDAB 1,SP
DBNE B, line62
// Next Line
LDAB 2,SP
DECB
BEQ exitB62
STAB 2,SP
ADDY #80 // 45 + 35
LDAB #160 //reinit
BRA line62
exitB62:
PULB
PULB
PULB
}//asm
}//if
else if (Block_number==7){
_asm{
LDY #0x1023 // Offset Anim
LDX #0x1140 // 2lines offset Bank C
LDAB #15 // Number of line Block 4
PSHB
LDAB #160 // Pixel per line
PSHB
LDAA RPAGE
PSHA
line7: // One Lines
STAB 1,SP
LDAA #0xFC
STAA RPAGE
LDAA 1,X+
LDAB 0,SP
STAB RPAGE
STAA 1,Y+
LDAB 1,SP
DBNE B, line7
// Next Line
LDAB 2,SP
DECB
BEQ exitB7
STAB 2,SP
ADDY #80 // 45 + 35
LDAB #160 //reinit
BRA line7
exitB7:
PULB
PULB
PULB
}//asm
}//if
} // if (!PORTB)
RPAGE = oldrpage;
// PORTB_PB6=0;
} // end ScreenUpdate
interrupt near void CPU12XGSwTrig7ISR(void)
{
int BlockNumber;
XGSWT = 0x8000; /* reset software trigger 7 */
//PTS_PTS5 = 0;
// PORTB = (char) CBLOC ;
// PORTA=0x1;
BlockNumber = (CBLOC+1)%20;
ScreenUpdate(BlockNumber);
if (BlockNumber==0) Image_Number++;
GearUpdate (BlockNumber,Gearnumber+10);
if (Message[17].Status) GasUpdate (BlockNumber);
CharUpdate(BlockNumber);
// S12X_img_up();
//PTS_PTS5 = 1;
//PORTA= 0x0;
} /* end CPU12XGSwTrig7interrupt */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -