kopia lustrzana https://github.com/Jean-MarcHarvengt/MCUME
add atari800 emu to T-COMPUTER
rodzic
3797069f3e
commit
39adf7a513
|
@ -0,0 +1,361 @@
|
|||
#include "emuapi.h"
|
||||
|
||||
#ifdef HAS_SND
|
||||
|
||||
#include "AudioPlaySystem.h"
|
||||
#include <Arduino.h>
|
||||
#define SAMPLERATE AUDIO_SAMPLE_RATE_EXACT
|
||||
#define CLOCKFREQ 985248
|
||||
|
||||
#ifndef CUSTOM_SND
|
||||
PROGMEM static const short square[]={
|
||||
32767,32767,32767,32767,
|
||||
32767,32767,32767,32767,
|
||||
32767,32767,32767,32767,
|
||||
32767,32767,32767,32767,
|
||||
32767,32767,32767,32767,
|
||||
32767,32767,32767,32767,
|
||||
32767,32767,32767,32767,
|
||||
32767,32767,32767,32767,
|
||||
-32767,-32767,-32767,-32767,
|
||||
-32767,-32767,-32767,-32767,
|
||||
-32767,-32767,-32767,-32767,
|
||||
-32767,-32767,-32767,-32767,
|
||||
-32767,-32767,-32767,-32767,
|
||||
-32767,-32767,-32767,-32767,
|
||||
-32767,-32767,-32767,-32767,
|
||||
-32767,-32767,-32767,-32767,
|
||||
};
|
||||
|
||||
PROGMEM const short noise[] {
|
||||
-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,
|
||||
-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,-32767,32767,-32767,
|
||||
-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,
|
||||
-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,32767,-32767,-32767,32767,32767,-32767,
|
||||
-32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,-32767,32767,32767,-32767,
|
||||
-32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767,
|
||||
32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767,
|
||||
32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767,
|
||||
32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767,
|
||||
32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,-32767,-32767,
|
||||
32767,-32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767,
|
||||
32767,-32767,32767,-32767,-32767,32767,32767,-32767,-32767,32767,-32767,32767,32767,32767,-32767,-32767,
|
||||
32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767,
|
||||
32767,-32767,32767,-32767,-32767,32767,32767,-32767,32767,32767,-32767,32767,-32767,32767,-32767,-32767,
|
||||
32767,32767,-32767,-32767,-32767,32767,-32767,-32767,-32767,-32767,32767,32767,32767,32767,32767,-32767,
|
||||
32767,-32767,32767,-32767,-32767,32767,32767,32767,32767,32767,-32767,32767,-32767,32767,-32767,-32767,
|
||||
};
|
||||
|
||||
#define NOISEBSIZE 0x100
|
||||
|
||||
typedef struct
|
||||
{
|
||||
unsigned int spos;
|
||||
unsigned int sinc;
|
||||
unsigned int vol;
|
||||
} Channel;
|
||||
|
||||
static Channel chan[6] = {
|
||||
{0,0,0},
|
||||
{0,0,0},
|
||||
{0,0,0},
|
||||
{0,0,0},
|
||||
{0,0,0},
|
||||
{0,0,0} };
|
||||
|
||||
#endif
|
||||
|
||||
volatile bool playing = false;
|
||||
|
||||
|
||||
static void snd_Reset(void)
|
||||
{
|
||||
#ifndef CUSTOM_SND
|
||||
chan[0].vol = 0;
|
||||
chan[1].vol = 0;
|
||||
chan[2].vol = 0;
|
||||
chan[3].vol = 0;
|
||||
chan[4].vol = 0;
|
||||
chan[5].vol = 0;
|
||||
chan[0].sinc = 0;
|
||||
chan[1].sinc = 0;
|
||||
chan[2].sinc = 0;
|
||||
chan[3].sinc = 0;
|
||||
chan[4].sinc = 0;
|
||||
chan[5].sinc = 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
#ifdef CUSTOM_SND
|
||||
extern "C" {
|
||||
void SND_Process(void *sndbuffer, int sndn);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
FASTRUN void AudioPlaySystem::snd_Mixer(short * stream, int len )
|
||||
{
|
||||
if (playing)
|
||||
{
|
||||
#ifdef CUSTOM_SND
|
||||
SND_Process((void*)stream, len);
|
||||
#else
|
||||
int i;
|
||||
long s;
|
||||
len = len >> 1;
|
||||
short v0=chan[0].vol;
|
||||
short v1=chan[1].vol;
|
||||
short v2=chan[2].vol;
|
||||
short v3=chan[3].vol;
|
||||
short v4=chan[4].vol;
|
||||
short v5=chan[5].vol;
|
||||
for (i=0;i<len;i++)
|
||||
{
|
||||
s =((v0*square[(chan[0].spos>>8)&0x3f])>>11);
|
||||
s+=((v1*square[(chan[1].spos>>8)&0x3f])>>11);
|
||||
s+=((v2*square[(chan[2].spos>>8)&0x3f])>>11);
|
||||
s+=((v3*noise[(chan[3].spos>>8)&(NOISEBSIZE-1)])>>11);
|
||||
s+=((v4*noise[(chan[4].spos>>8)&(NOISEBSIZE-1)])>>11);
|
||||
s+=((v5*noise[(chan[5].spos>>8)&(NOISEBSIZE-1)])>>11);
|
||||
*stream++ = (short)(s);
|
||||
*stream++ = (short)(s);
|
||||
chan[0].spos += chan[0].sinc;
|
||||
chan[1].spos += chan[1].sinc;
|
||||
chan[2].spos += chan[2].sinc;
|
||||
chan[3].spos += chan[3].sinc;
|
||||
chan[4].spos += chan[4].sinc;
|
||||
chan[5].spos += chan[5].sinc;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
void AudioPlaySystem::begin(void)
|
||||
{
|
||||
this->reset();
|
||||
}
|
||||
|
||||
void AudioPlaySystem::start(void)
|
||||
{
|
||||
playing = true;
|
||||
}
|
||||
|
||||
void AudioPlaySystem::setSampleParameters(float clockfreq, float samplerate) {
|
||||
}
|
||||
|
||||
void AudioPlaySystem::reset(void)
|
||||
{
|
||||
snd_Reset();
|
||||
}
|
||||
|
||||
void AudioPlaySystem::stop(void)
|
||||
{
|
||||
//__disable_irq();
|
||||
playing = false;
|
||||
//__enable_irq();
|
||||
}
|
||||
|
||||
bool AudioPlaySystem::isPlaying(void)
|
||||
{
|
||||
return playing;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void AudioPlaySystem::sound(int C, int F, int V) {
|
||||
#ifndef CUSTOM_SND
|
||||
if (C < 6) {
|
||||
chan[C].vol = V;
|
||||
chan[C].sinc = F>>1;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void AudioPlaySystem::step(void) {
|
||||
}
|
||||
|
||||
|
||||
#ifndef HAS_T4_VGA
|
||||
/*******************************************************************
|
||||
Experimental I2S interrupt based sound driver for PCM51xx !!!
|
||||
*******************************************************************/
|
||||
|
||||
FLASHMEM static void set_audioClock(int nfact, int32_t nmult, uint32_t ndiv, bool force) // sets PLL4
|
||||
{
|
||||
if (!force && (CCM_ANALOG_PLL_AUDIO & CCM_ANALOG_PLL_AUDIO_ENABLE)) return;
|
||||
|
||||
CCM_ANALOG_PLL_AUDIO = CCM_ANALOG_PLL_AUDIO_BYPASS | CCM_ANALOG_PLL_AUDIO_ENABLE
|
||||
| CCM_ANALOG_PLL_AUDIO_POST_DIV_SELECT(2) // 2: 1/4; 1: 1/2; 0: 1/1
|
||||
| CCM_ANALOG_PLL_AUDIO_DIV_SELECT(nfact);
|
||||
|
||||
CCM_ANALOG_PLL_AUDIO_NUM = nmult & CCM_ANALOG_PLL_AUDIO_NUM_MASK;
|
||||
CCM_ANALOG_PLL_AUDIO_DENOM = ndiv & CCM_ANALOG_PLL_AUDIO_DENOM_MASK;
|
||||
|
||||
CCM_ANALOG_PLL_AUDIO &= ~CCM_ANALOG_PLL_AUDIO_POWERDOWN;//Switch on PLL
|
||||
while (!(CCM_ANALOG_PLL_AUDIO & CCM_ANALOG_PLL_AUDIO_LOCK)) {}; //Wait for pll-lock
|
||||
|
||||
const int div_post_pll = 1; // other values: 2,4
|
||||
CCM_ANALOG_MISC2 &= ~(CCM_ANALOG_MISC2_DIV_MSB | CCM_ANALOG_MISC2_DIV_LSB);
|
||||
if(div_post_pll>1) CCM_ANALOG_MISC2 |= CCM_ANALOG_MISC2_DIV_LSB;
|
||||
if(div_post_pll>3) CCM_ANALOG_MISC2 |= CCM_ANALOG_MISC2_DIV_MSB;
|
||||
|
||||
CCM_ANALOG_PLL_AUDIO &= ~CCM_ANALOG_PLL_AUDIO_BYPASS;//Disable Bypass
|
||||
}
|
||||
|
||||
#define AUDIO_SAMPLE_RATE_EXACT 11025.0 //44117.64706 //11025.0 //22050.0 //44117.64706 //31778.0
|
||||
|
||||
FLASHMEM static void config_sai1()
|
||||
{
|
||||
CCM_CCGR5 |= CCM_CCGR5_SAI1(CCM_CCGR_ON);
|
||||
double fs = AUDIO_SAMPLE_RATE_EXACT;
|
||||
// PLL between 27*24 = 648MHz und 54*24=1296MHz
|
||||
int n1 = 4; //SAI prescaler 4 => (n1*n2) = multiple of 4
|
||||
int n2 = 1 + (24000000 * 27) / (fs * 256 * n1);
|
||||
double C = (fs * 256 * n1 * n2) / 24000000;
|
||||
int c0 = C;
|
||||
int c2 = 10000;
|
||||
int c1 = C * c2 - (c0 * c2);
|
||||
|
||||
set_audioClock(c0, c1, c2, true);
|
||||
// clear SAI1_CLK register locations
|
||||
CCM_CSCMR1 = (CCM_CSCMR1 & ~(CCM_CSCMR1_SAI1_CLK_SEL_MASK))
|
||||
| CCM_CSCMR1_SAI1_CLK_SEL(2); // &0x03 // (0,1,2): PLL3PFD0, PLL5, PLL4
|
||||
|
||||
n1 = n1 / 2; //Double Speed for TDM
|
||||
|
||||
CCM_CS1CDR = (CCM_CS1CDR & ~(CCM_CS1CDR_SAI1_CLK_PRED_MASK | CCM_CS1CDR_SAI1_CLK_PODF_MASK))
|
||||
| CCM_CS1CDR_SAI1_CLK_PRED(n1 - 1) // &0x07
|
||||
| CCM_CS1CDR_SAI1_CLK_PODF(n2 - 1); // &0x3f
|
||||
|
||||
IOMUXC_GPR_GPR1 = (IOMUXC_GPR_GPR1 & ~(IOMUXC_GPR_GPR1_SAI1_MCLK1_SEL_MASK))
|
||||
| (IOMUXC_GPR_GPR1_SAI1_MCLK_DIR | IOMUXC_GPR_GPR1_SAI1_MCLK1_SEL(0)); //Select MCLK
|
||||
|
||||
|
||||
// configure transmitter
|
||||
int rsync = 0;
|
||||
int tsync = 1;
|
||||
|
||||
I2S1_TMR = 0;
|
||||
I2S1_TCR1 = I2S_TCR1_RFW(1);
|
||||
I2S1_TCR2 = I2S_TCR2_SYNC(tsync) | I2S_TCR2_BCP // sync=0; tx is async;
|
||||
| (I2S_TCR2_BCD | I2S_TCR2_DIV((1)) | I2S_TCR2_MSEL(1));
|
||||
I2S1_TCR3 = I2S_TCR3_TCE;
|
||||
I2S1_TCR4 = I2S_TCR4_FRSZ((2-1)) | I2S_TCR4_SYWD((32-1)) | I2S_TCR4_MF
|
||||
| I2S_TCR4_FSD | I2S_TCR4_FSE | I2S_TCR4_FSP;
|
||||
I2S1_TCR5 = I2S_TCR5_WNW((32-1)) | I2S_TCR5_W0W((32-1)) | I2S_TCR5_FBT((32-1));
|
||||
|
||||
|
||||
I2S1_RMR = 0;
|
||||
I2S1_RCR1 = I2S_RCR1_RFW(1);
|
||||
I2S1_RCR2 = I2S_RCR2_SYNC(rsync) | I2S_RCR2_BCP // sync=0; rx is async;
|
||||
| (I2S_RCR2_BCD | I2S_RCR2_DIV((1)) | I2S_RCR2_MSEL(1));
|
||||
I2S1_RCR3 = I2S_RCR3_RCE;
|
||||
I2S1_RCR4 = I2S_RCR4_FRSZ((2-1)) | I2S_RCR4_SYWD((32-1)) | I2S_RCR4_MF
|
||||
| I2S_RCR4_FSE | I2S_RCR4_FSP | I2S_RCR4_FSD;
|
||||
I2S1_RCR5 = I2S_RCR5_WNW((32-1)) | I2S_RCR5_W0W((32-1)) | I2S_RCR5_FBT((32-1));
|
||||
|
||||
//CORE_PIN23_CONFIG = 3; // MCLK
|
||||
CORE_PIN21_CONFIG = 3; // RX_BCLK
|
||||
CORE_PIN20_CONFIG = 3; // RX_SYNC
|
||||
CORE_PIN7_CONFIG = 3; // TX_DATA0
|
||||
I2S1_RCSR |= I2S_RCSR_RE | I2S_RCSR_BCE;
|
||||
I2S1_TCSR = I2S_TCSR_TE | I2S_TCSR_BCE | I2S_TCSR_FRDE ;//<-- not using DMA */;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//DMAMEM __attribute__((aligned(32))) static uint32_t i2s_tx[1024];
|
||||
|
||||
static bool fillfirsthalf = true;
|
||||
static uint16_t cnt = 0;
|
||||
static uint16_t sampleBufferSize = 0;
|
||||
|
||||
static void (*fillsamples)(short * stream, int len) = nullptr;
|
||||
|
||||
static uint32_t * i2s_tx_buffer __attribute__((aligned(32)));
|
||||
static uint16_t * i2s_tx_buffer16;
|
||||
static uint16_t * txreg = (uint16_t *)((uint32_t)&I2S1_TDR0 + 2);
|
||||
|
||||
|
||||
FASTRUN void AudioPlaySystem::AUDIO_isr() {
|
||||
|
||||
*txreg = i2s_tx_buffer16[cnt];
|
||||
cnt = cnt + 1;
|
||||
cnt = cnt & (sampleBufferSize*2-1);
|
||||
|
||||
if (cnt == 0) {
|
||||
fillfirsthalf = false;
|
||||
NVIC_SET_PENDING(IRQ_SOFTWARE);
|
||||
}
|
||||
else if (cnt == sampleBufferSize) {
|
||||
fillfirsthalf = true;
|
||||
NVIC_SET_PENDING(IRQ_SOFTWARE);
|
||||
}
|
||||
/*
|
||||
I2S1_TDR0 = i2s_tx_buffer[cnt];
|
||||
cnt = cnt + 1;
|
||||
cnt = cnt & (sampleBufferSize-1);
|
||||
if (cnt == 0) {
|
||||
fillfirsthalf = false;
|
||||
NVIC_SET_PENDING(IRQ_SOFTWARE);
|
||||
}
|
||||
else if (cnt == sampleBufferSize/2) {
|
||||
fillfirsthalf = true;
|
||||
NVIC_SET_PENDING(IRQ_SOFTWARE);
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
FASTRUN void AudioPlaySystem::SOFTWARE_isr() {
|
||||
//Serial.println("x");
|
||||
if (fillfirsthalf) {
|
||||
fillsamples((short *)i2s_tx_buffer, sampleBufferSize);
|
||||
arm_dcache_flush_delete((void*)i2s_tx_buffer, (sampleBufferSize/2)*sizeof(uint32_t));
|
||||
}
|
||||
else {
|
||||
fillsamples((short *)&i2s_tx_buffer[sampleBufferSize/2], sampleBufferSize);
|
||||
arm_dcache_flush_delete((void*)&i2s_tx_buffer[sampleBufferSize/2], (sampleBufferSize/2)*sizeof(uint32_t));
|
||||
}
|
||||
}
|
||||
|
||||
// display VGA image
|
||||
FLASHMEM void AudioPlaySystem::begin_audio(int samplesize, void (*callback)(short * stream, int len))
|
||||
{
|
||||
fillsamples = callback;
|
||||
i2s_tx_buffer = (uint32_t*)malloc(samplesize*sizeof(uint32_t)); //&i2s_tx[0];
|
||||
|
||||
if (i2s_tx_buffer == NULL) {
|
||||
Serial.println("could not allocate audio samples");
|
||||
return;
|
||||
}
|
||||
memset((void*)i2s_tx_buffer,0, samplesize*sizeof(uint32_t));
|
||||
arm_dcache_flush_delete((void*)i2s_tx_buffer, samplesize*sizeof(uint32_t));
|
||||
i2s_tx_buffer16 = (uint16_t*)i2s_tx_buffer;
|
||||
|
||||
sampleBufferSize = samplesize;
|
||||
|
||||
config_sai1();
|
||||
attachInterruptVector(IRQ_SAI1, AUDIO_isr);
|
||||
NVIC_ENABLE_IRQ(IRQ_SAI1);
|
||||
NVIC_SET_PRIORITY(IRQ_QTIMER3, 0); // 0 highest priority, 255 = lowest priority
|
||||
NVIC_SET_PRIORITY(IRQ_SAI1, 127);
|
||||
attachInterruptVector(IRQ_SOFTWARE, SOFTWARE_isr);
|
||||
NVIC_SET_PRIORITY(IRQ_SOFTWARE, 208);
|
||||
NVIC_ENABLE_IRQ(IRQ_SOFTWARE);
|
||||
|
||||
I2S1_TCSR |= 1<<8; // start generating TX FIFO interrupts
|
||||
|
||||
Serial.print("Audio sample buffer = ");
|
||||
Serial.println(samplesize);
|
||||
}
|
||||
|
||||
FLASHMEM void AudioPlaySystem::end_audio()
|
||||
{
|
||||
if (i2s_tx_buffer != NULL) {
|
||||
free(i2s_tx_buffer);
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif
|
|
@ -0,0 +1,34 @@
|
|||
#ifndef audioplaysystem_h_
|
||||
#define audioplaysystem_h_
|
||||
|
||||
#ifdef HAS_SND
|
||||
|
||||
#include "platform_config.h"
|
||||
|
||||
class AudioPlaySystem
|
||||
{
|
||||
public:
|
||||
AudioPlaySystem(void) { };
|
||||
void begin(void);
|
||||
void setSampleParameters(float clockfreq, float samplerate);
|
||||
void reset(void);
|
||||
void start(void);
|
||||
void stop(void);
|
||||
bool isPlaying(void);
|
||||
void sound(int C, int F, int V);
|
||||
void buzz(int size, int val);
|
||||
void step(void);
|
||||
static void snd_Mixer(short * stream, int len );
|
||||
#ifndef HAS_T4_VGA
|
||||
void begin_audio(int samplesize, void (*callback)(short * stream, int len));
|
||||
void end_audio();
|
||||
static void AUDIO_isr(void);
|
||||
static void SOFTWARE_isr(void);
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
|
@ -0,0 +1,239 @@
|
|||
#ifndef AKEY_H_
|
||||
#define AKEY_H_
|
||||
/* akey.h: Atari key codes */
|
||||
|
||||
/* INPUT_key_code values */
|
||||
#define AKEY_NONE -1
|
||||
|
||||
/* Special key codes. */
|
||||
#define AKEY_WARMSTART -2
|
||||
#define AKEY_COLDSTART -3
|
||||
#define AKEY_EXIT -4
|
||||
#define AKEY_BREAK -5
|
||||
#define AKEY_UI -7
|
||||
#define AKEY_SCREENSHOT -8
|
||||
#define AKEY_SCREENSHOT_INTERLACE -9
|
||||
#define AKEY_START -10
|
||||
#define AKEY_SELECT -11
|
||||
#define AKEY_OPTION -12
|
||||
#define AKEY_PBI_BB_MENU -13
|
||||
#define AKEY_CX85_1 -14
|
||||
#define AKEY_CX85_2 -15
|
||||
#define AKEY_CX85_3 -16
|
||||
#define AKEY_CX85_4 -17
|
||||
#define AKEY_CX85_5 -18
|
||||
#define AKEY_CX85_6 -19
|
||||
#define AKEY_CX85_7 -20
|
||||
#define AKEY_CX85_8 -21
|
||||
#define AKEY_CX85_9 -22
|
||||
#define AKEY_CX85_0 -23
|
||||
#define AKEY_CX85_PERIOD -24
|
||||
#define AKEY_CX85_MINUS -25
|
||||
#define AKEY_CX85_PLUS_ENTER -26
|
||||
#define AKEY_CX85_ESCAPE -27
|
||||
#define AKEY_CX85_NO -28
|
||||
#define AKEY_CX85_DELETE -29
|
||||
#define AKEY_CX85_YES -30
|
||||
#define AKEY_TURBO -31
|
||||
#ifdef USE_UI_BASIC_ONSCREEN_KEYBOARD
|
||||
#define AKEY_KEYB -32
|
||||
#endif
|
||||
#ifdef DIRECTX
|
||||
/* special menu directives */
|
||||
#define AKEY32_MENU_SAVE_CONFIG -107
|
||||
#define AKEY32_UI_MOUSE_CLICK -108
|
||||
#endif
|
||||
|
||||
#define AKEY_SHFT 0x40
|
||||
#define AKEY_CTRL 0x80
|
||||
#define AKEY_SHFTCTRL 0xc0
|
||||
|
||||
#define AKEY_0 0x32
|
||||
#define AKEY_1 0x1f
|
||||
#define AKEY_2 0x1e
|
||||
#define AKEY_3 0x1a
|
||||
#define AKEY_4 0x18
|
||||
#define AKEY_5 0x1d
|
||||
#define AKEY_6 0x1b
|
||||
#define AKEY_7 0x33
|
||||
#define AKEY_8 0x35
|
||||
#define AKEY_9 0x30
|
||||
|
||||
#define AKEY_CTRL_0 (AKEY_CTRL | AKEY_0)
|
||||
#define AKEY_CTRL_1 (AKEY_CTRL | AKEY_1)
|
||||
#define AKEY_CTRL_2 (AKEY_CTRL | AKEY_2)
|
||||
#define AKEY_CTRL_3 (AKEY_CTRL | AKEY_3)
|
||||
#define AKEY_CTRL_4 (AKEY_CTRL | AKEY_4)
|
||||
#define AKEY_CTRL_5 (AKEY_CTRL | AKEY_5)
|
||||
#define AKEY_CTRL_6 (AKEY_CTRL | AKEY_6)
|
||||
#define AKEY_CTRL_7 (AKEY_CTRL | AKEY_7)
|
||||
#define AKEY_CTRL_8 (AKEY_CTRL | AKEY_8)
|
||||
#define AKEY_CTRL_9 (AKEY_CTRL | AKEY_9)
|
||||
|
||||
#define AKEY_a 0x3f
|
||||
#define AKEY_b 0x15
|
||||
#define AKEY_c 0x12
|
||||
#define AKEY_d 0x3a
|
||||
#define AKEY_e 0x2a
|
||||
#define AKEY_f 0x38
|
||||
#define AKEY_g 0x3d
|
||||
#define AKEY_h 0x39
|
||||
#define AKEY_i 0x0d
|
||||
#define AKEY_j 0x01
|
||||
#define AKEY_k 0x05
|
||||
#define AKEY_l 0x00
|
||||
#define AKEY_m 0x25
|
||||
#define AKEY_n 0x23
|
||||
#define AKEY_o 0x08
|
||||
#define AKEY_p 0x0a
|
||||
#define AKEY_q 0x2f
|
||||
#define AKEY_r 0x28
|
||||
#define AKEY_s 0x3e
|
||||
#define AKEY_t 0x2d
|
||||
#define AKEY_u 0x0b
|
||||
#define AKEY_v 0x10
|
||||
#define AKEY_w 0x2e
|
||||
#define AKEY_x 0x16
|
||||
#define AKEY_y 0x2b
|
||||
#define AKEY_z 0x17
|
||||
|
||||
#define AKEY_A (AKEY_SHFT | AKEY_a)
|
||||
#define AKEY_B (AKEY_SHFT | AKEY_b)
|
||||
#define AKEY_C (AKEY_SHFT | AKEY_c)
|
||||
#define AKEY_D (AKEY_SHFT | AKEY_d)
|
||||
#define AKEY_E (AKEY_SHFT | AKEY_e)
|
||||
#define AKEY_F (AKEY_SHFT | AKEY_f)
|
||||
#define AKEY_G (AKEY_SHFT | AKEY_g)
|
||||
#define AKEY_H (AKEY_SHFT | AKEY_h)
|
||||
#define AKEY_I (AKEY_SHFT | AKEY_i)
|
||||
#define AKEY_J (AKEY_SHFT | AKEY_j)
|
||||
#define AKEY_K (AKEY_SHFT | AKEY_k)
|
||||
#define AKEY_L (AKEY_SHFT | AKEY_l)
|
||||
#define AKEY_M (AKEY_SHFT | AKEY_m)
|
||||
#define AKEY_N (AKEY_SHFT | AKEY_n)
|
||||
#define AKEY_O (AKEY_SHFT | AKEY_o)
|
||||
#define AKEY_P (AKEY_SHFT | AKEY_p)
|
||||
#define AKEY_Q (AKEY_SHFT | AKEY_q)
|
||||
#define AKEY_R (AKEY_SHFT | AKEY_r)
|
||||
#define AKEY_S (AKEY_SHFT | AKEY_s)
|
||||
#define AKEY_T (AKEY_SHFT | AKEY_t)
|
||||
#define AKEY_U (AKEY_SHFT | AKEY_u)
|
||||
#define AKEY_V (AKEY_SHFT | AKEY_v)
|
||||
#define AKEY_W (AKEY_SHFT | AKEY_w)
|
||||
#define AKEY_X (AKEY_SHFT | AKEY_x)
|
||||
#define AKEY_Y (AKEY_SHFT | AKEY_y)
|
||||
#define AKEY_Z (AKEY_SHFT | AKEY_z)
|
||||
|
||||
#define AKEY_CTRL_a (AKEY_CTRL | AKEY_a)
|
||||
#define AKEY_CTRL_b (AKEY_CTRL | AKEY_b)
|
||||
#define AKEY_CTRL_c (AKEY_CTRL | AKEY_c)
|
||||
#define AKEY_CTRL_d (AKEY_CTRL | AKEY_d)
|
||||
#define AKEY_CTRL_e (AKEY_CTRL | AKEY_e)
|
||||
#define AKEY_CTRL_f (AKEY_CTRL | AKEY_f)
|
||||
#define AKEY_CTRL_g (AKEY_CTRL | AKEY_g)
|
||||
#define AKEY_CTRL_h (AKEY_CTRL | AKEY_h)
|
||||
#define AKEY_CTRL_i (AKEY_CTRL | AKEY_i)
|
||||
#define AKEY_CTRL_j (AKEY_CTRL | AKEY_j)
|
||||
#define AKEY_CTRL_k (AKEY_CTRL | AKEY_k)
|
||||
#define AKEY_CTRL_l (AKEY_CTRL | AKEY_l)
|
||||
#define AKEY_CTRL_m (AKEY_CTRL | AKEY_m)
|
||||
#define AKEY_CTRL_n (AKEY_CTRL | AKEY_n)
|
||||
#define AKEY_CTRL_o (AKEY_CTRL | AKEY_o)
|
||||
#define AKEY_CTRL_p (AKEY_CTRL | AKEY_p)
|
||||
#define AKEY_CTRL_q (AKEY_CTRL | AKEY_q)
|
||||
#define AKEY_CTRL_r (AKEY_CTRL | AKEY_r)
|
||||
#define AKEY_CTRL_s (AKEY_CTRL | AKEY_s)
|
||||
#define AKEY_CTRL_t (AKEY_CTRL | AKEY_t)
|
||||
#define AKEY_CTRL_u (AKEY_CTRL | AKEY_u)
|
||||
#define AKEY_CTRL_v (AKEY_CTRL | AKEY_v)
|
||||
#define AKEY_CTRL_w (AKEY_CTRL | AKEY_w)
|
||||
#define AKEY_CTRL_x (AKEY_CTRL | AKEY_x)
|
||||
#define AKEY_CTRL_y (AKEY_CTRL | AKEY_y)
|
||||
#define AKEY_CTRL_z (AKEY_CTRL | AKEY_z)
|
||||
|
||||
#define AKEY_CTRL_A (AKEY_CTRL | AKEY_A)
|
||||
#define AKEY_CTRL_B (AKEY_CTRL | AKEY_B)
|
||||
#define AKEY_CTRL_C (AKEY_CTRL | AKEY_C)
|
||||
#define AKEY_CTRL_D (AKEY_CTRL | AKEY_D)
|
||||
#define AKEY_CTRL_E (AKEY_CTRL | AKEY_E)
|
||||
#define AKEY_CTRL_F (AKEY_CTRL | AKEY_F)
|
||||
#define AKEY_CTRL_G (AKEY_CTRL | AKEY_G)
|
||||
#define AKEY_CTRL_H (AKEY_CTRL | AKEY_H)
|
||||
#define AKEY_CTRL_I (AKEY_CTRL | AKEY_I)
|
||||
#define AKEY_CTRL_J (AKEY_CTRL | AKEY_J)
|
||||
#define AKEY_CTRL_K (AKEY_CTRL | AKEY_K)
|
||||
#define AKEY_CTRL_L (AKEY_CTRL | AKEY_L)
|
||||
#define AKEY_CTRL_M (AKEY_CTRL | AKEY_M)
|
||||
#define AKEY_CTRL_N (AKEY_CTRL | AKEY_N)
|
||||
#define AKEY_CTRL_O (AKEY_CTRL | AKEY_O)
|
||||
#define AKEY_CTRL_P (AKEY_CTRL | AKEY_P)
|
||||
#define AKEY_CTRL_Q (AKEY_CTRL | AKEY_Q)
|
||||
#define AKEY_CTRL_R (AKEY_CTRL | AKEY_R)
|
||||
#define AKEY_CTRL_S (AKEY_CTRL | AKEY_S)
|
||||
#define AKEY_CTRL_T (AKEY_CTRL | AKEY_T)
|
||||
#define AKEY_CTRL_U (AKEY_CTRL | AKEY_U)
|
||||
#define AKEY_CTRL_V (AKEY_CTRL | AKEY_V)
|
||||
#define AKEY_CTRL_W (AKEY_CTRL | AKEY_W)
|
||||
#define AKEY_CTRL_X (AKEY_CTRL | AKEY_X)
|
||||
#define AKEY_CTRL_Y (AKEY_CTRL | AKEY_Y)
|
||||
#define AKEY_CTRL_Z (AKEY_CTRL | AKEY_Z)
|
||||
|
||||
#define AKEY_HELP 0x11
|
||||
#define AKEY_DOWN 0x8f
|
||||
#define AKEY_LEFT 0x86
|
||||
#define AKEY_RIGHT 0x87
|
||||
#define AKEY_UP 0x8e
|
||||
#define AKEY_BACKSPACE 0x34
|
||||
#define AKEY_DELETE_CHAR 0xb4
|
||||
#define AKEY_DELETE_LINE 0x74
|
||||
#define AKEY_INSERT_CHAR 0xb7
|
||||
#define AKEY_INSERT_LINE 0x77
|
||||
#define AKEY_ESCAPE 0x1c
|
||||
#define AKEY_ATARI 0x27
|
||||
#define AKEY_CAPSLOCK 0x7c
|
||||
#define AKEY_CAPSTOGGLE 0x3c
|
||||
#define AKEY_TAB 0x2c
|
||||
#define AKEY_SETTAB 0x6c
|
||||
#define AKEY_CLRTAB 0xac
|
||||
#define AKEY_RETURN 0x0c
|
||||
#define AKEY_SPACE 0x21
|
||||
#define AKEY_EXCLAMATION 0x5f
|
||||
#define AKEY_DBLQUOTE 0x5e
|
||||
#define AKEY_HASH 0x5a
|
||||
#define AKEY_DOLLAR 0x58
|
||||
#define AKEY_PERCENT 0x5d
|
||||
#define AKEY_AMPERSAND 0x5b
|
||||
#define AKEY_QUOTE 0x73
|
||||
#define AKEY_AT 0x75
|
||||
#define AKEY_PARENLEFT 0x70
|
||||
#define AKEY_PARENRIGHT 0x72
|
||||
#define AKEY_LESS 0x36
|
||||
#define AKEY_GREATER 0x37
|
||||
#define AKEY_EQUAL 0x0f
|
||||
#define AKEY_QUESTION 0x66
|
||||
#define AKEY_MINUS 0x0e
|
||||
#define AKEY_PLUS 0x06
|
||||
#define AKEY_ASTERISK 0x07
|
||||
#define AKEY_SLASH 0x26
|
||||
#define AKEY_COLON 0x42
|
||||
#define AKEY_SEMICOLON 0x02
|
||||
#define AKEY_COMMA 0x20
|
||||
#define AKEY_FULLSTOP 0x22
|
||||
#define AKEY_UNDERSCORE 0x4e
|
||||
#define AKEY_BRACKETLEFT 0x60
|
||||
#define AKEY_BRACKETRIGHT 0x62
|
||||
#define AKEY_CIRCUMFLEX 0x47
|
||||
#define AKEY_BACKSLASH 0x46
|
||||
#define AKEY_BAR 0x4f
|
||||
#define AKEY_CLEAR (AKEY_SHFT | AKEY_LESS)
|
||||
#define AKEY_CARET (AKEY_SHFT | AKEY_ASTERISK)
|
||||
#define AKEY_F1 0x03
|
||||
#define AKEY_F2 0x04
|
||||
#define AKEY_F3 0x13
|
||||
#define AKEY_F4 0x14
|
||||
|
||||
/* Following keys cannot be read with both shift and control pressed:
|
||||
J K L ; + * Z X C V B F1 F2 F3 F4 HELP */
|
||||
|
||||
|
||||
#endif /* AKEY_H_ */
|
Plik diff jest za duży
Load Diff
|
@ -0,0 +1,136 @@
|
|||
#ifndef ANTIC_H_
|
||||
#define ANTIC_H_
|
||||
|
||||
#include "atari.h"
|
||||
/*
|
||||
* Offset to registers in custom relative to start of antic memory addresses.
|
||||
*/
|
||||
|
||||
#define ANTIC_OFFSET_DMACTL 0x00
|
||||
#define ANTIC_OFFSET_CHACTL 0x01
|
||||
#define ANTIC_OFFSET_DLISTL 0x02
|
||||
#define ANTIC_OFFSET_DLISTH 0x03
|
||||
#define ANTIC_OFFSET_HSCROL 0x04
|
||||
#define ANTIC_OFFSET_VSCROL 0x05
|
||||
#define ANTIC_OFFSET_PMBASE 0x07
|
||||
#define ANTIC_OFFSET_CHBASE 0x09
|
||||
#define ANTIC_OFFSET_WSYNC 0x0a
|
||||
#define ANTIC_OFFSET_VCOUNT 0x0b
|
||||
#define ANTIC_OFFSET_PENH 0x0c
|
||||
#define ANTIC_OFFSET_PENV 0x0d
|
||||
#define ANTIC_OFFSET_NMIEN 0x0e
|
||||
#define ANTIC_OFFSET_NMIRES 0x0f
|
||||
#define ANTIC_OFFSET_NMIST 0x0f
|
||||
|
||||
extern UBYTE ANTIC_CHACTL;
|
||||
extern UBYTE ANTIC_CHBASE;
|
||||
extern UWORD ANTIC_dlist;
|
||||
extern UBYTE ANTIC_DMACTL;
|
||||
extern UBYTE ANTIC_HSCROL;
|
||||
extern UBYTE ANTIC_NMIEN;
|
||||
extern UBYTE ANTIC_NMIST;
|
||||
extern UBYTE ANTIC_PMBASE;
|
||||
extern UBYTE ANTIC_VSCROL;
|
||||
|
||||
extern int ANTIC_break_ypos;
|
||||
extern int ANTIC_ypos;
|
||||
extern int ANTIC_wsync_halt;
|
||||
|
||||
/* Current clock cycle in a scanline.
|
||||
Normally 0 <= ANTIC_xpos && ANTIC_xpos < ANTIC_LINE_C, but in some cases ANTIC_xpos >= ANTIC_LINE_C,
|
||||
which means that we are already in line (ypos + 1). */
|
||||
extern int ANTIC_xpos;
|
||||
|
||||
/* ANTIC_xpos limit for the currently running 6502 emulation. */
|
||||
extern int ANTIC_xpos_limit;
|
||||
|
||||
/* Main clock value at the beginning of the current scanline. */
|
||||
extern unsigned int ANTIC_screenline_cpu_clock;
|
||||
|
||||
/* Current main clock value. */
|
||||
#define ANTIC_CPU_CLOCK (ANTIC_screenline_cpu_clock + ANTIC_XPOS)
|
||||
|
||||
#define ANTIC_NMIST_C 6
|
||||
#define ANTIC_NMI_C 12
|
||||
|
||||
/* Number of cycles per scanline. */
|
||||
#define ANTIC_LINE_C 114
|
||||
|
||||
/* STA WSYNC resumes here. */
|
||||
#define ANTIC_WSYNC_C 106
|
||||
|
||||
/* Number of memory refresh cycles per scanline.
|
||||
In the first scanline of a font mode there are actually less than ANTIC_DMAR
|
||||
memory refresh cycles. */
|
||||
#define ANTIC_DMAR 9
|
||||
|
||||
extern int ANTIC_artif_mode;
|
||||
extern int ANTIC_artif_new;
|
||||
|
||||
extern UBYTE ANTIC_PENH_input;
|
||||
extern UBYTE ANTIC_PENV_input;
|
||||
|
||||
int ANTIC_Initialise(void);
|
||||
void ANTIC_Reset(void);
|
||||
void ANTIC_Frame(int draw_display);
|
||||
UBYTE ANTIC_GetByte(UWORD addr, int no_side_effects);
|
||||
void ANTIC_PutByte(UWORD addr, UBYTE byte);
|
||||
|
||||
UBYTE ANTIC_GetDLByte(UWORD *paddr);
|
||||
UWORD ANTIC_GetDLWord(UWORD *paddr);
|
||||
|
||||
/* always call ANTIC_UpdateArtifacting after changing ANTIC_artif_mode */
|
||||
void ANTIC_UpdateArtifacting(void);
|
||||
|
||||
/* Video memory access */
|
||||
void ANTIC_VideoMemset(UBYTE *ptr, UBYTE val, ULONG size);
|
||||
void ANTIC_VideoPutByte(UBYTE *ptr, UBYTE val);
|
||||
|
||||
/* GTIA calls it on a write to PRIOR */
|
||||
void ANTIC_SetPrior(UBYTE prior);
|
||||
|
||||
/* Saved states */
|
||||
void ANTIC_StateSave(void);
|
||||
void ANTIC_StateRead(void);
|
||||
|
||||
/* Pointer to 16 KB seen by ANTIC in 0x4000-0x7fff.
|
||||
If it's the same what the CPU sees (and what's in memory[0x4000..0x7fff],
|
||||
then NULL. */
|
||||
extern const UBYTE *ANTIC_xe_ptr;
|
||||
|
||||
/* PM graphics for GTIA */
|
||||
extern int ANTIC_player_dma_enabled;
|
||||
extern int ANTIC_missile_dma_enabled;
|
||||
extern int ANTIC_player_gra_enabled;
|
||||
extern int ANTIC_missile_gra_enabled;
|
||||
extern int ANTIC_player_flickering;
|
||||
extern int ANTIC_missile_flickering;
|
||||
|
||||
/* ANTIC colour lookup tables, used by GTIA */
|
||||
extern UWORD ANTIC_cl[128];
|
||||
extern ULONG ANTIC_lookup_gtia9[16];
|
||||
extern ULONG ANTIC_lookup_gtia11[16];
|
||||
extern UWORD ANTIC_hires_lookup_l[128];
|
||||
|
||||
#ifdef NEW_CYCLE_EXACT
|
||||
#define ANTIC_NOT_DRAWING -999
|
||||
#define ANTIC_DRAWING_SCREEN (ANTIC_cur_screen_pos!=ANTIC_NOT_DRAWING)
|
||||
extern int ANTIC_delayed_wsync;
|
||||
extern int ANTIC_cur_screen_pos;
|
||||
extern const int *ANTIC_cpu2antic_ptr;
|
||||
extern const int *ANTIC_antic2cpu_ptr;
|
||||
void ANTIC_UpdateScanline(void);
|
||||
void ANTIC_UpdateScanlinePrior(UBYTE byte);
|
||||
|
||||
#define ANTIC_XPOS ( ANTIC_DRAWING_SCREEN ? ANTIC_cpu2antic_ptr[ANTIC_xpos] : ANTIC_xpos )
|
||||
#else
|
||||
#define ANTIC_XPOS ANTIC_xpos
|
||||
#endif /* NEW_CYCLE_EXACT */
|
||||
|
||||
#ifndef NO_SIMPLE_PAL_BLENDING
|
||||
/* Set to 1 to enable simplified emulation of PAL blending, that uses only
|
||||
the standard 8-bit palette. */
|
||||
extern int ANTIC_pal_blending;
|
||||
#endif /* NO_SIMPLE_PAL_BLENDING */
|
||||
|
||||
#endif /* ANTIC_H_ */
|
|
@ -0,0 +1,102 @@
|
|||
#ifndef __ATARI__
|
||||
#define __ATARI__
|
||||
|
||||
// define globals
|
||||
#define MEMORY_SIZE 0xC000 //0x10000
|
||||
|
||||
#define ATARI_WIDTH 384
|
||||
#define ATARI_HEIGHT 240
|
||||
#define TV_PAL 312
|
||||
#define TV_NTSC 262
|
||||
|
||||
//#define DIRTYRECT 1
|
||||
//#define WORDS_UNALIGNED_OK 1
|
||||
//#define ALTERNATE_LOOP_COUNTERS 1
|
||||
//#define NEW_CYCLE_EXACT 1
|
||||
//#define USE_CURSES 1
|
||||
//#define WORDS_BIGENDIAN 1
|
||||
//#define SYNCHRONIZED_SOUND 1
|
||||
#define CLIP_SOUND 1
|
||||
#define STEREO_SOUND 1
|
||||
#define POKEYSND_SIGNED_SAMPLES 1
|
||||
#define PAGED_MEM 1
|
||||
#define SOUND 1
|
||||
#define NO_SIMPLE_PAL_BLENDING 1
|
||||
|
||||
#define max_ypos tv_mode
|
||||
|
||||
extern int tv_mode;
|
||||
extern unsigned char INPUT_key_consol;
|
||||
|
||||
enum ESCAPE {
|
||||
ESC_SIOV,
|
||||
/*
|
||||
* These are special device escape codes required by the Basic version
|
||||
*/
|
||||
ESC_E_OPEN,
|
||||
ESC_E_CLOSE,
|
||||
ESC_E_READ,
|
||||
ESC_E_WRITE,
|
||||
ESC_E_STATUS,
|
||||
ESC_E_SPECIAL,
|
||||
|
||||
ESC_K_OPEN,
|
||||
ESC_K_CLOSE,
|
||||
ESC_K_READ,
|
||||
ESC_K_WRITE,
|
||||
ESC_K_STATUS,
|
||||
ESC_K_SPECIAL,
|
||||
/*
|
||||
* These are Escape codes for the normal device handlers.
|
||||
* Some are never used and some are only sometimes used.
|
||||
*/
|
||||
|
||||
ESC_PHOPEN = 0xb0,
|
||||
ESC_PHCLOS = 0xb1,
|
||||
ESC_PHREAD = 0xb2,
|
||||
ESC_PHWRIT = 0xb3,
|
||||
ESC_PHSTAT = 0xb4,
|
||||
ESC_PHSPEC = 0xb5,
|
||||
ESC_PHINIT = 0xb6,
|
||||
|
||||
ESC_HHOPEN = 0xc0,
|
||||
ESC_HHCLOS = 0xc1,
|
||||
ESC_HHREAD = 0xc2,
|
||||
ESC_HHWRIT = 0xc3,
|
||||
ESC_HHSTAT = 0xc4,
|
||||
ESC_HHSPEC = 0xc5,
|
||||
ESC_HHINIT = 0xc6,
|
||||
ESC_BREAK = 0xff
|
||||
};
|
||||
|
||||
#ifndef _TYPEDEF_H
|
||||
#define _TYPEDEF_H
|
||||
|
||||
//data types
|
||||
#define UBYTE unsigned char
|
||||
#define UWORD unsigned short
|
||||
#define ULONG unsigned int
|
||||
|
||||
#define SBYTE signed char
|
||||
#define SWORD signed short
|
||||
#define SLONG signed int
|
||||
|
||||
#define int8 char
|
||||
#define int16 short
|
||||
#define int32 int
|
||||
|
||||
#define uint8 unsigned int8
|
||||
#define uint16 unsigned int16
|
||||
#define uint32 unsigned int32
|
||||
#ifndef FALSE
|
||||
#define FALSE 0
|
||||
#endif
|
||||
#ifndef TRUE
|
||||
#define TRUE 1
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#endif
|
|
@ -0,0 +1,564 @@
|
|||
#include "atari800.h"
|
||||
#include <string.h>
|
||||
#include "memory.h"
|
||||
#include "cpu.h"
|
||||
#include "atari.h"
|
||||
#include "akey.h"
|
||||
#include "pokey.h"
|
||||
#include <Arduino.h>
|
||||
//#include "romatariosa.h"
|
||||
#include "romatariosb.h"
|
||||
//#include "romatarixl.h"
|
||||
#include "antic.h"
|
||||
#include "gtia.h"
|
||||
#include "pia.h"
|
||||
#include "colours.h"
|
||||
#include "emuapi.h"
|
||||
#if HAS_SND
|
||||
#include "pokeysnd.h"
|
||||
#endif
|
||||
|
||||
|
||||
// Controllers
|
||||
typedef struct
|
||||
{
|
||||
// All values are 1 or 0, or perhaps not...
|
||||
int left;
|
||||
int right;
|
||||
int up;
|
||||
int down;
|
||||
int trig;
|
||||
|
||||
} CONTROLLER;
|
||||
|
||||
|
||||
// global variables
|
||||
EXTMEM static unsigned char MemPool[8*1024*1024];
|
||||
unsigned char * memory=&MemPool[0];
|
||||
int tv_mode = TV_PAL;
|
||||
UBYTE INPUT_key_consol;
|
||||
|
||||
|
||||
// local variables
|
||||
static CONTROLLER cont1, cont2;
|
||||
static int INPUT_key_code = AKEY_NONE;
|
||||
static int INPUT_key_shift = 0;
|
||||
|
||||
/* MEMORY MAP INDEX (0 is invalid)
|
||||
* 0-3FFF RAM (read/write)
|
||||
* 4000-7FFF RAM (read/write)
|
||||
* 8000-9FFF BASIC right CART 8K
|
||||
* A000-BFFF BASIC left CART 8K
|
||||
* D000-D0FF GTIA regs
|
||||
* D200-D2FF POKEY regs
|
||||
* D300-D3FF PIA regs
|
||||
* D400-D4FF ANTIC regs
|
||||
* D800-FFFF OS ROM (ro)
|
||||
* E000 I/O expansion
|
||||
*/
|
||||
|
||||
|
||||
// memory CPU read (load) handler
|
||||
uint8 Atari_GetByte(uint16 addr)
|
||||
{
|
||||
if (addr < MEMORY_SIZE) { // MAPPER_RAM
|
||||
return(memory[addr]);
|
||||
}
|
||||
else if ( (addr >= 0xD000) && (addr < 0xD100) ) { // MAPPER_GTIA
|
||||
return GTIA_GetByte(addr,1);
|
||||
}
|
||||
else if ( (addr >= 0xD200) && (addr < 0xD300) ) { // MAPPER_POKEY
|
||||
return POKEY_GetByte(addr,1);
|
||||
}
|
||||
else if ( (addr >= 0xD300) && (addr < 0xD400) ) { // MAPPER_PIA
|
||||
return PIA_GetByte(addr);
|
||||
}
|
||||
else if ( (addr >= 0xD400) && (addr < 0xD500) ) { // MAPPER_ANTIC
|
||||
return ANTIC_GetByte(addr,1);
|
||||
}
|
||||
else if ((addr >= 0xD800) && (addr < 0x10000)) { // MAPPER_ROM (bios)
|
||||
//return(memory[addr]);
|
||||
return(romos[addr-0xD800]);
|
||||
}
|
||||
|
||||
//case MAPPER_IOEXP: // I/O exp read
|
||||
// return IOEXPread(addr);
|
||||
|
||||
return 0xff;
|
||||
}
|
||||
|
||||
// memory CPU write (store) handler
|
||||
void Atari_PutByte(uint16 addr, uint8 byte)
|
||||
{
|
||||
if (addr < 0x8000) { // MAPPER_RAM
|
||||
memory[addr] = byte;
|
||||
}
|
||||
else if (addr < 0xC000) { // MAPPER_ROM
|
||||
}
|
||||
else if ( (addr >= 0xD000) && (addr < 0xD100) ) { // MAPPER_GTIA
|
||||
GTIA_PutByte(addr, byte);
|
||||
}
|
||||
else if ( (addr >= 0xD200) && (addr < 0xD300) ) { // MAPPER_POKEY
|
||||
POKEY_PutByte(addr, byte);
|
||||
}
|
||||
else if ( (addr >= 0xD300) && (addr < 0xD400) ) { // MAPPER_PIA
|
||||
PIA_PutByte(addr, byte);
|
||||
}
|
||||
else if ( (addr >= 0xD400) && (addr < 0xD500) ) { // MAPPER_ANTIC
|
||||
ANTIC_PutByte(addr, byte);
|
||||
}
|
||||
|
||||
//case MAPPER_IOEXP: // I/O exp write
|
||||
// IOEXPwrite(addr, byte);
|
||||
}
|
||||
|
||||
|
||||
static void INPUT_Frame(void)
|
||||
{
|
||||
int i;
|
||||
static int last_key_code = AKEY_NONE;
|
||||
static int last_key_break = 0;
|
||||
|
||||
if (cont1.trig) GTIA_TRIG[0]=0; else GTIA_TRIG[0]=1;
|
||||
|
||||
|
||||
i = (INPUT_key_code == AKEY_BREAK);
|
||||
if (i && !last_key_break) {
|
||||
if (POKEY_IRQEN & 0x80) {
|
||||
POKEY_IRQST &= ~0x80;
|
||||
CPU_GenerateIRQ();
|
||||
}
|
||||
}
|
||||
last_key_break = i;
|
||||
POKEY_SKSTAT |= 0xc;
|
||||
if (INPUT_key_shift)
|
||||
POKEY_SKSTAT &= ~8;
|
||||
|
||||
if (INPUT_key_code < 0) {
|
||||
//if (CASSETTE_press_space) {
|
||||
// INPUT_key_code = AKEY_SPACE;
|
||||
// CASSETTE_press_space = 0;
|
||||
//}
|
||||
//else {
|
||||
last_key_code = AKEY_NONE;
|
||||
//}
|
||||
}
|
||||
if ((INPUT_key_code&~0x17) == AKEY_SHFTCTRL) {
|
||||
INPUT_key_code = AKEY_NONE;
|
||||
}
|
||||
if (INPUT_key_code >= 0) {
|
||||
//emu_printi(INPUT_key_code);
|
||||
POKEY_SKSTAT &= ~4;
|
||||
if ((INPUT_key_code ^ last_key_code) & ~AKEY_SHFTCTRL) {
|
||||
/* ignore if only shift or control has changed its state */
|
||||
last_key_code = INPUT_key_code;
|
||||
POKEY_KBCODE = (UBYTE) INPUT_key_code;
|
||||
if (POKEY_IRQEN & 0x40) {
|
||||
if (POKEY_IRQST & 0x40) {
|
||||
POKEY_IRQST &= ~0x40;
|
||||
CPU_GenerateIRQ();
|
||||
}
|
||||
else {
|
||||
/* keyboard over-run */
|
||||
POKEY_SKSTAT &= ~0x40;
|
||||
/* assert(CPU_IRQ != 0); */
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// check keyboard and set kbcode on VBI (not for A800)
|
||||
void INPUT_Scanline(void)
|
||||
{
|
||||
// if (cont1.trig) GTIA_TRIG[0]=0; else GTIA_TRIG[0]=1;
|
||||
}
|
||||
|
||||
|
||||
static void load_CART(char * cartname)
|
||||
{
|
||||
int flen = emu_FileSize(cartname);
|
||||
int f = emu_FileOpen(cartname, "r+b");
|
||||
if (flen < 16384) {
|
||||
//emu_FileRead(&memory[0xA000], flen, f);
|
||||
emu_printf("8k");
|
||||
for(int i=0; i<flen; i++) memory[0xA000 + i] = emu_FileGetc(f);
|
||||
}
|
||||
else {
|
||||
emu_printf("16k");
|
||||
//emu_FileRead(&memory[0x8000], flen, f);
|
||||
for(int i=0; i<flen; i++) memory[0x8000 + i] = emu_FileGetc(f);
|
||||
}
|
||||
|
||||
emu_FileClose(f);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void add_esc(UWORD address, UBYTE esc_code)
|
||||
{
|
||||
memory[address++] = 0xf2; /* ESC */
|
||||
memory[address++] = esc_code; /* ESC CODE */
|
||||
memory[address] = 0x60; /* RTS */
|
||||
}
|
||||
|
||||
int Atari_PORT(int num)
|
||||
{
|
||||
int nibble_0 = 0xff;
|
||||
int nibble_1 = 0xff;
|
||||
|
||||
if (num == 0)
|
||||
{
|
||||
if (cont1.left) nibble_0 &= ~0x04;
|
||||
if (cont1.right) nibble_0 &= ~0x08;
|
||||
if (cont1.up) nibble_0 &= ~0x01;
|
||||
if (cont1.down) nibble_0 &= ~0x02;
|
||||
if (cont2.left) nibble_1 &= ~0x04;
|
||||
if (cont2.right) nibble_1 &= ~0x08;
|
||||
if (cont2.up) nibble_1 &= ~0x01;
|
||||
if (cont2.down) nibble_1 &= ~0x02;
|
||||
}
|
||||
return (nibble_1 << 4) | nibble_0;
|
||||
}
|
||||
|
||||
static void Initialise(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
emu_printf("Initialising ...");
|
||||
|
||||
// Set up memory area
|
||||
memset(memory, 0, MEMORY_SIZE);
|
||||
memset(memory+0x8000, 0xff, 0x4000);
|
||||
|
||||
// init controllers
|
||||
memset(&cont1, 0, sizeof(CONTROLLER));
|
||||
memset(&cont2, 0, sizeof(CONTROLLER));
|
||||
|
||||
|
||||
// Load bios to address 0xF800
|
||||
//for (i = 0; i < 0x2800; i++)
|
||||
//{
|
||||
// memory[0xD800 + i] = romos[i];
|
||||
//}
|
||||
//add_esc(0xe459, ESC_SIOV);
|
||||
}
|
||||
|
||||
#define INV_KEY 0
|
||||
|
||||
const int16_t keyboardAsciiConv[] = // Ascii to Spectrum keys
|
||||
{
|
||||
/* 0x00 */ INV_KEY,
|
||||
/* 0x01 */ INV_KEY,
|
||||
/* 0x02 */ INV_KEY,
|
||||
/* 0x03 */ INV_KEY,
|
||||
/* 0x04 */ INV_KEY,
|
||||
/* 0x05 */ INV_KEY,
|
||||
/* 0x06 */ INV_KEY,
|
||||
/* 0x07 */ INV_KEY,
|
||||
/* 0x08 */ INV_KEY,
|
||||
/* 0x09 */ 0x2C, // tab
|
||||
/* 0x0A */ 0x0C, // enter
|
||||
/* 0x0B */ INV_KEY,
|
||||
/* 0x0C */ INV_KEY,
|
||||
/* 0x0D */ INV_KEY,
|
||||
/* 0x0E */ INV_KEY,
|
||||
/* 0x0F */ INV_KEY,
|
||||
/* 0x10 */ INV_KEY,
|
||||
/* 0x11 */ INV_KEY,
|
||||
/* 0x12 */ INV_KEY,
|
||||
/* 0x13 */ INV_KEY,
|
||||
/* 0x14 */ INV_KEY,
|
||||
/* 0x15 */ INV_KEY,
|
||||
/* 0x16 */ INV_KEY,
|
||||
/* 0x17 */ INV_KEY,
|
||||
/* 0x18 */ INV_KEY,
|
||||
/* 0x19 */ INV_KEY,
|
||||
/* 0x1A */ INV_KEY,
|
||||
/* 0x1B */ INV_KEY, // esc
|
||||
/* 0x1C */ INV_KEY,
|
||||
/* 0x1D */ INV_KEY,
|
||||
/* 0x1E */ INV_KEY,
|
||||
/* 0x1F */ INV_KEY,
|
||||
/* 0x20 */ 0x21, // space
|
||||
/* 0x21 */ 95, // ! exclamation mark
|
||||
/* 0x22 */ 94, // " double quote
|
||||
/* 0x23 */ 90, // # dies
|
||||
/* 0x24 */ 88, // $ dollar
|
||||
/* 0x25 */ 93, // % percent
|
||||
/* 0x26 */ 91, // & ampercent
|
||||
/* 0x27 */ INV_KEY, // ' singlequote
|
||||
/* 0x28 */ 112, // ( bracket left
|
||||
/* 0x29 */ 114, // ) bracket right
|
||||
/* 0x2A */ 0x0E, // * mult
|
||||
/* 0x2B */ 0x06, // + plus
|
||||
/* 0x2C */ 0x20, // , comma
|
||||
/* 0x2D */ 0x0E, // - minus
|
||||
/* 0x2E */ 0x22, // . period
|
||||
/* 0x2F */ 0x26, // / slash
|
||||
/* 0x30 */ 0x32, // 0
|
||||
/* 0x31 */ 0x1F, // 1
|
||||
/* 0x32 */ 0x1E, // 2
|
||||
/* 0x33 */ 0x1A, // 3
|
||||
/* 0x34 */ 0x18, // 4
|
||||
/* 0x35 */ 0x1D, // 5
|
||||
/* 0x36 */ 0x1B, // 6
|
||||
/* 0x37 */ 0x33, // 7
|
||||
/* 0x38 */ 0x35, // 8
|
||||
/* 0x39 */ 0x30, // 9
|
||||
/* 0x3A */ 66, // : colon
|
||||
/* 0x3B */ 0x02, // ; semi colon
|
||||
/* 0x3C */ 0x36, // <
|
||||
/* 0x3D */ 0x0F, // = equal
|
||||
/* 0x3E */ 0x37, // >
|
||||
/* 0x3F */ 102, // ?
|
||||
/* 0x40 */ 117, // @
|
||||
/* 0x41 */ INV_KEY, // A
|
||||
/* 0x42 */ INV_KEY, // B
|
||||
/* 0x43 */ INV_KEY, // C
|
||||
/* 0x44 */ INV_KEY, // D
|
||||
/* 0x45 */ INV_KEY, // E
|
||||
/* 0x46 */ INV_KEY, // F
|
||||
/* 0x47 */ INV_KEY, // G
|
||||
/* 0x48 */ INV_KEY, // H
|
||||
/* 0x49 */ INV_KEY, // I
|
||||
/* 0x4A */ INV_KEY, // J
|
||||
/* 0x4B */ INV_KEY, // K
|
||||
/* 0x4C */ INV_KEY, // L
|
||||
/* 0x4D */ INV_KEY, // M
|
||||
/* 0x4E */ INV_KEY, // N
|
||||
/* 0x4F */ INV_KEY, // O
|
||||
/* 0x50 */ INV_KEY, // P
|
||||
/* 0x51 */ INV_KEY, // Q
|
||||
/* 0x52 */ INV_KEY, // R
|
||||
/* 0x53 */ INV_KEY, // S
|
||||
/* 0x54 */ INV_KEY, // T
|
||||
/* 0x55 */ INV_KEY, // U
|
||||
/* 0x56 */ INV_KEY, // V
|
||||
/* 0x57 */ INV_KEY, // W
|
||||
/* 0x58 */ INV_KEY, // X
|
||||
/* 0x59 */ INV_KEY, // Y
|
||||
/* 0x5A */ INV_KEY, // Z
|
||||
/* 0x5B */ INV_KEY, // square bracket open
|
||||
/* 0x5C */ INV_KEY, // backslach
|
||||
/* 0x5D */ INV_KEY, // square braquet close
|
||||
/* 0x5E */ INV_KEY, // ^ circonflex
|
||||
/* 0x5F */ INV_KEY, // _ undescore
|
||||
/* 0x60 */ INV_KEY, // `backquote
|
||||
/* 0x61 */ 0x3F, // a
|
||||
/* 0x62 */ 0x15, // b
|
||||
/* 0x63 */ 0x12, // c
|
||||
/* 0x64 */ 0x3A, // d
|
||||
/* 0x65 */ 0x2A, // e
|
||||
/* 0x66 */ 0x38, // f
|
||||
/* 0x67 */ 0x3D, // g
|
||||
/* 0x68 */ 0x39, // h
|
||||
/* 0x69 */ 0x0D, // i
|
||||
/* 0x6A */ 0x01, // j
|
||||
/* 0x6B */ 0x05, // k
|
||||
/* 0x6C */ 0x00, // l
|
||||
/* 0x6D */ 0x25, // m
|
||||
/* 0x6E */ 0x23, // n
|
||||
/* 0x6F */ 0x08, // o
|
||||
/* 0x70 */ 0x0A, // p
|
||||
/* 0x71 */ 0x2F, // q
|
||||
/* 0x72 */ 0x28, // r
|
||||
/* 0x73 */ 0x3E, // s
|
||||
/* 0x74 */ 0x2D, // t
|
||||
/* 0x75 */ 0x0B, // u
|
||||
/* 0x76 */ 0x10, // v
|
||||
/* 0x77 */ 0x2E, // w
|
||||
/* 0x78 */ 0x15, // x
|
||||
/* 0x79 */ 0x2B, // y
|
||||
/* 0x7A */ 0x17, // z
|
||||
/* 0x7B */ INV_KEY, // curly bracket open
|
||||
/* 0x7C */ INV_KEY, // or
|
||||
/* 0x7D */ INV_KEY, // curly bracket close
|
||||
/* 0x7E */ INV_KEY, // tilt
|
||||
/* 0x7F */ 0x34, // backspace
|
||||
|
||||
/* 0xC0 */ INV_KEY,
|
||||
/* 0xC1 */ INV_KEY,
|
||||
/* 0xC2 */ INV_KEY, // F1
|
||||
/* 0xC3 */ INV_KEY, // F2
|
||||
/* 0xC4 */ INV_KEY, // F3
|
||||
/* 0xC5 */ INV_KEY, // F4
|
||||
/* 0xC6 */ INV_KEY, // F5
|
||||
/* 0xC7 */ INV_KEY, // F6
|
||||
/* 0xC8 */ INV_KEY, // F7
|
||||
/* 0xC9 */ INV_KEY, // F8
|
||||
/* 0xCA */ INV_KEY, // F9
|
||||
/* 0xCB */ INV_KEY, // F10
|
||||
/* 0xCC */ INV_KEY,
|
||||
/* 0xCD */ INV_KEY,
|
||||
/* 0xCE */ INV_KEY,
|
||||
/* 0xCF */ INV_KEY,
|
||||
/* 0xD0 */ INV_KEY,
|
||||
/* 0xD1 */ INV_KEY,
|
||||
/* 0xD2 */ INV_KEY,
|
||||
/* 0xD3 */ INV_KEY,
|
||||
/* 0xD4 */ INV_KEY, // DEL
|
||||
/* 0xD5 */ INV_KEY,
|
||||
/* 0xD6 */ INV_KEY,
|
||||
/* 0xD7 */ INV_KEY, // U
|
||||
/* 0xD8 */ INV_KEY, // L
|
||||
/* 0xD9 */ INV_KEY, // R
|
||||
/* 0xDA */ INV_KEY, // D
|
||||
/* 0xDB */ INV_KEY,
|
||||
/* 0xDC */ INV_KEY,
|
||||
/* 0xDD */ INV_KEY,
|
||||
/* 0xDE */ INV_KEY,
|
||||
/* 0xDF */ INV_KEY
|
||||
};
|
||||
|
||||
|
||||
static int ik; // joypad key
|
||||
static int ihk; // I2C keyboard key
|
||||
static int iusbhk; // USB keyboard key
|
||||
static int prevhk; // previous keyboard key
|
||||
|
||||
void emu_KeyboardOnDown(int keymodifer, int key) {
|
||||
int keyCode = -1; //INV_KEY;
|
||||
if ((key >=0xc0) && (key <=0xdf)) {
|
||||
keyCode = ((key-0xc0) & 0x1f) + 0x80;
|
||||
}
|
||||
else {
|
||||
keyCode = key & 0x7f;
|
||||
}
|
||||
|
||||
//emu_printh(key);
|
||||
//emu_printh(keyCode);
|
||||
|
||||
if (keyCode != -1) {
|
||||
iusbhk = keyCode;
|
||||
}
|
||||
}
|
||||
|
||||
void emu_KeyboardOnUp(int keymodifer, int key) {
|
||||
iusbhk = 0;
|
||||
}
|
||||
|
||||
void at8_Input(int click) {
|
||||
ik = emu_GetPad();
|
||||
ihk = emu_ReadI2CKeyboard();
|
||||
}
|
||||
|
||||
void at8_Init(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
// Palette
|
||||
for (i = 0; i < PALETTE_SIZE; i++)
|
||||
{
|
||||
emu_SetPaletteEntry(R32(colourtable[i]), G32(colourtable[i]), B32(colourtable[i]), i);
|
||||
}
|
||||
|
||||
#if HAS_SND
|
||||
emu_sndInit();
|
||||
POKEYSND_Init(POKEYSND_FREQ_17_APPROX, 44100, 1, POKEYSND_BIT16);
|
||||
#endif
|
||||
|
||||
emu_printf("Allocating RAM");
|
||||
if (memory == NULL) memory = emu_Malloc(MEMORY_SIZE);
|
||||
|
||||
Initialise();
|
||||
}
|
||||
|
||||
|
||||
|
||||
void at8_Step(void)
|
||||
{
|
||||
int k = ik;
|
||||
int hk = ihk;
|
||||
if (iusbhk) hk = iusbhk;
|
||||
|
||||
CONTROLLER * which;
|
||||
|
||||
if (k & 0x8000) which=&cont2;
|
||||
else which=&cont1;
|
||||
|
||||
// Start
|
||||
if (k & MASK_KEY_USER1)
|
||||
INPUT_key_consol &= ~0x01;
|
||||
else
|
||||
INPUT_key_consol |= 0x01;
|
||||
|
||||
// Select
|
||||
if (k & MASK_KEY_USER2)
|
||||
INPUT_key_consol &= ~0x02;
|
||||
else
|
||||
INPUT_key_consol |= 0x02;
|
||||
|
||||
// OPTION
|
||||
if (k & MASK_KEY_USER3)
|
||||
INPUT_key_consol &= ~0x04;
|
||||
else
|
||||
INPUT_key_consol |= 0x04;
|
||||
|
||||
if (hk != 0) {
|
||||
int key = keyboardAsciiConv[hk];
|
||||
if (key != INV_KEY) INPUT_key_code = key;
|
||||
}
|
||||
else {
|
||||
INPUT_key_code = AKEY_NONE;
|
||||
}
|
||||
|
||||
// Keyboard
|
||||
INPUT_Frame();
|
||||
|
||||
// Joystick side button, trigger and directions
|
||||
if (k & MASK_JOY2_BTN)
|
||||
which->trig = 1;
|
||||
else
|
||||
which->trig = 0;
|
||||
if (k & MASK_JOY2_DOWN)
|
||||
which->down = 1;
|
||||
else
|
||||
which->down = 0;
|
||||
if (k & MASK_JOY2_UP)
|
||||
which->up = 1;
|
||||
else
|
||||
which->up = 0;
|
||||
if (k & MASK_JOY2_RIGHT)
|
||||
which->left = 1;
|
||||
else
|
||||
which->left = 0;
|
||||
if (k & MASK_JOY2_LEFT)
|
||||
which->right = 1;
|
||||
else
|
||||
which->right = 0;
|
||||
|
||||
GTIA_Frame();
|
||||
ANTIC_Frame(1);
|
||||
emu_DrawVsync();
|
||||
POKEY_Frame();
|
||||
}
|
||||
|
||||
|
||||
|
||||
void at8_Start(char * cartname)
|
||||
{
|
||||
load_CART(cartname);
|
||||
|
||||
emu_printf("antic");
|
||||
ANTIC_Initialise();
|
||||
emu_printf("gtia");
|
||||
GTIA_Initialise();
|
||||
emu_printf("pia");
|
||||
PIA_Initialise();
|
||||
emu_printf("pokey");
|
||||
POKEY_Initialise();
|
||||
PORTA = 0x00;
|
||||
ANTIC_NMIEN = 0x00;
|
||||
ANTIC_NMIST = 0x00;
|
||||
memory[0x244] = 1;
|
||||
GTIA_TRIG[0]=1;
|
||||
GTIA_TRIG[1]=1;
|
||||
GTIA_TRIG[2]=1;
|
||||
GTIA_TRIG[3]=1;
|
||||
emu_printf("6502 reset");
|
||||
CPU_Reset();
|
||||
|
||||
emu_printf("init done");
|
||||
}
|
|
@ -0,0 +1,4 @@
|
|||
extern void at8_Init(void);
|
||||
extern void at8_Step(void);
|
||||
extern void at8_Start(char * filename);
|
||||
extern void at8_Input(int click);
|
|
@ -0,0 +1,68 @@
|
|||
const unsigned int colourtable[256] =
|
||||
{
|
||||
0x0, 0x1c1c1c, 0x393939, 0x595959,
|
||||
0x797979, 0x929292, 0xababab, 0xbcbcbc,
|
||||
0xcdcdcd, 0xd9d9d9, 0xe6e6e6, 0xececec,
|
||||
0xf2f2f2, 0xf8f8f8, 0xffffff, 0xffffff,
|
||||
0x391701, 0x5e2304, 0x833008, 0xa54716,
|
||||
0xc85f24, 0xe37820, 0xff911d, 0xffab1d,
|
||||
0xffc51d, 0xffce34, 0xffd84c, 0xffe651,
|
||||
0xfff456, 0xfff977, 0xffff98, 0xffff98,
|
||||
0x451904, 0x721e11, 0x9f241e, 0xb33a20,
|
||||
0xc85122, 0xe36920, 0xff811e, 0xff8c25,
|
||||
0xff982c, 0xffae38, 0xffc545, 0xffc559,
|
||||
0xffc66d, 0xffd587, 0xffe4a1, 0xffe4a1,
|
||||
0x4a1704, 0x7e1a0d, 0xb21d17, 0xc82119,
|
||||
0xdf251c, 0xec3b38, 0xfa5255, 0xfc6161,
|
||||
0xff706e, 0xff7f7e, 0xff8f8f, 0xff9d9e,
|
||||
0xffabad, 0xffb9bd, 0xffc7ce, 0xffc7ce,
|
||||
0x50568, 0x3b136d, 0x712272, 0x8b2a8c,
|
||||
0xa532a6, 0xb938ba, 0xcd3ecf, 0xdb47dd,
|
||||
0xea51eb, 0xf45ff5, 0xfe6dff, 0xfe7afd,
|
||||
0xff87fb, 0xff95fd, 0xffa4ff, 0xffa4ff,
|
||||
0x280479, 0x400984, 0x590f90, 0x70249d,
|
||||
0x8839aa, 0xa441c3, 0xc04adc, 0xd054ed,
|
||||
0xe05eff, 0xe96dff, 0xf27cff, 0xf88aff,
|
||||
0xff98ff, 0xfea1ff, 0xfeabff, 0xfeabff,
|
||||
0x35088a, 0x420aad, 0x500cd0, 0x6428d0,
|
||||
0x7945d0, 0x8d4bd4, 0xa251d9, 0xb058ec,
|
||||
0xbe60ff, 0xc56bff, 0xcc77ff, 0xd183ff,
|
||||
0xd790ff, 0xdb9dff, 0xdfaaff, 0xdfaaff,
|
||||
0x51e81, 0x626a5, 0x82fca, 0x263dd4,
|
||||
0x444cde, 0x4f5aee, 0x5a68ff, 0x6575ff,
|
||||
0x7183ff, 0x8091ff, 0x90a0ff, 0x97a9ff,
|
||||
0x9fb2ff, 0xafbeff, 0xc0cbff, 0xc0cbff,
|
||||
0xc048b, 0x2218a0, 0x382db5, 0x483ec7,
|
||||
0x584fda, 0x6159ec, 0x6b64ff, 0x7a74ff,
|
||||
0x8a84ff, 0x918eff, 0x9998ff, 0xa5a3ff,
|
||||
0xb1aeff, 0xb8b8ff, 0xc0c2ff, 0xc0c2ff,
|
||||
0x1d295a, 0x1d3876, 0x1d4892, 0x1c5cac,
|
||||
0x1c71c6, 0x3286cf, 0x489bd9, 0x4ea8ec,
|
||||
0x55b6ff, 0x70c7ff, 0x8cd8ff, 0x93dbff,
|
||||
0x9bdfff, 0xafe4ff, 0xc3e9ff, 0xc3e9ff,
|
||||
0x2f4302, 0x395202, 0x446103, 0x417a12,
|
||||
0x3e9421, 0x4a9f2e, 0x57ab3b, 0x5cbd55,
|
||||
0x61d070, 0x69e27a, 0x72f584, 0x7cfa8d,
|
||||
0x87ff97, 0x9affa6, 0xadffb6, 0xadffb6,
|
||||
0xa4108, 0xd540a, 0x10680d, 0x137d0f,
|
||||
0x169212, 0x19a514, 0x1cb917, 0x1ec919,
|
||||
0x21d91b, 0x47e42d, 0x6ef040, 0x78f74d,
|
||||
0x83ff5b, 0x9aff7a, 0xb2ff9a, 0xb2ff9a,
|
||||
0x4410b, 0x5530e, 0x66611, 0x77714,
|
||||
0x88817, 0x99b1a, 0xbaf1d, 0x48c41f,
|
||||
0x86d922, 0x8fe924, 0x99f927, 0xa8fc41,
|
||||
0xb7ff5b, 0xc9ff6e, 0xdcff81, 0xdcff81,
|
||||
0x2350f, 0x73f15, 0xc4a1c, 0x2d5f1e,
|
||||
0x4f7420, 0x598324, 0x649228, 0x82a12e,
|
||||
0xa1b034, 0xa9c13a, 0xb2d241, 0xc4d945,
|
||||
0xd6e149, 0xe4f04e, 0xf2ff53, 0xf2ff53,
|
||||
0x263001, 0x243803, 0x234005, 0x51541b,
|
||||
0x806931, 0x978135, 0xaf993a, 0xc2a73e,
|
||||
0xd5b543, 0xdbc03d, 0xe1cb38, 0xe2d836,
|
||||
0xe3e534, 0xeff258, 0xfbff7d, 0xfbff7d,
|
||||
0x401a02, 0x581f05, 0x702408, 0x8d3a13,
|
||||
0xab511f, 0xb56427, 0xbf7730, 0xd0853a,
|
||||
0xe19344, 0xeda04e, 0xf9ad58, 0xfcb75c,
|
||||
0xffc160, 0xffc671, 0xffcb83, 0xffcb83,
|
||||
};
|
||||
|
Plik diff jest za duży
Load Diff
|
@ -0,0 +1,65 @@
|
|||
#ifndef CPU_H_
|
||||
#define CPU_H_
|
||||
|
||||
#include "atari.h"
|
||||
|
||||
#define CPU_N_FLAG 0x80
|
||||
#define CPU_V_FLAG 0x40
|
||||
#define CPU_B_FLAG 0x10
|
||||
#define CPU_D_FLAG 0x08
|
||||
#define CPU_I_FLAG 0x04
|
||||
#define CPU_Z_FLAG 0x02
|
||||
#define CPU_C_FLAG 0x01
|
||||
|
||||
void CPU_GetStatus(void);
|
||||
void CPU_PutStatus(void);
|
||||
void CPU_Reset(void);
|
||||
void CPU_StateSave(UBYTE SaveVerbose);
|
||||
void CPU_StateRead(UBYTE SaveVerbose, UBYTE StateVersion);
|
||||
void CPU_NMI(void);
|
||||
void CPU_GO(int limit);
|
||||
#define CPU_GenerateIRQ() (CPU_IRQ = 1)
|
||||
|
||||
extern UWORD CPU_regPC;
|
||||
extern UBYTE CPU_regA;
|
||||
extern UBYTE CPU_regP;
|
||||
extern UBYTE CPU_regS;
|
||||
extern UBYTE CPU_regY;
|
||||
extern UBYTE CPU_regX;
|
||||
|
||||
#define CPU_SetN CPU_regP |= CPU_N_FLAG
|
||||
#define CPU_ClrN CPU_regP &= (~CPU_N_FLAG)
|
||||
#define CPU_SetV CPU_regP |= CPU_V_FLAG
|
||||
#define CPU_ClrV CPU_regP &= (~CPU_V_FLAG)
|
||||
#define CPU_SetB CPU_regP |= CPU_B_FLAG
|
||||
#define CPU_ClrB CPU_regP &= (~CPU_B_FLAG)
|
||||
#define CPU_SetD CPU_regP |= CPU_D_FLAG
|
||||
#define CPU_ClrD CPU_regP &= (~CPU_D_FLAG)
|
||||
#define CPU_SetI CPU_regP |= CPU_I_FLAG
|
||||
#define CPU_ClrI CPU_regP &= (~CPU_I_FLAG)
|
||||
#define CPU_SetZ CPU_regP |= CPU_Z_FLAG
|
||||
#define CPU_ClrZ CPU_regP &= (~CPU_Z_FLAG)
|
||||
#define CPU_SetC CPU_regP |= CPU_C_FLAG
|
||||
#define CPU_ClrC CPU_regP &= (~CPU_C_FLAG)
|
||||
|
||||
extern UBYTE CPU_IRQ;
|
||||
|
||||
extern void (*CPU_rts_handler)(void);
|
||||
|
||||
extern UBYTE CPU_cim_encountered;
|
||||
|
||||
#define CPU_REMEMBER_PC_STEPS 64
|
||||
extern UWORD CPU_remember_PC[CPU_REMEMBER_PC_STEPS];
|
||||
extern UBYTE CPU_remember_op[CPU_REMEMBER_PC_STEPS][3];
|
||||
extern unsigned int CPU_remember_PC_curpos;
|
||||
extern int CPU_remember_xpos[CPU_REMEMBER_PC_STEPS];
|
||||
|
||||
#define CPU_REMEMBER_JMP_STEPS 16
|
||||
extern UWORD CPU_remember_JMP[CPU_REMEMBER_JMP_STEPS];
|
||||
extern unsigned int CPU_remember_jmp_curpos;
|
||||
|
||||
#ifdef MONITOR_PROFILE
|
||||
extern int CPU_instruction_count[256];
|
||||
#endif
|
||||
|
||||
#endif /* CPU_H_ */
|
|
@ -0,0 +1,86 @@
|
|||
/* CRC32.C -- Calculates 32bit CRC checksum
|
||||
*/
|
||||
// modified main() (see crc32.orig) to get calc_crc32() function
|
||||
// JH 2002
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
const unsigned long crc32_table[256] = { /* lookup table */
|
||||
0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419, 0x706AF48F,
|
||||
0xE963A535, 0x9E6495A3, 0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988,
|
||||
0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91, 0x1DB71064, 0x6AB020F2,
|
||||
0xF3B97148, 0x84BE41DE, 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7,
|
||||
0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, 0x14015C4F, 0x63066CD9,
|
||||
0xFA0F3D63, 0x8D080DF5, 0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172,
|
||||
0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B, 0x35B5A8FA, 0x42B2986C,
|
||||
0xDBBBC9D6, 0xACBCF940, 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59,
|
||||
0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423,
|
||||
0xCFBA9599, 0xB8BDA50F, 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924,
|
||||
0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D, 0x76DC4190, 0x01DB7106,
|
||||
0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433,
|
||||
0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818, 0x7F6A0DBB, 0x086D3D2D,
|
||||
0x91646C97, 0xE6635C01, 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E,
|
||||
0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457, 0x65B0D9C6, 0x12B7E950,
|
||||
0x8BBEB8EA, 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65,
|
||||
0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2, 0x4ADFA541, 0x3DD895D7,
|
||||
0xA4D1C46D, 0xD3D6F4FB, 0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0,
|
||||
0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9, 0x5005713C, 0x270241AA,
|
||||
0xBE0B1010, 0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F,
|
||||
0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17, 0x2EB40D81,
|
||||
0xB7BD5C3B, 0xC0BA6CAD, 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A,
|
||||
0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683, 0xE3630B12, 0x94643B84,
|
||||
0x0D6D6A3E, 0x7A6A5AA8, 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1,
|
||||
0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE, 0xF762575D, 0x806567CB,
|
||||
0x196C3671, 0x6E6B06E7, 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC,
|
||||
0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5, 0xD6D6A3E8, 0xA1D1937E,
|
||||
0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B,
|
||||
0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55,
|
||||
0x316E8EEF, 0x4669BE79, 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236,
|
||||
0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F, 0xC5BA3BBE, 0xB2BD0B28,
|
||||
0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D,
|
||||
0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A, 0x9C0906A9, 0xEB0E363F,
|
||||
0x72076785, 0x05005713, 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38,
|
||||
0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, 0x86D3D2D4, 0xF1D4E242,
|
||||
0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777,
|
||||
0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C, 0x8F659EFF, 0xF862AE69,
|
||||
0x616BFFD3, 0x166CCF45, 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2,
|
||||
0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB, 0xAED16A4A, 0xD9D65ADC,
|
||||
0x40DF0B66, 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9,
|
||||
0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605, 0xCDD70693,
|
||||
0x54DE5729, 0x23D967BF, 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94,
|
||||
0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D};
|
||||
|
||||
unsigned long calc_crc32(unsigned char *buf, int buflen)
|
||||
{
|
||||
// buf is pointer to input buffer (data to crc)
|
||||
// buflen is length of input buffer
|
||||
|
||||
unsigned long crc; /* CRC value */
|
||||
//size_t j; /* buffer positions*/
|
||||
int j; /* buffer positions*/
|
||||
int k; /* generic integer */
|
||||
|
||||
#ifdef DEBUG
|
||||
printf("32bit Cyclic Redudancy Check\n");
|
||||
#endif
|
||||
|
||||
crc = 0xFFFFFFFF; /* preconditioning sets non zero value */
|
||||
|
||||
/* loop through the buffer and calculate CRC */
|
||||
for(j=0; j<buflen; j++){
|
||||
k=(crc ^ buf[j]) & 0x000000FFL;
|
||||
crc=((crc >> 8) & 0x00FFFFFFL) ^ crc32_table[k];
|
||||
}
|
||||
|
||||
crc=~crc; /* postconditioning */
|
||||
|
||||
/* print results */
|
||||
#ifdef DEBUG
|
||||
printf("CRC32 is %08lX\n", crc);
|
||||
#endif
|
||||
|
||||
return crc;
|
||||
}
|
||||
|
||||
|
Plik diff jest za duży
Load Diff
|
@ -0,0 +1,214 @@
|
|||
#ifndef EMUAPI_H
|
||||
#define EMUAPI_H
|
||||
|
||||
#include "platform_config.h"
|
||||
|
||||
#define CUSTOM_SND 1
|
||||
//#define TIMER_REND 1
|
||||
#define EXTRA_HEAP 0x10
|
||||
|
||||
// Title: < >
|
||||
#define TITLE " Atari 800 Emulator"
|
||||
#define ROMSDIR "800"
|
||||
|
||||
#define emu_Init(ROM) {at8_Init(); at8_Start(ROM);}
|
||||
#define emu_Step(x) {at8_Step();}
|
||||
#define emu_Input(x) {at8_Input(x);}
|
||||
|
||||
#define MAX_FILENAME_PATH 64
|
||||
#define NB_FILE_HANDLER 4
|
||||
#define PALETTE_SIZE 256
|
||||
#define VID_FRAME_SKIP 0x0
|
||||
#define TFT_VBUFFER_YCROP 0
|
||||
#define SINGLELINE_RENDERING 1
|
||||
|
||||
#define R32(rgb) ((rgb>>16)&0xff)
|
||||
#define G32(rgb) ((rgb>>8)&0xff)
|
||||
#define B32(rgb) (rgb & 0xff)
|
||||
|
||||
#define ACTION_NONE 0
|
||||
#define ACTION_MAXKBDVAL 16
|
||||
#define ACTION_EXITKBD 128
|
||||
#define ACTION_RUN1 129
|
||||
#define ACTION_RUN2 130
|
||||
#define ACTION_RUN3 131
|
||||
|
||||
#ifdef KEYMAP_PRESENT
|
||||
|
||||
#define keylables_map0_0 (char *)"qwertyuiop\x1a"
|
||||
#define keylables_map0_1 (char *)" asdfghjkl\x19"
|
||||
#define keylables_map0_2 (char *)" zxcvbnm,.;/"
|
||||
#define keylables_map0_3 (char *)" +\x10-"
|
||||
const unsigned short key_map0[] = {
|
||||
'q','w','e','r','t','y','u','i','o','p',127, //lowecase
|
||||
0,'a','s','d','f','g','h','j','k','l',10,
|
||||
0,'z','x','c','v','b','n','m',',','.',';','/',
|
||||
0,0,0,0,
|
||||
0,'+',' ','-'
|
||||
};
|
||||
|
||||
#define keylables_map1_0 (char *)" \x1a"
|
||||
#define keylables_map1_1 (char *)" \x19"
|
||||
#define keylables_map1_2 (char *)" <>:?"
|
||||
#define keylables_map1_3 (char *)" =\x10 "
|
||||
const unsigned short key_map1[] = {
|
||||
'1','2','3','4','5','6','7','8','9','0',127, // digit keys
|
||||
0, 0,0,0,0,0,0,0,0,0,10,
|
||||
0, 0,0,0,0,0,0,0,'<','>',':','?',
|
||||
154,152,151,153, //U L R D
|
||||
0,'=',' ',0
|
||||
};
|
||||
|
||||
#define keylables_map2_0 (char *)"!\"#$%^&*()@"
|
||||
#define keylables_map2_1 (char *)" \x19"
|
||||
#define keylables_map2_2 (char *)" <>:?"
|
||||
#define keylables_map2_3 (char *)" =\x10 "
|
||||
const unsigned short key_map2[] = {
|
||||
'!','"','#','$','%','^','&','*','(',')','@', // shiftothers
|
||||
9, 0,0,0,0,0,0,0,0,0,10,
|
||||
0, 0,0,0,0,0,0,0,'<','>',':','?',
|
||||
154,152,151,153, //U L R D
|
||||
0,'=',' ',0
|
||||
};
|
||||
|
||||
#define keylables_map3_0 (char *)"1234567890 "
|
||||
#define keylables_map3_1 (char *)" "
|
||||
#define keylables_map3_2 (char *)" "
|
||||
#define keylables_map3_3 (char *)" "
|
||||
|
||||
const unsigned short key_map3[] = {
|
||||
'1','2','3','4','5','6','7','8','9','0',0, // digit keys
|
||||
0, 0,0,0,0,0,0,0,0,0,0,
|
||||
0, 0,0,0,0,0,0,0,0,0,0,0,
|
||||
154,152,151,153, //U L R D
|
||||
0,0,' ',0
|
||||
};
|
||||
|
||||
#define keylables_map4_0 (char *)" "
|
||||
#define keylables_map4_1 (char *)" "
|
||||
#define keylables_map4_2 (char *)" "
|
||||
#define keylables_map4_3 (char *)" "
|
||||
|
||||
const unsigned short key_map4[] = {
|
||||
0,0,0,0,0,0,0,0,0,0,0, // function keys
|
||||
0, 0,0,0,0,0,0,0,0,0,0,
|
||||
0, 0,0,0,0,0,0,0,0,0,0,0,
|
||||
154,152,151,153, //U L R D
|
||||
0,0,' ',0
|
||||
};
|
||||
|
||||
#define keylables_map5_0 (char *)" "
|
||||
#define keylables_map5_1 (char *)" "
|
||||
#define keylables_map5_2 (char *)" "
|
||||
#define keylables_map5_3 (char *)" "
|
||||
|
||||
const unsigned short key_map5[] = {
|
||||
0,0,0,0,0,0,0,0,0,0,0, // extra keys
|
||||
0, 0,0,0,0,0,0,0,0,0,0,
|
||||
0, 0,0,0,0,0,0,0,0,0,0,0,
|
||||
154,152,151,153, //U L R D
|
||||
0,0,' ',0
|
||||
};
|
||||
|
||||
const unsigned short matkeys[] = {
|
||||
0x004,0x008,0x108,0x104,0x208,0x204,0x308,0x304,0x408,0x404,0x410, // row 1
|
||||
0x502,0x002,0x020,0x102,0x120,0x202,0x220,0x302,0x320,0x402,0x420, // row 2
|
||||
0x508,0x001,0x040,0x101,0x140,0x201,0x240,0x210,0x340,0x301,0x401,0x440, // row 3
|
||||
0x504,0x520,0x540,0x501, // UP LEFT RIGHT DOWN
|
||||
0x510,0x010,0x110,0x310, // row 4
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#define MASK_JOY2_RIGHT 0x0001
|
||||
#define MASK_JOY2_LEFT 0x0002
|
||||
#define MASK_JOY2_UP 0x0004
|
||||
#define MASK_JOY2_DOWN 0x0008
|
||||
#define MASK_JOY2_BTN 0x0010
|
||||
#define MASK_KEY_USER1 0x0020
|
||||
#define MASK_KEY_USER2 0x0040
|
||||
#define MASK_KEY_USER3 0x0080
|
||||
#define MASK_JOY1_RIGHT 0x0100
|
||||
#define MASK_JOY1_LEFT 0x0200
|
||||
#define MASK_JOY1_UP 0x0400
|
||||
#define MASK_JOY1_DOWN 0x0800
|
||||
#define MASK_JOY1_BTN 0x1000
|
||||
#define MASK_KEY_USER4 0x2000
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#else
|
||||
#define bool unsigned char
|
||||
#endif
|
||||
|
||||
extern void emu_init(void);
|
||||
extern void emu_start(void);
|
||||
extern void emu_printf(const char * text);
|
||||
extern void emu_printi(int val);
|
||||
extern void emu_printh(int val);
|
||||
extern void * emu_Malloc(unsigned int size);
|
||||
extern void * emu_MallocI(unsigned int size);
|
||||
extern void emu_Free(void * pt);
|
||||
|
||||
extern int emu_FileOpen(const char * filepath, const char * mode);
|
||||
extern int emu_FileRead(void * buf, int size, int handler);
|
||||
extern int emu_FileGetc(int handler);
|
||||
extern int emu_FileSeek(int handler, int seek, int origin);
|
||||
extern int emu_FileTell(int handler);
|
||||
extern void emu_FileClose(int handler);
|
||||
|
||||
extern unsigned int emu_FileSize(const char * filepath);
|
||||
extern unsigned int emu_LoadFile(const char * filepath, void * buf, int size);
|
||||
extern unsigned int emu_LoadFileSeek(const char * filepath, void * buf, int size, int seek);
|
||||
|
||||
extern void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index);
|
||||
extern void emu_DrawScreen(unsigned char * VBuf, int width, int height, int stride);
|
||||
extern void emu_DrawLine(unsigned char * VBuf, int width, int height, int line);
|
||||
extern void emu_DrawLine16(unsigned short * VBuf, int width, int height, int line);
|
||||
extern void emu_DrawLine8(unsigned char * VBuf, int width, int height, int line);
|
||||
extern void emu_CopyLine(int width, int height, int ysrc, int ydst);
|
||||
extern void emu_DrawVsync(void);
|
||||
extern int emu_FrameSkip(void);
|
||||
extern void * emu_LineBuffer(int line);
|
||||
extern void emu_tweakVideo(int shiftdelta, int numdelta, int denomdelta);
|
||||
|
||||
extern bool menuActive(void);
|
||||
extern char * menuSelection(void);
|
||||
extern char * menuSecondSelection(void);
|
||||
extern void toggleMenu(bool on);
|
||||
extern int handleMenu(unsigned short bClick);
|
||||
|
||||
extern int handleOSKB(void);
|
||||
extern void toggleOSKB(bool forceon);
|
||||
|
||||
extern void emu_InitJoysticks(void);
|
||||
extern int emu_SwapJoysticks(int statusOnly);
|
||||
extern unsigned short emu_DebounceLocalKeys(void);
|
||||
extern int emu_ReadKeys(void);
|
||||
extern int emu_GetPad(void);
|
||||
extern int emu_GetMouse(int *x, int *y, int *buts);
|
||||
extern int emu_MouseDetected(void);
|
||||
extern int emu_KeyboardDetected(void);
|
||||
extern int emu_ReadAnalogJoyX(int min, int max);
|
||||
extern int emu_ReadAnalogJoyY(int min, int max);
|
||||
extern int emu_ReadI2CKeyboard(void);
|
||||
extern unsigned char emu_ReadI2CKeyboard2(int row);
|
||||
extern void emu_KeyboardOnUp(int keymodifer, int key);
|
||||
extern void emu_KeyboardOnDown(int keymodifer, int key);
|
||||
extern void emu_MidiOnDataReceived(unsigned char data);
|
||||
|
||||
extern void emu_sndPlaySound(int chan, int volume, int freq);
|
||||
extern void emu_sndPlayBuzz(int size, int val);
|
||||
extern void emu_sndInit();
|
||||
extern void emu_resetus(void);
|
||||
extern int emu_us(void);
|
||||
|
||||
extern int emu_setKeymap(int index);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
|
@ -0,0 +1,148 @@
|
|||
|
||||
// Font: c64_lower.64c
|
||||
|
||||
PROGMEM const unsigned char font8x8[128][8] =
|
||||
{
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0000 (nul)
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0001
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0002
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0003
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0004
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0005
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0006
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0007
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0008
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0009
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000A
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000B
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000C
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000D
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000E
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+000F
|
||||
|
||||
{ 0x7f, 0x41, 0x41, 0x41, 0x41, 0x41, 0x7f, 0x00 }, // Space // 0x10
|
||||
{ 0x00, 0x27, 0x31, 0x27, 0x21, 0x71, 0x00, 0x00 }, // F1 // 0x11
|
||||
{ 0x00, 0x77, 0x41, 0x77, 0x11, 0x71, 0x00, 0x00 }, // F2
|
||||
{ 0x00, 0x77, 0x41, 0x77, 0x41, 0x71, 0x00, 0x00 }, // F3
|
||||
{ 0x00, 0x17, 0x51, 0x77, 0x41, 0x41, 0x00, 0x00 }, // F4
|
||||
{ 0x00, 0x77, 0x11, 0x77, 0x41, 0x71, 0x00, 0x00 }, // F5
|
||||
{ 0x00, 0x77, 0x11, 0x77, 0x51, 0x71, 0x00, 0x00 }, // F6
|
||||
{ 0x00, 0x77, 0x41, 0x47, 0x41, 0x41, 0x00, 0x00 }, // F7
|
||||
{ 0x00, 0x77, 0x51, 0x77, 0x51, 0x71, 0x00, 0x00 }, // F8 // 0x18
|
||||
{ 0x00, 0x00, 0x20, 0x24, 0x3e, 0x04, 0x00, 0x00 }, // Return // 0x19
|
||||
{ 0x00, 0x59, 0x4b, 0x5b, 0x4b, 0xd9, 0x00, 0x00 }, // Del // 0x1A
|
||||
//{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0010
|
||||
//{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0011
|
||||
//{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0012
|
||||
//{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0013
|
||||
//{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0014
|
||||
//{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0015
|
||||
//{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0016
|
||||
//{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0017
|
||||
//{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0018
|
||||
//{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0019
|
||||
//{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001A
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001B
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001C
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001D
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001E
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+001F
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0020 (space)
|
||||
{ 0x18, 0x3C, 0x3C, 0x18, 0x18, 0x00, 0x18, 0x00}, // U+0021 (!)
|
||||
{ 0x36, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0022 (")
|
||||
{ 0x36, 0x36, 0x7F, 0x36, 0x7F, 0x36, 0x36, 0x00}, // U+0023 (#)
|
||||
{ 0x0C, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x0C, 0x00}, // U+0024 ($)
|
||||
{ 0x00, 0x63, 0x33, 0x18, 0x0C, 0x66, 0x63, 0x00}, // U+0025 (%)
|
||||
{ 0x1C, 0x36, 0x1C, 0x6E, 0x3B, 0x33, 0x6E, 0x00}, // U+0026 (&)
|
||||
{ 0x06, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0027 (')
|
||||
{ 0x18, 0x0C, 0x06, 0x06, 0x06, 0x0C, 0x18, 0x00}, // U+0028 (()
|
||||
{ 0x06, 0x0C, 0x18, 0x18, 0x18, 0x0C, 0x06, 0x00}, // U+0029 ())
|
||||
{ 0x00, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0x00, 0x00}, // U+002A (*)
|
||||
{ 0x00, 0x0C, 0x0C, 0x3F, 0x0C, 0x0C, 0x00, 0x00}, // U+002B (+)
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+002C (,)
|
||||
{ 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00}, // U+002D (-)
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+002E (.)
|
||||
{ 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x00}, // U+002F (/)
|
||||
{ 0x3E, 0x63, 0x73, 0x7B, 0x6F, 0x67, 0x3E, 0x00}, // U+0030 (0)
|
||||
{ 0x0C, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x3F, 0x00}, // U+0031 (1)
|
||||
{ 0x1E, 0x33, 0x30, 0x1C, 0x06, 0x33, 0x3F, 0x00}, // U+0032 (2)
|
||||
{ 0x1E, 0x33, 0x30, 0x1C, 0x30, 0x33, 0x1E, 0x00}, // U+0033 (3)
|
||||
{ 0x38, 0x3C, 0x36, 0x33, 0x7F, 0x30, 0x78, 0x00}, // U+0034 (4)
|
||||
{ 0x3F, 0x03, 0x1F, 0x30, 0x30, 0x33, 0x1E, 0x00}, // U+0035 (5)
|
||||
{ 0x1C, 0x06, 0x03, 0x1F, 0x33, 0x33, 0x1E, 0x00}, // U+0036 (6)
|
||||
{ 0x3F, 0x33, 0x30, 0x18, 0x0C, 0x0C, 0x0C, 0x00}, // U+0037 (7)
|
||||
{ 0x1E, 0x33, 0x33, 0x1E, 0x33, 0x33, 0x1E, 0x00}, // U+0038 (8)
|
||||
{ 0x1E, 0x33, 0x33, 0x3E, 0x30, 0x18, 0x0E, 0x00}, // U+0039 (9)
|
||||
{ 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+003A (:)
|
||||
{ 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+003B (//)
|
||||
{ 0x18, 0x0C, 0x06, 0x03, 0x06, 0x0C, 0x18, 0x00}, // U+003C (<)
|
||||
{ 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00}, // U+003D (=)
|
||||
{ 0x06, 0x0C, 0x18, 0x30, 0x18, 0x0C, 0x06, 0x00}, // U+003E (>)
|
||||
{ 0x1E, 0x33, 0x30, 0x18, 0x0C, 0x00, 0x0C, 0x00}, // U+003F (?)
|
||||
{ 0x3E, 0x63, 0x7B, 0x7B, 0x7B, 0x03, 0x1E, 0x00}, // U+0040 (@)
|
||||
{ 0x0C, 0x1E, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x00}, // U+0041 (A)
|
||||
{ 0x3F, 0x66, 0x66, 0x3E, 0x66, 0x66, 0x3F, 0x00}, // U+0042 (B)
|
||||
{ 0x3C, 0x66, 0x03, 0x03, 0x03, 0x66, 0x3C, 0x00}, // U+0043 (C)
|
||||
{ 0x1F, 0x36, 0x66, 0x66, 0x66, 0x36, 0x1F, 0x00}, // U+0044 (D)
|
||||
{ 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x46, 0x7F, 0x00}, // U+0045 (E)
|
||||
{ 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x06, 0x0F, 0x00}, // U+0046 (F)
|
||||
{ 0x3C, 0x66, 0x03, 0x03, 0x73, 0x66, 0x7C, 0x00}, // U+0047 (G)
|
||||
{ 0x33, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x33, 0x00}, // U+0048 (H)
|
||||
{ 0x1E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0049 (I)
|
||||
{ 0x78, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E, 0x00}, // U+004A (J)
|
||||
{ 0x67, 0x66, 0x36, 0x1E, 0x36, 0x66, 0x67, 0x00}, // U+004B (K)
|
||||
{ 0x0F, 0x06, 0x06, 0x06, 0x46, 0x66, 0x7F, 0x00}, // U+004C (L)
|
||||
{ 0x63, 0x77, 0x7F, 0x7F, 0x6B, 0x63, 0x63, 0x00}, // U+004D (M)
|
||||
{ 0x63, 0x67, 0x6F, 0x7B, 0x73, 0x63, 0x63, 0x00}, // U+004E (N)
|
||||
{ 0x1C, 0x36, 0x63, 0x63, 0x63, 0x36, 0x1C, 0x00}, // U+004F (O)
|
||||
{ 0x3F, 0x66, 0x66, 0x3E, 0x06, 0x06, 0x0F, 0x00}, // U+0050 (P)
|
||||
{ 0x1E, 0x33, 0x33, 0x33, 0x3B, 0x1E, 0x38, 0x00}, // U+0051 (Q)
|
||||
{ 0x3F, 0x66, 0x66, 0x3E, 0x36, 0x66, 0x67, 0x00}, // U+0052 (R)
|
||||
{ 0x1E, 0x33, 0x07, 0x0E, 0x38, 0x33, 0x1E, 0x00}, // U+0053 (S)
|
||||
{ 0x3F, 0x2D, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0054 (T)
|
||||
{ 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x3F, 0x00}, // U+0055 (U)
|
||||
{ 0x33, 0x33, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0056 (V)
|
||||
{ 0x63, 0x63, 0x63, 0x6B, 0x7F, 0x77, 0x63, 0x00}, // U+0057 (W)
|
||||
{ 0x63, 0x63, 0x36, 0x1C, 0x1C, 0x36, 0x63, 0x00}, // U+0058 (X)
|
||||
{ 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x0C, 0x1E, 0x00}, // U+0059 (Y)
|
||||
{ 0x7F, 0x63, 0x31, 0x18, 0x4C, 0x66, 0x7F, 0x00}, // U+005A (Z)
|
||||
{ 0x1E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x1E, 0x00}, // U+005B ([)
|
||||
{ 0x03, 0x06, 0x0C, 0x18, 0x30, 0x60, 0x40, 0x00}, // U+005C (\)
|
||||
{ 0x1E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1E, 0x00}, // U+005D (])
|
||||
{ 0x08, 0x1C, 0x36, 0x63, 0x00, 0x00, 0x00, 0x00}, // U+005E (^)
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF}, // U+005F (_)
|
||||
{ 0x0C, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0060 (`)
|
||||
{ 0x00, 0x00, 0x1E, 0x30, 0x3E, 0x33, 0x6E, 0x00}, // U+0061 (a)
|
||||
{ 0x07, 0x06, 0x06, 0x3E, 0x66, 0x66, 0x3B, 0x00}, // U+0062 (b)
|
||||
{ 0x00, 0x00, 0x1E, 0x33, 0x03, 0x33, 0x1E, 0x00}, // U+0063 (c)
|
||||
{ 0x38, 0x30, 0x30, 0x3e, 0x33, 0x33, 0x6E, 0x00}, // U+0064 (d)
|
||||
{ 0x00, 0x00, 0x1E, 0x33, 0x3f, 0x03, 0x1E, 0x00}, // U+0065 (e)
|
||||
{ 0x1C, 0x36, 0x06, 0x0f, 0x06, 0x06, 0x0F, 0x00}, // U+0066 (f)
|
||||
{ 0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0067 (g)
|
||||
{ 0x07, 0x06, 0x36, 0x6E, 0x66, 0x66, 0x67, 0x00}, // U+0068 (h)
|
||||
{ 0x0C, 0x00, 0x0E, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0069 (i)
|
||||
{ 0x30, 0x00, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E}, // U+006A (j)
|
||||
{ 0x07, 0x06, 0x66, 0x36, 0x1E, 0x36, 0x67, 0x00}, // U+006B (k)
|
||||
{ 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+006C (l)
|
||||
{ 0x00, 0x00, 0x33, 0x7F, 0x7F, 0x6B, 0x63, 0x00}, // U+006D (m)
|
||||
{ 0x00, 0x00, 0x1F, 0x33, 0x33, 0x33, 0x33, 0x00}, // U+006E (n)
|
||||
{ 0x00, 0x00, 0x1E, 0x33, 0x33, 0x33, 0x1E, 0x00}, // U+006F (o)
|
||||
{ 0x00, 0x00, 0x3B, 0x66, 0x66, 0x3E, 0x06, 0x0F}, // U+0070 (p)
|
||||
{ 0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x78}, // U+0071 (q)
|
||||
{ 0x00, 0x00, 0x3B, 0x6E, 0x66, 0x06, 0x0F, 0x00}, // U+0072 (r)
|
||||
{ 0x00, 0x00, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x00}, // U+0073 (s)
|
||||
{ 0x08, 0x0C, 0x3E, 0x0C, 0x0C, 0x2C, 0x18, 0x00}, // U+0074 (t)
|
||||
{ 0x00, 0x00, 0x33, 0x33, 0x33, 0x33, 0x6E, 0x00}, // U+0075 (u)
|
||||
{ 0x00, 0x00, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0076 (v)
|
||||
{ 0x00, 0x00, 0x63, 0x6B, 0x7F, 0x7F, 0x36, 0x00}, // U+0077 (w)
|
||||
{ 0x00, 0x00, 0x63, 0x36, 0x1C, 0x36, 0x63, 0x00}, // U+0078 (x)
|
||||
{ 0x00, 0x00, 0x33, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0079 (y)
|
||||
{ 0x00, 0x00, 0x3F, 0x19, 0x0C, 0x26, 0x3F, 0x00}, // U+007A (z)
|
||||
{ 0x38, 0x0C, 0x0C, 0x07, 0x0C, 0x0C, 0x38, 0x00}, // U+007B ({)
|
||||
{ 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x00}, // U+007C (|)
|
||||
{ 0x07, 0x0C, 0x0C, 0x38, 0x0C, 0x0C, 0x07, 0x00}, // U+007D (})
|
||||
{ 0x6E, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+007E (~)
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // U+007F
|
||||
};
|
||||
|
||||
|
Plik diff jest za duży
Load Diff
|
@ -0,0 +1,136 @@
|
|||
#ifndef GTIA_H_
|
||||
#define GTIA_H_
|
||||
|
||||
|
||||
#define GTIA_OFFSET_HPOSP0 0x00
|
||||
#define GTIA_OFFSET_M0PF 0x00
|
||||
#define GTIA_OFFSET_HPOSP1 0x01
|
||||
#define GTIA_OFFSET_M1PF 0x01
|
||||
#define GTIA_OFFSET_HPOSP2 0x02
|
||||
#define GTIA_OFFSET_M2PF 0x02
|
||||
#define GTIA_OFFSET_HPOSP3 0x03
|
||||
#define GTIA_OFFSET_M3PF 0x03
|
||||
#define GTIA_OFFSET_HPOSM0 0x04
|
||||
#define GTIA_OFFSET_P0PF 0x04
|
||||
#define GTIA_OFFSET_HPOSM1 0x05
|
||||
#define GTIA_OFFSET_P1PF 0x05
|
||||
#define GTIA_OFFSET_HPOSM2 0x06
|
||||
#define GTIA_OFFSET_P2PF 0x06
|
||||
#define GTIA_OFFSET_HPOSM3 0x07
|
||||
#define GTIA_OFFSET_P3PF 0x07
|
||||
#define GTIA_OFFSET_SIZEP0 0x08
|
||||
#define GTIA_OFFSET_M0PL 0x08
|
||||
#define GTIA_OFFSET_SIZEP1 0x09
|
||||
#define GTIA_OFFSET_M1PL 0x09
|
||||
#define GTIA_OFFSET_SIZEP2 0x0a
|
||||
#define GTIA_OFFSET_M2PL 0x0a
|
||||
#define GTIA_OFFSET_SIZEP3 0x0b
|
||||
#define GTIA_OFFSET_M3PL 0x0b
|
||||
#define GTIA_OFFSET_SIZEM 0x0c
|
||||
#define GTIA_OFFSET_P0PL 0x0c
|
||||
#define GTIA_OFFSET_GRAFP0 0x0d
|
||||
#define GTIA_OFFSET_P1PL 0x0d
|
||||
#define GTIA_OFFSET_GRAFP1 0x0e
|
||||
#define GTIA_OFFSET_P2PL 0x0e
|
||||
#define GTIA_OFFSET_GRAFP2 0x0f
|
||||
#define GTIA_OFFSET_P3PL 0x0f
|
||||
#define GTIA_OFFSET_GRAFP3 0x10
|
||||
#define GTIA_OFFSET_TRIG0 0x10
|
||||
#define GTIA_OFFSET_GRAFM 0x11
|
||||
#define GTIA_OFFSET_TRIG1 0x11
|
||||
#define GTIA_OFFSET_COLPM0 0x12
|
||||
#define GTIA_OFFSET_TRIG2 0x12
|
||||
#define GTIA_OFFSET_COLPM1 0x13
|
||||
#define GTIA_OFFSET_TRIG3 0x13
|
||||
#define GTIA_OFFSET_COLPM2 0x14
|
||||
#define GTIA_OFFSET_PAL 0x14
|
||||
#define GTIA_OFFSET_COLPM3 0x15
|
||||
#define GTIA_OFFSET_COLPF0 0x16
|
||||
#define GTIA_OFFSET_COLPF1 0x17
|
||||
#define GTIA_OFFSET_COLPF2 0x18
|
||||
#define GTIA_OFFSET_COLPF3 0x19
|
||||
#define GTIA_OFFSET_COLBK 0x1a
|
||||
#define GTIA_OFFSET_PRIOR 0x1b
|
||||
#define GTIA_OFFSET_VDELAY 0x1c
|
||||
#define GTIA_OFFSET_GRACTL 0x1d
|
||||
#define GTIA_OFFSET_HITCLR 0x1e
|
||||
#define GTIA_OFFSET_CONSOL 0x1f
|
||||
|
||||
extern UBYTE GTIA_GRAFM;
|
||||
extern UBYTE GTIA_GRAFP0;
|
||||
extern UBYTE GTIA_GRAFP1;
|
||||
extern UBYTE GTIA_GRAFP2;
|
||||
extern UBYTE GTIA_GRAFP3;
|
||||
extern UBYTE GTIA_HPOSP0;
|
||||
extern UBYTE GTIA_HPOSP1;
|
||||
extern UBYTE GTIA_HPOSP2;
|
||||
extern UBYTE GTIA_HPOSP3;
|
||||
extern UBYTE GTIA_HPOSM0;
|
||||
extern UBYTE GTIA_HPOSM1;
|
||||
extern UBYTE GTIA_HPOSM2;
|
||||
extern UBYTE GTIA_HPOSM3;
|
||||
extern UBYTE GTIA_SIZEP0;
|
||||
extern UBYTE GTIA_SIZEP1;
|
||||
extern UBYTE GTIA_SIZEP2;
|
||||
extern UBYTE GTIA_SIZEP3;
|
||||
extern UBYTE GTIA_SIZEM;
|
||||
extern UBYTE GTIA_COLPM0;
|
||||
extern UBYTE GTIA_COLPM1;
|
||||
extern UBYTE GTIA_COLPM2;
|
||||
extern UBYTE GTIA_COLPM3;
|
||||
extern UBYTE GTIA_COLPF0;
|
||||
extern UBYTE GTIA_COLPF1;
|
||||
extern UBYTE GTIA_COLPF2;
|
||||
extern UBYTE GTIA_COLPF3;
|
||||
extern UBYTE GTIA_COLBK;
|
||||
extern UBYTE GTIA_GRACTL;
|
||||
extern UBYTE GTIA_M0PL;
|
||||
extern UBYTE GTIA_M1PL;
|
||||
extern UBYTE GTIA_M2PL;
|
||||
extern UBYTE GTIA_M3PL;
|
||||
extern UBYTE GTIA_P0PL;
|
||||
extern UBYTE GTIA_P1PL;
|
||||
extern UBYTE GTIA_P2PL;
|
||||
extern UBYTE GTIA_P3PL;
|
||||
extern UBYTE GTIA_PRIOR;
|
||||
extern UBYTE GTIA_VDELAY;
|
||||
|
||||
#ifdef USE_COLOUR_TRANSLATION_TABLE
|
||||
|
||||
extern UWORD GTIA_colour_translation_table[256];
|
||||
#define GTIA_COLOUR_BLACK GTIA_colour_translation_table[0]
|
||||
#define GTIA_COLOUR_TO_WORD(dest,src) dest = GTIA_colour_translation_table[src];
|
||||
|
||||
#else
|
||||
|
||||
#define GTIA_COLOUR_BLACK 0
|
||||
#define GTIA_COLOUR_TO_WORD(dest,src) dest = (((UWORD) (src)) << 8) | (src);
|
||||
|
||||
#endif /* USE_COLOUR_TRANSLATION_TABLE */
|
||||
|
||||
extern UBYTE GTIA_pm_scanline[ATARI_WIDTH / 2 + 8]; /* there's a byte for every *pair* of pixels */
|
||||
extern int GTIA_pm_dirty;
|
||||
|
||||
extern UBYTE GTIA_collisions_mask_missile_playfield;
|
||||
extern UBYTE GTIA_collisions_mask_player_playfield;
|
||||
extern UBYTE GTIA_collisions_mask_missile_player;
|
||||
extern UBYTE GTIA_collisions_mask_player_player;
|
||||
|
||||
extern UBYTE GTIA_TRIG[4];
|
||||
extern UBYTE GTIA_TRIG_latch[4];
|
||||
|
||||
extern int GTIA_consol_override;
|
||||
extern int GTIA_speaker;
|
||||
|
||||
int GTIA_Initialise(void);
|
||||
void GTIA_Frame(void);
|
||||
void GTIA_NewPmScanline(void);
|
||||
UBYTE GTIA_GetByte(UWORD addr, int no_side_effects);
|
||||
void GTIA_PutByte(UWORD addr, UBYTE byte);
|
||||
void GTIA_StateSave(void);
|
||||
void GTIA_StateRead(UBYTE version);
|
||||
|
||||
#ifdef NEW_CYCLE_EXACT
|
||||
void GTIA_UpdatePmplColls(void);
|
||||
#endif
|
||||
#endif /* GTIA_H_ */
|
|
@ -0,0 +1,124 @@
|
|||
#ifndef IOPINS_H
|
||||
#define IOPINS_H
|
||||
|
||||
#include "platform_config.h"
|
||||
|
||||
#ifdef TEECOMPUTER
|
||||
|
||||
// Teecomputer layout
|
||||
|
||||
// VGA
|
||||
// R 3 2K
|
||||
// R 4 1K
|
||||
// R 33 500
|
||||
// G 11 2K
|
||||
// G 13 1K
|
||||
// G 2 500
|
||||
// B 10 820
|
||||
// B 12 390
|
||||
// HSYNC 15 82
|
||||
// VSYNC 8 82
|
||||
|
||||
// Display
|
||||
#define TFT_SCLK 27
|
||||
#define TFT_MOSI 26
|
||||
#define TFT_MISO 255
|
||||
#define TFT_TOUCH_CS 255
|
||||
#define TFT_TOUCH_INT 255
|
||||
#define TFT_DC 23
|
||||
#define TFT_CS 22 // 255 for LORES ST7789 (NO CS)
|
||||
#define TFT_RST 255 // 255 for ILI/ST if connected to 3.3V or 24 if really needed
|
||||
|
||||
|
||||
// SD
|
||||
#define SD_CS BUILTIN_SDCARD
|
||||
|
||||
// Audio
|
||||
#define AUDIO_I2S_DIN 7
|
||||
#define AUDIO_I2S_BCK 21
|
||||
#define AUDIO_I2S_LCK 20
|
||||
|
||||
// Keyboard matrix
|
||||
#define KLED 14
|
||||
//Cols (out)
|
||||
//pico 1,2,3,4,5,14
|
||||
//teen 16,6,24,25,28,31
|
||||
#define KCOLOUT1 16
|
||||
#define KCOLOUT2 6
|
||||
#define KCOLOUT3 24
|
||||
#define KCOLOUT4 25
|
||||
#define KCOLOUT5 28
|
||||
#define KCOLOUT6 31
|
||||
//Rows (in)
|
||||
//pico 9,8,6,15,7,22
|
||||
//teen 19,18,17,5,29,30,32 //5,6,16,17,18,19
|
||||
#define KROWIN1 19
|
||||
#define KROWIN2 18
|
||||
#define KROWIN3 17
|
||||
#define KROWIN4 5
|
||||
#define KROWIN5 29
|
||||
#define KROWIN6 30
|
||||
#define KROWIN7 32
|
||||
|
||||
#define PIN_KEY_USER1 41
|
||||
#define PIN_KEY_USER2 40
|
||||
|
||||
// Second joystick (external)
|
||||
#define PIN_JOY1_BTN 34
|
||||
#define PIN_JOY1_1 35 // UP
|
||||
#define PIN_JOY1_2 36 // DOWN
|
||||
#define PIN_JOY1_3 38 // RIGHT
|
||||
#define PIN_JOY1_4 37 // LEFT
|
||||
|
||||
#else
|
||||
|
||||
// Original Layout
|
||||
#define TFT_SCLK 13
|
||||
#define TFT_MOSI 11
|
||||
#define TFT_MISO 12
|
||||
#define TFT_TOUCH_CS 255
|
||||
#define TFT_TOUCH_INT 255
|
||||
#define TFT_DC 9
|
||||
#define TFT_CS 22 // 255 for LORES ST7789 (NO CS)
|
||||
#define TFT_RST 23 // 255 for ILI/ST if connected to 3.3V
|
||||
|
||||
// SD
|
||||
#define SD_CS BUILTIN_SDCARD
|
||||
|
||||
// I2C keyboard
|
||||
#define I2C_SCL_IO 19
|
||||
#define I2C_SDA_IO 18
|
||||
|
||||
// Analog joystick (primary) for JOY2 and 5 extra buttons
|
||||
#ifdef HAS_T4_VGA
|
||||
#define PIN_JOY2_A1X A3
|
||||
#define PIN_JOY2_A2Y A2
|
||||
#define PIN_JOY2_BTN 14
|
||||
#define PIN_KEY_USER1 22
|
||||
#define PIN_KEY_USER2 23
|
||||
|
||||
// Second joystick
|
||||
#define PIN_JOY1_BTN 34
|
||||
#define PIN_JOY1_1 35 // UP
|
||||
#define PIN_JOY1_2 36 // DOWN
|
||||
#define PIN_JOY1_3 38 // RIGHT
|
||||
#define PIN_JOY1_4 37 // LEFT
|
||||
|
||||
#else
|
||||
#define PIN_JOY2_A1X A1
|
||||
#define PIN_JOY2_A2Y A2
|
||||
#define PIN_JOY2_BTN 17
|
||||
#define PIN_KEY_USER1 3 //34
|
||||
#define PIN_KEY_USER2 4 //35
|
||||
|
||||
// Second joystick
|
||||
#define PIN_JOY1_BTN 2
|
||||
#define PIN_JOY1_1 14 // UP
|
||||
#define PIN_JOY1_2 7 // DOWN
|
||||
#define PIN_JOY1_3 6 // RIGHT
|
||||
#define PIN_JOY1_4 5 // LEFT
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
|
@ -0,0 +1,18 @@
|
|||
#ifndef __MEMORY__
|
||||
#define __MEMORY__
|
||||
|
||||
extern unsigned char * memory;
|
||||
|
||||
#define MEMORY_GetByte(addr) (Atari_GetByte(addr))
|
||||
#define MEMORY_PutByte(addr,byte) Atari_PutByte(addr,byte)
|
||||
|
||||
#define MEMORY_dGetByte(addr) (Atari_GetByte(addr))
|
||||
#define MEMORY_dPutByte(addr,byte) Atari_PutByte(addr,byte)
|
||||
#define MEMORY_dGetWord(x) (Atari_GetByte(x) | (Atari_GetByte((x) + 1) << 8))
|
||||
#define MEMORY_dPutWord(x,y) (Atari_PutByte(x,(UBYTE) (y)) , Atari_PutByte(x + 1,(UBYTE) ((y) >> 8))
|
||||
/* faster versions of dGetWord and dPutWord for even addresses */
|
||||
/* TODO: guarantee that memory is UWORD-aligned and use UWORD access */
|
||||
#define MEMORY_dGetWordAligned(x) MEMORY_dGetWord(x)
|
||||
#define MEMORY_dPutWordAligned(x,y) MEMORY_dPutWord(x,y)
|
||||
|
||||
#endif
|
Plik diff jest za duży
Load Diff
|
@ -0,0 +1,71 @@
|
|||
#include <stdio.h>
|
||||
|
||||
#include "atari.h"
|
||||
#include "cpu.h"
|
||||
#include "pia.h"
|
||||
|
||||
UBYTE PACTL;
|
||||
UBYTE PBCTL;
|
||||
UBYTE PORTA;
|
||||
UBYTE PORTB;
|
||||
|
||||
|
||||
static UBYTE PORTA_mask = 0xff;
|
||||
static UBYTE PORTB_mask = 0xff;
|
||||
|
||||
void PIA_Initialise(void)
|
||||
{
|
||||
PORTA = 0xff;
|
||||
PORTB = 0xff;
|
||||
}
|
||||
|
||||
UBYTE PIA_GetByte(UWORD addr)
|
||||
{
|
||||
UBYTE byte;
|
||||
|
||||
addr &= 0x03;
|
||||
switch (addr) {
|
||||
case _PACTL:
|
||||
byte = PACTL;
|
||||
break;
|
||||
case _PBCTL:
|
||||
byte = PBCTL;
|
||||
break;
|
||||
case _PORTA:
|
||||
byte = Atari_PORT(0);
|
||||
byte &= PORTA_mask;
|
||||
break;
|
||||
case _PORTB:
|
||||
byte = Atari_PORT(1);
|
||||
byte &= PORTB_mask;
|
||||
break;
|
||||
}
|
||||
|
||||
return byte;
|
||||
}
|
||||
|
||||
int PIA_PutByte(UWORD addr, UBYTE byte)
|
||||
{
|
||||
addr &= 0xff03;
|
||||
|
||||
switch (addr) {
|
||||
case _PACTL:
|
||||
PACTL = byte;
|
||||
break;
|
||||
case _PBCTL:
|
||||
PBCTL = byte;
|
||||
break;
|
||||
case _PORTA:
|
||||
if (!(PACTL & 0x04))
|
||||
PORTA_mask = ~byte;
|
||||
break;
|
||||
case _PORTB:
|
||||
// if ((byte == 0) && (machine == AtariXL || machine == AtariXE))
|
||||
// break; /* special hack for old Atari800 games like is Tapper, for example */
|
||||
if (!(PBCTL & 0x04))
|
||||
PORTB_mask = ~byte;
|
||||
break;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
#ifndef __PIA__
|
||||
#define __PIA__
|
||||
|
||||
#include "atari.h"
|
||||
|
||||
#define _PORTA 0x00
|
||||
#define _PORTB 0x01
|
||||
#define _PACTL 0x02
|
||||
#define _PBCTL 0x03
|
||||
|
||||
extern UBYTE PACTL;
|
||||
extern UBYTE PBCTL;
|
||||
extern UBYTE PORTA;
|
||||
extern UBYTE PORTB;
|
||||
|
||||
extern int xe_bank;
|
||||
|
||||
void PIA_Initialise(void);
|
||||
UBYTE PIA_GetByte(UWORD addr);
|
||||
int PIA_PutByte(UWORD addr, UBYTE byte);
|
||||
|
||||
#endif
|
|
@ -0,0 +1,39 @@
|
|||
#ifndef _PLATFORM_CONFIG_H_
|
||||
#define _PLATFORM_CONFIG_H_
|
||||
|
||||
#define TEECOMPUTER 1
|
||||
|
||||
#ifdef TEECOMPUTER
|
||||
//#define ILI9341 1
|
||||
//#define ST7789 1
|
||||
//#define TFTSPI1 1
|
||||
#define HAS_T4_VGA 1
|
||||
#define HAS_SND 1
|
||||
#define HAS_USBKEY 1
|
||||
#define INVX 1
|
||||
#else
|
||||
|
||||
#define HAS_T4_VGA 1
|
||||
//#define INVX 1
|
||||
#define INVY 1
|
||||
#define HAS_SND 1
|
||||
#define HAS_USBKEY 1
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
//#define ILI9341 1
|
||||
//#define ST7789 1
|
||||
//#define SWAP_JOYSTICK 1
|
||||
//#define LOHRES 1
|
||||
//#define ROTATE_SCREEN 1
|
||||
//#define EXTERNAL_SD 1
|
||||
|
||||
|
||||
//#define USE_SDFAT 1
|
||||
//#define SD_FAT_TYPE 1
|
||||
//#define USE_SDFS 1
|
||||
//#define SDFSDEV "1:"
|
||||
|
||||
|
||||
#endif
|
|
@ -0,0 +1,699 @@
|
|||
/*
|
||||
* pokey.c - POKEY sound chip emulation
|
||||
*
|
||||
* Copyright (C) 1995-1998 David Firth
|
||||
* Copyright (C) 1998-2008 Atari800 development team (see DOC/CREDITS)
|
||||
*
|
||||
* This file is part of the Atari800 emulator project which emulates
|
||||
* the Atari 400, 800, 800XL, 130XE, and 5200 8-bit computers.
|
||||
*
|
||||
* Atari800 is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Atari800 is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with Atari800; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
#include "cpu.h"
|
||||
#include "pokey.h"
|
||||
#include "gtia.h"
|
||||
#include "sio.h"
|
||||
#ifdef SOUND
|
||||
#include "pokeysnd.h"
|
||||
#endif
|
||||
#include "antic.h"
|
||||
|
||||
#ifdef VOICEBOX
|
||||
#include "voicebox.h"
|
||||
#include "votraxsnd.h"
|
||||
#endif
|
||||
|
||||
#ifdef POKEY_UPDATE
|
||||
void pokey_update(void);
|
||||
#endif
|
||||
|
||||
UBYTE POKEY_KBCODE;
|
||||
UBYTE POKEY_SERIN;
|
||||
UBYTE POKEY_IRQST;
|
||||
UBYTE POKEY_IRQEN;
|
||||
UBYTE POKEY_SKSTAT;
|
||||
UBYTE POKEY_SKCTL;
|
||||
int POKEY_DELAYED_SERIN_IRQ;
|
||||
int POKEY_DELAYED_SEROUT_IRQ;
|
||||
int POKEY_DELAYED_XMTDONE_IRQ;
|
||||
|
||||
/* structures to hold the 9 pokey control bytes */
|
||||
UBYTE POKEY_AUDF[4 * POKEY_MAXPOKEYS]; /* AUDFx (D200, D202, D204, D206) */
|
||||
UBYTE POKEY_AUDC[4 * POKEY_MAXPOKEYS]; /* AUDCx (D201, D203, D205, D207) */
|
||||
UBYTE POKEY_AUDCTL[POKEY_MAXPOKEYS]; /* AUDCTL (D208) */
|
||||
int POKEY_DivNIRQ[4], POKEY_DivNMax[4];
|
||||
int POKEY_Base_mult[POKEY_MAXPOKEYS]; /* selects either 64Khz or 15Khz clock mult */
|
||||
|
||||
UBYTE POKEY_POT_input[8] = {228, 228, 228, 228, 228, 228, 228, 228};
|
||||
static int pot_scanline;
|
||||
|
||||
#include "noise.h"
|
||||
//UBYTE POKEY_poly9_lookup[POKEY_POLY9_SIZE];
|
||||
//UBYTE POKEY_poly17_lookup[POKEY_POLY17_SIZE];
|
||||
|
||||
static ULONG random_scanline_counter;
|
||||
|
||||
ULONG POKEY_GetRandomCounter(void)
|
||||
{
|
||||
return random_scanline_counter;
|
||||
}
|
||||
|
||||
void POKEY_SetRandomCounter(ULONG value)
|
||||
{
|
||||
random_scanline_counter = value;
|
||||
}
|
||||
|
||||
UBYTE POKEY_GetByte(UWORD addr, int no_side_effects)
|
||||
{
|
||||
UBYTE byte = 0xff;
|
||||
|
||||
#ifdef STEREO_SOUND
|
||||
if (addr & 0x0010 && POKEYSND_stereo_enabled)
|
||||
return 0;
|
||||
#endif
|
||||
addr &= 0x0f;
|
||||
if (addr < 8) {
|
||||
byte = POKEY_POT_input[addr];
|
||||
if (byte <= pot_scanline)
|
||||
return byte;
|
||||
return pot_scanline;
|
||||
}
|
||||
switch (addr) {
|
||||
case POKEY_OFFSET_ALLPOT:
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < 8; i++)
|
||||
if (POKEY_POT_input[i] <= pot_scanline)
|
||||
byte &= ~(1 << i); /* reset bit if pot value known */
|
||||
}
|
||||
break;
|
||||
case POKEY_OFFSET_KBCODE:
|
||||
byte = POKEY_KBCODE;
|
||||
break;
|
||||
case POKEY_OFFSET_RANDOM:
|
||||
if ((POKEY_SKCTL & 0x03) != 0) {
|
||||
int i = random_scanline_counter + ANTIC_XPOS;
|
||||
if (POKEY_AUDCTL[0] & POKEY_POLY9)
|
||||
byte = POKEY_poly9_lookup[i % POKEY_POLY9_SIZE];
|
||||
else {
|
||||
const UBYTE *ptr;
|
||||
i %= POKEY_POLY17_SIZE;
|
||||
ptr = POKEY_poly17_lookup + (i >> 3);
|
||||
i &= 7;
|
||||
byte = (UBYTE) ((ptr[0] >> i) + (ptr[1] << (8 - i)));
|
||||
}
|
||||
}
|
||||
break;
|
||||
case POKEY_OFFSET_SERIN:
|
||||
byte = POKEY_SERIN;
|
||||
#ifdef DEBUG3
|
||||
printf("SERIO: SERIN read, bytevalue %02x\n", POKEY_SERIN);
|
||||
#endif
|
||||
#ifdef SERIO_SOUND
|
||||
POKEYSND_UpdateSerio(0,byte);
|
||||
#endif
|
||||
break;
|
||||
case POKEY_OFFSET_IRQST:
|
||||
byte = POKEY_IRQST;
|
||||
break;
|
||||
case POKEY_OFFSET_SKSTAT:
|
||||
#if SKIP
|
||||
byte = POKEY_SKSTAT + (CASSETTE_IOLineStatus() << 4);
|
||||
#else
|
||||
byte = POKEY_SKSTAT;
|
||||
#endif
|
||||
#ifdef VOICEBOX
|
||||
if (VOICEBOX_enabled) {
|
||||
byte = POKEY_SKSTAT + (VOTRAXSND_busy << 4);
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
|
||||
return byte;
|
||||
}
|
||||
|
||||
static void Update_Counter(int chan_mask);
|
||||
|
||||
static int POKEY_siocheck(void)
|
||||
{
|
||||
return (((POKEY_AUDF[POKEY_CHAN3] == 0x28 || POKEY_AUDF[POKEY_CHAN3] == 0x10
|
||||
|| POKEY_AUDF[POKEY_CHAN3] == 0x08 || POKEY_AUDF[POKEY_CHAN3] == 0x0a)
|
||||
&& POKEY_AUDF[POKEY_CHAN4] == 0x00) /* intelligent peripherals speeds */
|
||||
|| (POKEY_SKCTL & 0x78) == 0x28) /* cassette save mode */
|
||||
&& (POKEY_AUDCTL[0] & 0x28) == 0x28;
|
||||
}
|
||||
|
||||
#ifndef SOUND_GAIN /* sound gain can be pre-defined in the configure/Makefile */
|
||||
#define SOUND_GAIN 4
|
||||
#endif
|
||||
|
||||
#ifndef SOUND
|
||||
#define POKEYSND_Update(addr, val, chip, gain)
|
||||
#else
|
||||
//#define POKEYSND_Update(addr, val, chip, gain) if (chip == 0) emu_sndPlaySound((chip*4)+addr, gain*16, val*16)
|
||||
#endif
|
||||
|
||||
void POKEY_PutByte(UWORD addr, UBYTE byte)
|
||||
{
|
||||
#ifdef STEREO_SOUND
|
||||
addr &= POKEYSND_stereo_enabled ? 0x1f : 0x0f;
|
||||
#else
|
||||
addr &= 0x0f;
|
||||
#endif
|
||||
switch (addr) {
|
||||
case POKEY_OFFSET_AUDC1:
|
||||
POKEY_AUDC[POKEY_CHAN1] = byte;
|
||||
POKEYSND_Update(POKEY_OFFSET_AUDC1, byte, 0, SOUND_GAIN);
|
||||
break;
|
||||
case POKEY_OFFSET_AUDC2:
|
||||
POKEY_AUDC[POKEY_CHAN2] = byte;
|
||||
POKEYSND_Update(POKEY_OFFSET_AUDC2, byte, 0, SOUND_GAIN);
|
||||
break;
|
||||
case POKEY_OFFSET_AUDC3:
|
||||
POKEY_AUDC[POKEY_CHAN3] = byte;
|
||||
POKEYSND_Update(POKEY_OFFSET_AUDC3, byte, 0, SOUND_GAIN);
|
||||
break;
|
||||
case POKEY_OFFSET_AUDC4:
|
||||
POKEY_AUDC[POKEY_CHAN4] = byte;
|
||||
POKEYSND_Update(POKEY_OFFSET_AUDC4, byte, 0, SOUND_GAIN);
|
||||
break;
|
||||
case POKEY_OFFSET_AUDCTL:
|
||||
POKEY_AUDCTL[0] = byte;
|
||||
|
||||
/* determine the base multiplier for the 'div by n' calculations */
|
||||
if (byte & POKEY_CLOCK_15)
|
||||
POKEY_Base_mult[0] = POKEY_DIV_15;
|
||||
else
|
||||
POKEY_Base_mult[0] = POKEY_DIV_64;
|
||||
|
||||
Update_Counter((1 << POKEY_CHAN1) | (1 << POKEY_CHAN2) | (1 << POKEY_CHAN3) | (1 << POKEY_CHAN4));
|
||||
POKEYSND_Update(POKEY_OFFSET_AUDCTL, byte, 0, SOUND_GAIN);
|
||||
break;
|
||||
case POKEY_OFFSET_AUDF1:
|
||||
POKEY_AUDF[POKEY_CHAN1] = byte;
|
||||
Update_Counter((POKEY_AUDCTL[0] & POKEY_CH1_CH2) ? ((1 << POKEY_CHAN2) | (1 << POKEY_CHAN1)) : (1 << POKEY_CHAN1));
|
||||
POKEYSND_Update(POKEY_OFFSET_AUDF1, byte, 0, SOUND_GAIN);
|
||||
break;
|
||||
case POKEY_OFFSET_AUDF2:
|
||||
POKEY_AUDF[POKEY_CHAN2] = byte;
|
||||
Update_Counter(1 << POKEY_CHAN2);
|
||||
POKEYSND_Update(POKEY_OFFSET_AUDF2, byte, 0, SOUND_GAIN);
|
||||
break;
|
||||
case POKEY_OFFSET_AUDF3:
|
||||
POKEY_AUDF[POKEY_CHAN3] = byte;
|
||||
Update_Counter((POKEY_AUDCTL[0] & POKEY_CH3_CH4) ? ((1 << POKEY_CHAN4) | (1 << POKEY_CHAN3)) : (1 << POKEY_CHAN3));
|
||||
POKEYSND_Update(POKEY_OFFSET_AUDF3, byte, 0, SOUND_GAIN);
|
||||
break;
|
||||
case POKEY_OFFSET_AUDF4:
|
||||
POKEY_AUDF[POKEY_CHAN4] = byte;
|
||||
Update_Counter(1 << POKEY_CHAN4);
|
||||
POKEYSND_Update(POKEY_OFFSET_AUDF4, byte, 0, SOUND_GAIN);
|
||||
break;
|
||||
case POKEY_OFFSET_IRQEN:
|
||||
POKEY_IRQEN = byte;
|
||||
#ifdef DEBUG1
|
||||
printf("WR: IRQEN = %x, PC = %x\n", POKEY_IRQEN, PC);
|
||||
#endif
|
||||
POKEY_IRQST |= ~byte & 0xf7; /* Reset disabled IRQs except XMTDONE */
|
||||
#if SKIP
|
||||
if ((~POKEY_IRQST & POKEY_IRQEN) == 0 && PBI_IRQ == 0 && PIA_IRQ == 0)
|
||||
#else
|
||||
if ((~POKEY_IRQST & POKEY_IRQEN) == 0)
|
||||
#endif
|
||||
{
|
||||
CPU_IRQ = 0;
|
||||
}
|
||||
else {
|
||||
CPU_GenerateIRQ();
|
||||
}
|
||||
break;
|
||||
case POKEY_OFFSET_SKRES:
|
||||
POKEY_SKSTAT |= 0xe0;
|
||||
break;
|
||||
case POKEY_OFFSET_POTGO:
|
||||
if (!(POKEY_SKCTL & 4))
|
||||
pot_scanline = 0; /* slow pot mode */
|
||||
break;
|
||||
case POKEY_OFFSET_SEROUT:
|
||||
#ifdef VOICEBOX
|
||||
VOICEBOX_SEROUTPutByte(byte);
|
||||
#endif
|
||||
if ((POKEY_SKCTL & 0x70) == 0x20 && POKEY_siocheck())
|
||||
SIO_PutByte(byte);
|
||||
/* check if cassette 2-tone mode has been enabled */
|
||||
if ((POKEY_SKCTL & 0x08) == 0x00) {
|
||||
/* intelligent device */
|
||||
POKEY_DELAYED_SEROUT_IRQ = SIO_SEROUT_INTERVAL;
|
||||
POKEY_IRQST |= 0x08;
|
||||
POKEY_DELAYED_XMTDONE_IRQ = SIO_XMTDONE_INTERVAL;
|
||||
}
|
||||
else {
|
||||
/* cassette */
|
||||
/* some savers patch the cassette baud rate, so we evaluate it here */
|
||||
/* scanlines per second*10 bit*audiofrequency/(1.79 MHz/2) */
|
||||
POKEY_DELAYED_SEROUT_IRQ = 312*50*10*(POKEY_AUDF[POKEY_CHAN3] + POKEY_AUDF[POKEY_CHAN4]*0x100)/895000;
|
||||
/* safety check */
|
||||
if (POKEY_DELAYED_SEROUT_IRQ >= 3) {
|
||||
POKEY_IRQST |= 0x08;
|
||||
POKEY_DELAYED_XMTDONE_IRQ = 2*POKEY_DELAYED_SEROUT_IRQ - 2;
|
||||
}
|
||||
else {
|
||||
POKEY_DELAYED_SEROUT_IRQ = 0;
|
||||
POKEY_DELAYED_XMTDONE_IRQ = 0;
|
||||
}
|
||||
};
|
||||
#ifdef SERIO_SOUND
|
||||
POKEYSND_UpdateSerio(1, byte);
|
||||
#endif
|
||||
break;
|
||||
case POKEY_OFFSET_STIMER:
|
||||
POKEY_DivNIRQ[POKEY_CHAN1] = POKEY_DivNMax[POKEY_CHAN1];
|
||||
POKEY_DivNIRQ[POKEY_CHAN2] = POKEY_DivNMax[POKEY_CHAN2];
|
||||
POKEY_DivNIRQ[POKEY_CHAN4] = POKEY_DivNMax[POKEY_CHAN4];
|
||||
POKEYSND_Update(POKEY_OFFSET_STIMER, byte, 0, SOUND_GAIN);
|
||||
#ifdef DEBUG1
|
||||
printf("WR: STIMER = %x\n", byte);
|
||||
#endif
|
||||
break;
|
||||
case POKEY_OFFSET_SKCTL:
|
||||
#ifdef VOICEBOX
|
||||
VOICEBOX_SKCTLPutByte(byte);
|
||||
#endif
|
||||
POKEY_SKCTL = byte;
|
||||
POKEYSND_Update(POKEY_OFFSET_SKCTL, byte, 0, SOUND_GAIN);
|
||||
if (byte & 4)
|
||||
pot_scanline = 228; /* fast pot mode - return results immediately */
|
||||
if ((byte & 0x03) == 0) {
|
||||
/* POKEY reset. */
|
||||
/* Stop serial IO. */
|
||||
POKEY_DELAYED_SERIN_IRQ = 0;
|
||||
POKEY_DELAYED_SEROUT_IRQ = 0;
|
||||
POKEY_DELAYED_XMTDONE_IRQ = 0;
|
||||
#if SKIP
|
||||
CASSETTE_ResetPOKEY();
|
||||
#endif
|
||||
/* TODO other registers should also be reset. */
|
||||
}
|
||||
break;
|
||||
#ifdef STEREO_SOUND
|
||||
case POKEY_OFFSET_AUDC1 + POKEY_OFFSET_POKEY2:
|
||||
POKEY_AUDC[POKEY_CHAN1 + POKEY_CHIP2] = byte;
|
||||
POKEYSND_Update(POKEY_OFFSET_AUDC1, byte, 1, SOUND_GAIN);
|
||||
break;
|
||||
case POKEY_OFFSET_AUDC2 + POKEY_OFFSET_POKEY2:
|
||||
POKEY_AUDC[POKEY_CHAN2 + POKEY_CHIP2] = byte;
|
||||
POKEYSND_Update(POKEY_OFFSET_AUDC2, byte, 1, SOUND_GAIN);
|
||||
break;
|
||||
case POKEY_OFFSET_AUDC3 + POKEY_OFFSET_POKEY2:
|
||||
POKEY_AUDC[POKEY_CHAN3 + POKEY_CHIP2] = byte;
|
||||
POKEYSND_Update(POKEY_OFFSET_AUDC3, byte, 1, SOUND_GAIN);
|
||||
break;
|
||||
case POKEY_OFFSET_AUDC4 + POKEY_OFFSET_POKEY2:
|
||||
POKEY_AUDC[POKEY_CHAN4 + POKEY_CHIP2] = byte;
|
||||
POKEYSND_Update(POKEY_OFFSET_AUDC4, byte, 1, SOUND_GAIN);
|
||||
break;
|
||||
case POKEY_OFFSET_AUDCTL + POKEY_OFFSET_POKEY2:
|
||||
POKEY_AUDCTL[1] = byte;
|
||||
/* determine the base multiplier for the 'div by n' calculations */
|
||||
if (byte & POKEY_CLOCK_15)
|
||||
POKEY_Base_mult[1] = POKEY_DIV_15;
|
||||
else
|
||||
POKEY_Base_mult[1] = POKEY_DIV_64;
|
||||
|
||||
POKEYSND_Update(POKEY_OFFSET_AUDCTL, byte, 1, SOUND_GAIN);
|
||||
break;
|
||||
case POKEY_OFFSET_AUDF1 + POKEY_OFFSET_POKEY2:
|
||||
POKEY_AUDF[POKEY_CHAN1 + POKEY_CHIP2] = byte;
|
||||
POKEYSND_Update(POKEY_OFFSET_AUDF1, byte, 1, SOUND_GAIN);
|
||||
break;
|
||||
case POKEY_OFFSET_AUDF2 + POKEY_OFFSET_POKEY2:
|
||||
POKEY_AUDF[POKEY_CHAN2 + POKEY_CHIP2] = byte;
|
||||
POKEYSND_Update(POKEY_OFFSET_AUDF2, byte, 1, SOUND_GAIN);
|
||||
break;
|
||||
case POKEY_OFFSET_AUDF3 + POKEY_OFFSET_POKEY2:
|
||||
POKEY_AUDF[POKEY_CHAN3 + POKEY_CHIP2] = byte;
|
||||
POKEYSND_Update(POKEY_OFFSET_AUDF3, byte, 1, SOUND_GAIN);
|
||||
break;
|
||||
case POKEY_OFFSET_AUDF4 + POKEY_OFFSET_POKEY2:
|
||||
POKEY_AUDF[POKEY_CHAN4 + POKEY_CHIP2] = byte;
|
||||
POKEYSND_Update(POKEY_OFFSET_AUDF4, byte, 1, SOUND_GAIN);
|
||||
break;
|
||||
case POKEY_OFFSET_STIMER + POKEY_OFFSET_POKEY2:
|
||||
POKEYSND_Update(POKEY_OFFSET_STIMER, byte, 1, SOUND_GAIN);
|
||||
break;
|
||||
case POKEY_OFFSET_SKCTL + POKEY_OFFSET_POKEY2:
|
||||
POKEYSND_Update(POKEY_OFFSET_SKCTL, byte, 1, SOUND_GAIN);
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
int POKEY_Initialise(void)
|
||||
{
|
||||
int i;
|
||||
ULONG reg;
|
||||
|
||||
/* Initialise Serial Port Interrupts */
|
||||
POKEY_DELAYED_SERIN_IRQ = 0;
|
||||
POKEY_DELAYED_SEROUT_IRQ = 0;
|
||||
POKEY_DELAYED_XMTDONE_IRQ = 0;
|
||||
|
||||
POKEY_KBCODE = 0xff;
|
||||
POKEY_SERIN = 0x00; /* or 0xff ? */
|
||||
POKEY_IRQST = 0xff;
|
||||
POKEY_IRQEN = 0x00;
|
||||
POKEY_SKSTAT = 0xef;
|
||||
POKEY_SKCTL = 0x00;
|
||||
|
||||
for (i = 0; i < (POKEY_MAXPOKEYS * 4); i++) {
|
||||
POKEY_AUDC[i] = 0;
|
||||
POKEY_AUDF[i] = 0;
|
||||
}
|
||||
|
||||
for (i = 0; i < POKEY_MAXPOKEYS; i++) {
|
||||
POKEY_AUDCTL[i] = 0;
|
||||
POKEY_Base_mult[i] = POKEY_DIV_64;
|
||||
}
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
POKEY_DivNIRQ[i] = POKEY_DivNMax[i] = 0;
|
||||
|
||||
pot_scanline = 0;
|
||||
|
||||
#if SKIP
|
||||
/* initialise poly9_lookup */
|
||||
reg = 0x1ff;
|
||||
for (i = 0; i < POKEY_POLY9_SIZE; i++) {
|
||||
reg = ((((reg >> 5) ^ reg) & 1) << 8) + (reg >> 1);
|
||||
POKEY_poly9_lookup[i] = (UBYTE) reg;
|
||||
}
|
||||
/* initialise poly17_lookup */
|
||||
reg = 0x1ffff;
|
||||
for (i = 0; i < POKEY_POLY17_SIZE; i++) {
|
||||
reg = ((((reg >> 5) ^ reg) & 0xff) << 9) + (reg >> 8);
|
||||
POKEY_poly17_lookup[i] = (UBYTE) (reg >> 1);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef BASIC
|
||||
#if SKIP
|
||||
if (INPUT_Playingback()) {
|
||||
random_scanline_counter = INPUT_PlaybackInt();
|
||||
}
|
||||
else
|
||||
#endif
|
||||
#endif
|
||||
{
|
||||
random_scanline_counter =
|
||||
#ifdef HAVE_WINDOWS_H
|
||||
GetTickCount() % POKEY_POLY17_SIZE;
|
||||
#elif defined(HAVE_TIME)
|
||||
time(NULL) % POKEY_POLY17_SIZE;
|
||||
#else
|
||||
0;
|
||||
#endif
|
||||
}
|
||||
#ifndef BASIC
|
||||
#if SKIP
|
||||
if (INPUT_Recording()) {
|
||||
INPUT_RecordInt(random_scanline_counter);
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void POKEY_Frame(void)
|
||||
{
|
||||
random_scanline_counter %= (POKEY_AUDCTL[0] & POKEY_POLY9) ? POKEY_POLY9_SIZE : POKEY_POLY17_SIZE;
|
||||
}
|
||||
|
||||
/***************************************************************************
|
||||
** Generate POKEY Timer IRQs if required **
|
||||
** called on a per-scanline basis, not very precise, but good enough **
|
||||
** for most applications **
|
||||
***************************************************************************/
|
||||
|
||||
void POKEY_Scanline(void)
|
||||
{
|
||||
#ifdef POKEY_UPDATE
|
||||
pokey_update();
|
||||
#endif
|
||||
|
||||
#ifdef VOL_ONLY_SOUND
|
||||
POKEYSND_UpdateVolOnly();
|
||||
#endif
|
||||
|
||||
#ifndef BASIC
|
||||
INPUT_Scanline(); /* Handle Amiga and ST mice. */
|
||||
/* It's not a part of POKEY emulation, */
|
||||
/* but it looks to be the best place to put it. */
|
||||
#endif
|
||||
|
||||
/* on nonpatched i/o-operation, enable the cassette timing */
|
||||
#if SKIP
|
||||
if (!ESC_enable_sio_patch) {
|
||||
if (CASSETTE_AddScanLine())
|
||||
POKEY_DELAYED_SERIN_IRQ = 1;
|
||||
}
|
||||
#endif
|
||||
if ((POKEY_SKCTL & 0x03) == 0)
|
||||
/* Don't process timers when POKEY is in reset mode. */
|
||||
return;
|
||||
|
||||
if (pot_scanline < 228)
|
||||
pot_scanline++;
|
||||
|
||||
random_scanline_counter += ANTIC_LINE_C;
|
||||
|
||||
if (POKEY_DELAYED_SERIN_IRQ > 0) {
|
||||
if (--POKEY_DELAYED_SERIN_IRQ == 0) {
|
||||
/* Load a byte to SERIN - even when the IRQ is disabled. */
|
||||
POKEY_SERIN = SIO_GetByte();
|
||||
if (POKEY_IRQEN & 0x20) {
|
||||
if (POKEY_IRQST & 0x20) {
|
||||
POKEY_IRQST &= 0xdf;
|
||||
#ifdef DEBUG2
|
||||
printf("SERIO: SERIN Interrupt triggered, bytevalue %02x\n", POKEY_SERIN);
|
||||
#endif
|
||||
}
|
||||
else {
|
||||
POKEY_SKSTAT &= 0xdf;
|
||||
#ifdef DEBUG2
|
||||
printf("SERIO: SERIN Interrupt triggered, bytevalue %02x\n", POKEY_SERIN);
|
||||
#endif
|
||||
}
|
||||
CPU_GenerateIRQ();
|
||||
}
|
||||
#ifdef DEBUG2
|
||||
else {
|
||||
printf("SERIO: SERIN Interrupt missed, bytevalue %02x\n", POKEY_SERIN);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
if (POKEY_DELAYED_SEROUT_IRQ > 0) {
|
||||
if (--POKEY_DELAYED_SEROUT_IRQ == 0) {
|
||||
if (POKEY_IRQEN & 0x10) {
|
||||
#ifdef DEBUG2
|
||||
printf("SERIO: SEROUT Interrupt triggered\n");
|
||||
#endif
|
||||
POKEY_IRQST &= 0xef;
|
||||
CPU_GenerateIRQ();
|
||||
}
|
||||
#ifdef DEBUG2
|
||||
else {
|
||||
printf("SERIO: SEROUT Interrupt missed\n");
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
if (POKEY_DELAYED_XMTDONE_IRQ > 0)
|
||||
if (--POKEY_DELAYED_XMTDONE_IRQ == 0) {
|
||||
POKEY_IRQST &= 0xf7;
|
||||
if (POKEY_IRQEN & 0x08) {
|
||||
#ifdef DEBUG2
|
||||
printf("SERIO: XMTDONE Interrupt triggered\n");
|
||||
#endif
|
||||
CPU_GenerateIRQ();
|
||||
}
|
||||
#ifdef DEBUG2
|
||||
else
|
||||
printf("SERIO: XMTDONE Interrupt missed\n");
|
||||
#endif
|
||||
}
|
||||
|
||||
if ((POKEY_DivNIRQ[POKEY_CHAN1] -= ANTIC_LINE_C) < 0 ) {
|
||||
POKEY_DivNIRQ[POKEY_CHAN1] += POKEY_DivNMax[POKEY_CHAN1];
|
||||
if (POKEY_IRQEN & 0x01) {
|
||||
POKEY_IRQST &= 0xfe;
|
||||
CPU_GenerateIRQ();
|
||||
}
|
||||
}
|
||||
|
||||
if ((POKEY_DivNIRQ[POKEY_CHAN2] -= ANTIC_LINE_C) < 0 ) {
|
||||
POKEY_DivNIRQ[POKEY_CHAN2] += POKEY_DivNMax[POKEY_CHAN2];
|
||||
if (POKEY_IRQEN & 0x02) {
|
||||
POKEY_IRQST &= 0xfd;
|
||||
CPU_GenerateIRQ();
|
||||
}
|
||||
}
|
||||
|
||||
if ((POKEY_DivNIRQ[POKEY_CHAN4] -= ANTIC_LINE_C) < 0 ) {
|
||||
POKEY_DivNIRQ[POKEY_CHAN4] += POKEY_DivNMax[POKEY_CHAN4];
|
||||
if (POKEY_IRQEN & 0x04) {
|
||||
POKEY_IRQST &= 0xfb;
|
||||
CPU_GenerateIRQ();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/* Module: Update_Counter() */
|
||||
/* Purpose: To process the latest control values stored in the AUDF, AUDC, */
|
||||
/* and AUDCTL registers. It pre-calculates as much information as */
|
||||
/* possible for better performance. This routine has been added */
|
||||
/* here again as I need the precise frequency for the pokey timers */
|
||||
/* again. The pokey emulation is therefore somewhat sub-optimal */
|
||||
/* since the actual pokey emulation should grab the frequency values */
|
||||
/* directly from here instead of calculating them again. */
|
||||
/* */
|
||||
/* Author: Ron Fries,Thomas Richter */
|
||||
/* Date: March 27, 1998 */
|
||||
/* */
|
||||
/* Inputs: chan_mask: Channel mask, one bit per channel. */
|
||||
/* The channels that need to be updated */
|
||||
/* */
|
||||
/* Outputs: Adjusts local globals - no return value */
|
||||
/* */
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Update_Counter(int chan_mask)
|
||||
{
|
||||
|
||||
/************************************************************/
|
||||
/* As defined in the manual, the exact Div_n_cnt values are */
|
||||
/* different depending on the frequency and resolution: */
|
||||
/* 64 kHz or 15 kHz - AUDF + 1 */
|
||||
/* 1 MHz, 8-bit - AUDF + 4 */
|
||||
/* 1 MHz, 16-bit - AUDF[CHAN1]+256*AUDF[CHAN2] + 7 */
|
||||
/************************************************************/
|
||||
|
||||
/* only reset the channels that have changed */
|
||||
|
||||
if (chan_mask & (1 << POKEY_CHAN1)) {
|
||||
/* process channel 1 frequency */
|
||||
if (POKEY_AUDCTL[0] & POKEY_CH1_179)
|
||||
POKEY_DivNMax[POKEY_CHAN1] = POKEY_AUDF[POKEY_CHAN1] + 4;
|
||||
else
|
||||
POKEY_DivNMax[POKEY_CHAN1] = (POKEY_AUDF[POKEY_CHAN1] + 1) * POKEY_Base_mult[0];
|
||||
if (POKEY_DivNMax[POKEY_CHAN1] < ANTIC_LINE_C)
|
||||
POKEY_DivNMax[POKEY_CHAN1] = ANTIC_LINE_C;
|
||||
}
|
||||
|
||||
if (chan_mask & (1 << POKEY_CHAN2)) {
|
||||
/* process channel 2 frequency */
|
||||
if (POKEY_AUDCTL[0] & POKEY_CH1_CH2) {
|
||||
if (POKEY_AUDCTL[0] & POKEY_CH1_179)
|
||||
POKEY_DivNMax[POKEY_CHAN2] = POKEY_AUDF[POKEY_CHAN2] * 256 + POKEY_AUDF[POKEY_CHAN1] + 7;
|
||||
else
|
||||
POKEY_DivNMax[POKEY_CHAN2] = (POKEY_AUDF[POKEY_CHAN2] * 256 + POKEY_AUDF[POKEY_CHAN1] + 1) * POKEY_Base_mult[0];
|
||||
}
|
||||
else
|
||||
POKEY_DivNMax[POKEY_CHAN2] = (POKEY_AUDF[POKEY_CHAN2] + 1) * POKEY_Base_mult[0];
|
||||
if (POKEY_DivNMax[POKEY_CHAN2] < ANTIC_LINE_C)
|
||||
POKEY_DivNMax[POKEY_CHAN2] = ANTIC_LINE_C;
|
||||
}
|
||||
|
||||
if (chan_mask & (1 << POKEY_CHAN4)) {
|
||||
/* process channel 4 frequency */
|
||||
if (POKEY_AUDCTL[0] & POKEY_CH3_CH4) {
|
||||
if (POKEY_AUDCTL[0] & POKEY_CH3_179)
|
||||
POKEY_DivNMax[POKEY_CHAN4] = POKEY_AUDF[POKEY_CHAN4] * 256 + POKEY_AUDF[POKEY_CHAN3] + 7;
|
||||
else
|
||||
POKEY_DivNMax[POKEY_CHAN4] = (POKEY_AUDF[POKEY_CHAN4] * 256 + POKEY_AUDF[POKEY_CHAN3] + 1) * POKEY_Base_mult[0];
|
||||
}
|
||||
else
|
||||
POKEY_DivNMax[POKEY_CHAN4] = (POKEY_AUDF[POKEY_CHAN4] + 1) * POKEY_Base_mult[0];
|
||||
if (POKEY_DivNMax[POKEY_CHAN4] < ANTIC_LINE_C)
|
||||
POKEY_DivNMax[POKEY_CHAN4] = ANTIC_LINE_C;
|
||||
}
|
||||
}
|
||||
|
||||
#ifndef BASIC
|
||||
|
||||
void POKEY_StateSave(void)
|
||||
{
|
||||
int shift_key = 0;
|
||||
int keypressed = 0;
|
||||
|
||||
StateSav_SaveUBYTE(&POKEY_KBCODE, 1);
|
||||
StateSav_SaveUBYTE(&POKEY_IRQST, 1);
|
||||
StateSav_SaveUBYTE(&POKEY_IRQEN, 1);
|
||||
StateSav_SaveUBYTE(&POKEY_SKCTL, 1);
|
||||
|
||||
StateSav_SaveINT(&shift_key, 1);
|
||||
StateSav_SaveINT(&keypressed, 1);
|
||||
StateSav_SaveINT(&POKEY_DELAYED_SERIN_IRQ, 1);
|
||||
StateSav_SaveINT(&POKEY_DELAYED_SEROUT_IRQ, 1);
|
||||
StateSav_SaveINT(&POKEY_DELAYED_XMTDONE_IRQ, 1);
|
||||
|
||||
StateSav_SaveUBYTE(&POKEY_AUDF[0], 4);
|
||||
StateSav_SaveUBYTE(&POKEY_AUDC[0], 4);
|
||||
StateSav_SaveUBYTE(&POKEY_AUDCTL[0], 1);
|
||||
|
||||
StateSav_SaveINT(&POKEY_DivNIRQ[0], 4);
|
||||
StateSav_SaveINT(&POKEY_DivNMax[0], 4);
|
||||
StateSav_SaveINT(&POKEY_Base_mult[0], 1);
|
||||
}
|
||||
|
||||
void POKEY_StateRead(void)
|
||||
{
|
||||
int i;
|
||||
int shift_key;
|
||||
int keypressed;
|
||||
|
||||
StateSav_ReadUBYTE(&POKEY_KBCODE, 1);
|
||||
StateSav_ReadUBYTE(&POKEY_IRQST, 1);
|
||||
StateSav_ReadUBYTE(&POKEY_IRQEN, 1);
|
||||
StateSav_ReadUBYTE(&POKEY_SKCTL, 1);
|
||||
|
||||
StateSav_ReadINT(&shift_key, 1);
|
||||
StateSav_ReadINT(&keypressed, 1);
|
||||
StateSav_ReadINT(&POKEY_DELAYED_SERIN_IRQ, 1);
|
||||
StateSav_ReadINT(&POKEY_DELAYED_SEROUT_IRQ, 1);
|
||||
StateSav_ReadINT(&POKEY_DELAYED_XMTDONE_IRQ, 1);
|
||||
|
||||
StateSav_ReadUBYTE(&POKEY_AUDF[0], 4);
|
||||
StateSav_ReadUBYTE(&POKEY_AUDC[0], 4);
|
||||
StateSav_ReadUBYTE(&POKEY_AUDCTL[0], 1);
|
||||
for (i = 0; i < 4; i++) {
|
||||
POKEY_PutByte((UWORD) (POKEY_OFFSET_AUDF1 + i * 2), POKEY_AUDF[i]);
|
||||
POKEY_PutByte((UWORD) (POKEY_OFFSET_AUDC1 + i * 2), POKEY_AUDC[i]);
|
||||
}
|
||||
POKEY_PutByte(POKEY_OFFSET_AUDCTL, POKEY_AUDCTL[0]);
|
||||
|
||||
StateSav_ReadINT(&POKEY_DivNIRQ[0], 4);
|
||||
StateSav_ReadINT(&POKEY_DivNMax[0], 4);
|
||||
StateSav_ReadINT(&POKEY_Base_mult[0], 1);
|
||||
}
|
||||
|
||||
#endif
|
|
@ -0,0 +1,120 @@
|
|||
#ifndef POKEY_H_
|
||||
#define POKEY_H_
|
||||
|
||||
|
||||
#include "atari.h"
|
||||
|
||||
|
||||
#define POKEY_OFFSET_AUDF1 0x00
|
||||
#define POKEY_OFFSET_AUDC1 0x01
|
||||
#define POKEY_OFFSET_AUDF2 0x02
|
||||
#define POKEY_OFFSET_AUDC2 0x03
|
||||
#define POKEY_OFFSET_AUDF3 0x04
|
||||
#define POKEY_OFFSET_AUDC3 0x05
|
||||
#define POKEY_OFFSET_AUDF4 0x06
|
||||
#define POKEY_OFFSET_AUDC4 0x07
|
||||
#define POKEY_OFFSET_AUDCTL 0x08
|
||||
#define POKEY_OFFSET_STIMER 0x09
|
||||
#define POKEY_OFFSET_SKRES 0x0a
|
||||
#define POKEY_OFFSET_POTGO 0x0b
|
||||
#define POKEY_OFFSET_SEROUT 0x0d
|
||||
#define POKEY_OFFSET_IRQEN 0x0e
|
||||
#define POKEY_OFFSET_SKCTL 0x0f
|
||||
|
||||
#define POKEY_OFFSET_POT0 0x00
|
||||
#define POKEY_OFFSET_POT1 0x01
|
||||
#define POKEY_OFFSET_POT2 0x02
|
||||
#define POKEY_OFFSET_POT3 0x03
|
||||
#define POKEY_OFFSET_POT4 0x04
|
||||
#define POKEY_OFFSET_POT5 0x05
|
||||
#define POKEY_OFFSET_POT6 0x06
|
||||
#define POKEY_OFFSET_POT7 0x07
|
||||
#define POKEY_OFFSET_ALLPOT 0x08
|
||||
#define POKEY_OFFSET_KBCODE 0x09
|
||||
#define POKEY_OFFSET_RANDOM 0x0a
|
||||
#define POKEY_OFFSET_SERIN 0x0d
|
||||
#define POKEY_OFFSET_IRQST 0x0e
|
||||
#define POKEY_OFFSET_SKSTAT 0x0f
|
||||
|
||||
#define POKEY_OFFSET_POKEY2 0x10 /* offset to second pokey chip (STEREO expansion) */
|
||||
|
||||
#ifndef ASAP
|
||||
|
||||
extern UBYTE POKEY_KBCODE;
|
||||
extern UBYTE POKEY_IRQST;
|
||||
extern UBYTE POKEY_IRQEN;
|
||||
extern UBYTE POKEY_SKSTAT;
|
||||
extern UBYTE POKEY_SKCTL;
|
||||
extern int POKEY_DELAYED_SERIN_IRQ;
|
||||
extern int POKEY_DELAYED_SEROUT_IRQ;
|
||||
extern int POKEY_DELAYED_XMTDONE_IRQ;
|
||||
|
||||
extern UBYTE POKEY_POT_input[8];
|
||||
|
||||
ULONG POKEY_GetRandomCounter(void);
|
||||
void POKEY_SetRandomCounter(ULONG value);
|
||||
UBYTE POKEY_GetByte(UWORD addr, int no_side_effects);
|
||||
void POKEY_PutByte(UWORD addr, UBYTE byte);
|
||||
int POKEY_Initialise(void);
|
||||
void POKEY_Frame(void);
|
||||
void POKEY_Scanline(void);
|
||||
void POKEY_StateSave(void);
|
||||
void POKEY_StateRead(void);
|
||||
|
||||
#endif
|
||||
|
||||
/* CONSTANT DEFINITIONS */
|
||||
|
||||
/* definitions for AUDCx (D201, D203, D205, D207) */
|
||||
#define POKEY_NOTPOLY5 0x80 /* selects POLY5 or direct CLOCK */
|
||||
#define POKEY_POLY4 0x40 /* selects POLY4 or POLY17 */
|
||||
#define POKEY_PURETONE 0x20 /* selects POLY4/17 or PURE tone */
|
||||
#define POKEY_VOL_ONLY 0x10 /* selects VOLUME OUTPUT ONLY */
|
||||
#define POKEY_VOLUME_MASK 0x0f /* volume mask */
|
||||
|
||||
/* definitions for AUDCTL (D208) */
|
||||
#define POKEY_POLY9 0x80 /* selects POLY9 or POLY17 */
|
||||
#define POKEY_CH1_179 0x40 /* selects 1.78979 MHz for Ch 1 */
|
||||
#define POKEY_CH3_179 0x20 /* selects 1.78979 MHz for Ch 3 */
|
||||
#define POKEY_CH1_CH2 0x10 /* clocks channel 1 w/channel 2 */
|
||||
#define POKEY_CH3_CH4 0x08 /* clocks channel 3 w/channel 4 */
|
||||
#define POKEY_CH1_FILTER 0x04 /* selects channel 1 high pass filter */
|
||||
#define POKEY_CH2_FILTER 0x02 /* selects channel 2 high pass filter */
|
||||
#define POKEY_CLOCK_15 0x01 /* selects 15.6999kHz or 63.9210kHz */
|
||||
|
||||
/* for accuracy, the 64kHz and 15kHz clocks are exact divisions of
|
||||
the 1.79MHz clock */
|
||||
#define POKEY_DIV_64 28 /* divisor for 1.79MHz clock to 64 kHz */
|
||||
#define POKEY_DIV_15 114 /* divisor for 1.79MHz clock to 15 kHz */
|
||||
|
||||
/* the size (in entries) of the 4 polynomial tables */
|
||||
#define POKEY_POLY4_SIZE 0x000f
|
||||
#define POKEY_POLY5_SIZE 0x001f
|
||||
#define POKEY_POLY9_SIZE 511 //0x01ff
|
||||
#define POKEY_POLY17_SIZE 16385//0x0001ffff
|
||||
|
||||
#define POKEY_MAXPOKEYS 2 /* max number of emulated chips */
|
||||
|
||||
/* channel/chip definitions */
|
||||
#define POKEY_CHAN1 0
|
||||
#define POKEY_CHAN2 1
|
||||
#define POKEY_CHAN3 2
|
||||
#define POKEY_CHAN4 3
|
||||
#define POKEY_CHIP1 0
|
||||
#define POKEY_CHIP2 4
|
||||
#define POKEY_CHIP3 8
|
||||
#define POKEY_CHIP4 12
|
||||
#define POKEY_SAMPLE 127
|
||||
|
||||
/* structures to hold the 9 pokey control bytes */
|
||||
extern UBYTE POKEY_AUDF[4 * POKEY_MAXPOKEYS]; /* AUDFx (D200, D202, D204, D206) */
|
||||
extern UBYTE POKEY_AUDC[4 * POKEY_MAXPOKEYS]; /* AUDCx (D201, D203, D205, D207) */
|
||||
extern UBYTE POKEY_AUDCTL[POKEY_MAXPOKEYS]; /* AUDCTL (D208) */
|
||||
|
||||
extern int POKEY_DivNIRQ[4], POKEY_DivNMax[4];
|
||||
extern int POKEY_Base_mult[POKEY_MAXPOKEYS]; /* selects either 64Khz or 15Khz clock mult */
|
||||
|
||||
extern const UBYTE POKEY_poly9_lookup[POKEY_POLY9_SIZE];
|
||||
extern const UBYTE POKEY_poly17_lookup[POKEY_POLY17_SIZE];
|
||||
|
||||
#endif /* POKEY_H_ */
|
Plik diff jest za duży
Load Diff
|
@ -0,0 +1,147 @@
|
|||
/*****************************************************************************/
|
||||
/* */
|
||||
/* Module: POKEY Chip Simulator Includes, V2.3 */
|
||||
/* Purpose: To emulate the sound generation hardware of the Atari POKEY chip. */
|
||||
/* Author: Ron Fries */
|
||||
/* */
|
||||
/* Revision History: */
|
||||
/* */
|
||||
/* 09/22/96 - Ron Fries - Initial Release */
|
||||
/* 04/06/97 - Brad Oliver - Some cross-platform modifications. Added */
|
||||
/* big/little endian #defines, removed <dos.h>, */
|
||||
/* conditional defines for TRUE/FALSE */
|
||||
/* 01/19/98 - Ron Fries - Changed signed/unsigned sample support to a */
|
||||
/* compile-time option. Defaults to unsigned - */
|
||||
/* define SIGNED_SAMPLES to create signed. */
|
||||
/* */
|
||||
/*****************************************************************************/
|
||||
/* */
|
||||
/* License Information and Copyright Notice */
|
||||
/* ======================================== */
|
||||
/* */
|
||||
/* PokeySound is Copyright(c) 1996-1998 by Ron Fries */
|
||||
/* */
|
||||
/* This library is free software; you can redistribute it and/or modify it */
|
||||
/* under the terms of version 2 of the GNU Library General Public License */
|
||||
/* as published by the Free Software Foundation. */
|
||||
/* */
|
||||
/* This library is distributed in the hope that it will be useful, but */
|
||||
/* WITHOUT ANY WARRANTY; without even the implied warranty of */
|
||||
/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library */
|
||||
/* General Public License for more details. */
|
||||
/* To obtain a copy of the GNU Library General Public License, write to the */
|
||||
/* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||||
/* */
|
||||
/* Any permitted reproduction of these routines, in whole or in part, must */
|
||||
/* bear this legend. */
|
||||
/* */
|
||||
/*****************************************************************************/
|
||||
|
||||
#ifndef POKEYSND_H_
|
||||
#define POKEYSND_H_
|
||||
|
||||
#include "atari.h"
|
||||
#include "pokey.h"
|
||||
|
||||
/* CONSTANT DEFINITIONS */
|
||||
|
||||
/* As an alternative to using the exact frequencies, selecting a playback
|
||||
frequency that is an exact division of the main clock provides a higher
|
||||
quality output due to less aliasing. For best results, a value of
|
||||
1787520 MHz is used for the main clock. With this value, both the
|
||||
64 kHz and 15 kHz clocks are evenly divisible. Selecting a playback
|
||||
frequency that is also a division of the clock provides the best
|
||||
results. The best options are FREQ_64 divided by either 2, 3, or 4.
|
||||
The best selection is based on a trade off between performance and
|
||||
sound quality.
|
||||
|
||||
Of course, using a main clock frequency that is not exact will affect
|
||||
the pitch of the output. With these numbers, the pitch will be low
|
||||
by 0.127%. (More than likely, an actual unit will vary by this much!) */
|
||||
|
||||
#define POKEYSND_FREQ_17_EXACT 1789790 /* exact 1.79 MHz clock freq */
|
||||
#define POKEYSND_FREQ_17_APPROX 1787520 /* approximate 1.79 MHz clock freq */
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifdef POKEYSND_SIGNED_SAMPLES /* if signed output selected */
|
||||
#define POKEYSND_SAMP_MAX 255 /* else set unsigned 8-bit clip ranges */
|
||||
#define POKEYSND_SAMP_MIN 0
|
||||
#define POKEYSND_SAMP_MID 128
|
||||
//#define POKEYSND_SAMP_MAX 127 /* then set signed 8-bit clipping ranges */
|
||||
//#define POKEYSND_SAMP_MIN -128
|
||||
//#define POKEYSND_SAMP_MID 0
|
||||
#else
|
||||
#define POKEYSND_SAMP_MAX 255 /* else set unsigned 8-bit clip ranges */
|
||||
#define POKEYSND_SAMP_MIN 0
|
||||
#define POKEYSND_SAMP_MID 128
|
||||
#endif
|
||||
|
||||
/* init flags */
|
||||
#define POKEYSND_BIT16 1
|
||||
|
||||
extern SLONG POKEYSND_playback_freq;
|
||||
extern UBYTE POKEYSND_num_pokeys;
|
||||
extern int POKEYSND_snd_flags;
|
||||
extern int POKEYSND_volume;
|
||||
|
||||
extern int POKEYSND_enable_new_pokey;
|
||||
extern int POKEYSND_stereo_enabled;
|
||||
extern int POKEYSND_serio_sound_enabled;
|
||||
extern int POKEYSND_console_sound_enabled;
|
||||
extern int POKEYSND_bienias_fix;
|
||||
|
||||
extern void (*POKEYSND_Process_ptr)(void *sndbuffer, int sndn);
|
||||
extern void (*POKEYSND_Update_ptr)(UWORD addr, UBYTE val, UBYTE chip, UBYTE gain);
|
||||
extern void (*POKEYSND_UpdateSerio)(int out, UBYTE data);
|
||||
extern void (*POKEYSND_UpdateConsol_ptr)(int set);
|
||||
extern void (*POKEYSND_UpdateVolOnly)(void);
|
||||
|
||||
int POKEYSND_Init(ULONG freq17, int playback_freq, UBYTE num_pokeys,
|
||||
int flags
|
||||
#ifdef __PLUS
|
||||
, int clear_regs
|
||||
#endif
|
||||
);
|
||||
void POKEYSND_Update(UWORD addr, UBYTE val, UBYTE /*chip*/, UBYTE gain);
|
||||
void POKEYSND_UpdateConsol(int set);
|
||||
|
||||
/* Fill sndbuffer with sndn samples of audio. Number of bytes written to
|
||||
sndbuffer is sndn with 8-bit sound, and 2*sndn with 16-bit sound. sndn
|
||||
must be a multiple of POKEYSND_num_pokeys. */
|
||||
void POKEYSND_Process(void *sndbuffer, int sndn);
|
||||
int POKEYSND_DoInit(void);
|
||||
void POKEYSND_SetMzQuality(int quality);
|
||||
void POKEYSND_SetVolume(int vol);
|
||||
|
||||
/* Volume only emulations declarations */
|
||||
#ifdef VOL_ONLY_SOUND
|
||||
|
||||
#define POKEYSND_SAMPBUF_MAX 2000
|
||||
extern int POKEYSND_sampbuf_val[POKEYSND_SAMPBUF_MAX]; /* volume values */
|
||||
extern int POKEYSND_sampbuf_cnt[POKEYSND_SAMPBUF_MAX]; /* relative start time */
|
||||
extern int POKEYSND_sampbuf_ptr; /* pointer to sampbuf */
|
||||
extern int POKEYSND_sampbuf_rptr; /* pointer to read from sampbuf */
|
||||
extern int POKEYSND_sampbuf_last; /* last absolute time */
|
||||
extern int POKEYSND_sampbuf_AUDV[4 * POKEY_MAXPOKEYS]; /* prev. channel volume */
|
||||
extern int POKEYSND_sampbuf_lastval; /* last volume */
|
||||
extern int POKEYSND_sampout; /* last out volume */
|
||||
extern int POKEYSND_samp_freq;
|
||||
extern int POKEYSND_samp_consol_val; /* actual value of console sound */
|
||||
#endif /* VOL_ONLY_SOUND */
|
||||
|
||||
#ifdef SYNCHRONIZED_SOUND
|
||||
extern UBYTE *POKEYSND_process_buffer;
|
||||
extern unsigned int POKEYSND_process_buffer_length;
|
||||
extern unsigned int POKEYSND_process_buffer_fill;
|
||||
extern void (*POKEYSND_GenerateSync)(unsigned int num_ticks);
|
||||
int POKEYSND_UpdateProcessBuffer(void);
|
||||
#endif /* SYNCHRONIZED_SOUND */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif /* POKEYSND_H_ */
|
|
@ -0,0 +1,642 @@
|
|||
const UBYTE PROGMEM romos[10240] = {
|
||||
0x20,0xA1,0xDB,0x20,0xBB,0xDB,0xB0,0x39,0xA2,0xED,0xA0,0x04,0x20,0x48,0xDA,0xA2,
|
||||
0xFF,0x86,0xF1,0x20,0x44,0xDA,0xF0,0x04,0xA9,0xFF,0x85,0xF0,0x20,0x94,0xDB,0xB0,
|
||||
0x21,0x48,0xA6,0xD5,0xD0,0x11,0x20,0xEB,0xDB,0x68,0x05,0xD9,0x85,0xD9,0xA6,0xF1,
|
||||
0x30,0xE6,0xE8,0x86,0xF1,0xD0,0xE1,0x68,0xA6,0xF1,0x10,0x02,0xE6,0xED,0x4C,0x18,
|
||||
0xD8,0x60,0xC9,0x2E,0xF0,0x14,0xC9,0x45,0xF0,0x19,0xA6,0xF0,0xD0,0x68,0xC9,0x2B,
|
||||
0xF0,0xC6,0xC9,0x2D,0xF0,0x00,0x85,0xEE,0xF0,0xBE,0xA6,0xF1,0x10,0x58,0xE8,0x86,
|
||||
0xF1,0xF0,0xB5,0xA5,0xF2,0x85,0xEC,0x20,0x94,0xDB,0xB0,0x37,0xAA,0xA5,0xED,0x48,
|
||||
0x86,0xED,0x20,0x94,0xDB,0xB0,0x17,0x48,0xA5,0xED,0x0A,0x85,0xED,0x0A,0x0A,0x65,
|
||||
0xED,0x85,0xED,0x68,0x18,0x65,0xED,0x85,0xED,0xA4,0xF2,0x20,0x9D,0xDB,0xA5,0xEF,
|
||||
0xF0,0x09,0xA5,0xED,0x49,0xFF,0x18,0x69,0x01,0x85,0xED,0x68,0x18,0x65,0xED,0x85,
|
||||
0xED,0xD0,0x13,0xC9,0x2B,0xF0,0x06,0xC9,0x2D,0xD0,0x07,0x85,0xEF,0x20,0x94,0xDB,
|
||||
0x90,0xBA,0xA5,0xEC,0x85,0xF2,0xC6,0xF2,0xA5,0xED,0xA6,0xF1,0x30,0x05,0xF0,0x03,
|
||||
0x38,0xE5,0xF1,0x48,0x2A,0x68,0x6A,0x85,0xED,0x90,0x03,0x20,0xEB,0xDB,0xA5,0xED,
|
||||
0x18,0x69,0x44,0x85,0xD4,0x20,0x00,0xDC,0xB0,0x0B,0xA6,0xEE,0xF0,0x06,0xA5,0xD4,
|
||||
0x09,0x80,0x85,0xD4,0x18,0x60,0x20,0x51,0xDA,0xA9,0x30,0x8D,0x7F,0x05,0xA5,0xD4,
|
||||
0xF0,0x28,0x29,0x7F,0xC9,0x3F,0x90,0x28,0xC9,0x45,0xB0,0x24,0x38,0xE9,0x3F,0x20,
|
||||
0x70,0xDC,0x20,0xA4,0xDC,0x09,0x80,0x9D,0x80,0x05,0xAD,0x80,0x05,0xC9,0x2E,0xF0,
|
||||
0x03,0x4C,0x88,0xD9,0x20,0xC1,0xDC,0x4C,0x9C,0xD9,0xA9,0xB0,0x8D,0x80,0x05,0x60,
|
||||
0xA9,0x01,0x20,0x70,0xDC,0x20,0xA4,0xDC,0xE8,0x86,0xF2,0xA5,0xD4,0x0A,0x38,0xE9,
|
||||
0x80,0xAE,0x80,0x05,0xE0,0x30,0xF0,0x17,0xAE,0x81,0x05,0xAC,0x82,0x05,0x8E,0x82,
|
||||
0x05,0x8C,0x81,0x05,0xA6,0xF2,0xE0,0x02,0xD0,0x02,0xE6,0xF2,0x18,0x69,0x01,0x85,
|
||||
0xED,0xA9,0x45,0xA4,0xF2,0x20,0x9F,0xDC,0x84,0xF2,0xA5,0xED,0x10,0x0B,0xA9,0x00,
|
||||
0x38,0xE5,0xED,0x85,0xED,0xA9,0x2D,0xD0,0x02,0xA9,0x2B,0x20,0x9F,0xDC,0xA2,0x00,
|
||||
0xA5,0xED,0x38,0xE9,0x0A,0x90,0x03,0xE8,0xD0,0xF8,0x18,0x69,0x0A,0x48,0x8A,0x20,
|
||||
0x9D,0xDC,0x68,0x09,0x80,0x20,0x9D,0xDC,0xAD,0x80,0x05,0xC9,0x30,0xD0,0x0D,0x18,
|
||||
0xA5,0xF3,0x69,0x01,0x85,0xF3,0xA5,0xF4,0x69,0x00,0x85,0xF4,0xA5,0xD4,0x10,0x09,
|
||||
0x20,0xC1,0xDC,0xA0,0x00,0xA9,0x2D,0x91,0xF3,0x60,0xA5,0xD4,0x85,0xF8,0xA5,0xD5,
|
||||
0x85,0xF7,0x20,0x44,0xDA,0xF8,0xA0,0x10,0x06,0xF8,0x26,0xF7,0xA2,0x03,0xB5,0xD4,
|
||||
0x75,0xD4,0x95,0xD4,0xCA,0xD0,0xF7,0x88,0xD0,0xEE,0xD8,0xA9,0x42,0x85,0xD4,0x4C,
|
||||
0x00,0xDC,0xA9,0x00,0x85,0xF7,0x85,0xF8,0xA5,0xD4,0x30,0x66,0xC9,0x43,0xB0,0x62,
|
||||
0x38,0xE9,0x40,0x90,0x3F,0x69,0x00,0x0A,0x85,0xF5,0x20,0x5A,0xDA,0xB0,0x53,0xA5,
|
||||
0xF7,0x85,0xF9,0xA5,0xF8,0x85,0xFA,0x20,0x5A,0xDA,0xB0,0x46,0x20,0x5A,0xDA,0xB0,
|
||||
0x41,0x18,0xA5,0xF8,0x65,0xFA,0x85,0xF8,0xA5,0xF7,0x65,0xF9,0x85,0xF7,0xB0,0x32,
|
||||
0x20,0xB9,0xDC,0x18,0x65,0xF8,0x85,0xF8,0xA5,0xF7,0x69,0x00,0xB0,0x24,0x85,0xF7,
|
||||
0xC6,0xF5,0xD0,0xC6,0x20,0xB9,0xDC,0xC9,0x05,0x90,0x0D,0x18,0xA5,0xF8,0x69,0x01,
|
||||
0x85,0xF8,0xA5,0xF7,0x69,0x00,0x85,0xF7,0xA5,0xF8,0x85,0xD4,0xA5,0xF7,0x85,0xD5,
|
||||
0x18,0x60,0x38,0x60,0xA2,0xD4,0xA0,0x06,0xA9,0x00,0x95,0x00,0xE8,0x88,0xD0,0xFA,
|
||||
0x60,0xA9,0x05,0x85,0xF4,0xA9,0x80,0x85,0xF3,0x60,0x18,0x26,0xF8,0x26,0xF7,0x60,
|
||||
0xA5,0xE0,0x49,0x80,0x85,0xE0,0xA5,0xE0,0x29,0x7F,0x85,0xF7,0xA5,0xD4,0x29,0x7F,
|
||||
0x38,0xE5,0xF7,0x10,0x10,0xA2,0x05,0xB5,0xD4,0xB4,0xE0,0x95,0xE0,0x98,0x95,0xD4,
|
||||
0xCA,0x10,0xF4,0x30,0xE1,0xF0,0x07,0xC9,0x05,0xB0,0x19,0x20,0x3E,0xDC,0xF8,0xA5,
|
||||
0xD4,0x45,0xE0,0x30,0x1E,0xA2,0x04,0x18,0xB5,0xD5,0x75,0xE1,0x95,0xD5,0xCA,0x10,
|
||||
0xF7,0xD8,0xB0,0x03,0x4C,0x00,0xDC,0xA9,0x01,0x20,0x3A,0xDC,0xA9,0x01,0x85,0xD5,
|
||||
0x4C,0x00,0xDC,0xA2,0x04,0x38,0xB5,0xD5,0xF5,0xE1,0x95,0xD5,0xCA,0x10,0xF7,0x90,
|
||||
0x04,0xD8,0x4C,0x00,0xDC,0xA5,0xD4,0x49,0x80,0x85,0xD4,0x38,0xA2,0x04,0xA9,0x00,
|
||||
0xF5,0xD5,0x95,0xD5,0xCA,0x10,0xF7,0xD8,0x4C,0x00,0xDC,0xA5,0xD4,0xF0,0x45,0xA5,
|
||||
0xE0,0xF0,0x3E,0x20,0xCF,0xDC,0x38,0xE9,0x40,0x38,0x65,0xE0,0x30,0x38,0x20,0xE0,
|
||||
0xDC,0xA5,0xDF,0x29,0x0F,0x85,0xF6,0xC6,0xF6,0x30,0x06,0x20,0x01,0xDD,0x4C,0xF7,
|
||||
0xDA,0xA5,0xDF,0x4A,0x4A,0x4A,0x4A,0x85,0xF6,0xC6,0xF6,0x30,0x06,0x20,0x05,0xDD,
|
||||
0x4C,0x09,0xDB,0x20,0x62,0xDC,0xC6,0xF5,0xD0,0xD7,0xA5,0xED,0x85,0xD4,0x4C,0x04,
|
||||
0xDC,0x20,0x44,0xDA,0x18,0x60,0x38,0x60,0xA5,0xE0,0xF0,0xFA,0xA5,0xD4,0xF0,0xF4,
|
||||
0x20,0xCF,0xDC,0x38,0xE5,0xE0,0x18,0x69,0x40,0x30,0xEB,0x20,0xE0,0xDC,0xE6,0xF5,
|
||||
0x4C,0x4E,0xDB,0xA2,0x00,0xB5,0xD5,0x95,0xD4,0xE8,0xE0,0x0C,0xD0,0xF7,0xA0,0x05,
|
||||
0x38,0xF8,0xB9,0xDA,0x00,0xF9,0xE6,0x00,0x99,0xDA,0x00,0x88,0x10,0xF4,0xD8,0x90,
|
||||
0x04,0xE6,0xD9,0xD0,0xE9,0x20,0x0F,0xDD,0x06,0xD9,0x06,0xD9,0x06,0xD9,0x06,0xD9,
|
||||
0xA0,0x05,0x38,0xF8,0xB9,0xDA,0x00,0xF9,0xE0,0x00,0x99,0xDA,0x00,0x88,0x10,0xF4,
|
||||
0xD8,0x90,0x04,0xE6,0xD9,0xD0,0xE9,0x20,0x09,0xDD,0xC6,0xF5,0xD0,0xB5,0x20,0x62,
|
||||
0xDC,0x4C,0x1A,0xDB,0x20,0xAF,0xDB,0xA4,0xF2,0x90,0x02,0xB1,0xF3,0xC8,0x84,0xF2,
|
||||
0x60,0xA4,0xF2,0xA9,0x20,0xD1,0xF3,0xD0,0x03,0xC8,0xD0,0xF9,0x84,0xF2,0x60,0xA4,
|
||||
0xF2,0xB1,0xF3,0x38,0xE9,0x30,0x90,0x18,0xC9,0x0A,0x60,0xA5,0xF2,0x48,0x20,0x94,
|
||||
0xDB,0x90,0x1F,0xC9,0x2E,0xF0,0x14,0xC9,0x2B,0xF0,0x07,0xC9,0x2D,0xF0,0x03,0x68,
|
||||
0x38,0x60,0x20,0x94,0xDB,0x90,0x0B,0xC9,0x2E,0xD0,0xF4,0x20,0x94,0xDB,0x90,0x02,
|
||||
0xB0,0xED,0x68,0x85,0xF2,0x18,0x60,0xA2,0xE7,0xD0,0x02,0xA2,0xD5,0xA0,0x04,0x18,
|
||||
0x36,0x04,0x36,0x03,0x36,0x02,0x36,0x01,0x36,0x00,0x26,0xEC,0x88,0xD0,0xF0,0x60,
|
||||
0xA2,0x00,0x86,0xDA,0xA2,0x04,0xA5,0xD4,0xF0,0x2E,0xA5,0xD5,0xD0,0x1A,0xA0,0x00,
|
||||
0xB9,0xD6,0x00,0x99,0xD5,0x00,0xC8,0xC0,0x05,0x90,0xF5,0xC6,0xD4,0xCA,0xD0,0xEA,
|
||||
0xA5,0xD5,0xD0,0x04,0x85,0xD4,0x18,0x60,0xA5,0xD4,0x29,0x7F,0xC9,0x71,0x90,0x01,
|
||||
0x60,0xC9,0x0F,0xB0,0x03,0x20,0x44,0xDA,0x18,0x60,0xA2,0xD4,0xD0,0x02,0xA2,0xE0,
|
||||
0x86,0xF9,0x85,0xF7,0x85,0xF8,0xA0,0x04,0xB5,0x04,0x95,0x05,0xCA,0x88,0xD0,0xF8,
|
||||
0xA9,0x00,0x95,0x05,0xA6,0xF9,0xC6,0xF7,0xD0,0xEC,0xB5,0x00,0x18,0x65,0xF8,0x95,
|
||||
0x00,0x60,0xA2,0x0A,0xB5,0xD4,0x95,0xD5,0xCA,0x10,0xF9,0xA9,0x00,0x85,0xD4,0x60,
|
||||
0x85,0xF7,0xA2,0x00,0xA0,0x00,0x20,0x93,0xDC,0x38,0xE9,0x01,0x85,0xF7,0xB5,0xD5,
|
||||
0x4A,0x4A,0x4A,0x4A,0x20,0x9D,0xDC,0xB5,0xD5,0x29,0x0F,0x20,0x9D,0xDC,0xE8,0xE0,
|
||||
0x05,0x90,0xE3,0xA5,0xF7,0xD0,0x05,0xA9,0x2E,0x20,0x9F,0xDC,0x60,0x09,0x30,0x99,
|
||||
0x80,0x05,0xC8,0x60,0xA2,0x0A,0xBD,0x80,0x05,0xC9,0x2E,0xF0,0x07,0xC9,0x30,0xD0,
|
||||
0x07,0xCA,0xD0,0xF2,0xCA,0xBD,0x80,0x05,0x60,0x20,0xEB,0xDB,0xA5,0xEC,0x29,0x0F,
|
||||
0x60,0x38,0xA5,0xF3,0xE9,0x01,0x85,0xF3,0xA5,0xF4,0xE9,0x00,0x85,0xF4,0x60,0xA5,
|
||||
0xD4,0x45,0xE0,0x29,0x80,0x85,0xEE,0x06,0xE0,0x46,0xE0,0xA5,0xD4,0x29,0x7F,0x60,
|
||||
0x05,0xEE,0x85,0xED,0xA9,0x00,0x85,0xD4,0x85,0xE0,0x20,0x28,0xDD,0x20,0xE7,0xDB,
|
||||
0xA5,0xEC,0x29,0x0F,0x85,0xE6,0xA9,0x05,0x85,0xF5,0x20,0x34,0xDD,0x20,0x44,0xDA,
|
||||
0x60,0xA2,0xD9,0xD0,0x06,0xA2,0xD9,0xD0,0x08,0xA2,0xDF,0xA0,0xE5,0xD0,0x04,0xA2,
|
||||
0xDF,0xA0,0xEB,0xA9,0x05,0x85,0xF7,0x18,0xF8,0xB5,0x00,0x79,0x00,0x00,0x95,0x00,
|
||||
0xCA,0x88,0xC6,0xF7,0x10,0xF3,0xD8,0x60,0xA0,0x05,0xB9,0xE0,0x00,0x99,0xE6,0x00,
|
||||
0x88,0x10,0xF7,0x60,0xA0,0x05,0xB9,0xD4,0x00,0x99,0xDA,0x00,0x88,0x10,0xF7,0x60,
|
||||
0x86,0xFE,0x84,0xFF,0x85,0xEF,0xA2,0xE0,0xA0,0x05,0x20,0xA7,0xDD,0x20,0xB6,0xDD,
|
||||
0xA6,0xFE,0xA4,0xFF,0x20,0x89,0xDD,0xC6,0xEF,0xF0,0x2D,0x20,0xDB,0xDA,0xB0,0x28,
|
||||
0x18,0xA5,0xFE,0x69,0x06,0x85,0xFE,0x90,0x06,0xA5,0xFF,0x69,0x00,0x85,0xFF,0xA6,
|
||||
0xFE,0xA4,0xFF,0x20,0x98,0xDD,0x20,0x66,0xDA,0xB0,0x0D,0xC6,0xEF,0xF0,0x09,0xA2,
|
||||
0xE0,0xA0,0x05,0x20,0x98,0xDD,0x30,0xD3,0x60,0x86,0xFC,0x84,0xFD,0xA0,0x05,0xB1,
|
||||
0xFC,0x99,0xD4,0x00,0x88,0x10,0xF8,0x60,0x86,0xFC,0x84,0xFD,0xA0,0x05,0xB1,0xFC,
|
||||
0x99,0xE0,0x00,0x88,0x10,0xF8,0x60,0x86,0xFC,0x84,0xFD,0xA0,0x05,0xB9,0xD4,0x00,
|
||||
0x91,0xFC,0x88,0x10,0xF8,0x60,0xA2,0x05,0xB5,0xD4,0x95,0xE0,0xCA,0x10,0xF9,0x60,
|
||||
0xA2,0x89,0xA0,0xDE,0x20,0x98,0xDD,0x20,0xDB,0xDA,0xB0,0x7F,0xA9,0x00,0x85,0xF1,
|
||||
0xA5,0xD4,0x85,0xF0,0x29,0x7F,0x85,0xD4,0x38,0xE9,0x40,0x30,0x26,0xC9,0x04,0x10,
|
||||
0x6A,0xA2,0xE6,0xA0,0x05,0x20,0xA7,0xDD,0x20,0xD2,0xD9,0xA5,0xD4,0x85,0xF1,0xA5,
|
||||
0xD5,0xD0,0x58,0x20,0xAA,0xD9,0x20,0xB6,0xDD,0xA2,0xE6,0xA0,0x05,0x20,0x89,0xDD,
|
||||
0x20,0x60,0xDA,0xA9,0x0A,0xA2,0x4D,0xA0,0xDE,0x20,0x40,0xDD,0x20,0xB6,0xDD,0x20,
|
||||
0xDB,0xDA,0xA5,0xF1,0xF0,0x23,0x18,0x6A,0x85,0xE0,0xA9,0x01,0x90,0x02,0xA9,0x10,
|
||||
0x85,0xE1,0xA2,0x04,0xA9,0x00,0x95,0xE2,0xCA,0x10,0xFB,0xA5,0xE0,0x18,0x69,0x40,
|
||||
0xB0,0x19,0x30,0x17,0x85,0xE0,0x20,0xDB,0xDA,0xA5,0xF0,0x10,0x0D,0x20,0xB6,0xDD,
|
||||
0xA2,0x8F,0xA0,0xDE,0x20,0x89,0xDD,0x20,0x28,0xDB,0x60,0x38,0x60,0x3D,0x17,0x94,
|
||||
0x19,0x00,0x00,0x3D,0x57,0x33,0x05,0x00,0x00,0x3E,0x05,0x54,0x76,0x62,0x00,0x3E,
|
||||
0x32,0x19,0x62,0x27,0x00,0x3F,0x01,0x68,0x60,0x30,0x36,0x3F,0x07,0x32,0x03,0x27,
|
||||
0x41,0x3F,0x25,0x43,0x34,0x56,0x75,0x3F,0x66,0x27,0x37,0x30,0x50,0x40,0x01,0x15,
|
||||
0x12,0x92,0x55,0x3F,0x99,0x99,0x99,0x99,0x99,0x3F,0x43,0x42,0x94,0x48,0x19,0x40,
|
||||
0x01,0x00,0x00,0x00,0x00,0x86,0xFE,0x84,0xFF,0xA2,0xE0,0xA0,0x05,0x20,0xA7,0xDD,
|
||||
0xA6,0xFE,0xA4,0xFF,0x20,0x98,0xDD,0x20,0x66,0xDA,0xA2,0xE6,0xA0,0x05,0x20,0xA7,
|
||||
0xDD,0xA2,0xE0,0xA0,0x05,0x20,0x89,0xDD,0xA6,0xFE,0xA4,0xFF,0x20,0x98,0xDD,0x20,
|
||||
0x60,0xDA,0xA2,0xE6,0xA0,0x05,0x20,0x98,0xDD,0x20,0x28,0xDB,0x60,0xA9,0x01,0xD0,
|
||||
0x02,0xA9,0x00,0x85,0xF0,0xA5,0xD4,0x10,0x02,0x38,0x60,0xA5,0xD4,0x85,0xE0,0x38,
|
||||
0xE9,0x40,0x0A,0x85,0xF1,0xA5,0xD5,0x29,0xF0,0xD0,0x04,0xA9,0x01,0xD0,0x04,0xE6,
|
||||
0xF1,0xA9,0x10,0x85,0xE1,0xA2,0x04,0xA9,0x00,0x95,0xE2,0xCA,0x10,0xFB,0x20,0x28,
|
||||
0xDB,0xA2,0x66,0xA0,0xDF,0x20,0x95,0xDE,0xA2,0xE6,0xA0,0x05,0x20,0xA7,0xDD,0x20,
|
||||
0xB6,0xDD,0x20,0xDB,0xDA,0xA9,0x0A,0xA2,0x72,0xA0,0xDF,0x20,0x40,0xDD,0xA2,0xE6,
|
||||
0xA0,0x05,0x20,0x98,0xDD,0x20,0xDB,0xDA,0xA2,0x6C,0xA0,0xDF,0x20,0x98,0xDD,0x20,
|
||||
0x66,0xDA,0x20,0xB6,0xDD,0xA9,0x00,0x85,0xD5,0xA5,0xF1,0x85,0xD4,0x10,0x07,0x49,
|
||||
0xFF,0x18,0x69,0x01,0x85,0xD4,0x20,0xAA,0xD9,0x24,0xF1,0x10,0x06,0xA9,0x80,0x05,
|
||||
0xD4,0x85,0xD4,0x20,0x66,0xDA,0xA5,0xF0,0xF0,0x0A,0xA2,0x89,0xA0,0xDE,0x20,0x98,
|
||||
0xDD,0x20,0x28,0xDB,0x18,0x60,0x40,0x03,0x16,0x22,0x77,0x66,0x3F,0x50,0x00,0x00,
|
||||
0x00,0x00,0x3F,0x49,0x15,0x57,0x11,0x08,0xBF,0x51,0x70,0x49,0x47,0x08,0x3F,0x39,
|
||||
0x20,0x57,0x61,0x95,0xBF,0x04,0x39,0x63,0x03,0x55,0x3F,0x10,0x09,0x30,0x12,0x64,
|
||||
0x3F,0x09,0x39,0x08,0x04,0x60,0x3F,0x12,0x42,0x58,0x47,0x42,0x3F,0x17,0x37,0x12,
|
||||
0x06,0x08,0x3F,0x28,0x95,0x29,0x71,0x17,0x3F,0x86,0x85,0x88,0x96,0x44,0x3E,0x16,
|
||||
0x05,0x44,0x49,0x00,0xBE,0x95,0x68,0x38,0x45,0x00,0x3F,0x02,0x68,0x79,0x94,0x16,
|
||||
0xBF,0x04,0x92,0x78,0x90,0x80,0x3F,0x07,0x03,0x15,0x20,0x00,0xBF,0x08,0x92,0x29,
|
||||
0x12,0x44,0x3F,0x11,0x08,0x40,0x09,0x11,0xBF,0x14,0x28,0x31,0x56,0x04,0x3F,0x19,
|
||||
0x99,0x98,0x77,0x44,0xBF,0x33,0x33,0x33,0x31,0x13,0x3F,0x99,0x99,0x99,0x99,0x99,
|
||||
0x3F,0x78,0x53,0x98,0x16,0x34,0x98,0x16,0x34,0xFC,0xE0,0x32,0x50,0xD9,0x68,0x11,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x18,0x18,0x00,0x18,0x00,
|
||||
0x00,0x66,0x66,0x66,0x00,0x00,0x00,0x00,0x00,0x66,0xFF,0x66,0x66,0xFF,0x66,0x00,
|
||||
0x18,0x3E,0x60,0x3C,0x06,0x7C,0x18,0x00,0x00,0x66,0x6C,0x18,0x30,0x66,0x46,0x00,
|
||||
0x1C,0x36,0x1C,0x38,0x6F,0x66,0x3B,0x00,0x00,0x18,0x18,0x18,0x00,0x00,0x00,0x00,
|
||||
0x00,0x0E,0x1C,0x18,0x18,0x1C,0x0E,0x00,0x00,0x70,0x38,0x18,0x18,0x38,0x70,0x00,
|
||||
0x00,0x66,0x3C,0xFF,0x3C,0x66,0x00,0x00,0x00,0x18,0x18,0x7E,0x18,0x18,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x30,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x06,0x0C,0x18,0x30,0x60,0x40,0x00,
|
||||
0x00,0x3C,0x66,0x6E,0x76,0x66,0x3C,0x00,0x00,0x18,0x38,0x18,0x18,0x18,0x7E,0x00,
|
||||
0x00,0x3C,0x66,0x0C,0x18,0x30,0x7E,0x00,0x00,0x7E,0x0C,0x18,0x0C,0x66,0x3C,0x00,
|
||||
0x00,0x0C,0x1C,0x3C,0x6C,0x7E,0x0C,0x00,0x00,0x7E,0x60,0x7C,0x06,0x66,0x3C,0x00,
|
||||
0x00,0x3C,0x60,0x7C,0x66,0x66,0x3C,0x00,0x00,0x7E,0x06,0x0C,0x18,0x30,0x30,0x00,
|
||||
0x00,0x3C,0x66,0x3C,0x66,0x66,0x3C,0x00,0x00,0x3C,0x66,0x3E,0x06,0x0C,0x38,0x00,
|
||||
0x00,0x00,0x18,0x18,0x00,0x18,0x18,0x00,0x00,0x00,0x18,0x18,0x00,0x18,0x18,0x30,
|
||||
0x06,0x0C,0x18,0x30,0x18,0x0C,0x06,0x00,0x00,0x00,0x7E,0x00,0x00,0x7E,0x00,0x00,
|
||||
0x60,0x30,0x18,0x0C,0x18,0x30,0x60,0x00,0x00,0x3C,0x66,0x0C,0x18,0x00,0x18,0x00,
|
||||
0x00,0x3C,0x66,0x6E,0x6E,0x60,0x3E,0x00,0x00,0x18,0x3C,0x66,0x66,0x7E,0x66,0x00,
|
||||
0x00,0x7C,0x66,0x7C,0x66,0x66,0x7C,0x00,0x00,0x3C,0x66,0x60,0x60,0x66,0x3C,0x00,
|
||||
0x00,0x78,0x6C,0x66,0x66,0x6C,0x78,0x00,0x00,0x7E,0x60,0x7C,0x60,0x60,0x7E,0x00,
|
||||
0x00,0x7E,0x60,0x7C,0x60,0x60,0x60,0x00,0x00,0x3E,0x60,0x60,0x6E,0x66,0x3E,0x00,
|
||||
0x00,0x66,0x66,0x7E,0x66,0x66,0x66,0x00,0x00,0x7E,0x18,0x18,0x18,0x18,0x7E,0x00,
|
||||
0x00,0x06,0x06,0x06,0x06,0x66,0x3C,0x00,0x00,0x66,0x6C,0x78,0x78,0x6C,0x66,0x00,
|
||||
0x00,0x60,0x60,0x60,0x60,0x60,0x7E,0x00,0x00,0x63,0x77,0x7F,0x6B,0x63,0x63,0x00,
|
||||
0x00,0x66,0x76,0x7E,0x7E,0x6E,0x66,0x00,0x00,0x3C,0x66,0x66,0x66,0x66,0x3C,0x00,
|
||||
0x00,0x7C,0x66,0x66,0x7C,0x60,0x60,0x00,0x00,0x3C,0x66,0x66,0x66,0x6C,0x36,0x00,
|
||||
0x00,0x7C,0x66,0x66,0x7C,0x6C,0x66,0x00,0x00,0x3C,0x60,0x3C,0x06,0x06,0x3C,0x00,
|
||||
0x00,0x7E,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x66,0x66,0x66,0x66,0x66,0x7E,0x00,
|
||||
0x00,0x66,0x66,0x66,0x66,0x3C,0x18,0x00,0x00,0x63,0x63,0x6B,0x7F,0x77,0x63,0x00,
|
||||
0x00,0x66,0x66,0x3C,0x3C,0x66,0x66,0x00,0x00,0x66,0x66,0x3C,0x18,0x18,0x18,0x00,
|
||||
0x00,0x7E,0x0C,0x18,0x30,0x60,0x7E,0x00,0x00,0x1E,0x18,0x18,0x18,0x18,0x1E,0x00,
|
||||
0x00,0x40,0x60,0x30,0x18,0x0C,0x06,0x00,0x00,0x78,0x18,0x18,0x18,0x18,0x78,0x00,
|
||||
0x00,0x08,0x1C,0x36,0x63,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,
|
||||
0x00,0x36,0x7F,0x7F,0x3E,0x1C,0x08,0x00,0x18,0x18,0x18,0x1F,0x1F,0x18,0x18,0x18,
|
||||
0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x18,0x18,0x18,0xF8,0xF8,0x00,0x00,0x00,
|
||||
0x18,0x18,0x18,0xF8,0xF8,0x18,0x18,0x18,0x00,0x00,0x00,0xF8,0xF8,0x18,0x18,0x18,
|
||||
0x03,0x07,0x0E,0x1C,0x38,0x70,0xE0,0xC0,0xC0,0xE0,0x70,0x38,0x1C,0x0E,0x07,0x03,
|
||||
0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,0xFF,0x00,0x00,0x00,0x00,0x0F,0x0F,0x0F,0x0F,
|
||||
0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0xFF,0x0F,0x0F,0x0F,0x0F,0x00,0x00,0x00,0x00,
|
||||
0xF0,0xF0,0xF0,0xF0,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0xF0,0xF0,0xF0,0xF0,
|
||||
0x00,0x1C,0x1C,0x77,0x77,0x08,0x1C,0x00,0x00,0x00,0x00,0x1F,0x1F,0x18,0x18,0x18,
|
||||
0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x18,0x18,0x18,0xFF,0xFF,0x18,0x18,0x18,
|
||||
0x00,0x00,0x3C,0x7E,0x7E,0x7E,0x3C,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,
|
||||
0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0x00,0x00,0x00,0xFF,0xFF,0x18,0x18,0x18,
|
||||
0x18,0x18,0x18,0xFF,0xFF,0x00,0x00,0x00,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,
|
||||
0x18,0x18,0x18,0x1F,0x1F,0x00,0x00,0x00,0x78,0x60,0x78,0x60,0x7E,0x18,0x1E,0x00,
|
||||
0x00,0x18,0x3C,0x7E,0x18,0x18,0x18,0x00,0x00,0x18,0x18,0x18,0x7E,0x3C,0x18,0x00,
|
||||
0x00,0x18,0x30,0x7E,0x30,0x18,0x00,0x00,0x00,0x18,0x0C,0x7E,0x0C,0x18,0x00,0x00,
|
||||
0x00,0x18,0x3C,0x7E,0x7E,0x3C,0x18,0x00,0x00,0x00,0x3C,0x06,0x3E,0x66,0x3E,0x00,
|
||||
0x00,0x60,0x60,0x7C,0x66,0x66,0x7C,0x00,0x00,0x00,0x3C,0x60,0x60,0x60,0x3C,0x00,
|
||||
0x00,0x06,0x06,0x3E,0x66,0x66,0x3E,0x00,0x00,0x00,0x3C,0x66,0x7E,0x60,0x3C,0x00,
|
||||
0x00,0x0E,0x18,0x3E,0x18,0x18,0x18,0x00,0x00,0x00,0x3E,0x66,0x66,0x3E,0x06,0x7C,
|
||||
0x00,0x60,0x60,0x7C,0x66,0x66,0x66,0x00,0x00,0x18,0x00,0x38,0x18,0x18,0x3C,0x00,
|
||||
0x00,0x06,0x00,0x06,0x06,0x06,0x06,0x3C,0x00,0x60,0x60,0x6C,0x78,0x6C,0x66,0x00,
|
||||
0x00,0x38,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x66,0x7F,0x7F,0x6B,0x63,0x00,
|
||||
0x00,0x00,0x7C,0x66,0x66,0x66,0x66,0x00,0x00,0x00,0x3C,0x66,0x66,0x66,0x3C,0x00,
|
||||
0x00,0x00,0x7C,0x66,0x66,0x7C,0x60,0x60,0x00,0x00,0x3E,0x66,0x66,0x3E,0x06,0x06,
|
||||
0x00,0x00,0x7C,0x66,0x60,0x60,0x60,0x00,0x00,0x00,0x3E,0x60,0x3C,0x06,0x7C,0x00,
|
||||
0x00,0x18,0x7E,0x18,0x18,0x18,0x0E,0x00,0x00,0x00,0x66,0x66,0x66,0x66,0x3E,0x00,
|
||||
0x00,0x00,0x66,0x66,0x66,0x3C,0x18,0x00,0x00,0x00,0x63,0x6B,0x7F,0x3E,0x36,0x00,
|
||||
0x00,0x00,0x66,0x3C,0x18,0x3C,0x66,0x00,0x00,0x00,0x66,0x66,0x66,0x3E,0x0C,0x78,
|
||||
0x00,0x00,0x7E,0x0C,0x18,0x30,0x7E,0x00,0x00,0x18,0x3C,0x7E,0x7E,0x18,0x3C,0x00,
|
||||
0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x7E,0x78,0x7C,0x6E,0x66,0x06,0x00,
|
||||
0x08,0x18,0x38,0x78,0x38,0x18,0x08,0x00,0x10,0x18,0x1C,0x1E,0x1C,0x18,0x10,0x00,
|
||||
0xFB,0xF3,0x33,0xF6,0x3D,0xF6,0xA3,0xF6,0x33,0xF6,0x3C,0xF6,0x4C,0xE4,0xF3,0xF9,
|
||||
0xF5,0xF3,0x33,0xF6,0x92,0xF5,0xB6,0xF5,0x33,0xF6,0xFB,0xFC,0x4C,0xE4,0xF3,0xF6,
|
||||
0x33,0xF6,0x33,0xF6,0xE1,0xF6,0x3C,0xF6,0x33,0xF6,0x3C,0xF6,0x4C,0xE4,0xF3,0x00,
|
||||
0x9E,0xEE,0xDB,0xEE,0x9D,0xEE,0xA6,0xEE,0x80,0xEE,0x9D,0xEE,0x4C,0x78,0xEE,0x00,
|
||||
0x4B,0xEF,0x2A,0xF0,0xD5,0xEF,0x0F,0xF0,0x27,0xF0,0x4A,0xEF,0x4C,0x41,0xEF,0x00,
|
||||
0x4C,0xEA,0xED,0x4C,0xF0,0xED,0x4C,0xC4,0xE4,0x4C,0x59,0xE9,0x4C,0x12,0xE9,0x4C,
|
||||
0xD1,0xE7,0x4C,0x3E,0xE9,0x4C,0x44,0xE9,0x4C,0xF6,0xEB,0x4C,0xD5,0xE6,0x4C,0xA6,
|
||||
0xE4,0x4C,0x23,0xF2,0x4C,0x1B,0xF1,0x4C,0x25,0xF1,0x4C,0xE9,0xEF,0x4C,0x5D,0xEF,
|
||||
0xB3,0xE7,0xB2,0xE7,0xB2,0xE7,0xB2,0xE7,0xBE,0xFF,0x11,0xEB,0x90,0xEA,0xD1,0xEA,
|
||||
0xB2,0xE7,0xB2,0xE7,0xB2,0xE7,0xF6,0xE6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xD1,0xE7,0x3E,0xE9,0xA2,0x00,0xA9,0xFF,0x9D,0x40,0x03,0xA9,0xC0,0x9D,
|
||||
0x46,0x03,0xA9,0xE4,0x9D,0x47,0x03,0x8A,0x18,0x69,0x10,0xAA,0xC9,0x80,0x90,0xE8,
|
||||
0x60,0xA0,0x85,0x60,0x85,0x2F,0x86,0x2E,0x8A,0x29,0x0F,0xD0,0x04,0xE0,0x80,0x90,
|
||||
0x05,0xA0,0x86,0x4C,0x1B,0xE6,0xA0,0x00,0xBD,0x40,0x03,0x99,0x20,0x00,0xE8,0xC8,
|
||||
0xC0,0x0C,0x90,0xF4,0xA0,0x84,0xA5,0x22,0xC9,0x03,0x90,0x25,0xA8,0xC0,0x0E,0x90,
|
||||
0x02,0xA0,0x0E,0x84,0x17,0xB9,0xC6,0xE6,0xF0,0x0F,0xC9,0x02,0xF0,0x35,0xC9,0x08,
|
||||
0xB0,0x4C,0xC9,0x04,0xF0,0x63,0x4C,0xC9,0xE5,0xA5,0x20,0xC9,0xFF,0xF0,0x05,0xA0,
|
||||
0x81,0x4C,0x1B,0xE6,0x20,0x9E,0xE6,0xB0,0xF8,0x20,0x3D,0xE6,0xB0,0xF3,0x20,0x89,
|
||||
0xE6,0xA9,0x0B,0x85,0x17,0x20,0x3D,0xE6,0xA5,0x2C,0x85,0x26,0xA5,0x2D,0x85,0x27,
|
||||
0x4C,0x1D,0xE6,0xA0,0x01,0x84,0x23,0x20,0x3D,0xE6,0xB0,0x03,0x20,0x89,0xE6,0xA9,
|
||||
0xFF,0x85,0x20,0xA9,0xE4,0x85,0x27,0xA9,0xC0,0x85,0x26,0x4C,0x1D,0xE6,0xA5,0x20,
|
||||
0xC9,0xFF,0xD0,0x05,0x20,0x9E,0xE6,0xB0,0xB8,0x20,0x3D,0xE6,0x20,0x89,0xE6,0xA6,
|
||||
0x2E,0xBD,0x40,0x03,0x85,0x20,0x4C,0x1D,0xE6,0xA5,0x22,0x25,0x2A,0xD0,0x05,0xA0,
|
||||
0x83,0x4C,0x1B,0xE6,0x20,0x3D,0xE6,0xB0,0xF8,0xA5,0x28,0x05,0x29,0xD0,0x08,0x20,
|
||||
0x89,0xE6,0x85,0x2F,0x4C,0x1D,0xE6,0x20,0x89,0xE6,0x85,0x2F,0x30,0x35,0xA0,0x00,
|
||||
0x91,0x24,0x20,0x70,0xE6,0xA5,0x22,0x29,0x02,0xD0,0x0C,0xA5,0x2F,0xC9,0x9B,0xD0,
|
||||
0x06,0x20,0x63,0xE6,0x4C,0xC3,0xE5,0x20,0x63,0xE6,0xD0,0xDB,0xA5,0x22,0x29,0x02,
|
||||
0xD0,0x11,0x20,0x89,0xE6,0x85,0x2F,0x30,0x0A,0xA5,0x2F,0xC9,0x9B,0xD0,0xF3,0xA9,
|
||||
0x89,0x85,0x23,0x20,0x77,0xE6,0x4C,0x1D,0xE6,0xA5,0x22,0x25,0x2A,0xD0,0x05,0xA0,
|
||||
0x87,0x4C,0x1B,0xE6,0x20,0x3D,0xE6,0xB0,0xF8,0xA5,0x28,0x05,0x29,0xD0,0x06,0xA5,
|
||||
0x2F,0xE6,0x28,0xD0,0x06,0xA0,0x00,0xB1,0x24,0x85,0x2F,0x20,0x89,0xE6,0x30,0x25,
|
||||
0x20,0x70,0xE6,0xA5,0x22,0x29,0x02,0xD0,0x0C,0xA5,0x2F,0xC9,0x9B,0xD0,0x06,0x20,
|
||||
0x63,0xE6,0x4C,0x15,0xE6,0x20,0x63,0xE6,0xD0,0xDB,0xA5,0x22,0x29,0x02,0xD0,0x05,
|
||||
0xA9,0x9B,0x20,0x89,0xE6,0x20,0x77,0xE6,0x4C,0x1D,0xE6,0x84,0x23,0xA4,0x2E,0xB9,
|
||||
0x44,0x03,0x85,0x24,0xB9,0x45,0x03,0x85,0x25,0xA2,0x00,0xB5,0x20,0x99,0x40,0x03,
|
||||
0xE8,0xC8,0xE0,0x0C,0x90,0xF5,0xA5,0x2F,0xA6,0x2E,0xA4,0x23,0x60,0xA4,0x20,0xC0,
|
||||
0x22,0x90,0x04,0xA0,0x85,0xB0,0x1B,0xB9,0x1B,0x03,0x85,0x2C,0xB9,0x1C,0x03,0x85,
|
||||
0x2D,0xA4,0x17,0xB9,0xC6,0xE6,0xA8,0xB1,0x2C,0xAA,0xC8,0xB1,0x2C,0x85,0x2D,0x86,
|
||||
0x2C,0x18,0x60,0xC6,0x28,0xA5,0x28,0xC9,0xFF,0xD0,0x02,0xC6,0x29,0x05,0x29,0x60,
|
||||
0xE6,0x24,0xD0,0x02,0xE6,0x25,0x60,0xA6,0x2E,0x38,0xBD,0x48,0x03,0xE5,0x28,0x85,
|
||||
0x28,0xBD,0x49,0x03,0xE5,0x29,0x85,0x29,0x60,0xA0,0x92,0x20,0x93,0xE6,0x84,0x23,
|
||||
0xC0,0x00,0x60,0xAA,0xA5,0x2D,0x48,0xA5,0x2C,0x48,0x8A,0xA6,0x2E,0x60,0xA0,0x00,
|
||||
0xB1,0x24,0xF0,0x0C,0xA0,0x21,0xD9,0x1A,0x03,0xF0,0x0A,0x88,0x88,0x88,0x10,0xF6,
|
||||
0xA0,0x82,0x38,0xB0,0x13,0x98,0x85,0x20,0x38,0xA0,0x01,0xB1,0x24,0xE9,0x30,0xC9,
|
||||
0x0A,0x90,0x02,0xA9,0x01,0x85,0x21,0x18,0x60,0x00,0x04,0x04,0x04,0x04,0x06,0x06,
|
||||
0x06,0x06,0x02,0x08,0x0A,0xA9,0x40,0x8D,0x0E,0xD4,0xA9,0x38,0x8D,0x02,0xD3,0x8D,
|
||||
0x03,0xD3,0xA9,0x00,0x8D,0x00,0xD3,0x8D,0x01,0xD3,0xA9,0x3C,0x8D,0x02,0xD3,0x8D,
|
||||
0x03,0xD3,0x60,0x6C,0x16,0x02,0x48,0xA9,0x10,0x2C,0x0E,0xD2,0xD0,0x0D,0xA9,0xEF,
|
||||
0x8D,0x0E,0xD2,0xA5,0x10,0x8D,0x0E,0xD2,0x6C,0x0C,0x02,0xA9,0x20,0x2C,0x0E,0xD2,
|
||||
0xD0,0x0D,0xA9,0xDF,0x8D,0x0E,0xD2,0xA5,0x10,0x8D,0x0E,0xD2,0x6C,0x0A,0x02,0xA9,
|
||||
0x08,0x24,0x10,0xF0,0x12,0x2C,0x0E,0xD2,0xD0,0x0D,0xA9,0xF7,0x8D,0x0E,0xD2,0xA5,
|
||||
0x10,0x8D,0x0E,0xD2,0x6C,0x0E,0x02,0xAD,0x0E,0xD2,0x6A,0xB0,0x0D,0xA9,0xFE,0x8D,
|
||||
0x0E,0xD2,0xA5,0x10,0x8D,0x0E,0xD2,0x6C,0x10,0x02,0x6A,0xB0,0x0D,0xA9,0xFD,0x8D,
|
||||
0x0E,0xD2,0xA5,0x10,0x8D,0x0E,0xD2,0x6C,0x12,0x02,0x6A,0xB0,0x0A,0xA9,0xFB,0x8D,
|
||||
0x0E,0xD2,0xA5,0x10,0x8D,0x0E,0xD2,0x2C,0x0E,0xD2,0x70,0x0D,0xA9,0xBF,0x8D,0x0E,
|
||||
0xD2,0xA5,0x10,0x8D,0x0E,0xD2,0x6C,0x08,0x02,0x30,0x18,0xA9,0x7F,0x8D,0x0E,0xD2,
|
||||
0xA5,0x10,0x8D,0x0E,0xD2,0xA9,0x00,0x85,0x11,0x8D,0xFF,0x02,0x8D,0xF0,0x02,0x85,
|
||||
0x4D,0x68,0x40,0x2C,0x02,0xD3,0x10,0x06,0xAD,0x00,0xD3,0x6C,0x02,0x02,0x2C,0x03,
|
||||
0xD3,0x10,0x06,0xAD,0x01,0xD3,0x6C,0x04,0x02,0x08,0x68,0x29,0x10,0xF0,0x03,0x6C,
|
||||
0x06,0x02,0x68,0x40,0x2C,0x0F,0xD4,0x10,0x03,0x6C,0x00,0x02,0x48,0xAD,0x0F,0xD4,
|
||||
0x29,0x20,0xF0,0x03,0x4C,0x74,0xE4,0x8A,0x48,0x98,0x48,0x8D,0x0F,0xD4,0x6C,0x22,
|
||||
0x02,0xE6,0x14,0xD0,0x08,0xE6,0x4D,0xE6,0x13,0xD0,0x02,0xE6,0x12,0xA9,0xFE,0xA2,
|
||||
0x00,0xA4,0x4D,0x10,0x06,0x85,0x4D,0xA6,0x13,0xA9,0xF6,0x85,0x4E,0x86,0x4F,0xA2,
|
||||
0x00,0x20,0xF5,0xE8,0xD0,0x03,0x20,0xEF,0xE8,0xA5,0x42,0xD0,0x08,0xBA,0xBD,0x04,
|
||||
0x01,0x29,0x04,0xF0,0x03,0x4C,0x3E,0xE9,0x58,0xAD,0x0D,0xD4,0x8D,0x35,0x02,0xAD,
|
||||
0x0C,0xD4,0x8D,0x34,0x02,0xAD,0x31,0x02,0x8D,0x03,0xD4,0xAD,0x30,0x02,0x8D,0x02,
|
||||
0xD4,0xAD,0x2F,0x02,0x8D,0x00,0xD4,0xAD,0x6F,0x02,0x8D,0x1B,0xD0,0xA9,0x08,0x8D,
|
||||
0x1F,0xD0,0xA2,0x08,0xBD,0xC0,0x02,0x45,0x4F,0x25,0x4E,0x9D,0x12,0xD0,0xCA,0x10,
|
||||
0xF3,0xAD,0xF4,0x02,0x8D,0x09,0xD4,0xAD,0xF3,0x02,0x8D,0x01,0xD4,0xA2,0x02,0x20,
|
||||
0xF5,0xE8,0xD0,0x03,0x20,0xF2,0xE8,0xA2,0x02,0xE8,0xE8,0xBD,0x18,0x02,0x1D,0x19,
|
||||
0x02,0xF0,0x06,0x20,0xF5,0xE8,0x9D,0x26,0x02,0xE0,0x08,0xD0,0xEC,0xAD,0x0F,0xD2,
|
||||
0x29,0x04,0xF0,0x08,0xAD,0xF1,0x02,0xF0,0x03,0xCE,0xF1,0x02,0xAD,0x2B,0x02,0xF0,
|
||||
0x17,0xAD,0x0F,0xD2,0x29,0x04,0xD0,0x60,0xCE,0x2B,0x02,0xD0,0x0B,0xA9,0x06,0x8D,
|
||||
0x2B,0x02,0xAD,0x09,0xD2,0x8D,0xFC,0x02,0xA0,0x01,0xA2,0x03,0xB9,0x00,0xD3,0x4A,
|
||||
0x4A,0x4A,0x4A,0x9D,0x78,0x02,0xCA,0xB9,0x00,0xD3,0x29,0x0F,0x9D,0x78,0x02,0xCA,
|
||||
0x88,0x10,0xE9,0xA2,0x03,0xBD,0x10,0xD0,0x9D,0x84,0x02,0xBD,0x00,0xD2,0x9D,0x70,
|
||||
0x02,0xBD,0x04,0xD2,0x9D,0x74,0x02,0xCA,0x10,0xEB,0x8D,0x0B,0xD2,0xA2,0x06,0xA0,
|
||||
0x03,0xB9,0x78,0x02,0x4A,0x4A,0x4A,0x9D,0x7D,0x02,0xA9,0x00,0x2A,0x9D,0x7C,0x02,
|
||||
0xCA,0xCA,0x88,0x10,0xEC,0x6C,0x24,0x02,0xA9,0x00,0x8D,0x2B,0x02,0xF0,0xA9,0x6C,
|
||||
0x26,0x02,0x6C,0x28,0x02,0xBC,0x18,0x02,0xD0,0x08,0xBC,0x19,0x02,0xF0,0x10,0xDE,
|
||||
0x19,0x02,0xDE,0x18,0x02,0xD0,0x08,0xBC,0x19,0x02,0xD0,0x03,0xA9,0x00,0x60,0xA9,
|
||||
0xFF,0x60,0x0A,0x8D,0x2D,0x02,0xA9,0x00,0x8D,0x0E,0xD4,0x8A,0xAE,0x2D,0x02,0x9D,
|
||||
0x17,0x02,0x98,0x9D,0x16,0x02,0xA9,0x40,0x8D,0x0E,0xD4,0x2C,0x0F,0xD4,0x50,0x0D,
|
||||
0xA9,0xE9,0x48,0xA9,0x3D,0x48,0x08,0x48,0x48,0x48,0x6C,0x22,0x02,0x60,0x68,0xA8,
|
||||
0x68,0xAA,0x68,0x40,0xA9,0x3C,0x8D,0x02,0xD3,0xA9,0x3C,0x8D,0x03,0xD3,0xA9,0x03,
|
||||
0x8D,0x32,0x02,0x85,0x41,0x8D,0x0F,0xD2,0x60,0xBA,0x8E,0x18,0x03,0xA9,0x01,0x85,
|
||||
0x42,0xAD,0x00,0x03,0xC9,0x60,0xD0,0x03,0x4C,0x84,0xEB,0xA9,0x00,0x8D,0x0F,0x03,
|
||||
0xA9,0x01,0x85,0x37,0xA9,0x0D,0x85,0x36,0xA9,0x28,0x8D,0x04,0xD2,0xA9,0x00,0x8D,
|
||||
0x06,0xD2,0x18,0xAD,0x00,0x03,0x6D,0x01,0x03,0x69,0xFF,0x8D,0x3A,0x02,0xAD,0x02,
|
||||
0x03,0x8D,0x3B,0x02,0xAD,0x0A,0x03,0x8D,0x3C,0x02,0xAD,0x0B,0x03,0x8D,0x3D,0x02,
|
||||
0x18,0xA9,0x3A,0x85,0x32,0x69,0x04,0x85,0x34,0xA9,0x02,0x85,0x33,0x85,0x35,0xA9,
|
||||
0x34,0x8D,0x03,0xD3,0x20,0x8E,0xEC,0xAD,0x3F,0x02,0xD0,0x03,0x98,0xD0,0x07,0xC6,
|
||||
0x36,0x10,0xB5,0x4C,0x06,0xEA,0xAD,0x03,0x03,0x10,0x0C,0xA9,0x0D,0x85,0x36,0x20,
|
||||
0x6E,0xEB,0x20,0x8E,0xEC,0xF0,0xE8,0x20,0x79,0xEC,0xA9,0x00,0x8D,0x3F,0x02,0x20,
|
||||
0x9F,0xEC,0xF0,0x12,0x2C,0x03,0x03,0x70,0x07,0xAD,0x3F,0x02,0xD0,0x18,0xF0,0x1D,
|
||||
0x20,0x6E,0xEB,0x20,0xE2,0xEA,0xAD,0x3F,0x02,0xF0,0x05,0xAD,0x19,0x03,0x85,0x30,
|
||||
0xA5,0x30,0xC9,0x01,0xF0,0x07,0xC6,0x37,0x30,0x03,0x4C,0x74,0xE9,0x20,0x63,0xEC,
|
||||
0xA9,0x00,0x85,0x42,0xA4,0x30,0x8C,0x03,0x03,0x60,0xA9,0x00,0x8D,0x3F,0x02,0x18,
|
||||
0xA9,0x3E,0x85,0x32,0x69,0x01,0x85,0x34,0xA9,0x02,0x85,0x33,0x85,0x35,0xA9,0xFF,
|
||||
0x85,0x3C,0x20,0xE2,0xEA,0xA0,0xFF,0xA5,0x30,0xC9,0x01,0xD0,0x19,0xAD,0x3E,0x02,
|
||||
0xC9,0x41,0xF0,0x21,0xC9,0x43,0xF0,0x1D,0xC9,0x45,0xD0,0x06,0xA9,0x90,0x85,0x30,
|
||||
0xD0,0x04,0xA9,0x8B,0x85,0x30,0xA5,0x30,0xC9,0x8A,0xF0,0x07,0xA9,0xFF,0x8D,0x3F,
|
||||
0x02,0xD0,0x02,0xA0,0x00,0xA5,0x30,0x8D,0x19,0x03,0x60,0xA9,0x01,0x85,0x30,0x20,
|
||||
0xF6,0xEB,0xA0,0x00,0x84,0x31,0x84,0x3B,0x84,0x3A,0xB1,0x32,0x8D,0x0D,0xD2,0x85,
|
||||
0x31,0xA5,0x11,0xD0,0x03,0x4C,0xA4,0xED,0xA5,0x3A,0xF0,0xF5,0x20,0x63,0xEC,0x60,
|
||||
0x98,0x48,0xE6,0x32,0xD0,0x02,0xE6,0x33,0xA5,0x33,0xC5,0x35,0x90,0x22,0xA5,0x32,
|
||||
0xC5,0x34,0x90,0x1C,0xA5,0x3B,0xD0,0x0B,0xA5,0x31,0x8D,0x0D,0xD2,0xA9,0xFF,0x85,
|
||||
0x3B,0xD0,0x09,0xA5,0x10,0x09,0x08,0x85,0x10,0x8D,0x0E,0xD2,0x68,0xA8,0x68,0x40,
|
||||
0xA0,0x00,0xB1,0x32,0x8D,0x0D,0xD2,0x18,0x65,0x31,0x69,0x00,0x85,0x31,0x4C,0xBC,
|
||||
0xEA,0xA5,0x3B,0xF0,0x0B,0x85,0x3A,0xA5,0x10,0x29,0xF7,0x85,0x10,0x8D,0x0E,0xD2,
|
||||
0x68,0x40,0xA9,0x00,0xAC,0x0F,0x03,0xD0,0x02,0x85,0x31,0x85,0x38,0x85,0x39,0xA9,
|
||||
0x01,0x85,0x30,0x20,0x1F,0xEC,0xA9,0x3C,0x8D,0x03,0xD3,0xA5,0x11,0xD0,0x03,0x4C,
|
||||
0xA4,0xED,0xAD,0x17,0x03,0xF0,0x05,0xA5,0x39,0xF0,0xF0,0x60,0xA9,0x8A,0x85,0x30,
|
||||
0x60,0x98,0x48,0xAD,0x0F,0xD2,0x8D,0x0A,0xD2,0x30,0x04,0xA0,0x8C,0x84,0x30,0x29,
|
||||
0x20,0xD0,0x04,0xA0,0x8E,0x84,0x30,0xA5,0x38,0xF0,0x13,0xAD,0x0D,0xD2,0xC5,0x31,
|
||||
0xF0,0x04,0xA0,0x8F,0x84,0x30,0xA9,0xFF,0x85,0x39,0x68,0xA8,0x68,0x40,0xAD,0x0D,
|
||||
0xD2,0xA0,0x00,0x91,0x32,0x18,0x65,0x31,0x69,0x00,0x85,0x31,0xE6,0x32,0xD0,0x02,
|
||||
0xE6,0x33,0xA5,0x33,0xC5,0x35,0x90,0xE2,0xA5,0x32,0xC5,0x34,0x90,0xDC,0xA5,0x3C,
|
||||
0xF0,0x06,0xA9,0x00,0x85,0x3C,0xF0,0xCE,0xA9,0xFF,0x85,0x38,0xD0,0xCC,0x18,0xAD,
|
||||
0x04,0x03,0x85,0x32,0x6D,0x08,0x03,0x85,0x34,0xAD,0x05,0x03,0x85,0x33,0x6D,0x09,
|
||||
0x03,0x85,0x35,0x60,0xAD,0x03,0x03,0x10,0x2E,0xA9,0xCC,0x8D,0x04,0xD2,0xA9,0x05,
|
||||
0x8D,0x06,0xD2,0x20,0xF6,0xEB,0xA0,0x0D,0xAD,0x0B,0x03,0x30,0x02,0xA0,0x96,0xA2,
|
||||
0x00,0x20,0xBD,0xED,0xA9,0x34,0x8D,0x02,0xD3,0xAD,0x17,0x03,0xD0,0xFB,0x20,0x6E,
|
||||
0xEB,0x20,0x6B,0xEA,0x4C,0xE3,0xEB,0xA9,0xFF,0x8D,0x0F,0x03,0xA0,0x08,0xAD,0x0B,
|
||||
0x03,0x30,0x02,0xA0,0x64,0xA2,0x00,0x20,0xBD,0xED,0xA9,0x34,0x8D,0x02,0xD3,0xAD,
|
||||
0x17,0x03,0xD0,0xFB,0x20,0x6E,0xEB,0x20,0x79,0xEC,0x20,0xBD,0xED,0x20,0x14,0xED,
|
||||
0x20,0xE2,0xEA,0xAD,0x0B,0x03,0x30,0x05,0xA9,0x3C,0x8D,0x02,0xD3,0x4C,0x0D,0xEA,
|
||||
0xA9,0x00,0x8D,0x17,0x03,0x60,0xA9,0x07,0x2D,0x32,0x02,0x09,0x20,0xAC,0x00,0x03,
|
||||
0xC0,0x60,0xD0,0x0C,0x09,0x08,0xA0,0x07,0x8C,0x02,0xD2,0xA0,0x05,0x8C,0x00,0xD2,
|
||||
0x8D,0x32,0x02,0x8D,0x0F,0xD2,0xA9,0xC7,0x25,0x10,0x09,0x10,0x4C,0x35,0xEC,0xA9,
|
||||
0x07,0x2D,0x32,0x02,0x09,0x10,0x8D,0x32,0x02,0x8D,0x0F,0xD2,0x8D,0x0A,0xD2,0xA9,
|
||||
0xC7,0x25,0x10,0x09,0x20,0x85,0x10,0x8D,0x0E,0xD2,0xA9,0x28,0x8D,0x08,0xD2,0xA2,
|
||||
0x06,0xA9,0xA8,0xA4,0x41,0xD0,0x02,0xA9,0xA0,0x9D,0x01,0xD2,0xCA,0xCA,0x10,0xF9,
|
||||
0xA9,0xA0,0x8D,0x05,0xD2,0xAC,0x00,0x03,0xC0,0x60,0xF0,0x06,0x8D,0x01,0xD2,0x8D,
|
||||
0x03,0xD2,0x60,0xEA,0xA9,0xC7,0x25,0x10,0x85,0x10,0x8D,0x0E,0xD2,0xA2,0x06,0xA9,
|
||||
0x00,0x9D,0x01,0xD2,0xCA,0xCA,0x10,0xF9,0x60,0xAD,0x06,0x03,0x6A,0x6A,0xA8,0x29,
|
||||
0x3F,0xAA,0x98,0x6A,0x29,0xC0,0xA8,0x60,0x11,0xEB,0x90,0xEA,0xD1,0xEA,0xA2,0x01,
|
||||
0xA0,0xFF,0x88,0xD0,0xFD,0xCA,0xD0,0xF8,0x20,0x6B,0xEA,0xA0,0x02,0xA2,0x00,0x20,
|
||||
0xBD,0xED,0x20,0x1A,0xEA,0x98,0x60,0x8D,0x10,0x03,0x8C,0x11,0x03,0x20,0x08,0xED,
|
||||
0x8D,0x10,0x03,0xAD,0x0C,0x03,0x20,0x08,0xED,0x8D,0x0C,0x03,0xAD,0x10,0x03,0x38,
|
||||
0xED,0x0C,0x03,0x8D,0x12,0x03,0xAD,0x11,0x03,0x38,0xED,0x0D,0x03,0xA8,0xA9,0x64,
|
||||
0x18,0x69,0x9C,0x88,0x10,0xFA,0x18,0x6D,0x12,0x03,0xA8,0x4A,0x4A,0x4A,0x0A,0x38,
|
||||
0xE9,0x16,0xAA,0x98,0x29,0x07,0xA8,0xA9,0xF5,0x18,0x69,0x0B,0x88,0x10,0xFA,0xA0,
|
||||
0x00,0x8C,0x0E,0x03,0x38,0xE9,0x07,0x10,0x03,0xCE,0x0E,0x03,0x18,0x7D,0xD2,0xED,
|
||||
0xA8,0xAD,0x0E,0x03,0x7D,0xD3,0xED,0x60,0xC9,0x7C,0x30,0x04,0x38,0xE9,0x7C,0x60,
|
||||
0x18,0x69,0x20,0x60,0xA5,0x11,0xD0,0x03,0x4C,0xA4,0xED,0x78,0xAD,0x17,0x03,0xD0,
|
||||
0x02,0xF0,0x25,0xAD,0x0F,0xD2,0x29,0x10,0xD0,0xEA,0x8D,0x16,0x03,0xAE,0x0B,0xD4,
|
||||
0xA4,0x14,0x8E,0x0C,0x03,0x8C,0x0D,0x03,0xA2,0x01,0x8E,0x15,0x03,0xA0,0x0A,0xA5,
|
||||
0x11,0xF0,0x61,0xAD,0x17,0x03,0xD0,0x04,0x58,0x4C,0x0C,0xEB,0xAD,0x0F,0xD2,0x29,
|
||||
0x10,0xCD,0x16,0x03,0xF0,0xE9,0x8D,0x16,0x03,0x88,0xD0,0xE3,0xCE,0x15,0x03,0x30,
|
||||
0x12,0xAD,0x0B,0xD4,0xA4,0x14,0x20,0xA7,0xEC,0x8C,0xEE,0x02,0x8D,0xEF,0x02,0xA0,
|
||||
0x09,0xD0,0xCC,0xAD,0xEE,0x02,0x8D,0x04,0xD2,0xAD,0xEF,0x02,0x8D,0x06,0xD2,0xA9,
|
||||
0x00,0x8D,0x0F,0xD2,0xAD,0x32,0x02,0x8D,0x0F,0xD2,0xA9,0x55,0x91,0x32,0xC8,0x91,
|
||||
0x32,0xA9,0xAA,0x85,0x31,0x18,0xA5,0x32,0x69,0x02,0x85,0x32,0xA5,0x33,0x69,0x00,
|
||||
0x85,0x33,0x58,0x60,0x20,0x63,0xEC,0xA9,0x3C,0x8D,0x02,0xD3,0x8D,0x03,0xD3,0xA9,
|
||||
0x80,0x85,0x30,0xAE,0x18,0x03,0x9A,0xC6,0x11,0x58,0x4C,0x0D,0xEA,0xA9,0xF0,0x8D,
|
||||
0x26,0x02,0xA9,0xEB,0x8D,0x27,0x02,0xA9,0x01,0x8D,0x17,0x03,0x78,0x20,0x5C,0xE4,
|
||||
0x58,0x60,0xE8,0x03,0x43,0x04,0x9E,0x04,0xF9,0x04,0x54,0x05,0xAF,0x05,0x0A,0x06,
|
||||
0x65,0x06,0xC0,0x06,0x1A,0x07,0x75,0x07,0xD0,0x07,0xA9,0xA0,0x8D,0x46,0x02,0x60,
|
||||
0xA9,0x31,0x8D,0x00,0x03,0xAD,0x46,0x02,0xAE,0x02,0x03,0xE0,0x21,0xF0,0x02,0xA9,
|
||||
0x07,0x8D,0x06,0x03,0xA2,0x40,0xA0,0x80,0xAD,0x02,0x03,0xC9,0x57,0xD0,0x02,0xA2,
|
||||
0x80,0xC9,0x53,0xD0,0x0C,0xA9,0xEA,0x8D,0x04,0x03,0xA9,0x02,0x8D,0x05,0x03,0xA0,
|
||||
0x04,0x8E,0x03,0x03,0x8C,0x08,0x03,0xA9,0x00,0x8D,0x09,0x03,0x20,0x59,0xE4,0x10,
|
||||
0x01,0x60,0xAD,0x02,0x03,0xC9,0x53,0xD0,0x0A,0x20,0x6D,0xEE,0xA0,0x02,0xB1,0x15,
|
||||
0x8D,0x46,0x02,0xAD,0x02,0x03,0xC9,0x21,0xD0,0x1F,0x20,0x6D,0xEE,0xA0,0xFE,0xC8,
|
||||
0xC8,0xB1,0x15,0xC9,0xFF,0xD0,0xF8,0xC8,0xB1,0x15,0xC8,0xC9,0xFF,0xD0,0xF2,0x88,
|
||||
0x88,0x8C,0x08,0x03,0xA9,0x00,0x8D,0x09,0x03,0xAC,0x03,0x03,0x60,0xAD,0x04,0x03,
|
||||
0x85,0x15,0xAD,0x05,0x03,0x85,0x16,0x60,0xA9,0x1E,0x85,0x1C,0x60,0xEA,0x02,0xC0,
|
||||
0x03,0xA9,0x04,0x85,0x1E,0xAE,0x7D,0xEE,0xAC,0x7E,0xEE,0xA9,0x53,0x8D,0x02,0x03,
|
||||
0x8D,0x0A,0x03,0x20,0xE6,0xEE,0x20,0x59,0xE4,0x30,0x03,0x20,0x14,0xEF,0x60,0x20,
|
||||
0x81,0xEE,0xA9,0x00,0x85,0x1D,0x60,0x85,0x1F,0x20,0x1A,0xEF,0xA6,0x1D,0xA5,0x1F,
|
||||
0x9D,0xC0,0x03,0xE8,0xE4,0x1E,0xF0,0x13,0x86,0x1D,0xC9,0x9B,0xF0,0x03,0xA0,0x01,
|
||||
0x60,0xA9,0x20,0x9D,0xC0,0x03,0xE8,0xE4,0x1E,0xD0,0xF8,0xA9,0x00,0x85,0x1D,0xAE,
|
||||
0x7F,0xEE,0xAC,0x80,0xEE,0x20,0xE6,0xEE,0x20,0x59,0xE4,0x60,0x20,0x1A,0xEF,0xA6,
|
||||
0x1D,0xD0,0xDE,0xA0,0x01,0x60,0x8E,0x04,0x03,0x8C,0x05,0x03,0xA9,0x40,0x8D,0x00,
|
||||
0x03,0xA9,0x01,0x8D,0x01,0x03,0xA9,0x80,0xAE,0x02,0x03,0xE0,0x53,0xD0,0x02,0xA9,
|
||||
0x40,0x8D,0x03,0x03,0xA5,0x1E,0x8D,0x08,0x03,0xA9,0x00,0x8D,0x09,0x03,0xA5,0x1C,
|
||||
0x8D,0x06,0x03,0x60,0xAD,0xEC,0x02,0x85,0x1C,0x60,0xA0,0x57,0xA5,0x2B,0xC9,0x4E,
|
||||
0xD0,0x04,0xA2,0x28,0xD0,0x0E,0xC9,0x44,0xD0,0x04,0xA2,0x14,0xD0,0x06,0xC9,0x53,
|
||||
0xD0,0x0B,0xA2,0x1D,0x86,0x1E,0x8C,0x02,0x03,0x8D,0x0A,0x03,0x60,0xA9,0x4E,0xD0,
|
||||
0xDD,0xA9,0xCC,0x8D,0xEE,0x02,0xA9,0x05,0x8D,0xEF,0x02,0x60,0xA5,0x2B,0x85,0x3E,
|
||||
0xA5,0x2A,0x29,0x0C,0xC9,0x04,0xF0,0x05,0xC9,0x08,0xF0,0x39,0x60,0xA9,0x00,0x8D,
|
||||
0x89,0x02,0x85,0x3F,0xA9,0x01,0x20,0x58,0xF0,0x30,0x24,0xA9,0x34,0x8D,0x02,0xD3,
|
||||
0xA0,0xE0,0xA2,0x01,0xA9,0x03,0x8D,0x2A,0x02,0x20,0x5C,0xE4,0xAD,0x2A,0x02,0xD0,
|
||||
0xFB,0xA9,0x80,0x85,0x3D,0x8D,0x8A,0x02,0x4C,0xD3,0xEF,0xA0,0x80,0xC6,0x11,0xA9,
|
||||
0x00,0x8D,0x89,0x02,0x60,0xA9,0x80,0x8D,0x89,0x02,0xA9,0x02,0x20,0x58,0xF0,0x30,
|
||||
0xEE,0xA9,0xCC,0x8D,0x04,0xD2,0xA9,0x05,0x8D,0x06,0xD2,0xA9,0x60,0x8D,0x00,0x03,
|
||||
0x20,0x68,0xE4,0xA9,0x34,0x8D,0x02,0xD3,0xA9,0x03,0xA2,0x03,0xA0,0xC0,0x20,0x5C,
|
||||
0xE4,0xA9,0xFF,0x8D,0x2A,0x02,0xA5,0x11,0xF0,0xC1,0xAD,0x2A,0x02,0xD0,0xF7,0xA9,
|
||||
0x00,0x85,0x3D,0xA0,0x01,0x60,0xA5,0x3F,0x30,0x33,0xA6,0x3D,0xEC,0x8A,0x02,0xF0,
|
||||
0x08,0xBD,0x00,0x04,0xE6,0x3D,0xA0,0x01,0x60,0xA9,0x52,0x20,0x95,0xF0,0x98,0x30,
|
||||
0xF7,0xA9,0x00,0x85,0x3D,0xA2,0x80,0xAD,0xFF,0x03,0xC9,0xFE,0xF0,0x0D,0xC9,0xFA,
|
||||
0xD0,0x03,0xAE,0x7F,0x04,0x8E,0x8A,0x02,0x4C,0xD6,0xEF,0xC6,0x3F,0xA0,0x88,0x60,
|
||||
0xA6,0x3D,0x9D,0x00,0x04,0xE6,0x3D,0xA0,0x01,0xE0,0x7F,0xF0,0x01,0x60,0xA9,0xFC,
|
||||
0x20,0xD2,0xF0,0xA9,0x00,0x85,0x3D,0x60,0xA0,0x01,0x60,0xAD,0x89,0x02,0x30,0x08,
|
||||
0xA0,0x01,0xA9,0x3C,0x8D,0x02,0xD3,0x60,0xA6,0x3D,0xF0,0x0A,0x8E,0x7F,0x04,0xA9,
|
||||
0xFA,0x20,0xD2,0xF0,0x30,0xEC,0xA2,0x7F,0xA9,0x00,0x9D,0x00,0x04,0xCA,0x10,0xFA,
|
||||
0xA9,0xFE,0x20,0xD2,0xF0,0x4C,0x32,0xF0,0x85,0x40,0xA5,0x14,0x18,0x69,0x19,0xAA,
|
||||
0xA9,0xFF,0x8D,0x1F,0xD0,0xA9,0x00,0xA0,0xF0,0x88,0xD0,0xFD,0x8D,0x1F,0xD0,0xA0,
|
||||
0xF0,0x88,0xD0,0xFD,0xE4,0x14,0xD0,0xE8,0xC6,0x40,0xF0,0x0B,0x8A,0x18,0x69,0x08,
|
||||
0xAA,0xE4,0x14,0xD0,0xFC,0xF0,0xD3,0x20,0x8C,0xF0,0x98,0x60,0xAD,0x25,0xE4,0x48,
|
||||
0xAD,0x24,0xE4,0x48,0x60,0x8D,0x02,0x03,0xA9,0x00,0x8D,0x09,0x03,0xA9,0x83,0x8D,
|
||||
0x08,0x03,0xA9,0x03,0x8D,0x05,0x03,0xA9,0xFD,0x8D,0x04,0x03,0xA9,0x60,0x8D,0x00,
|
||||
0x03,0xA9,0x00,0x8D,0x01,0x03,0xA9,0x23,0x8D,0x06,0x03,0xAD,0x02,0x03,0xA0,0x40,
|
||||
0xC9,0x52,0xF0,0x02,0xA0,0x80,0x8C,0x03,0x03,0xA5,0x3E,0x8D,0x0B,0x03,0x20,0x59,
|
||||
0xE4,0x60,0x8D,0xFF,0x03,0xA9,0x55,0x8D,0xFD,0x03,0x8D,0xFE,0x03,0xA9,0x57,0x20,
|
||||
0x95,0xF0,0x60,0x50,0x30,0xE4,0x43,0x40,0xE4,0x45,0x00,0xE4,0x53,0x10,0xE4,0x4B,
|
||||
0x20,0xE4,0x7D,0x41,0x54,0x41,0x52,0x49,0x20,0x43,0x4F,0x4D,0x50,0x55,0x54,0x45,
|
||||
0x52,0x20,0x2D,0x20,0x4D,0x45,0x4D,0x4F,0x20,0x50,0x41,0x44,0x9B,0x42,0x4F,0x4F,
|
||||
0x54,0x20,0x45,0x52,0x52,0x4F,0x52,0x9B,0x45,0x3A,0x9B,0x78,0xAD,0x44,0x02,0xD0,
|
||||
0x04,0xA9,0xFF,0xD0,0x03,0x78,0xA9,0x00,0x85,0x08,0xD8,0xA2,0xFF,0x9A,0x20,0x3F,
|
||||
0xF2,0x20,0x81,0xF2,0xA5,0x08,0xD0,0x28,0xA9,0x00,0xA0,0x08,0x85,0x04,0x85,0x05,
|
||||
0x91,0x04,0xC8,0xC0,0x00,0xD0,0xF9,0xE6,0x05,0xA6,0x05,0xE4,0x06,0xD0,0xF1,0xAD,
|
||||
0x72,0xE4,0x85,0x0A,0xAD,0x73,0xE4,0x85,0x0B,0xA9,0xFF,0x8D,0x44,0x02,0xD0,0x13,
|
||||
0xA2,0x00,0x8A,0x9D,0x00,0x02,0x9D,0x00,0x03,0xCA,0xD0,0xF7,0xA2,0x10,0x95,0x00,
|
||||
0xE8,0x10,0xFB,0xA9,0x02,0x85,0x52,0xA9,0x27,0x85,0x53,0xA2,0x25,0xBD,0x80,0xE4,
|
||||
0x9D,0x00,0x02,0xCA,0x10,0xF7,0x20,0x94,0xF2,0x58,0xA2,0x0E,0xBD,0xE3,0xF0,0x9D,
|
||||
0x1A,0x03,0xCA,0x10,0xF7,0xA2,0x00,0x86,0x07,0x86,0x06,0xAE,0xE4,0x02,0xE0,0x90,
|
||||
0xB0,0x0A,0xAD,0xFC,0x9F,0xD0,0x05,0xE6,0x07,0x20,0x3C,0xF2,0xAE,0xE4,0x02,0xE0,
|
||||
0xB0,0xB0,0x0A,0xAE,0xFC,0xBF,0xD0,0x05,0xE6,0x06,0x20,0x39,0xF2,0xA9,0x03,0xA2,
|
||||
0x00,0x9D,0x42,0x03,0xA9,0x18,0x9D,0x44,0x03,0xA9,0xF1,0x9D,0x45,0x03,0xA9,0x0C,
|
||||
0x9D,0x4A,0x03,0x20,0x56,0xE4,0x10,0x03,0x4C,0x25,0xF1,0xE8,0xD0,0xFD,0xC8,0x10,
|
||||
0xFA,0x20,0xB2,0xF3,0xA5,0x06,0x05,0x07,0xF0,0x12,0xA5,0x06,0xF0,0x03,0xAD,0xFD,
|
||||
0xBF,0xA6,0x07,0xF0,0x03,0x0D,0xFD,0x9F,0x29,0x01,0xF0,0x03,0x20,0xCF,0xF2,0xA9,
|
||||
0x00,0x8D,0x44,0x02,0xA5,0x06,0xF0,0x0A,0xAD,0xFD,0xBF,0x29,0x04,0xF0,0x03,0x6C,
|
||||
0xFA,0xBF,0xA5,0x07,0xF0,0x0A,0xAD,0xFD,0x9F,0x29,0x04,0xF0,0xDF,0x6C,0xFA,0x9F,
|
||||
0x6C,0x0A,0x00,0xA2,0xF2,0xA0,0xF0,0x20,0x85,0xF3,0x20,0x30,0xF2,0x4C,0x2A,0xF2,
|
||||
0xAD,0x05,0xE4,0x48,0xAD,0x04,0xE4,0x48,0x60,0x6C,0xFE,0xBF,0x6C,0xFE,0x9F,0xAD,
|
||||
0xFC,0xBF,0xD0,0x12,0xEE,0xFC,0xBF,0xAD,0xFC,0xBF,0xD0,0x0A,0xAD,0xFD,0xBF,0x29,
|
||||
0x80,0xF0,0x03,0x6C,0xFE,0xBF,0xCE,0xFC,0xBF,0xA9,0x00,0x85,0x05,0xA9,0x10,0x85,
|
||||
0x06,0xA0,0x00,0xB1,0x05,0x85,0x07,0x49,0xFF,0x85,0x04,0x91,0x05,0xB1,0x05,0xC5,
|
||||
0x04,0xD0,0x0D,0xA5,0x07,0x91,0x05,0xA5,0x06,0x18,0x69,0x10,0x85,0x06,0xD0,0xE3,
|
||||
0x60,0xA9,0x00,0xAA,0x9D,0x00,0xD0,0x9D,0x00,0xD4,0x9D,0x00,0xD2,0x9D,0x00,0xD3,
|
||||
0xE8,0xD0,0xF1,0x60,0xC6,0x11,0xA5,0x06,0x8D,0xE4,0x02,0x8D,0xE6,0x02,0xA9,0x00,
|
||||
0x8D,0xE5,0x02,0xA9,0x00,0x8D,0xE7,0x02,0xA9,0x07,0x8D,0xE8,0x02,0x20,0x0C,0xE4,
|
||||
0x20,0x1C,0xE4,0x20,0x2C,0xE4,0x20,0x3C,0xE4,0x20,0x4C,0xE4,0x20,0x6E,0xE4,0x20,
|
||||
0x65,0xE4,0x20,0x6B,0xE4,0xAD,0x1F,0xD0,0x29,0x01,0xD0,0x02,0xE6,0x4A,0x60,0xA5,
|
||||
0x08,0xF0,0x0A,0xA5,0x09,0x29,0x01,0xF0,0x03,0x20,0x7E,0xF3,0x60,0xA9,0x01,0x8D,
|
||||
0x01,0x03,0xA9,0x53,0x8D,0x02,0x03,0x20,0x53,0xE4,0x10,0x01,0x60,0xA9,0x00,0x8D,
|
||||
0x0B,0x03,0xA9,0x01,0x8D,0x0A,0x03,0xA9,0x00,0x8D,0x04,0x03,0xA9,0x04,0x8D,0x05,
|
||||
0x03,0x20,0x9D,0xF3,0x10,0x08,0x20,0x81,0xF3,0xA5,0x4B,0xF0,0xE0,0x60,0xA2,0x03,
|
||||
0xBD,0x00,0x04,0x9D,0x40,0x02,0xCA,0x10,0xF7,0xAD,0x42,0x02,0x85,0x04,0xAD,0x43,
|
||||
0x02,0x85,0x05,0xAD,0x04,0x04,0x85,0x0C,0xAD,0x05,0x04,0x85,0x0D,0xA0,0x7F,0xB9,
|
||||
0x00,0x04,0x91,0x04,0x88,0x10,0xF8,0x18,0xA5,0x04,0x69,0x80,0x85,0x04,0xA5,0x05,
|
||||
0x69,0x00,0x85,0x05,0xCE,0x41,0x02,0xF0,0x11,0xEE,0x0A,0x03,0x20,0x9D,0xF3,0x10,
|
||||
0xDC,0x20,0x81,0xF3,0xA5,0x4B,0xD0,0xAE,0xF0,0xF2,0xA5,0x4B,0xF0,0x03,0x20,0x9D,
|
||||
0xF3,0x20,0x6C,0xF3,0xB0,0xA0,0x20,0x7E,0xF3,0xE6,0x09,0x60,0x18,0xAD,0x42,0x02,
|
||||
0x69,0x06,0x85,0x04,0xAD,0x43,0x02,0x69,0x00,0x85,0x05,0x6C,0x04,0x00,0x6C,0x0C,
|
||||
0x00,0xA2,0x0D,0xA0,0xF1,0x8A,0xA2,0x00,0x9D,0x44,0x03,0x98,0x9D,0x45,0x03,0xA9,
|
||||
0x09,0x9D,0x42,0x03,0xA9,0xFF,0x9D,0x48,0x03,0x20,0x56,0xE4,0x60,0xA5,0x4B,0xF0,
|
||||
0x03,0x4C,0x7A,0xE4,0xA9,0x52,0x8D,0x02,0x03,0xA9,0x01,0x8D,0x01,0x03,0x20,0x53,
|
||||
0xE4,0x60,0xA5,0x08,0xF0,0x0A,0xA5,0x09,0x29,0x02,0xF0,0x03,0x20,0xE1,0xF3,0x60,
|
||||
0xA5,0x4A,0xF0,0x1C,0xA9,0x80,0x85,0x3E,0xE6,0x4B,0x20,0x7D,0xE4,0x20,0x01,0xF3,
|
||||
0xA9,0x00,0x85,0x4B,0x85,0x4A,0x06,0x09,0xA5,0x0C,0x85,0x02,0xA5,0x0D,0x85,0x03,
|
||||
0x60,0x6C,0x02,0x00,0xA9,0xFF,0x8D,0xFC,0x02,0xAD,0xE6,0x02,0x29,0xF0,0x85,0x6A,
|
||||
0xA9,0x40,0x8D,0xBE,0x02,0x60,0xA5,0x2B,0x29,0x0F,0xD0,0x08,0xA5,0x2A,0x29,0x0F,
|
||||
0x85,0x2A,0xA9,0x00,0x85,0x57,0xA9,0xE0,0x8D,0xF4,0x02,0xA9,0x02,0x8D,0xF3,0x02,
|
||||
0x8D,0x2F,0x02,0xA9,0x01,0x85,0x4C,0xA9,0xC0,0x05,0x10,0x85,0x10,0x8D,0x0E,0xD2,
|
||||
0xA9,0x00,0x8D,0x93,0x02,0x85,0x64,0x85,0x7B,0x8D,0xF0,0x02,0xA0,0x0E,0xA9,0x01,
|
||||
0x99,0xA3,0x02,0x88,0x10,0xFA,0xA2,0x04,0xBD,0xC1,0xFE,0x9D,0xC4,0x02,0xCA,0x10,
|
||||
0xF7,0xA4,0x6A,0x88,0x8C,0x95,0x02,0xA9,0x60,0x8D,0x94,0x02,0xA6,0x57,0xBD,0x69,
|
||||
0xFE,0xD0,0x04,0xA9,0x91,0x85,0x4C,0x85,0x51,0xA5,0x6A,0x85,0x65,0xBC,0x45,0xFE,
|
||||
0xA9,0x28,0x20,0x21,0xF9,0x88,0xD0,0xF8,0xAD,0x6F,0x02,0x29,0x3F,0x85,0x67,0xA8,
|
||||
0xE0,0x08,0x90,0x17,0x8A,0x6A,0x6A,0x6A,0x29,0xC0,0x05,0x67,0xA8,0xA9,0x10,0x20,
|
||||
0x21,0xF9,0xE0,0x0B,0xD0,0x05,0xA9,0x06,0x8D,0xC8,0x02,0x8C,0x6F,0x02,0xA5,0x64,
|
||||
0x85,0x58,0xA5,0x65,0x85,0x59,0xAD,0x0B,0xD4,0xC9,0x7A,0xD0,0xF9,0x20,0x1F,0xF9,
|
||||
0xBD,0x75,0xFE,0xF0,0x06,0xA9,0xFF,0x85,0x64,0xC6,0x65,0xA5,0x64,0x85,0x68,0xA5,
|
||||
0x65,0x85,0x69,0x20,0x13,0xF9,0xA9,0x41,0x20,0x17,0xF9,0x86,0x66,0xA9,0x18,0x8D,
|
||||
0xBF,0x02,0xA5,0x57,0xC9,0x09,0xB0,0x2D,0xA5,0x2A,0x29,0x10,0xF0,0x27,0xA9,0x04,
|
||||
0x8D,0xBF,0x02,0xA2,0x02,0xA9,0x02,0x20,0x17,0xF9,0xCA,0x10,0xF8,0xA4,0x6A,0x88,
|
||||
0x98,0x20,0x17,0xF9,0xA9,0x60,0x20,0x17,0xF9,0xA9,0x42,0x20,0x17,0xF9,0x18,0xA9,
|
||||
0x0C,0x65,0x66,0x85,0x66,0xA4,0x66,0xBE,0x51,0xFE,0xA5,0x51,0x20,0x17,0xF9,0xCA,
|
||||
0xD0,0xF8,0xA5,0x57,0xC9,0x08,0x90,0x1C,0xA2,0x5D,0xA5,0x6A,0x38,0xE9,0x10,0x20,
|
||||
0x17,0xF9,0xA9,0x00,0x20,0x17,0xF9,0xA9,0x4F,0x20,0x17,0xF9,0xA5,0x51,0x20,0x17,
|
||||
0xF9,0xCA,0xD0,0xF8,0xA5,0x59,0x20,0x17,0xF9,0xA5,0x58,0x20,0x17,0xF9,0xA5,0x51,
|
||||
0x09,0x40,0x20,0x17,0xF9,0xA9,0x70,0x20,0x17,0xF9,0xA9,0x70,0x20,0x17,0xF9,0xA5,
|
||||
0x64,0x8D,0x30,0x02,0xA5,0x65,0x8D,0x31,0x02,0xA9,0x70,0x20,0x17,0xF9,0xA5,0x64,
|
||||
0x8D,0xE5,0x02,0xA5,0x65,0x8D,0xE6,0x02,0xA5,0x68,0x85,0x64,0xA5,0x69,0x85,0x65,
|
||||
0xAD,0x31,0x02,0x20,0x17,0xF9,0xAD,0x30,0x02,0x20,0x17,0xF9,0xA5,0x4C,0x10,0x07,
|
||||
0x48,0x20,0xFC,0xF3,0x68,0xA8,0x60,0xA5,0x2A,0x29,0x20,0xD0,0x0B,0x20,0xB9,0xF7,
|
||||
0x8D,0x90,0x02,0xA5,0x52,0x8D,0x91,0x02,0xA9,0x22,0x0D,0x2F,0x02,0x8D,0x2F,0x02,
|
||||
0x4C,0x21,0xF6,0x20,0x96,0xFA,0x20,0xA2,0xF5,0x20,0x32,0xFB,0x20,0xD4,0xF9,0x4C,
|
||||
0x34,0xF6,0x20,0x47,0xF9,0xB1,0x64,0x2D,0xA0,0x02,0x46,0x6F,0xB0,0x03,0x4A,0x10,
|
||||
0xF9,0x8D,0xFA,0x02,0xC9,0x00,0x60,0x8D,0xFB,0x02,0x20,0x96,0xFA,0xAD,0xFB,0x02,
|
||||
0xC9,0x7D,0xD0,0x06,0x20,0xB9,0xF7,0x4C,0x21,0xF6,0xAD,0xFB,0x02,0xC9,0x9B,0xD0,
|
||||
0x06,0x20,0x30,0xFA,0x4C,0x21,0xF6,0x20,0xE0,0xF5,0x20,0xD8,0xF9,0x4C,0x21,0xF6,
|
||||
0xAD,0xFF,0x02,0xD0,0xFB,0xA2,0x02,0xB5,0x54,0x95,0x5A,0xCA,0x10,0xF9,0xAD,0xFB,
|
||||
0x02,0xA8,0x2A,0x2A,0x2A,0x2A,0x29,0x03,0xAA,0x98,0x29,0x9F,0x1D,0xF6,0xFE,0x8D,
|
||||
0xFA,0x02,0x20,0x47,0xF9,0xAD,0xFA,0x02,0x46,0x6F,0xB0,0x04,0x0A,0x4C,0x08,0xF6,
|
||||
0x2D,0xA0,0x02,0x85,0x50,0xAD,0xA0,0x02,0x49,0xFF,0x31,0x64,0x05,0x50,0x91,0x64,
|
||||
0x60,0x20,0xA2,0xF5,0x85,0x5D,0xA6,0x57,0xD0,0x0A,0xAE,0xF0,0x02,0xD0,0x05,0x49,
|
||||
0x80,0x20,0xFF,0xF5,0xA4,0x4C,0xA9,0x01,0x85,0x4C,0xAD,0xFB,0x02,0x60,0x20,0xB3,
|
||||
0xFC,0x20,0x88,0xFA,0xA5,0x6B,0xD0,0x34,0xA5,0x54,0x85,0x6C,0xA5,0x55,0x85,0x6D,
|
||||
0x20,0xE2,0xF6,0x84,0x4C,0xAD,0xFB,0x02,0xC9,0x9B,0xF0,0x12,0x20,0xAD,0xF6,0x20,
|
||||
0xB3,0xFC,0xA5,0x63,0xC9,0x71,0xD0,0x03,0x20,0x0A,0xF9,0x4C,0x50,0xF6,0x20,0xE4,
|
||||
0xFA,0x20,0x00,0xFC,0xA5,0x6C,0x85,0x54,0xA5,0x6D,0x85,0x55,0xA5,0x6B,0xF0,0x11,
|
||||
0xC6,0x6B,0xF0,0x0D,0xA5,0x4C,0x30,0xF8,0x20,0x93,0xF5,0x8D,0xFB,0x02,0x4C,0xB3,
|
||||
0xFC,0x20,0x30,0xFA,0xA9,0x9B,0x8D,0xFB,0x02,0x20,0x21,0xF6,0x84,0x4C,0x4C,0xB3,
|
||||
0xFC,0x6C,0x64,0x00,0x8D,0xFB,0x02,0x20,0xB3,0xFC,0x20,0x88,0xFA,0x20,0xE4,0xFA,
|
||||
0x20,0x8D,0xFC,0xF0,0x09,0x0E,0xA2,0x02,0x20,0xCA,0xF5,0x4C,0xB3,0xFC,0xAD,0xFE,
|
||||
0x02,0x0D,0xA2,0x02,0xD0,0xEF,0x0E,0xA2,0x02,0xE8,0xBD,0xC6,0xFE,0x85,0x64,0xBD,
|
||||
0xC7,0xFE,0x85,0x65,0x20,0xA1,0xF6,0x20,0x21,0xF6,0x4C,0xB3,0xFC,0xA9,0xFF,0x8D,
|
||||
0xFC,0x02,0xA5,0x2A,0x4A,0xB0,0x62,0xA9,0x80,0xA6,0x11,0xF0,0x58,0xAD,0xFC,0x02,
|
||||
0xC9,0xFF,0xF0,0xEE,0x85,0x7C,0xA2,0xFF,0x8E,0xFC,0x02,0x20,0xD8,0xFC,0xAA,0xE0,
|
||||
0xC0,0x90,0x02,0xA2,0x03,0xBD,0xFE,0xFE,0x8D,0xFB,0x02,0xC9,0x80,0xF0,0xCE,0xC9,
|
||||
0x81,0xD0,0x0B,0xAD,0xB6,0x02,0x49,0x80,0x8D,0xB6,0x02,0x4C,0xDD,0xF6,0xC9,0x82,
|
||||
0xD0,0x07,0xA9,0x00,0x8D,0xBE,0x02,0xF0,0xB4,0xC9,0x83,0xD0,0x07,0xA9,0x40,0x8D,
|
||||
0xBE,0x02,0xD0,0xA9,0xC9,0x84,0xD0,0x07,0xA9,0x80,0x8D,0xBE,0x02,0xD0,0x9E,0xC9,
|
||||
0x85,0xD0,0x0A,0xA9,0x88,0x85,0x4C,0x85,0x11,0xA9,0x9B,0xD0,0x26,0xA5,0x7C,0xC9,
|
||||
0x40,0xB0,0x15,0xAD,0xFB,0x02,0xC9,0x61,0x90,0x0E,0xC9,0x7B,0xB0,0x0A,0xAD,0xBE,
|
||||
0x02,0xF0,0x05,0x05,0x7C,0x4C,0xFE,0xF6,0x20,0x8D,0xFC,0xF0,0x09,0xAD,0xFB,0x02,
|
||||
0x4D,0xB6,0x02,0x8D,0xFB,0x02,0x4C,0x34,0xF6,0xA9,0x80,0x8D,0xA2,0x02,0x60,0xC6,
|
||||
0x54,0x10,0x06,0xAE,0xBF,0x02,0xCA,0x86,0x54,0x4C,0x5C,0xFC,0xE6,0x54,0xA5,0x54,
|
||||
0xCD,0xBF,0x02,0x90,0xF4,0xA2,0x00,0xF0,0xEE,0xC6,0x55,0xA5,0x55,0x30,0x04,0xC5,
|
||||
0x52,0xB0,0x04,0xA5,0x53,0x85,0x55,0x4C,0xDD,0xFB,0xE6,0x55,0xA5,0x55,0xC5,0x53,
|
||||
0x90,0xF5,0xF0,0xF3,0xA5,0x52,0x4C,0xA5,0xF7,0x20,0xF3,0xFC,0xA0,0x00,0x98,0x91,
|
||||
0x64,0xC8,0xD0,0xFB,0xE6,0x65,0xA6,0x65,0xE4,0x6A,0x90,0xF3,0xA9,0xFF,0x99,0xB2,
|
||||
0x02,0xC8,0xC0,0x04,0x90,0xF8,0x20,0xE4,0xFC,0x85,0x63,0x85,0x6D,0xA9,0x00,0x85,
|
||||
0x54,0x85,0x56,0x85,0x6C,0x60,0xA5,0x63,0xC5,0x52,0xF0,0x21,0xA5,0x55,0xC5,0x52,
|
||||
0xD0,0x03,0x20,0x73,0xFC,0x20,0x99,0xF7,0xA5,0x55,0xC5,0x53,0xD0,0x07,0xA5,0x54,
|
||||
0xF0,0x03,0x20,0x7F,0xF7,0xA9,0x20,0x8D,0xFB,0x02,0x20,0xE0,0xF5,0x4C,0xDD,0xFB,
|
||||
0x20,0xAA,0xF7,0xA5,0x55,0xC5,0x52,0xD0,0x0A,0x20,0x34,0xFA,0x20,0x20,0xFB,0x90,
|
||||
0x02,0xB0,0x07,0xA5,0x63,0x20,0x25,0xFB,0x90,0xE6,0x4C,0xDD,0xFB,0xA5,0x63,0x4C,
|
||||
0x06,0xFB,0xA5,0x63,0x4C,0x12,0xFB,0x20,0x9D,0xFC,0x20,0xA2,0xF5,0x85,0x7D,0xA9,
|
||||
0x00,0x8D,0xBB,0x02,0x20,0xFF,0xF5,0xA5,0x63,0x48,0x20,0xDC,0xF9,0x68,0xC5,0x63,
|
||||
0xB0,0x0C,0xA5,0x7D,0x48,0x20,0xA2,0xF5,0x85,0x7D,0x68,0x4C,0x44,0xF8,0x20,0xA8,
|
||||
0xFC,0xCE,0xBB,0x02,0x30,0x04,0xC6,0x54,0xD0,0xF7,0x4C,0xDD,0xFB,0x20,0x9D,0xFC,
|
||||
0x20,0x47,0xF9,0xA5,0x64,0x85,0x68,0xA5,0x65,0x85,0x69,0xA5,0x63,0x48,0x20,0xD4,
|
||||
0xF9,0x68,0xC5,0x63,0xB0,0x10,0xA5,0x54,0xCD,0xBF,0x02,0xB0,0x09,0x20,0xA2,0xF5,
|
||||
0xA0,0x00,0x91,0x68,0xF0,0xDA,0xA0,0x00,0x98,0x91,0x68,0x20,0x68,0xFC,0x20,0xA8,
|
||||
0xFC,0x4C,0xDD,0xFB,0x38,0x20,0x7B,0xFB,0xA5,0x52,0x85,0x55,0x20,0x47,0xF9,0xA5,
|
||||
0x64,0x85,0x68,0x18,0x69,0x28,0x85,0x66,0xA5,0x65,0x85,0x69,0x69,0x00,0x85,0x67,
|
||||
0xA6,0x54,0xE0,0x17,0xF0,0x08,0x20,0x4E,0xFB,0xE8,0xE0,0x17,0xD0,0xF8,0x20,0x9B,
|
||||
0xFB,0x4C,0xDD,0xFB,0x20,0xDD,0xFB,0xA4,0x51,0x84,0x54,0xA4,0x54,0x98,0x38,0x20,
|
||||
0x23,0xFB,0x08,0x98,0x18,0x69,0x78,0x28,0x20,0x04,0xFB,0xC8,0xC0,0x18,0xD0,0xED,
|
||||
0xAD,0xB4,0x02,0x09,0x01,0x8D,0xB4,0x02,0xA5,0x52,0x85,0x55,0x20,0x47,0xF9,0x20,
|
||||
0xB7,0xFB,0x20,0x20,0xFB,0x90,0xD4,0x4C,0xDD,0xFB,0xA0,0x20,0x20,0xD8,0xFC,0x88,
|
||||
0x10,0xFA,0x60,0xA9,0x02,0xD0,0x0A,0xA4,0x4C,0x30,0x2B,0xA0,0x00,0x91,0x64,0xA9,
|
||||
0x01,0x8D,0x9E,0x02,0xA5,0x4C,0x30,0x1E,0xA5,0x64,0x38,0xED,0x9E,0x02,0x85,0x64,
|
||||
0xB0,0x02,0xC6,0x65,0xA5,0x0F,0xC5,0x65,0x90,0x0C,0xD0,0x06,0xA5,0x0E,0xC5,0x64,
|
||||
0x90,0x04,0xA9,0x93,0x85,0x4C,0x60,0xA5,0x54,0x48,0xA5,0x55,0x48,0xA5,0x56,0x48,
|
||||
0x20,0xF3,0xFC,0xA5,0x54,0x85,0x66,0xA9,0x00,0x85,0x67,0xA5,0x66,0x0A,0x26,0x67,
|
||||
0x85,0x51,0xA4,0x67,0x8C,0x9F,0x02,0x0A,0x26,0x67,0x0A,0x26,0x67,0x18,0x65,0x51,
|
||||
0x85,0x66,0xA5,0x67,0x6D,0x9F,0x02,0x85,0x67,0xA6,0x57,0xBC,0x81,0xFE,0x88,0x30,
|
||||
0x07,0x06,0x66,0x26,0x67,0x4C,0x7E,0xF9,0xBC,0xA5,0xFE,0xA5,0x55,0xA2,0x07,0x88,
|
||||
0x30,0x0A,0xCA,0x46,0x56,0x6A,0x6E,0xA1,0x02,0x4C,0x8F,0xF9,0xC8,0x18,0x65,0x66,
|
||||
0x85,0x66,0x90,0x02,0xE6,0x67,0x38,0x6E,0xA1,0x02,0x18,0xCA,0x10,0xF9,0xAE,0xA1,
|
||||
0x02,0xA5,0x66,0x18,0x65,0x64,0x85,0x64,0x85,0x5E,0xA5,0x67,0x65,0x65,0x85,0x65,
|
||||
0x85,0x5F,0xBD,0xB1,0xFE,0x8D,0xA0,0x02,0x85,0x6F,0x68,0x85,0x56,0x68,0x85,0x55,
|
||||
0x68,0x85,0x54,0x60,0xA9,0x00,0xF0,0x02,0xA9,0x9B,0x85,0x7D,0xE6,0x63,0xE6,0x55,
|
||||
0xD0,0x02,0xE6,0x56,0xA5,0x55,0xA6,0x57,0xDD,0x8D,0xFE,0xF0,0x0B,0xE0,0x00,0xD0,
|
||||
0x06,0xC5,0x53,0xF0,0x02,0xB0,0x01,0x60,0xE0,0x08,0x90,0x04,0xA5,0x56,0xF0,0xF7,
|
||||
0xA5,0x57,0xD0,0x30,0xA5,0x63,0xC9,0x51,0x90,0x0A,0xA5,0x7D,0xF0,0x26,0x20,0x30,
|
||||
0xFA,0x4C,0x77,0xFA,0x20,0x34,0xFA,0xA5,0x54,0x18,0x69,0x78,0x20,0x25,0xFB,0x90,
|
||||
0x08,0xA5,0x7D,0xF0,0x04,0x18,0x20,0xA5,0xF8,0x4C,0xDD,0xFB,0xA9,0x00,0xF0,0x02,
|
||||
0xA9,0x9B,0x85,0x7D,0x20,0xE4,0xFC,0xA9,0x00,0x85,0x56,0xE6,0x54,0xA6,0x57,0xA0,
|
||||
0x18,0x24,0x7B,0x10,0x05,0xA0,0x04,0x98,0xD0,0x03,0xBD,0x99,0xFE,0xC5,0x54,0xD0,
|
||||
0x26,0x8C,0x9D,0x02,0x8A,0xD0,0x20,0xA5,0x7D,0xF0,0x1C,0xC9,0x9B,0x38,0xF0,0x01,
|
||||
0x18,0x20,0xAC,0xFB,0xEE,0xBB,0x02,0xC6,0x6C,0xCE,0x9D,0x02,0xAD,0xB2,0x02,0x38,
|
||||
0x10,0xEF,0xAD,0x9D,0x02,0x85,0x54,0x4C,0xDD,0xFB,0x38,0xB5,0x70,0xE5,0x74,0x95,
|
||||
0x70,0xB5,0x71,0xE5,0x75,0x95,0x71,0x60,0xAD,0xBF,0x02,0xC9,0x04,0xF0,0x07,0xA5,
|
||||
0x57,0xF0,0x03,0x20,0xFC,0xF3,0xA9,0x27,0xC5,0x53,0xB0,0x02,0x85,0x53,0xA6,0x57,
|
||||
0xBD,0x99,0xFE,0xC5,0x54,0x90,0x2A,0xF0,0x28,0xE0,0x08,0xD0,0x0A,0xA5,0x56,0xF0,
|
||||
0x13,0xC9,0x01,0xD0,0x1C,0xF0,0x04,0xA5,0x56,0xD0,0x16,0xBD,0x8D,0xFE,0xC5,0x55,
|
||||
0x90,0x0F,0xF0,0x0D,0xA9,0x01,0x85,0x4C,0xA9,0x80,0xA6,0x11,0x85,0x11,0xF0,0x06,
|
||||
0x60,0x20,0xD6,0xF7,0xA9,0x8D,0x85,0x4C,0x68,0x68,0xA5,0x7B,0x10,0x03,0x20,0xB9,
|
||||
0xFC,0x4C,0x34,0xF6,0xA0,0x00,0xA5,0x5D,0x91,0x5E,0x60,0x48,0x29,0x07,0xAA,0xBD,
|
||||
0xB9,0xFE,0x85,0x6E,0x68,0x4A,0x4A,0x4A,0xAA,0x60,0x2E,0xB4,0x02,0x2E,0xB3,0x02,
|
||||
0x2E,0xB2,0x02,0x60,0x90,0x0C,0x20,0xEB,0xFA,0xBD,0xA3,0x02,0x05,0x6E,0x9D,0xA3,
|
||||
0x02,0x60,0x20,0xEB,0xFA,0xA5,0x6E,0x49,0xFF,0x3D,0xA3,0x02,0x9D,0xA3,0x02,0x60,
|
||||
0xA5,0x54,0x18,0x69,0x78,0x20,0xEB,0xFA,0x18,0xBD,0xA3,0x02,0x25,0x6E,0xF0,0x01,
|
||||
0x38,0x60,0xAD,0xFA,0x02,0xA4,0x57,0xC0,0x03,0xB0,0x0F,0x2A,0x2A,0x2A,0x2A,0x29,
|
||||
0x03,0xAA,0xAD,0xFA,0x02,0x29,0x9F,0x1D,0xFA,0xFE,0x8D,0xFB,0x02,0x60,0xA9,0x02,
|
||||
0x85,0x65,0xA9,0x47,0x85,0x64,0xA0,0x27,0xB1,0x66,0x85,0x50,0xB1,0x68,0x91,0x66,
|
||||
0xA5,0x50,0x91,0x64,0x88,0x10,0xF1,0xA5,0x65,0x85,0x69,0xA5,0x64,0x85,0x68,0x18,
|
||||
0xA5,0x66,0x69,0x28,0x85,0x66,0x90,0x02,0xE6,0x67,0x60,0x08,0xA0,0x17,0x98,0x20,
|
||||
0x22,0xFB,0x08,0x98,0x18,0x69,0x79,0x28,0x20,0x04,0xFB,0x88,0x30,0x04,0xC4,0x54,
|
||||
0xB0,0xEC,0xA5,0x54,0x18,0x69,0x78,0x28,0x4C,0x04,0xFB,0xA5,0x52,0x85,0x55,0x20,
|
||||
0x47,0xF9,0xA0,0x27,0xA9,0x00,0x91,0x64,0x88,0x10,0xFB,0x60,0x20,0xFA,0xFA,0xA5,
|
||||
0x58,0x85,0x64,0xA5,0x59,0x85,0x65,0xA0,0x28,0xB1,0x64,0xA6,0x6A,0xCA,0xE4,0x65,
|
||||
0xD0,0x08,0xA2,0xD7,0xE4,0x64,0xB0,0x02,0xA9,0x00,0xA0,0x00,0x91,0x64,0xE6,0x64,
|
||||
0xD0,0xE5,0xE6,0x65,0xA5,0x65,0xC5,0x6A,0xD0,0xDD,0x4C,0xDD,0xFB,0xA9,0x00,0x85,
|
||||
0x63,0xA5,0x54,0x85,0x51,0xA5,0x51,0x20,0x22,0xFB,0xB0,0x0C,0xA5,0x63,0x18,0x69,
|
||||
0x28,0x85,0x63,0xC6,0x51,0x4C,0xE5,0xFB,0x18,0xA5,0x63,0x65,0x55,0x85,0x63,0x60,
|
||||
0x20,0x9D,0xFC,0xA5,0x63,0x48,0xA5,0x6C,0x85,0x54,0xA5,0x6D,0x85,0x55,0xA9,0x01,
|
||||
0x85,0x6B,0xA2,0x17,0xA5,0x7B,0x10,0x02,0xA2,0x03,0xE4,0x54,0xD0,0x0B,0xA5,0x55,
|
||||
0xC5,0x53,0xD0,0x05,0xE6,0x6B,0x4C,0x39,0xFC,0x20,0xD4,0xF9,0xE6,0x6B,0xA5,0x63,
|
||||
0xC5,0x52,0xD0,0xDE,0xC6,0x54,0x20,0x99,0xF7,0x20,0xA2,0xF5,0xD0,0x17,0xC6,0x6B,
|
||||
0xA5,0x63,0xC5,0x52,0xF0,0x0F,0x20,0x99,0xF7,0xA5,0x55,0xC5,0x53,0xD0,0x02,0xC6,
|
||||
0x54,0xA5,0x6B,0xD0,0xE4,0x68,0x85,0x63,0x20,0xA8,0xFC,0x60,0x20,0xDD,0xFB,0xA5,
|
||||
0x51,0x85,0x6C,0xA5,0x52,0x85,0x6D,0x60,0xA5,0x63,0xC5,0x52,0xD0,0x02,0xC6,0x54,
|
||||
0x20,0xDD,0xFB,0xA5,0x63,0xC5,0x52,0xF0,0x13,0x20,0x47,0xF9,0xA5,0x53,0x38,0xE5,
|
||||
0x52,0xA8,0xB1,0x64,0xD0,0x06,0x88,0x10,0xF9,0x4C,0xDB,0xF8,0x60,0xA2,0x2D,0xBD,
|
||||
0xC6,0xFE,0xCD,0xFB,0x02,0xF0,0x05,0xCA,0xCA,0xCA,0x10,0xF3,0x60,0xA2,0x02,0xB5,
|
||||
0x54,0x9D,0xB8,0x02,0xCA,0x10,0xF8,0x60,0xA2,0x02,0xBD,0xB8,0x02,0x95,0x54,0xCA,
|
||||
0x10,0xF8,0x60,0x20,0xB9,0xFC,0x4C,0x34,0xF6,0xAD,0xBF,0x02,0xC9,0x18,0xF0,0x17,
|
||||
0xA2,0x0B,0xB5,0x54,0x48,0xBD,0x90,0x02,0x95,0x54,0x68,0x9D,0x90,0x02,0xCA,0x10,
|
||||
0xF1,0xA5,0x7B,0x49,0xFF,0x85,0x7B,0x60,0xA2,0x7F,0x8E,0x1F,0xD0,0x8E,0x0A,0xD4,
|
||||
0xCA,0x10,0xF7,0x60,0xA9,0x00,0xA6,0x7B,0xD0,0x04,0xA6,0x57,0xD0,0x02,0xA5,0x52,
|
||||
0x85,0x55,0x60,0xA5,0x58,0x85,0x64,0xA5,0x59,0x85,0x65,0x60,0xA2,0x00,0xA5,0x22,
|
||||
0xC9,0x11,0xF0,0x08,0xC9,0x12,0xF0,0x03,0xA0,0x84,0x60,0xE8,0x8E,0xB7,0x02,0xA5,
|
||||
0x54,0x85,0x60,0xA5,0x55,0x85,0x61,0xA5,0x56,0x85,0x62,0xA9,0x01,0x85,0x79,0x85,
|
||||
0x7A,0x38,0xA5,0x60,0xE5,0x5A,0x85,0x76,0xB0,0x0D,0xA9,0xFF,0x85,0x79,0xA5,0x76,
|
||||
0x49,0xFF,0x18,0x69,0x01,0x85,0x76,0x38,0xA5,0x61,0xE5,0x5B,0x85,0x77,0xA5,0x62,
|
||||
0xE5,0x5C,0x85,0x78,0xB0,0x16,0xA9,0xFF,0x85,0x7A,0xA5,0x77,0x49,0xFF,0x85,0x77,
|
||||
0xA5,0x78,0x49,0xFF,0x85,0x78,0xE6,0x77,0xD0,0x02,0xE6,0x78,0xA2,0x02,0xA0,0x00,
|
||||
0x84,0x73,0x98,0x95,0x70,0xB5,0x5A,0x95,0x54,0xCA,0x10,0xF6,0xA5,0x77,0xE8,0xA8,
|
||||
0xA5,0x78,0x85,0x7F,0x85,0x75,0xD0,0x0B,0xA5,0x77,0xC5,0x76,0xB0,0x05,0xA5,0x76,
|
||||
0xA2,0x02,0xA8,0x98,0x85,0x7E,0x85,0x74,0x48,0xA5,0x75,0x4A,0x68,0x6A,0x95,0x70,
|
||||
0xA5,0x7E,0x05,0x7F,0xD0,0x03,0x4C,0x42,0xFE,0x18,0xA5,0x70,0x65,0x76,0x85,0x70,
|
||||
0x90,0x02,0xE6,0x71,0xA5,0x71,0xC5,0x75,0x90,0x14,0xD0,0x06,0xA5,0x70,0xC5,0x74,
|
||||
0x90,0x0C,0x18,0xA5,0x54,0x65,0x79,0x85,0x54,0xA2,0x00,0x20,0x7A,0xFA,0x18,0xA5,
|
||||
0x72,0x65,0x77,0x85,0x72,0xA5,0x73,0x65,0x78,0x85,0x73,0xC5,0x75,0x90,0x27,0xD0,
|
||||
0x06,0xA5,0x72,0xC5,0x74,0x90,0x1F,0x24,0x7A,0x10,0x10,0xC6,0x55,0xA5,0x55,0xC9,
|
||||
0xFF,0xD0,0x0E,0xA5,0x56,0xF0,0x0A,0xC6,0x56,0x10,0x06,0xE6,0x55,0xD0,0x02,0xE6,
|
||||
0x56,0xA2,0x02,0x20,0x7A,0xFA,0x20,0x96,0xFA,0x20,0xE0,0xF5,0xAD,0xB7,0x02,0xF0,
|
||||
0x2F,0x20,0x9D,0xFC,0xAD,0xFB,0x02,0x8D,0xBC,0x02,0xA5,0x54,0x48,0x20,0xDC,0xF9,
|
||||
0x68,0x85,0x54,0x20,0x96,0xFA,0x20,0xA2,0xF5,0xD0,0x0C,0xAD,0xFD,0x02,0x8D,0xFB,
|
||||
0x02,0x20,0xE0,0xF5,0x4C,0x0A,0xFE,0xAD,0xBC,0x02,0x8D,0xFB,0x02,0x20,0xA8,0xFC,
|
||||
0x38,0xA5,0x7E,0xE9,0x01,0x85,0x7E,0xA5,0x7F,0xE9,0x00,0x85,0x7F,0x30,0x03,0x4C,
|
||||
0x90,0xFD,0x4C,0x34,0xF6,0x18,0x10,0x0A,0x0A,0x10,0x1C,0x34,0x64,0xC4,0xC4,0xC4,
|
||||
0xC4,0x17,0x17,0x0B,0x17,0x2F,0x2F,0x5F,0x5F,0x61,0x61,0x61,0x61,0x13,0x13,0x09,
|
||||
0x13,0x27,0x27,0x4F,0x4F,0x41,0x41,0x41,0x41,0x02,0x06,0x07,0x08,0x09,0x0A,0x0B,
|
||||
0x0D,0x0F,0x0F,0x0F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,
|
||||
0x01,0x02,0x01,0x01,0x00,0x00,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x28,0x14,0x14,
|
||||
0x28,0x50,0x50,0xA0,0xA0,0x40,0x50,0x50,0x50,0x18,0x18,0x0C,0x18,0x30,0x30,0x60,
|
||||
0x60,0xC0,0xC0,0xC0,0xC0,0x00,0x00,0x00,0x02,0x03,0x02,0x03,0x02,0x03,0x01,0x01,
|
||||
0x01,0x00,0xFF,0xF0,0x0F,0xC0,0x30,0x0C,0x03,0x80,0x40,0x20,0x10,0x08,0x04,0x02,
|
||||
0x01,0x28,0xCA,0x94,0x46,0x00,0x1B,0x79,0xF7,0x1C,0x7F,0xF7,0x1D,0x8C,0xF7,0x1E,
|
||||
0x99,0xF7,0x1F,0xAA,0xF7,0x7D,0xB9,0xF7,0x7E,0xE6,0xF7,0x7F,0x10,0xF8,0x9B,0x30,
|
||||
0xFA,0x9C,0xD4,0xF8,0x9D,0xA4,0xF8,0x9E,0x32,0xF8,0x9F,0x2D,0xF8,0xFD,0x0A,0xF9,
|
||||
0xFE,0x6D,0xF8,0xFF,0x37,0xF8,0x40,0x00,0x20,0x60,0x20,0x40,0x00,0x60,0x6C,0x6A,
|
||||
0x3B,0x80,0x80,0x6B,0x2B,0x2A,0x6F,0x80,0x70,0x75,0x9B,0x69,0x2D,0x3D,0x76,0x80,
|
||||
0x63,0x80,0x80,0x62,0x78,0x7A,0x34,0x80,0x33,0x36,0x1B,0x35,0x32,0x31,0x2C,0x20,
|
||||
0x2E,0x6E,0x80,0x6D,0x2F,0x81,0x72,0x80,0x65,0x79,0x7F,0x74,0x77,0x71,0x39,0x80,
|
||||
0x30,0x37,0x7E,0x38,0x3C,0x3E,0x66,0x68,0x64,0x80,0x82,0x67,0x73,0x61,0x4C,0x4A,
|
||||
0x3A,0x80,0x80,0x4B,0x5C,0x5E,0x4F,0x80,0x50,0x55,0x9B,0x49,0x5F,0x7C,0x56,0x80,
|
||||
0x43,0x80,0x80,0x42,0x58,0x5A,0x24,0x80,0x23,0x26,0x1B,0x25,0x22,0x21,0x5B,0x20,
|
||||
0x5D,0x4E,0x80,0x4D,0x3F,0x81,0x52,0x80,0x45,0x59,0x9F,0x54,0x57,0x51,0x28,0x80,
|
||||
0x29,0x27,0x9C,0x40,0x7D,0x9D,0x46,0x48,0x44,0x80,0x83,0x47,0x53,0x41,0x0C,0x0A,
|
||||
0x7B,0x80,0x80,0x0B,0x1E,0x1F,0x0F,0x80,0x10,0x15,0x9B,0x09,0x1C,0x1D,0x16,0x80,
|
||||
0x03,0x80,0x80,0x02,0x18,0x1A,0x80,0x80,0x85,0x80,0x1B,0x80,0xFD,0x80,0x00,0x20,
|
||||
0x60,0x0E,0x80,0x0D,0x80,0x81,0x12,0x80,0x05,0x19,0x9E,0x14,0x17,0x11,0x80,0x80,
|
||||
0x80,0x80,0xFE,0x80,0x7D,0xFF,0x06,0x08,0x04,0x80,0x84,0x07,0x13,0x01,0xAD,0x09,
|
||||
0xD2,0xCD,0xF2,0x02,0xD0,0x05,0xAD,0xF1,0x02,0xD0,0x20,0xAD,0x09,0xD2,0xC9,0x9F,
|
||||
0xD0,0x0A,0xAD,0xFF,0x02,0x49,0xFF,0x8D,0xFF,0x02,0xB0,0x0F,0x8D,0xFC,0x02,0x8D,
|
||||
0xF2,0x02,0xA9,0x03,0x8D,0xF1,0x02,0xA9,0x00,0x85,0x4D,0xA9,0x30,0x8D,0x2B,0x02,
|
||||
0x68,0x40,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD6,0x57,0xB4,0xE7,0x77,0xE4,0xF3,0xE6,
|
||||
};
|
|
@ -0,0 +1,642 @@
|
|||
const UBYTE PROGMEM romos[10240] = {
|
||||
0x20,0xA1,0xDB,0x20,0xBB,0xDB,0xB0,0x39,0xA2,0xED,0xA0,0x04,0x20,0x48,0xDA,0xA2,
|
||||
0xFF,0x86,0xF1,0x20,0x44,0xDA,0xF0,0x04,0xA9,0xFF,0x85,0xF0,0x20,0x94,0xDB,0xB0,
|
||||
0x21,0x48,0xA6,0xD5,0xD0,0x11,0x20,0xEB,0xDB,0x68,0x05,0xD9,0x85,0xD9,0xA6,0xF1,
|
||||
0x30,0xE6,0xE8,0x86,0xF1,0xD0,0xE1,0x68,0xA6,0xF1,0x10,0x02,0xE6,0xED,0x4C,0x18,
|
||||
0xD8,0x60,0xC9,0x2E,0xF0,0x14,0xC9,0x45,0xF0,0x19,0xA6,0xF0,0xD0,0x68,0xC9,0x2B,
|
||||
0xF0,0xC6,0xC9,0x2D,0xF0,0x00,0x85,0xEE,0xF0,0xBE,0xA6,0xF1,0x10,0x58,0xE8,0x86,
|
||||
0xF1,0xF0,0xB5,0xA5,0xF2,0x85,0xEC,0x20,0x94,0xDB,0xB0,0x37,0xAA,0xA5,0xED,0x48,
|
||||
0x86,0xED,0x20,0x94,0xDB,0xB0,0x17,0x48,0xA5,0xED,0x0A,0x85,0xED,0x0A,0x0A,0x65,
|
||||
0xED,0x85,0xED,0x68,0x18,0x65,0xED,0x85,0xED,0xA4,0xF2,0x20,0x9D,0xDB,0xA5,0xEF,
|
||||
0xF0,0x09,0xA5,0xED,0x49,0xFF,0x18,0x69,0x01,0x85,0xED,0x68,0x18,0x65,0xED,0x85,
|
||||
0xED,0xD0,0x13,0xC9,0x2B,0xF0,0x06,0xC9,0x2D,0xD0,0x07,0x85,0xEF,0x20,0x94,0xDB,
|
||||
0x90,0xBA,0xA5,0xEC,0x85,0xF2,0xC6,0xF2,0xA5,0xED,0xA6,0xF1,0x30,0x05,0xF0,0x03,
|
||||
0x38,0xE5,0xF1,0x48,0x2A,0x68,0x6A,0x85,0xED,0x90,0x03,0x20,0xEB,0xDB,0xA5,0xED,
|
||||
0x18,0x69,0x44,0x85,0xD4,0x20,0x00,0xDC,0xB0,0x0B,0xA6,0xEE,0xF0,0x06,0xA5,0xD4,
|
||||
0x09,0x80,0x85,0xD4,0x18,0x60,0x20,0x51,0xDA,0xA9,0x30,0x8D,0x7F,0x05,0xA5,0xD4,
|
||||
0xF0,0x28,0x29,0x7F,0xC9,0x3F,0x90,0x28,0xC9,0x45,0xB0,0x24,0x38,0xE9,0x3F,0x20,
|
||||
0x70,0xDC,0x20,0xA4,0xDC,0x09,0x80,0x9D,0x80,0x05,0xAD,0x80,0x05,0xC9,0x2E,0xF0,
|
||||
0x03,0x4C,0x88,0xD9,0x20,0xC1,0xDC,0x4C,0x9C,0xD9,0xA9,0xB0,0x8D,0x80,0x05,0x60,
|
||||
0xA9,0x01,0x20,0x70,0xDC,0x20,0xA4,0xDC,0xE8,0x86,0xF2,0xA5,0xD4,0x0A,0x38,0xE9,
|
||||
0x80,0xAE,0x80,0x05,0xE0,0x30,0xF0,0x17,0xAE,0x81,0x05,0xAC,0x82,0x05,0x8E,0x82,
|
||||
0x05,0x8C,0x81,0x05,0xA6,0xF2,0xE0,0x02,0xD0,0x02,0xE6,0xF2,0x18,0x69,0x01,0x85,
|
||||
0xED,0xA9,0x45,0xA4,0xF2,0x20,0x9F,0xDC,0x84,0xF2,0xA5,0xED,0x10,0x0B,0xA9,0x00,
|
||||
0x38,0xE5,0xED,0x85,0xED,0xA9,0x2D,0xD0,0x02,0xA9,0x2B,0x20,0x9F,0xDC,0xA2,0x00,
|
||||
0xA5,0xED,0x38,0xE9,0x0A,0x90,0x03,0xE8,0xD0,0xF8,0x18,0x69,0x0A,0x48,0x8A,0x20,
|
||||
0x9D,0xDC,0x68,0x09,0x80,0x20,0x9D,0xDC,0xAD,0x80,0x05,0xC9,0x30,0xD0,0x0D,0x18,
|
||||
0xA5,0xF3,0x69,0x01,0x85,0xF3,0xA5,0xF4,0x69,0x00,0x85,0xF4,0xA5,0xD4,0x10,0x09,
|
||||
0x20,0xC1,0xDC,0xA0,0x00,0xA9,0x2D,0x91,0xF3,0x60,0xA5,0xD4,0x85,0xF8,0xA5,0xD5,
|
||||
0x85,0xF7,0x20,0x44,0xDA,0xF8,0xA0,0x10,0x06,0xF8,0x26,0xF7,0xA2,0x03,0xB5,0xD4,
|
||||
0x75,0xD4,0x95,0xD4,0xCA,0xD0,0xF7,0x88,0xD0,0xEE,0xD8,0xA9,0x42,0x85,0xD4,0x4C,
|
||||
0x00,0xDC,0xA9,0x00,0x85,0xF7,0x85,0xF8,0xA5,0xD4,0x30,0x66,0xC9,0x43,0xB0,0x62,
|
||||
0x38,0xE9,0x40,0x90,0x3F,0x69,0x00,0x0A,0x85,0xF5,0x20,0x5A,0xDA,0xB0,0x53,0xA5,
|
||||
0xF7,0x85,0xF9,0xA5,0xF8,0x85,0xFA,0x20,0x5A,0xDA,0xB0,0x46,0x20,0x5A,0xDA,0xB0,
|
||||
0x41,0x18,0xA5,0xF8,0x65,0xFA,0x85,0xF8,0xA5,0xF7,0x65,0xF9,0x85,0xF7,0xB0,0x32,
|
||||
0x20,0xB9,0xDC,0x18,0x65,0xF8,0x85,0xF8,0xA5,0xF7,0x69,0x00,0xB0,0x24,0x85,0xF7,
|
||||
0xC6,0xF5,0xD0,0xC6,0x20,0xB9,0xDC,0xC9,0x05,0x90,0x0D,0x18,0xA5,0xF8,0x69,0x01,
|
||||
0x85,0xF8,0xA5,0xF7,0x69,0x00,0x85,0xF7,0xA5,0xF8,0x85,0xD4,0xA5,0xF7,0x85,0xD5,
|
||||
0x18,0x60,0x38,0x60,0xA2,0xD4,0xA0,0x06,0xA9,0x00,0x95,0x00,0xE8,0x88,0xD0,0xFA,
|
||||
0x60,0xA9,0x05,0x85,0xF4,0xA9,0x80,0x85,0xF3,0x60,0x18,0x26,0xF8,0x26,0xF7,0x60,
|
||||
0xA5,0xE0,0x49,0x80,0x85,0xE0,0xA5,0xE0,0x29,0x7F,0x85,0xF7,0xA5,0xD4,0x29,0x7F,
|
||||
0x38,0xE5,0xF7,0x10,0x10,0xA2,0x05,0xB5,0xD4,0xB4,0xE0,0x95,0xE0,0x98,0x95,0xD4,
|
||||
0xCA,0x10,0xF4,0x30,0xE1,0xF0,0x07,0xC9,0x05,0xB0,0x19,0x20,0x3E,0xDC,0xF8,0xA5,
|
||||
0xD4,0x45,0xE0,0x30,0x1E,0xA2,0x04,0x18,0xB5,0xD5,0x75,0xE1,0x95,0xD5,0xCA,0x10,
|
||||
0xF7,0xD8,0xB0,0x03,0x4C,0x00,0xDC,0xA9,0x01,0x20,0x3A,0xDC,0xA9,0x01,0x85,0xD5,
|
||||
0x4C,0x00,0xDC,0xA2,0x04,0x38,0xB5,0xD5,0xF5,0xE1,0x95,0xD5,0xCA,0x10,0xF7,0x90,
|
||||
0x04,0xD8,0x4C,0x00,0xDC,0xA5,0xD4,0x49,0x80,0x85,0xD4,0x38,0xA2,0x04,0xA9,0x00,
|
||||
0xF5,0xD5,0x95,0xD5,0xCA,0x10,0xF7,0xD8,0x4C,0x00,0xDC,0xA5,0xD4,0xF0,0x45,0xA5,
|
||||
0xE0,0xF0,0x3E,0x20,0xCF,0xDC,0x38,0xE9,0x40,0x38,0x65,0xE0,0x30,0x38,0x20,0xE0,
|
||||
0xDC,0xA5,0xDF,0x29,0x0F,0x85,0xF6,0xC6,0xF6,0x30,0x06,0x20,0x01,0xDD,0x4C,0xF7,
|
||||
0xDA,0xA5,0xDF,0x4A,0x4A,0x4A,0x4A,0x85,0xF6,0xC6,0xF6,0x30,0x06,0x20,0x05,0xDD,
|
||||
0x4C,0x09,0xDB,0x20,0x62,0xDC,0xC6,0xF5,0xD0,0xD7,0xA5,0xED,0x85,0xD4,0x4C,0x04,
|
||||
0xDC,0x20,0x44,0xDA,0x18,0x60,0x38,0x60,0xA5,0xE0,0xF0,0xFA,0xA5,0xD4,0xF0,0xF4,
|
||||
0x20,0xCF,0xDC,0x38,0xE5,0xE0,0x18,0x69,0x40,0x30,0xEB,0x20,0xE0,0xDC,0xE6,0xF5,
|
||||
0x4C,0x4E,0xDB,0xA2,0x00,0xB5,0xD5,0x95,0xD4,0xE8,0xE0,0x0C,0xD0,0xF7,0xA0,0x05,
|
||||
0x38,0xF8,0xB9,0xDA,0x00,0xF9,0xE6,0x00,0x99,0xDA,0x00,0x88,0x10,0xF4,0xD8,0x90,
|
||||
0x04,0xE6,0xD9,0xD0,0xE9,0x20,0x0F,0xDD,0x06,0xD9,0x06,0xD9,0x06,0xD9,0x06,0xD9,
|
||||
0xA0,0x05,0x38,0xF8,0xB9,0xDA,0x00,0xF9,0xE0,0x00,0x99,0xDA,0x00,0x88,0x10,0xF4,
|
||||
0xD8,0x90,0x04,0xE6,0xD9,0xD0,0xE9,0x20,0x09,0xDD,0xC6,0xF5,0xD0,0xB5,0x20,0x62,
|
||||
0xDC,0x4C,0x1A,0xDB,0x20,0xAF,0xDB,0xA4,0xF2,0x90,0x02,0xB1,0xF3,0xC8,0x84,0xF2,
|
||||
0x60,0xA4,0xF2,0xA9,0x20,0xD1,0xF3,0xD0,0x03,0xC8,0xD0,0xF9,0x84,0xF2,0x60,0xA4,
|
||||
0xF2,0xB1,0xF3,0x38,0xE9,0x30,0x90,0x18,0xC9,0x0A,0x60,0xA5,0xF2,0x48,0x20,0x94,
|
||||
0xDB,0x90,0x1F,0xC9,0x2E,0xF0,0x14,0xC9,0x2B,0xF0,0x07,0xC9,0x2D,0xF0,0x03,0x68,
|
||||
0x38,0x60,0x20,0x94,0xDB,0x90,0x0B,0xC9,0x2E,0xD0,0xF4,0x20,0x94,0xDB,0x90,0x02,
|
||||
0xB0,0xED,0x68,0x85,0xF2,0x18,0x60,0xA2,0xE7,0xD0,0x02,0xA2,0xD5,0xA0,0x04,0x18,
|
||||
0x36,0x04,0x36,0x03,0x36,0x02,0x36,0x01,0x36,0x00,0x26,0xEC,0x88,0xD0,0xF0,0x60,
|
||||
0xA2,0x00,0x86,0xDA,0xA2,0x04,0xA5,0xD4,0xF0,0x2E,0xA5,0xD5,0xD0,0x1A,0xA0,0x00,
|
||||
0xB9,0xD6,0x00,0x99,0xD5,0x00,0xC8,0xC0,0x05,0x90,0xF5,0xC6,0xD4,0xCA,0xD0,0xEA,
|
||||
0xA5,0xD5,0xD0,0x04,0x85,0xD4,0x18,0x60,0xA5,0xD4,0x29,0x7F,0xC9,0x71,0x90,0x01,
|
||||
0x60,0xC9,0x0F,0xB0,0x03,0x20,0x44,0xDA,0x18,0x60,0xA2,0xD4,0xD0,0x02,0xA2,0xE0,
|
||||
0x86,0xF9,0x85,0xF7,0x85,0xF8,0xA0,0x04,0xB5,0x04,0x95,0x05,0xCA,0x88,0xD0,0xF8,
|
||||
0xA9,0x00,0x95,0x05,0xA6,0xF9,0xC6,0xF7,0xD0,0xEC,0xB5,0x00,0x18,0x65,0xF8,0x95,
|
||||
0x00,0x60,0xA2,0x0A,0xB5,0xD4,0x95,0xD5,0xCA,0x10,0xF9,0xA9,0x00,0x85,0xD4,0x60,
|
||||
0x85,0xF7,0xA2,0x00,0xA0,0x00,0x20,0x93,0xDC,0x38,0xE9,0x01,0x85,0xF7,0xB5,0xD5,
|
||||
0x4A,0x4A,0x4A,0x4A,0x20,0x9D,0xDC,0xB5,0xD5,0x29,0x0F,0x20,0x9D,0xDC,0xE8,0xE0,
|
||||
0x05,0x90,0xE3,0xA5,0xF7,0xD0,0x05,0xA9,0x2E,0x20,0x9F,0xDC,0x60,0x09,0x30,0x99,
|
||||
0x80,0x05,0xC8,0x60,0xA2,0x0A,0xBD,0x80,0x05,0xC9,0x2E,0xF0,0x07,0xC9,0x30,0xD0,
|
||||
0x07,0xCA,0xD0,0xF2,0xCA,0xBD,0x80,0x05,0x60,0x20,0xEB,0xDB,0xA5,0xEC,0x29,0x0F,
|
||||
0x60,0x38,0xA5,0xF3,0xE9,0x01,0x85,0xF3,0xA5,0xF4,0xE9,0x00,0x85,0xF4,0x60,0xA5,
|
||||
0xD4,0x45,0xE0,0x29,0x80,0x85,0xEE,0x06,0xE0,0x46,0xE0,0xA5,0xD4,0x29,0x7F,0x60,
|
||||
0x05,0xEE,0x85,0xED,0xA9,0x00,0x85,0xD4,0x85,0xE0,0x20,0x28,0xDD,0x20,0xE7,0xDB,
|
||||
0xA5,0xEC,0x29,0x0F,0x85,0xE6,0xA9,0x05,0x85,0xF5,0x20,0x34,0xDD,0x20,0x44,0xDA,
|
||||
0x60,0xA2,0xD9,0xD0,0x06,0xA2,0xD9,0xD0,0x08,0xA2,0xDF,0xA0,0xE5,0xD0,0x04,0xA2,
|
||||
0xDF,0xA0,0xEB,0xA9,0x05,0x85,0xF7,0x18,0xF8,0xB5,0x00,0x79,0x00,0x00,0x95,0x00,
|
||||
0xCA,0x88,0xC6,0xF7,0x10,0xF3,0xD8,0x60,0xA0,0x05,0xB9,0xE0,0x00,0x99,0xE6,0x00,
|
||||
0x88,0x10,0xF7,0x60,0xA0,0x05,0xB9,0xD4,0x00,0x99,0xDA,0x00,0x88,0x10,0xF7,0x60,
|
||||
0x86,0xFE,0x84,0xFF,0x85,0xEF,0xA2,0xE0,0xA0,0x05,0x20,0xA7,0xDD,0x20,0xB6,0xDD,
|
||||
0xA6,0xFE,0xA4,0xFF,0x20,0x89,0xDD,0xC6,0xEF,0xF0,0x2D,0x20,0xDB,0xDA,0xB0,0x28,
|
||||
0x18,0xA5,0xFE,0x69,0x06,0x85,0xFE,0x90,0x06,0xA5,0xFF,0x69,0x00,0x85,0xFF,0xA6,
|
||||
0xFE,0xA4,0xFF,0x20,0x98,0xDD,0x20,0x66,0xDA,0xB0,0x0D,0xC6,0xEF,0xF0,0x09,0xA2,
|
||||
0xE0,0xA0,0x05,0x20,0x98,0xDD,0x30,0xD3,0x60,0x86,0xFC,0x84,0xFD,0xA0,0x05,0xB1,
|
||||
0xFC,0x99,0xD4,0x00,0x88,0x10,0xF8,0x60,0x86,0xFC,0x84,0xFD,0xA0,0x05,0xB1,0xFC,
|
||||
0x99,0xE0,0x00,0x88,0x10,0xF8,0x60,0x86,0xFC,0x84,0xFD,0xA0,0x05,0xB9,0xD4,0x00,
|
||||
0x91,0xFC,0x88,0x10,0xF8,0x60,0xA2,0x05,0xB5,0xD4,0x95,0xE0,0xCA,0x10,0xF9,0x60,
|
||||
0xA2,0x89,0xA0,0xDE,0x20,0x98,0xDD,0x20,0xDB,0xDA,0xB0,0x7F,0xA9,0x00,0x85,0xF1,
|
||||
0xA5,0xD4,0x85,0xF0,0x29,0x7F,0x85,0xD4,0x38,0xE9,0x40,0x30,0x26,0xC9,0x04,0x10,
|
||||
0x6A,0xA2,0xE6,0xA0,0x05,0x20,0xA7,0xDD,0x20,0xD2,0xD9,0xA5,0xD4,0x85,0xF1,0xA5,
|
||||
0xD5,0xD0,0x58,0x20,0xAA,0xD9,0x20,0xB6,0xDD,0xA2,0xE6,0xA0,0x05,0x20,0x89,0xDD,
|
||||
0x20,0x60,0xDA,0xA9,0x0A,0xA2,0x4D,0xA0,0xDE,0x20,0x40,0xDD,0x20,0xB6,0xDD,0x20,
|
||||
0xDB,0xDA,0xA5,0xF1,0xF0,0x23,0x18,0x6A,0x85,0xE0,0xA9,0x01,0x90,0x02,0xA9,0x10,
|
||||
0x85,0xE1,0xA2,0x04,0xA9,0x00,0x95,0xE2,0xCA,0x10,0xFB,0xA5,0xE0,0x18,0x69,0x40,
|
||||
0xB0,0x19,0x30,0x17,0x85,0xE0,0x20,0xDB,0xDA,0xA5,0xF0,0x10,0x0D,0x20,0xB6,0xDD,
|
||||
0xA2,0x8F,0xA0,0xDE,0x20,0x89,0xDD,0x20,0x28,0xDB,0x60,0x38,0x60,0x3D,0x17,0x94,
|
||||
0x19,0x00,0x00,0x3D,0x57,0x33,0x05,0x00,0x00,0x3E,0x05,0x54,0x76,0x62,0x00,0x3E,
|
||||
0x32,0x19,0x62,0x27,0x00,0x3F,0x01,0x68,0x60,0x30,0x36,0x3F,0x07,0x32,0x03,0x27,
|
||||
0x41,0x3F,0x25,0x43,0x34,0x56,0x75,0x3F,0x66,0x27,0x37,0x30,0x50,0x40,0x01,0x15,
|
||||
0x12,0x92,0x55,0x3F,0x99,0x99,0x99,0x99,0x99,0x3F,0x43,0x42,0x94,0x48,0x19,0x40,
|
||||
0x01,0x00,0x00,0x00,0x00,0x86,0xFE,0x84,0xFF,0xA2,0xE0,0xA0,0x05,0x20,0xA7,0xDD,
|
||||
0xA6,0xFE,0xA4,0xFF,0x20,0x98,0xDD,0x20,0x66,0xDA,0xA2,0xE6,0xA0,0x05,0x20,0xA7,
|
||||
0xDD,0xA2,0xE0,0xA0,0x05,0x20,0x89,0xDD,0xA6,0xFE,0xA4,0xFF,0x20,0x98,0xDD,0x20,
|
||||
0x60,0xDA,0xA2,0xE6,0xA0,0x05,0x20,0x98,0xDD,0x20,0x28,0xDB,0x60,0xA9,0x01,0xD0,
|
||||
0x02,0xA9,0x00,0x85,0xF0,0xA5,0xD4,0x10,0x02,0x38,0x60,0xA5,0xD4,0x85,0xE0,0x38,
|
||||
0xE9,0x40,0x0A,0x85,0xF1,0xA5,0xD5,0x29,0xF0,0xD0,0x04,0xA9,0x01,0xD0,0x04,0xE6,
|
||||
0xF1,0xA9,0x10,0x85,0xE1,0xA2,0x04,0xA9,0x00,0x95,0xE2,0xCA,0x10,0xFB,0x20,0x28,
|
||||
0xDB,0xA2,0x66,0xA0,0xDF,0x20,0x95,0xDE,0xA2,0xE6,0xA0,0x05,0x20,0xA7,0xDD,0x20,
|
||||
0xB6,0xDD,0x20,0xDB,0xDA,0xA9,0x0A,0xA2,0x72,0xA0,0xDF,0x20,0x40,0xDD,0xA2,0xE6,
|
||||
0xA0,0x05,0x20,0x98,0xDD,0x20,0xDB,0xDA,0xA2,0x6C,0xA0,0xDF,0x20,0x98,0xDD,0x20,
|
||||
0x66,0xDA,0x20,0xB6,0xDD,0xA9,0x00,0x85,0xD5,0xA5,0xF1,0x85,0xD4,0x10,0x07,0x49,
|
||||
0xFF,0x18,0x69,0x01,0x85,0xD4,0x20,0xAA,0xD9,0x24,0xF1,0x10,0x06,0xA9,0x80,0x05,
|
||||
0xD4,0x85,0xD4,0x20,0x66,0xDA,0xA5,0xF0,0xF0,0x0A,0xA2,0x89,0xA0,0xDE,0x20,0x98,
|
||||
0xDD,0x20,0x28,0xDB,0x18,0x60,0x40,0x03,0x16,0x22,0x77,0x66,0x3F,0x50,0x00,0x00,
|
||||
0x00,0x00,0x3F,0x49,0x15,0x57,0x11,0x08,0xBF,0x51,0x70,0x49,0x47,0x08,0x3F,0x39,
|
||||
0x20,0x57,0x61,0x95,0xBF,0x04,0x39,0x63,0x03,0x55,0x3F,0x10,0x09,0x30,0x12,0x64,
|
||||
0x3F,0x09,0x39,0x08,0x04,0x60,0x3F,0x12,0x42,0x58,0x47,0x42,0x3F,0x17,0x37,0x12,
|
||||
0x06,0x08,0x3F,0x28,0x95,0x29,0x71,0x17,0x3F,0x86,0x85,0x88,0x96,0x44,0x3E,0x16,
|
||||
0x05,0x44,0x49,0x00,0xBE,0x95,0x68,0x38,0x45,0x00,0x3F,0x02,0x68,0x79,0x94,0x16,
|
||||
0xBF,0x04,0x92,0x78,0x90,0x80,0x3F,0x07,0x03,0x15,0x20,0x00,0xBF,0x08,0x92,0x29,
|
||||
0x12,0x44,0x3F,0x11,0x08,0x40,0x09,0x11,0xBF,0x14,0x28,0x31,0x56,0x04,0x3F,0x19,
|
||||
0x99,0x98,0x77,0x44,0xBF,0x33,0x33,0x33,0x31,0x13,0x3F,0x99,0x99,0x99,0x99,0x99,
|
||||
0x3F,0x78,0x53,0x98,0x16,0x34,0x98,0x16,0x34,0xFC,0xE0,0x32,0x50,0xD9,0x68,0x11,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x18,0x18,0x00,0x18,0x00,
|
||||
0x00,0x66,0x66,0x66,0x00,0x00,0x00,0x00,0x00,0x66,0xFF,0x66,0x66,0xFF,0x66,0x00,
|
||||
0x18,0x3E,0x60,0x3C,0x06,0x7C,0x18,0x00,0x00,0x66,0x6C,0x18,0x30,0x66,0x46,0x00,
|
||||
0x1C,0x36,0x1C,0x38,0x6F,0x66,0x3B,0x00,0x00,0x18,0x18,0x18,0x00,0x00,0x00,0x00,
|
||||
0x00,0x0E,0x1C,0x18,0x18,0x1C,0x0E,0x00,0x00,0x70,0x38,0x18,0x18,0x38,0x70,0x00,
|
||||
0x00,0x66,0x3C,0xFF,0x3C,0x66,0x00,0x00,0x00,0x18,0x18,0x7E,0x18,0x18,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x30,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x06,0x0C,0x18,0x30,0x60,0x40,0x00,
|
||||
0x00,0x3C,0x66,0x6E,0x76,0x66,0x3C,0x00,0x00,0x18,0x38,0x18,0x18,0x18,0x7E,0x00,
|
||||
0x00,0x3C,0x66,0x0C,0x18,0x30,0x7E,0x00,0x00,0x7E,0x0C,0x18,0x0C,0x66,0x3C,0x00,
|
||||
0x00,0x0C,0x1C,0x3C,0x6C,0x7E,0x0C,0x00,0x00,0x7E,0x60,0x7C,0x06,0x66,0x3C,0x00,
|
||||
0x00,0x3C,0x60,0x7C,0x66,0x66,0x3C,0x00,0x00,0x7E,0x06,0x0C,0x18,0x30,0x30,0x00,
|
||||
0x00,0x3C,0x66,0x3C,0x66,0x66,0x3C,0x00,0x00,0x3C,0x66,0x3E,0x06,0x0C,0x38,0x00,
|
||||
0x00,0x00,0x18,0x18,0x00,0x18,0x18,0x00,0x00,0x00,0x18,0x18,0x00,0x18,0x18,0x30,
|
||||
0x06,0x0C,0x18,0x30,0x18,0x0C,0x06,0x00,0x00,0x00,0x7E,0x00,0x00,0x7E,0x00,0x00,
|
||||
0x60,0x30,0x18,0x0C,0x18,0x30,0x60,0x00,0x00,0x3C,0x66,0x0C,0x18,0x00,0x18,0x00,
|
||||
0x00,0x3C,0x66,0x6E,0x6E,0x60,0x3E,0x00,0x00,0x18,0x3C,0x66,0x66,0x7E,0x66,0x00,
|
||||
0x00,0x7C,0x66,0x7C,0x66,0x66,0x7C,0x00,0x00,0x3C,0x66,0x60,0x60,0x66,0x3C,0x00,
|
||||
0x00,0x78,0x6C,0x66,0x66,0x6C,0x78,0x00,0x00,0x7E,0x60,0x7C,0x60,0x60,0x7E,0x00,
|
||||
0x00,0x7E,0x60,0x7C,0x60,0x60,0x60,0x00,0x00,0x3E,0x60,0x60,0x6E,0x66,0x3E,0x00,
|
||||
0x00,0x66,0x66,0x7E,0x66,0x66,0x66,0x00,0x00,0x7E,0x18,0x18,0x18,0x18,0x7E,0x00,
|
||||
0x00,0x06,0x06,0x06,0x06,0x66,0x3C,0x00,0x00,0x66,0x6C,0x78,0x78,0x6C,0x66,0x00,
|
||||
0x00,0x60,0x60,0x60,0x60,0x60,0x7E,0x00,0x00,0x63,0x77,0x7F,0x6B,0x63,0x63,0x00,
|
||||
0x00,0x66,0x76,0x7E,0x7E,0x6E,0x66,0x00,0x00,0x3C,0x66,0x66,0x66,0x66,0x3C,0x00,
|
||||
0x00,0x7C,0x66,0x66,0x7C,0x60,0x60,0x00,0x00,0x3C,0x66,0x66,0x66,0x6C,0x36,0x00,
|
||||
0x00,0x7C,0x66,0x66,0x7C,0x6C,0x66,0x00,0x00,0x3C,0x60,0x3C,0x06,0x06,0x3C,0x00,
|
||||
0x00,0x7E,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x66,0x66,0x66,0x66,0x66,0x7E,0x00,
|
||||
0x00,0x66,0x66,0x66,0x66,0x3C,0x18,0x00,0x00,0x63,0x63,0x6B,0x7F,0x77,0x63,0x00,
|
||||
0x00,0x66,0x66,0x3C,0x3C,0x66,0x66,0x00,0x00,0x66,0x66,0x3C,0x18,0x18,0x18,0x00,
|
||||
0x00,0x7E,0x0C,0x18,0x30,0x60,0x7E,0x00,0x00,0x1E,0x18,0x18,0x18,0x18,0x1E,0x00,
|
||||
0x00,0x40,0x60,0x30,0x18,0x0C,0x06,0x00,0x00,0x78,0x18,0x18,0x18,0x18,0x78,0x00,
|
||||
0x00,0x08,0x1C,0x36,0x63,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,
|
||||
0x00,0x36,0x7F,0x7F,0x3E,0x1C,0x08,0x00,0x18,0x18,0x18,0x1F,0x1F,0x18,0x18,0x18,
|
||||
0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x18,0x18,0x18,0xF8,0xF8,0x00,0x00,0x00,
|
||||
0x18,0x18,0x18,0xF8,0xF8,0x18,0x18,0x18,0x00,0x00,0x00,0xF8,0xF8,0x18,0x18,0x18,
|
||||
0x03,0x07,0x0E,0x1C,0x38,0x70,0xE0,0xC0,0xC0,0xE0,0x70,0x38,0x1C,0x0E,0x07,0x03,
|
||||
0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,0xFF,0x00,0x00,0x00,0x00,0x0F,0x0F,0x0F,0x0F,
|
||||
0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0xFF,0x0F,0x0F,0x0F,0x0F,0x00,0x00,0x00,0x00,
|
||||
0xF0,0xF0,0xF0,0xF0,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0xF0,0xF0,0xF0,0xF0,
|
||||
0x00,0x1C,0x1C,0x77,0x77,0x08,0x1C,0x00,0x00,0x00,0x00,0x1F,0x1F,0x18,0x18,0x18,
|
||||
0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x18,0x18,0x18,0xFF,0xFF,0x18,0x18,0x18,
|
||||
0x00,0x00,0x3C,0x7E,0x7E,0x7E,0x3C,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,
|
||||
0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0x00,0x00,0x00,0xFF,0xFF,0x18,0x18,0x18,
|
||||
0x18,0x18,0x18,0xFF,0xFF,0x00,0x00,0x00,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,
|
||||
0x18,0x18,0x18,0x1F,0x1F,0x00,0x00,0x00,0x78,0x60,0x78,0x60,0x7E,0x18,0x1E,0x00,
|
||||
0x00,0x18,0x3C,0x7E,0x18,0x18,0x18,0x00,0x00,0x18,0x18,0x18,0x7E,0x3C,0x18,0x00,
|
||||
0x00,0x18,0x30,0x7E,0x30,0x18,0x00,0x00,0x00,0x18,0x0C,0x7E,0x0C,0x18,0x00,0x00,
|
||||
0x00,0x18,0x3C,0x7E,0x7E,0x3C,0x18,0x00,0x00,0x00,0x3C,0x06,0x3E,0x66,0x3E,0x00,
|
||||
0x00,0x60,0x60,0x7C,0x66,0x66,0x7C,0x00,0x00,0x00,0x3C,0x60,0x60,0x60,0x3C,0x00,
|
||||
0x00,0x06,0x06,0x3E,0x66,0x66,0x3E,0x00,0x00,0x00,0x3C,0x66,0x7E,0x60,0x3C,0x00,
|
||||
0x00,0x0E,0x18,0x3E,0x18,0x18,0x18,0x00,0x00,0x00,0x3E,0x66,0x66,0x3E,0x06,0x7C,
|
||||
0x00,0x60,0x60,0x7C,0x66,0x66,0x66,0x00,0x00,0x18,0x00,0x38,0x18,0x18,0x3C,0x00,
|
||||
0x00,0x06,0x00,0x06,0x06,0x06,0x06,0x3C,0x00,0x60,0x60,0x6C,0x78,0x6C,0x66,0x00,
|
||||
0x00,0x38,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x66,0x7F,0x7F,0x6B,0x63,0x00,
|
||||
0x00,0x00,0x7C,0x66,0x66,0x66,0x66,0x00,0x00,0x00,0x3C,0x66,0x66,0x66,0x3C,0x00,
|
||||
0x00,0x00,0x7C,0x66,0x66,0x7C,0x60,0x60,0x00,0x00,0x3E,0x66,0x66,0x3E,0x06,0x06,
|
||||
0x00,0x00,0x7C,0x66,0x60,0x60,0x60,0x00,0x00,0x00,0x3E,0x60,0x3C,0x06,0x7C,0x00,
|
||||
0x00,0x18,0x7E,0x18,0x18,0x18,0x0E,0x00,0x00,0x00,0x66,0x66,0x66,0x66,0x3E,0x00,
|
||||
0x00,0x00,0x66,0x66,0x66,0x3C,0x18,0x00,0x00,0x00,0x63,0x6B,0x7F,0x3E,0x36,0x00,
|
||||
0x00,0x00,0x66,0x3C,0x18,0x3C,0x66,0x00,0x00,0x00,0x66,0x66,0x66,0x3E,0x0C,0x78,
|
||||
0x00,0x00,0x7E,0x0C,0x18,0x30,0x7E,0x00,0x00,0x18,0x3C,0x7E,0x7E,0x18,0x3C,0x00,
|
||||
0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x7E,0x78,0x7C,0x6E,0x66,0x06,0x00,
|
||||
0x08,0x18,0x38,0x78,0x38,0x18,0x08,0x00,0x10,0x18,0x1C,0x1E,0x1C,0x18,0x10,0x00,
|
||||
0xFB,0xF3,0x33,0xF6,0x3D,0xF6,0xA3,0xF6,0x33,0xF6,0x3C,0xF6,0x4C,0xE4,0xF3,0x00,
|
||||
0xF5,0xF3,0x33,0xF6,0x92,0xF5,0xB6,0xF5,0x33,0xF6,0xFB,0xFC,0x4C,0xE4,0xF3,0x00,
|
||||
0x33,0xF6,0x33,0xF6,0xE1,0xF6,0x3C,0xF6,0x33,0xF6,0x3C,0xF6,0x4C,0xE4,0xF3,0x00,
|
||||
0x9E,0xEE,0xDB,0xEE,0x9D,0xEE,0xA6,0xEE,0x80,0xEE,0x9D,0xEE,0x4C,0x78,0xEE,0x00,
|
||||
0x4B,0xEF,0x2A,0xF0,0xD5,0xEF,0x0F,0xF0,0x27,0xF0,0x4A,0xEF,0x4C,0x41,0xEF,0x00,
|
||||
0x4C,0xEA,0xED,0x4C,0xF0,0xED,0x4C,0xC4,0xE4,0x4C,0x59,0xE9,0x4C,0xED,0xE8,0x4C,
|
||||
0xAE,0xE7,0x4C,0x05,0xE9,0x4C,0x44,0xE9,0x4C,0xF2,0xEB,0x4C,0xD5,0xE6,0x4C,0xA6,
|
||||
0xE4,0x4C,0x23,0xF2,0x4C,0x1B,0xF1,0x4C,0x25,0xF1,0x4C,0xE9,0xEF,0x4C,0x5D,0xEF,
|
||||
0x90,0xE7,0x8F,0xE7,0x8F,0xE7,0x8F,0xE7,0xBE,0xFF,0x0F,0xEB,0x90,0xEA,0xCF,0xEA,
|
||||
0x8F,0xE7,0x8F,0xE7,0x8F,0xE7,0x06,0xE7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xAE,0xE7,0x05,0xE9,0xA2,0x00,0xA9,0xFF,0x9D,0x40,0x03,0xA9,0xC0,0x9D,
|
||||
0x46,0x03,0xA9,0xE4,0x9D,0x47,0x03,0x8A,0x18,0x69,0x10,0xAA,0xC9,0x80,0x90,0xE8,
|
||||
0x60,0xA0,0x85,0x60,0x85,0x2F,0x86,0x2E,0x8A,0x29,0x0F,0xD0,0x04,0xE0,0x80,0x90,
|
||||
0x05,0xA0,0x86,0x4C,0x1B,0xE6,0xA0,0x00,0xBD,0x40,0x03,0x99,0x20,0x00,0xE8,0xC8,
|
||||
0xC0,0x0C,0x90,0xF4,0xA0,0x84,0xA5,0x22,0xC9,0x03,0x90,0x25,0xA8,0xC0,0x0E,0x90,
|
||||
0x02,0xA0,0x0E,0x84,0x17,0xB9,0xC6,0xE6,0xF0,0x0F,0xC9,0x02,0xF0,0x35,0xC9,0x08,
|
||||
0xB0,0x4C,0xC9,0x04,0xF0,0x63,0x4C,0xC9,0xE5,0xA5,0x20,0xC9,0xFF,0xF0,0x05,0xA0,
|
||||
0x81,0x4C,0x1B,0xE6,0x20,0x9E,0xE6,0xB0,0xF8,0x20,0x3D,0xE6,0xB0,0xF3,0x20,0x89,
|
||||
0xE6,0xA9,0x0B,0x85,0x17,0x20,0x3D,0xE6,0xA5,0x2C,0x85,0x26,0xA5,0x2D,0x85,0x27,
|
||||
0x4C,0x1D,0xE6,0xA0,0x01,0x84,0x23,0x20,0x3D,0xE6,0xB0,0x03,0x20,0x89,0xE6,0xA9,
|
||||
0xFF,0x85,0x20,0xA9,0xE4,0x85,0x27,0xA9,0xC0,0x85,0x26,0x4C,0x1D,0xE6,0xA5,0x20,
|
||||
0xC9,0xFF,0xD0,0x05,0x20,0x9E,0xE6,0xB0,0xB8,0x20,0x3D,0xE6,0x20,0x89,0xE6,0xA6,
|
||||
0x2E,0xBD,0x40,0x03,0x85,0x20,0x4C,0x1D,0xE6,0xA5,0x22,0x25,0x2A,0xD0,0x05,0xA0,
|
||||
0x83,0x4C,0x1B,0xE6,0x20,0x3D,0xE6,0xB0,0xF8,0xA5,0x28,0x05,0x29,0xD0,0x08,0x20,
|
||||
0x89,0xE6,0x85,0x2F,0x4C,0x1D,0xE6,0x20,0x89,0xE6,0x85,0x2F,0x30,0x35,0xA0,0x00,
|
||||
0x91,0x24,0x20,0x70,0xE6,0xA5,0x22,0x29,0x02,0xD0,0x0C,0xA5,0x2F,0xC9,0x9B,0xD0,
|
||||
0x06,0x20,0x63,0xE6,0x4C,0xC3,0xE5,0x20,0x63,0xE6,0xD0,0xDB,0xA5,0x22,0x29,0x02,
|
||||
0xD0,0x11,0x20,0x89,0xE6,0x85,0x2F,0x30,0x0A,0xA5,0x2F,0xC9,0x9B,0xD0,0xF3,0xA9,
|
||||
0x89,0x85,0x23,0x20,0x77,0xE6,0x4C,0x1D,0xE6,0xA5,0x22,0x25,0x2A,0xD0,0x05,0xA0,
|
||||
0x87,0x4C,0x1B,0xE6,0x20,0x3D,0xE6,0xB0,0xF8,0xA5,0x28,0x05,0x29,0xD0,0x06,0xA5,
|
||||
0x2F,0xE6,0x28,0xD0,0x06,0xA0,0x00,0xB1,0x24,0x85,0x2F,0x20,0x89,0xE6,0x30,0x25,
|
||||
0x20,0x70,0xE6,0xA5,0x22,0x29,0x02,0xD0,0x0C,0xA5,0x2F,0xC9,0x9B,0xD0,0x06,0x20,
|
||||
0x63,0xE6,0x4C,0x15,0xE6,0x20,0x63,0xE6,0xD0,0xDB,0xA5,0x22,0x29,0x02,0xD0,0x05,
|
||||
0xA9,0x9B,0x20,0x89,0xE6,0x20,0x77,0xE6,0x4C,0x1D,0xE6,0x84,0x23,0xA4,0x2E,0xB9,
|
||||
0x44,0x03,0x85,0x24,0xB9,0x45,0x03,0x85,0x25,0xA2,0x00,0xB5,0x20,0x99,0x40,0x03,
|
||||
0xE8,0xC8,0xE0,0x0C,0x90,0xF5,0xA5,0x2F,0xA6,0x2E,0xA4,0x23,0x60,0xA4,0x20,0xC0,
|
||||
0x22,0x90,0x04,0xA0,0x85,0xB0,0x1B,0xB9,0x1B,0x03,0x85,0x2C,0xB9,0x1C,0x03,0x85,
|
||||
0x2D,0xA4,0x17,0xB9,0xC6,0xE6,0xA8,0xB1,0x2C,0xAA,0xC8,0xB1,0x2C,0x85,0x2D,0x86,
|
||||
0x2C,0x18,0x60,0xC6,0x28,0xA5,0x28,0xC9,0xFF,0xD0,0x02,0xC6,0x29,0x05,0x29,0x60,
|
||||
0xE6,0x24,0xD0,0x02,0xE6,0x25,0x60,0xA6,0x2E,0x38,0xBD,0x48,0x03,0xE5,0x28,0x85,
|
||||
0x28,0xBD,0x49,0x03,0xE5,0x29,0x85,0x29,0x60,0xA0,0x92,0x20,0x93,0xE6,0x84,0x23,
|
||||
0xC0,0x00,0x60,0xAA,0xA5,0x2D,0x48,0xA5,0x2C,0x48,0x8A,0xA6,0x2E,0x60,0xA0,0x00,
|
||||
0xB1,0x24,0xF0,0x0C,0xA0,0x21,0xD9,0x1A,0x03,0xF0,0x0A,0x88,0x88,0x88,0x10,0xF6,
|
||||
0xA0,0x82,0x38,0xB0,0x13,0x98,0x85,0x20,0x38,0xA0,0x01,0xB1,0x24,0xE9,0x30,0xC9,
|
||||
0x0A,0x90,0x02,0xA9,0x01,0x85,0x21,0x18,0x60,0x00,0x04,0x04,0x04,0x04,0x06,0x06,
|
||||
0x06,0x06,0x02,0x08,0x0A,0xA9,0x40,0x8D,0x0E,0xD4,0xA9,0x38,0x8D,0x02,0xD3,0x8D,
|
||||
0x03,0xD3,0xA9,0x00,0x8D,0x00,0xD3,0xEA,0xEA,0xEA,0xA9,0x3C,0x8D,0x02,0xD3,0x8D,
|
||||
0x03,0xD3,0x60,0x6C,0x16,0x02,0x80,0x40,0x04,0x02,0x01,0x08,0x10,0x20,0x36,0x08,
|
||||
0x14,0x12,0x10,0x0E,0x0C,0x0A,0x48,0xAD,0x0E,0xD2,0x29,0x20,0xD0,0x0D,0xA9,0xDF,
|
||||
0x8D,0x0E,0xD2,0xA5,0x10,0x8D,0x0E,0xD2,0x6C,0x0A,0x02,0x8A,0x48,0xA2,0x06,0xBD,
|
||||
0xF6,0xE6,0xE0,0x05,0xD0,0x04,0x25,0x10,0xF0,0x05,0x2C,0x0E,0xD2,0xF0,0x06,0xCA,
|
||||
0x10,0xED,0x4C,0x62,0xE7,0x49,0xFF,0x8D,0x0E,0xD2,0xA5,0x10,0x8D,0x0E,0xD2,0xBD,
|
||||
0xFE,0xE6,0xAA,0xBD,0x00,0x02,0x8D,0x8C,0x02,0xBD,0x01,0x02,0x8D,0x8D,0x02,0x68,
|
||||
0xAA,0x6C,0x8C,0x02,0xA9,0x00,0x85,0x11,0x8D,0xFF,0x02,0x8D,0xF0,0x02,0x85,0x4D,
|
||||
0x68,0x40,0x68,0xAA,0x2C,0x02,0xD3,0x10,0x06,0xAD,0x00,0xD3,0x6C,0x02,0x02,0x2C,
|
||||
0x03,0xD3,0x10,0x06,0xAD,0x01,0xD3,0x6C,0x04,0x02,0x68,0x8D,0x8C,0x02,0x68,0x48,
|
||||
0x29,0x10,0xF0,0x07,0xAD,0x8C,0x02,0x48,0x6C,0x06,0x02,0xAD,0x8C,0x02,0x48,0x68,
|
||||
0x40,0x2C,0x0F,0xD4,0x10,0x03,0x6C,0x00,0x02,0x48,0xAD,0x0F,0xD4,0x29,0x20,0xF0,
|
||||
0x03,0x4C,0x74,0xE4,0x8A,0x48,0x98,0x48,0x8D,0x0F,0xD4,0x6C,0x22,0x02,0xE6,0x14,
|
||||
0xD0,0x08,0xE6,0x4D,0xE6,0x13,0xD0,0x02,0xE6,0x12,0xA9,0xFE,0xA2,0x00,0xA4,0x4D,
|
||||
0x10,0x06,0x85,0x4D,0xA6,0x13,0xA9,0xF6,0x85,0x4E,0x86,0x4F,0xA2,0x00,0x20,0xD0,
|
||||
0xE8,0xD0,0x03,0x20,0xCA,0xE8,0xA5,0x42,0xD0,0x08,0xBA,0xBD,0x04,0x01,0x29,0x04,
|
||||
0xF0,0x03,0x4C,0x05,0xE9,0xAD,0x0D,0xD4,0x8D,0x35,0x02,0xAD,0x0C,0xD4,0x8D,0x34,
|
||||
0x02,0xAD,0x31,0x02,0x8D,0x03,0xD4,0xAD,0x30,0x02,0x8D,0x02,0xD4,0xAD,0x2F,0x02,
|
||||
0x8D,0x00,0xD4,0xAD,0x6F,0x02,0x8D,0x1B,0xD0,0xA2,0x08,0x8E,0x1F,0xD0,0x58,0xBD,
|
||||
0xC0,0x02,0x45,0x4F,0x25,0x4E,0x9D,0x12,0xD0,0xCA,0x10,0xF2,0xAD,0xF4,0x02,0x8D,
|
||||
0x09,0xD4,0xAD,0xF3,0x02,0x8D,0x01,0xD4,0xA2,0x02,0x20,0xD0,0xE8,0xD0,0x03,0x20,
|
||||
0xCD,0xE8,0xA2,0x02,0xE8,0xE8,0xBD,0x18,0x02,0x1D,0x19,0x02,0xF0,0x06,0x20,0xD0,
|
||||
0xE8,0x9D,0x26,0x02,0xE0,0x08,0xD0,0xEC,0xAD,0x0F,0xD2,0x29,0x04,0xF0,0x08,0xAD,
|
||||
0xF1,0x02,0xF0,0x03,0xCE,0xF1,0x02,0xAD,0x2B,0x02,0xF0,0x17,0xAD,0x0F,0xD2,0x29,
|
||||
0x04,0xD0,0x60,0xCE,0x2B,0x02,0xD0,0x0B,0xA9,0x06,0x8D,0x2B,0x02,0xAD,0x09,0xD2,
|
||||
0x8D,0xFC,0x02,0xA0,0x01,0xA2,0x03,0xB9,0x00,0xD3,0x4A,0x4A,0x4A,0x4A,0x9D,0x78,
|
||||
0x02,0xCA,0xB9,0x00,0xD3,0x29,0x0F,0x9D,0x78,0x02,0xCA,0x88,0x10,0xE9,0xA2,0x03,
|
||||
0xBD,0x10,0xD0,0x9D,0x84,0x02,0xBD,0x00,0xD2,0x9D,0x70,0x02,0xBD,0x04,0xD2,0x9D,
|
||||
0x74,0x02,0xCA,0x10,0xEB,0x8D,0x0B,0xD2,0xA2,0x06,0xA0,0x03,0xB9,0x78,0x02,0x4A,
|
||||
0x4A,0x4A,0x9D,0x7D,0x02,0xA9,0x00,0x2A,0x9D,0x7C,0x02,0xCA,0xCA,0x88,0x10,0xEC,
|
||||
0x6C,0x24,0x02,0xA9,0x00,0x8D,0x2B,0x02,0xF0,0xA9,0x6C,0x26,0x02,0x6C,0x28,0x02,
|
||||
0xBC,0x18,0x02,0xD0,0x08,0xBC,0x19,0x02,0xF0,0x10,0xDE,0x19,0x02,0xDE,0x18,0x02,
|
||||
0xD0,0x08,0xBC,0x19,0x02,0xD0,0x03,0xA9,0x00,0x60,0xA9,0xFF,0x60,0x0A,0x8D,0x2D,
|
||||
0x02,0x8A,0xA2,0x05,0x8D,0x0A,0xD4,0xCA,0xD0,0xFD,0xAE,0x2D,0x02,0x9D,0x17,0x02,
|
||||
0x98,0x9D,0x16,0x02,0x60,0x68,0xA8,0x68,0xAA,0x68,0x40,0x66,0x66,0x7E,0x66,0x00,
|
||||
0x00,0x7C,0x4C,0xED,0xE8,0x66,0x7C,0x00,0x00,0x3C,0x66,0x60,0x60,0x66,0x3C,0x00,
|
||||
0x00,0x78,0x6C,0x66,0x66,0x6C,0x78,0x00,0x00,0x7E,0x60,0x7C,0x60,0x60,0x7E,0x00,
|
||||
0x00,0x7E,0x60,0x7C,0x60,0x60,0x60,0x00,0x00,0x3E,0x60,0x60,0x6E,0x66,0x3E,0x00,
|
||||
0x00,0x66,0x66,0x7E,0xA9,0x3C,0x8D,0x02,0xD3,0xA9,0x3C,0x8D,0x03,0xD3,0xA9,0x03,
|
||||
0x8D,0x32,0x02,0x85,0x41,0x8D,0x0F,0xD2,0x60,0xBA,0x8E,0x18,0x03,0xA9,0x01,0x85,
|
||||
0x42,0xAD,0x00,0x03,0xC9,0x60,0xD0,0x03,0x4C,0x80,0xEB,0xA9,0x00,0x8D,0x0F,0x03,
|
||||
0xA9,0x01,0x85,0x37,0xA9,0x0D,0x85,0x36,0xA9,0x28,0x8D,0x04,0xD2,0xA9,0x00,0x8D,
|
||||
0x06,0xD2,0x18,0xAD,0x00,0x03,0x6D,0x01,0x03,0x69,0xFF,0x8D,0x3A,0x02,0xAD,0x02,
|
||||
0x03,0x8D,0x3B,0x02,0xAD,0x0A,0x03,0x8D,0x3C,0x02,0xAD,0x0B,0x03,0x8D,0x3D,0x02,
|
||||
0x18,0xA9,0x3A,0x85,0x32,0x69,0x04,0x85,0x34,0xA9,0x02,0x85,0x33,0x85,0x35,0xA9,
|
||||
0x34,0x8D,0x03,0xD3,0x20,0x8A,0xEC,0xAD,0x3F,0x02,0xD0,0x03,0x98,0xD0,0x07,0xC6,
|
||||
0x36,0x10,0xB5,0x4C,0x06,0xEA,0xAD,0x03,0x03,0x10,0x0C,0xA9,0x0D,0x85,0x36,0x20,
|
||||
0x6A,0xEB,0x20,0x8A,0xEC,0xF0,0xE8,0x20,0x75,0xEC,0xA9,0x00,0x8D,0x3F,0x02,0x20,
|
||||
0x9B,0xEC,0xF0,0x12,0x2C,0x03,0x03,0x70,0x07,0xAD,0x3F,0x02,0xD0,0x18,0xF0,0x1D,
|
||||
0x20,0x6A,0xEB,0x20,0xE0,0xEA,0xAD,0x3F,0x02,0xF0,0x05,0xAD,0x19,0x03,0x85,0x30,
|
||||
0xA5,0x30,0xC9,0x01,0xF0,0x07,0xC6,0x37,0x30,0x03,0x4C,0x74,0xE9,0x20,0x5F,0xEC,
|
||||
0xA9,0x00,0x85,0x42,0xA4,0x30,0x8C,0x03,0x03,0x60,0xA9,0x00,0x8D,0x3F,0x02,0x18,
|
||||
0xA9,0x3E,0x85,0x32,0x69,0x01,0x85,0x34,0xA9,0x02,0x85,0x33,0x85,0x35,0xA9,0xFF,
|
||||
0x85,0x3C,0x20,0xE0,0xEA,0xA0,0xFF,0xA5,0x30,0xC9,0x01,0xD0,0x19,0xAD,0x3E,0x02,
|
||||
0xC9,0x41,0xF0,0x21,0xC9,0x43,0xF0,0x1D,0xC9,0x45,0xD0,0x06,0xA9,0x90,0x85,0x30,
|
||||
0xD0,0x04,0xA9,0x8B,0x85,0x30,0xA5,0x30,0xC9,0x8A,0xF0,0x07,0xA9,0xFF,0x8D,0x3F,
|
||||
0x02,0xD0,0x02,0xA0,0x00,0xA5,0x30,0x8D,0x19,0x03,0x60,0xA9,0x01,0x85,0x30,0x20,
|
||||
0xF2,0xEB,0xA0,0x00,0x84,0x31,0x84,0x3B,0x84,0x3A,0xB1,0x32,0x8D,0x0D,0xD2,0x85,
|
||||
0x31,0xA5,0x11,0xD0,0x03,0x4C,0xA0,0xED,0xA5,0x3A,0xF0,0xF5,0x20,0x5F,0xEC,0x60,
|
||||
0x98,0x48,0xE6,0x32,0xD0,0x02,0xE6,0x33,0xA5,0x32,0xC5,0x34,0xA5,0x33,0xE5,0x35,
|
||||
0x90,0x1C,0xA5,0x3B,0xD0,0x0B,0xA5,0x31,0x8D,0x0D,0xD2,0xA9,0xFF,0x85,0x3B,0xD0,
|
||||
0x09,0xA5,0x10,0x09,0x08,0x85,0x10,0x8D,0x0E,0xD2,0x68,0xA8,0x68,0x40,0xA0,0x00,
|
||||
0xB1,0x32,0x8D,0x0D,0xD2,0x18,0x65,0x31,0x69,0x00,0x85,0x31,0x4C,0xBA,0xEA,0xA5,
|
||||
0x3B,0xF0,0x0B,0x85,0x3A,0xA5,0x10,0x29,0xF7,0x85,0x10,0x8D,0x0E,0xD2,0x68,0x40,
|
||||
0xA9,0x00,0xAC,0x0F,0x03,0xD0,0x02,0x85,0x31,0x85,0x38,0x85,0x39,0xA9,0x01,0x85,
|
||||
0x30,0x20,0x1B,0xEC,0xA9,0x3C,0x8D,0x03,0xD3,0xA5,0x11,0xD0,0x03,0x4C,0xA0,0xED,
|
||||
0xAD,0x17,0x03,0xF0,0x05,0xA5,0x39,0xF0,0xF0,0x60,0xA9,0x8A,0x85,0x30,0x60,0x98,
|
||||
0x48,0xAD,0x0F,0xD2,0x8D,0x0A,0xD2,0x30,0x04,0xA0,0x8C,0x84,0x30,0x29,0x20,0xD0,
|
||||
0x04,0xA0,0x8E,0x84,0x30,0xA5,0x38,0xF0,0x13,0xAD,0x0D,0xD2,0xC5,0x31,0xF0,0x04,
|
||||
0xA0,0x8F,0x84,0x30,0xA9,0xFF,0x85,0x39,0x68,0xA8,0x68,0x40,0xAD,0x0D,0xD2,0xA0,
|
||||
0x00,0x91,0x32,0x18,0x65,0x31,0x69,0x00,0x85,0x31,0xE6,0x32,0xD0,0x02,0xE6,0x33,
|
||||
0xA5,0x32,0xC5,0x34,0xA5,0x33,0xE5,0x35,0x90,0xDE,0xA5,0x3C,0xF0,0x06,0xA9,0x00,
|
||||
0x85,0x3C,0xF0,0xD0,0xA9,0xFF,0x85,0x38,0xD0,0xCE,0x18,0xAD,0x04,0x03,0x85,0x32,
|
||||
0x6D,0x08,0x03,0x85,0x34,0xAD,0x05,0x03,0x85,0x33,0x6D,0x09,0x03,0x85,0x35,0x60,
|
||||
0xAD,0x03,0x03,0x10,0x2E,0xA9,0xCC,0x8D,0x04,0xD2,0xA9,0x05,0x8D,0x06,0xD2,0x20,
|
||||
0xF2,0xEB,0xA0,0x0F,0xAD,0x0B,0x03,0x30,0x02,0xA0,0xB4,0xA2,0x00,0x20,0xB9,0xED,
|
||||
0xA9,0x34,0x8D,0x02,0xD3,0xAD,0x17,0x03,0xD0,0xFB,0x20,0x6A,0xEB,0x20,0x6B,0xEA,
|
||||
0x4C,0xDF,0xEB,0xA9,0xFF,0x8D,0x0F,0x03,0xA0,0x0A,0xAD,0x0B,0x03,0x30,0x02,0xA0,
|
||||
0x78,0xA2,0x00,0x20,0xB9,0xED,0xA9,0x34,0x8D,0x02,0xD3,0xAD,0x17,0x03,0xD0,0xFB,
|
||||
0x20,0x6A,0xEB,0x20,0x75,0xEC,0x20,0xB9,0xED,0x20,0x10,0xED,0x20,0xE0,0xEA,0xAD,
|
||||
0x0B,0x03,0x30,0x05,0xA9,0x3C,0x8D,0x02,0xD3,0x4C,0x0D,0xEA,0xA9,0x00,0x8D,0x17,
|
||||
0x03,0x60,0xA9,0x07,0x2D,0x32,0x02,0x09,0x20,0xAC,0x00,0x03,0xC0,0x60,0xD0,0x0C,
|
||||
0x09,0x08,0xA0,0x07,0x8C,0x02,0xD2,0xA0,0x05,0x8C,0x00,0xD2,0x8D,0x32,0x02,0x8D,
|
||||
0x0F,0xD2,0xA9,0xC7,0x25,0x10,0x09,0x10,0x4C,0x31,0xEC,0xA9,0x07,0x2D,0x32,0x02,
|
||||
0x09,0x10,0x8D,0x32,0x02,0x8D,0x0F,0xD2,0x8D,0x0A,0xD2,0xA9,0xC7,0x25,0x10,0x09,
|
||||
0x20,0x85,0x10,0x8D,0x0E,0xD2,0xA9,0x28,0x8D,0x08,0xD2,0xA2,0x06,0xA9,0xA8,0xA4,
|
||||
0x41,0xD0,0x02,0xA9,0xA0,0x9D,0x01,0xD2,0xCA,0xCA,0x10,0xF9,0xA9,0xA0,0x8D,0x05,
|
||||
0xD2,0xAC,0x00,0x03,0xC0,0x60,0xF0,0x06,0x8D,0x01,0xD2,0x8D,0x03,0xD2,0x60,0xEA,
|
||||
0xA9,0xC7,0x25,0x10,0x85,0x10,0x8D,0x0E,0xD2,0xA2,0x06,0xA9,0x00,0x9D,0x01,0xD2,
|
||||
0xCA,0xCA,0x10,0xF9,0x60,0xAD,0x06,0x03,0x6A,0x6A,0xA8,0x29,0x3F,0xAA,0x98,0x6A,
|
||||
0x29,0xC0,0xA8,0x60,0x0F,0xEB,0x90,0xEA,0xCF,0xEA,0xA2,0x01,0xA0,0xFF,0x88,0xD0,
|
||||
0xFD,0xCA,0xD0,0xF8,0x20,0x6B,0xEA,0xA0,0x02,0xA2,0x00,0x20,0xB9,0xED,0x20,0x1A,
|
||||
0xEA,0x98,0x60,0x8D,0x10,0x03,0x8C,0x11,0x03,0x20,0x04,0xED,0x8D,0x10,0x03,0xAD,
|
||||
0x0C,0x03,0x20,0x04,0xED,0x8D,0x0C,0x03,0xAD,0x10,0x03,0x38,0xED,0x0C,0x03,0x8D,
|
||||
0x12,0x03,0xAD,0x11,0x03,0x38,0xED,0x0D,0x03,0xA8,0xA9,0x7D,0x18,0x69,0x83,0x88,
|
||||
0x10,0xFA,0x18,0x6D,0x12,0x03,0xA8,0x4A,0x4A,0x4A,0x0A,0x38,0xE9,0x16,0xAA,0x98,
|
||||
0x29,0x07,0xA8,0xA9,0xF5,0x18,0x69,0x0B,0x88,0x10,0xFA,0xA0,0x00,0x8C,0x0E,0x03,
|
||||
0x38,0xE9,0x07,0x10,0x03,0xCE,0x0E,0x03,0x18,0x7D,0xD0,0xED,0xA8,0xAD,0x0E,0x03,
|
||||
0x7D,0xD1,0xED,0x60,0xC9,0x7C,0x30,0x04,0x38,0xE9,0x7C,0x60,0x18,0x69,0x07,0x60,
|
||||
0xA5,0x11,0xD0,0x03,0x4C,0xA0,0xED,0x78,0xAD,0x17,0x03,0xD0,0x02,0xF0,0x25,0xAD,
|
||||
0x0F,0xD2,0x29,0x10,0xD0,0xEA,0x8D,0x16,0x03,0xAE,0x0B,0xD4,0xA4,0x14,0x8E,0x0C,
|
||||
0x03,0x8C,0x0D,0x03,0xA2,0x01,0x8E,0x15,0x03,0xA0,0x0A,0xA5,0x11,0xF0,0x61,0xAD,
|
||||
0x17,0x03,0xD0,0x04,0x58,0x4C,0x0A,0xEB,0xAD,0x0F,0xD2,0x29,0x10,0xCD,0x16,0x03,
|
||||
0xF0,0xE9,0x8D,0x16,0x03,0x88,0xD0,0xE3,0xCE,0x15,0x03,0x30,0x12,0xAD,0x0B,0xD4,
|
||||
0xA4,0x14,0x20,0xA3,0xEC,0x8C,0xEE,0x02,0x8D,0xEF,0x02,0xA0,0x09,0xD0,0xCC,0xAD,
|
||||
0xEE,0x02,0x8D,0x04,0xD2,0xAD,0xEF,0x02,0x8D,0x06,0xD2,0xA9,0x00,0x8D,0x0F,0xD2,
|
||||
0xAD,0x32,0x02,0x8D,0x0F,0xD2,0xA9,0x55,0x91,0x32,0xC8,0x91,0x32,0xA9,0xAA,0x85,
|
||||
0x31,0x18,0xA5,0x32,0x69,0x02,0x85,0x32,0xA5,0x33,0x69,0x00,0x85,0x33,0x58,0x60,
|
||||
0x20,0x5F,0xEC,0xA9,0x3C,0x8D,0x02,0xD3,0x8D,0x03,0xD3,0xA9,0x80,0x85,0x30,0xAE,
|
||||
0x18,0x03,0x9A,0xC6,0x11,0x58,0x4C,0x0D,0xEA,0xA9,0xEC,0x8D,0x26,0x02,0xA9,0xEB,
|
||||
0x8D,0x27,0x02,0xA9,0x01,0x78,0x20,0x5C,0xE4,0xA9,0x01,0x8D,0x17,0x03,0x58,0x60,
|
||||
0xE8,0x03,0x43,0x04,0x9E,0x04,0xF9,0x04,0x54,0x05,0xAF,0x05,0x0A,0x06,0x65,0x06,
|
||||
0xC0,0x06,0x1A,0x07,0x75,0x07,0xD0,0x07,0x24,0x85,0xA9,0xA0,0x8D,0x46,0x02,0x60,
|
||||
0xA9,0x31,0x8D,0x00,0x03,0xAD,0x46,0x02,0xAE,0x02,0x03,0xE0,0x21,0xF0,0x02,0xA9,
|
||||
0x07,0x8D,0x06,0x03,0xA2,0x40,0xA0,0x80,0xAD,0x02,0x03,0xC9,0x57,0xD0,0x02,0xA2,
|
||||
0x80,0xC9,0x53,0xD0,0x0C,0xA9,0xEA,0x8D,0x04,0x03,0xA9,0x02,0x8D,0x05,0x03,0xA0,
|
||||
0x04,0x8E,0x03,0x03,0x8C,0x08,0x03,0xA9,0x00,0x8D,0x09,0x03,0x20,0x59,0xE4,0x10,
|
||||
0x01,0x60,0xAD,0x02,0x03,0xC9,0x53,0xD0,0x0A,0x20,0x6D,0xEE,0xA0,0x02,0xB1,0x15,
|
||||
0x8D,0x46,0x02,0xAD,0x02,0x03,0xC9,0x21,0xD0,0x1F,0x20,0x6D,0xEE,0xA0,0xFE,0xC8,
|
||||
0xC8,0xB1,0x15,0xC9,0xFF,0xD0,0xF8,0xC8,0xB1,0x15,0xC8,0xC9,0xFF,0xD0,0xF2,0x88,
|
||||
0x88,0x8C,0x08,0x03,0xA9,0x00,0x8D,0x09,0x03,0xAC,0x03,0x03,0x60,0xAD,0x04,0x03,
|
||||
0x85,0x15,0xAD,0x05,0x03,0x85,0x16,0x60,0xA9,0x1E,0x85,0x1C,0x60,0xEA,0x02,0xC0,
|
||||
0x03,0xA9,0x04,0x85,0x1E,0xAE,0x7D,0xEE,0xAC,0x7E,0xEE,0xA9,0x53,0x8D,0x02,0x03,
|
||||
0x8D,0x0A,0x03,0x20,0xE6,0xEE,0x20,0x59,0xE4,0x30,0x03,0x20,0x14,0xEF,0x60,0x20,
|
||||
0x81,0xEE,0xA9,0x00,0x85,0x1D,0x60,0x85,0x1F,0x20,0x1A,0xEF,0xA6,0x1D,0xA5,0x1F,
|
||||
0x9D,0xC0,0x03,0xE8,0xE4,0x1E,0xF0,0x13,0x86,0x1D,0xC9,0x9B,0xF0,0x03,0xA0,0x01,
|
||||
0x60,0xA9,0x20,0x9D,0xC0,0x03,0xE8,0xE4,0x1E,0xD0,0xF8,0xA9,0x00,0x85,0x1D,0xAE,
|
||||
0x7F,0xEE,0xAC,0x80,0xEE,0x20,0xE6,0xEE,0x20,0x59,0xE4,0x60,0x20,0x1A,0xEF,0xA6,
|
||||
0x1D,0xD0,0xDE,0xA0,0x01,0x60,0x8E,0x04,0x03,0x8C,0x05,0x03,0xA9,0x40,0x8D,0x00,
|
||||
0x03,0xA9,0x01,0x8D,0x01,0x03,0xA9,0x80,0xAE,0x02,0x03,0xE0,0x53,0xD0,0x02,0xA9,
|
||||
0x40,0x8D,0x03,0x03,0xA5,0x1E,0x8D,0x08,0x03,0xA9,0x00,0x8D,0x09,0x03,0xA5,0x1C,
|
||||
0x8D,0x06,0x03,0x60,0xAD,0xEC,0x02,0x85,0x1C,0x60,0xA0,0x57,0xA5,0x2B,0xC9,0x4E,
|
||||
0xD0,0x04,0xA2,0x28,0xD0,0x0E,0xC9,0x44,0xD0,0x04,0xA2,0x14,0xD0,0x06,0xC9,0x53,
|
||||
0xD0,0x0B,0xA2,0x1D,0x86,0x1E,0x8C,0x02,0x03,0x8D,0x0A,0x03,0x60,0xA9,0x4E,0xD0,
|
||||
0xDD,0xA9,0xCC,0x8D,0xEE,0x02,0xA9,0x05,0x8D,0xEF,0x02,0x60,0xA5,0x2B,0x85,0x3E,
|
||||
0xA5,0x2A,0x29,0x0C,0xC9,0x04,0xF0,0x05,0xC9,0x08,0xF0,0x39,0x60,0xA9,0x00,0x8D,
|
||||
0x89,0x02,0x85,0x3F,0xA9,0x01,0x20,0x58,0xF0,0x30,0x24,0xA9,0x34,0x8D,0x02,0xD3,
|
||||
0xA0,0x40,0xA2,0x02,0xA9,0x03,0x8D,0x2A,0x02,0x20,0x5C,0xE4,0xAD,0x2A,0x02,0xD0,
|
||||
0xFB,0xA9,0x80,0x85,0x3D,0x8D,0x8A,0x02,0x4C,0xD3,0xEF,0xA0,0x80,0xC6,0x11,0xA9,
|
||||
0x00,0x8D,0x89,0x02,0x60,0xA9,0x80,0x8D,0x89,0x02,0xA9,0x02,0x20,0x58,0xF0,0x30,
|
||||
0xEE,0xA9,0xCC,0x8D,0x04,0xD2,0xA9,0x05,0x8D,0x06,0xD2,0xA9,0x60,0x8D,0x00,0x03,
|
||||
0x20,0x68,0xE4,0xA9,0x34,0x8D,0x02,0xD3,0xA9,0x03,0xA2,0x04,0xA0,0x80,0x20,0x5C,
|
||||
0xE4,0xA9,0xFF,0x8D,0x2A,0x02,0xA5,0x11,0xF0,0xC1,0xAD,0x2A,0x02,0xD0,0xF7,0xA9,
|
||||
0x00,0x85,0x3D,0xA0,0x01,0x60,0xA5,0x3F,0x30,0x33,0xA6,0x3D,0xEC,0x8A,0x02,0xF0,
|
||||
0x08,0xBD,0x00,0x04,0xE6,0x3D,0xA0,0x01,0x60,0xA9,0x52,0x20,0x95,0xF0,0x98,0x30,
|
||||
0xF7,0xA9,0x00,0x85,0x3D,0xA2,0x80,0xAD,0xFF,0x03,0xC9,0xFE,0xF0,0x0D,0xC9,0xFA,
|
||||
0xD0,0x03,0xAE,0x7F,0x04,0x8E,0x8A,0x02,0x4C,0xD6,0xEF,0xC6,0x3F,0xA0,0x88,0x60,
|
||||
0xA6,0x3D,0x9D,0x00,0x04,0xE6,0x3D,0xA0,0x01,0xE0,0x7F,0xF0,0x01,0x60,0xA9,0xFC,
|
||||
0x20,0xD2,0xF0,0xA9,0x00,0x85,0x3D,0x60,0xA0,0x01,0x60,0xAD,0x89,0x02,0x30,0x08,
|
||||
0xA0,0x01,0xA9,0x3C,0x8D,0x02,0xD3,0x60,0xA6,0x3D,0xF0,0x0A,0x8E,0x7F,0x04,0xA9,
|
||||
0xFA,0x20,0xD2,0xF0,0x30,0xEC,0xA2,0x7F,0xA9,0x00,0x9D,0x00,0x04,0xCA,0x10,0xFA,
|
||||
0xA9,0xFE,0x20,0xD2,0xF0,0x4C,0x32,0xF0,0x85,0x40,0xA5,0x14,0x18,0x69,0x1E,0xAA,
|
||||
0xA9,0xFF,0x8D,0x1F,0xD0,0xA9,0x00,0xA0,0xF0,0x88,0xD0,0xFD,0x8D,0x1F,0xD0,0xA0,
|
||||
0xF0,0x88,0xD0,0xFD,0xE4,0x14,0xD0,0xE8,0xC6,0x40,0xF0,0x0B,0x8A,0x18,0x69,0x0A,
|
||||
0xAA,0xE4,0x14,0xD0,0xFC,0xF0,0xD3,0x20,0x8C,0xF0,0x98,0x60,0xAD,0x25,0xE4,0x48,
|
||||
0xAD,0x24,0xE4,0x48,0x60,0x8D,0x02,0x03,0xA9,0x00,0x8D,0x09,0x03,0xA9,0x83,0x8D,
|
||||
0x08,0x03,0xA9,0x03,0x8D,0x05,0x03,0xA9,0xFD,0x8D,0x04,0x03,0xA9,0x60,0x8D,0x00,
|
||||
0x03,0xA9,0x00,0x8D,0x01,0x03,0xA9,0x23,0x8D,0x06,0x03,0xAD,0x02,0x03,0xA0,0x40,
|
||||
0xC9,0x52,0xF0,0x02,0xA0,0x80,0x8C,0x03,0x03,0xA5,0x3E,0x8D,0x0B,0x03,0x20,0x59,
|
||||
0xE4,0x60,0x8D,0xFF,0x03,0xA9,0x55,0x8D,0xFD,0x03,0x8D,0xFE,0x03,0xA9,0x57,0x20,
|
||||
0x95,0xF0,0x60,0x50,0x30,0xE4,0x43,0x40,0xE4,0x45,0x00,0xE4,0x53,0x10,0xE4,0x4B,
|
||||
0x20,0xE4,0x7D,0x41,0x54,0x41,0x52,0x49,0x20,0x43,0x4F,0x4D,0x50,0x55,0x54,0x45,
|
||||
0x52,0x20,0x2D,0x20,0x4D,0x45,0x4D,0x4F,0x20,0x50,0x41,0x44,0x9B,0x42,0x4F,0x4F,
|
||||
0x54,0x20,0x45,0x52,0x52,0x4F,0x52,0x9B,0x45,0x3A,0x9B,0x78,0xAD,0x44,0x02,0xD0,
|
||||
0x04,0xA9,0xFF,0xD0,0x03,0x78,0xA9,0x00,0x85,0x08,0xD8,0xA2,0xFF,0x9A,0x20,0x44,
|
||||
0xF2,0x20,0x77,0xF2,0xA5,0x08,0xD0,0x28,0xA9,0x00,0xA0,0x08,0x85,0x04,0x85,0x05,
|
||||
0x91,0x04,0xC8,0xC0,0x00,0xD0,0xF9,0xE6,0x05,0xA6,0x05,0xE4,0x06,0xD0,0xF1,0xAD,
|
||||
0x72,0xE4,0x85,0x0A,0xAD,0x73,0xE4,0x85,0x0B,0xA9,0xFF,0x8D,0x44,0x02,0xD0,0x13,
|
||||
0xA2,0x00,0x8A,0x9D,0x00,0x02,0x9D,0x00,0x03,0xCA,0xD0,0xF7,0xA2,0x10,0x95,0x00,
|
||||
0xE8,0x10,0xFB,0xA9,0x02,0x85,0x52,0xA9,0x27,0x85,0x53,0xA2,0x25,0xBD,0x80,0xE4,
|
||||
0x9D,0x00,0x02,0xCA,0x10,0xF7,0x20,0x8A,0xF2,0x58,0xA2,0x0E,0xBD,0xE3,0xF0,0x9D,
|
||||
0x1A,0x03,0xCA,0x10,0xF7,0xA2,0x00,0x86,0x07,0x86,0x06,0xAE,0xE4,0x02,0xE0,0x90,
|
||||
0xB0,0x0A,0xAD,0xFC,0x9F,0xD0,0x05,0xE6,0x07,0x20,0x3C,0xF2,0xAE,0xE4,0x02,0xE0,
|
||||
0xB0,0xB0,0x0A,0xAE,0xFC,0xBF,0xD0,0x05,0xE6,0x06,0x20,0x39,0xF2,0xA9,0x03,0xA2,
|
||||
0x00,0x9D,0x42,0x03,0xA9,0x18,0x9D,0x44,0x03,0xA9,0xF1,0x9D,0x45,0x03,0xA9,0x0C,
|
||||
0x9D,0x4A,0x03,0x20,0x56,0xE4,0x10,0x03,0x4C,0x25,0xF1,0xE8,0xD0,0xFD,0xC8,0x10,
|
||||
0xFA,0x20,0xB2,0xF3,0xA5,0x06,0x05,0x07,0xF0,0x12,0xA5,0x06,0xF0,0x03,0xAD,0xFD,
|
||||
0xBF,0xA6,0x07,0xF0,0x03,0x0D,0xFD,0x9F,0x29,0x01,0xF0,0x03,0x20,0xCF,0xF2,0xA9,
|
||||
0x00,0x8D,0x44,0x02,0xA5,0x06,0xF0,0x0A,0xAD,0xFD,0xBF,0x29,0x04,0xF0,0x03,0x6C,
|
||||
0xFA,0xBF,0xA5,0x07,0xF0,0x0A,0xAD,0xFD,0x9F,0x29,0x04,0xF0,0xDF,0x6C,0xFA,0x9F,
|
||||
0x6C,0x0A,0x00,0xA2,0xF2,0xA0,0xF0,0x20,0x85,0xF3,0x20,0x30,0xF2,0x4C,0x2A,0xF2,
|
||||
0xAD,0x05,0xE4,0x48,0xAD,0x04,0xE4,0x48,0x60,0x6C,0xFE,0xBF,0x6C,0xFE,0x9F,0xC9,
|
||||
0xD0,0xD0,0x1C,0x60,0xEE,0xFC,0xBF,0xAD,0xFC,0xBF,0xD0,0x08,0xAD,0xFD,0xBF,0x10,
|
||||
0x03,0x6C,0xFE,0xBF,0xCE,0xFC,0xBF,0xA0,0x00,0x84,0x05,0xA9,0x10,0x85,0x06,0xB1,
|
||||
0x05,0x49,0xFF,0x91,0x05,0xD1,0x05,0xD0,0xDA,0x49,0xFF,0x91,0x05,0xA5,0x06,0x18,
|
||||
0x69,0x10,0x85,0x06,0x4C,0x3F,0xF2,0xA9,0x00,0xAA,0x9D,0x00,0xD0,0x9D,0x00,0xD4,
|
||||
0x9D,0x00,0xD2,0xEA,0xEA,0xEA,0xE8,0xD0,0xF1,0x60,0xC6,0x11,0xA9,0x54,0x8D,0x36,
|
||||
0x02,0xA9,0xE7,0x8D,0x37,0x02,0xA5,0x06,0x8D,0xE4,0x02,0x8D,0xE6,0x02,0xA9,0x00,
|
||||
0x8D,0xE5,0x02,0xA9,0x00,0x8D,0xE7,0x02,0xA9,0x07,0x8D,0xE8,0x02,0x20,0x0C,0xE4,
|
||||
0x20,0x1C,0xE4,0x20,0x2C,0xE4,0x20,0x3C,0xE4,0x20,0x4C,0xE4,0x20,0x6E,0xE4,0x20,
|
||||
0x65,0xE4,0x20,0x6B,0xE4,0xAD,0x1F,0xD0,0x29,0x01,0xD0,0x02,0xE6,0x4A,0x60,0xA5,
|
||||
0x08,0xF0,0x0A,0xA5,0x09,0x29,0x01,0xF0,0x03,0x20,0x7E,0xF3,0x60,0xA9,0x01,0x8D,
|
||||
0x01,0x03,0xA9,0x53,0x8D,0x02,0x03,0x20,0x53,0xE4,0x10,0x01,0x60,0xA9,0x00,0x8D,
|
||||
0x0B,0x03,0xA9,0x01,0x8D,0x0A,0x03,0xA9,0x00,0x8D,0x04,0x03,0xA9,0x04,0x8D,0x05,
|
||||
0x03,0x20,0x9D,0xF3,0x10,0x08,0x20,0x81,0xF3,0xA5,0x4B,0xF0,0xE0,0x60,0xA2,0x03,
|
||||
0xBD,0x00,0x04,0x9D,0x40,0x02,0xCA,0x10,0xF7,0xAD,0x42,0x02,0x85,0x04,0xAD,0x43,
|
||||
0x02,0x85,0x05,0xAD,0x04,0x04,0x85,0x0C,0xAD,0x05,0x04,0x85,0x0D,0xA0,0x7F,0xB9,
|
||||
0x00,0x04,0x91,0x04,0x88,0x10,0xF8,0x18,0xA5,0x04,0x69,0x80,0x85,0x04,0xA5,0x05,
|
||||
0x69,0x00,0x85,0x05,0xCE,0x41,0x02,0xF0,0x11,0xEE,0x0A,0x03,0x20,0x9D,0xF3,0x10,
|
||||
0xDC,0x20,0x81,0xF3,0xA5,0x4B,0xD0,0xAE,0xF0,0xF2,0xA5,0x4B,0xF0,0x03,0x20,0x9D,
|
||||
0xF3,0x20,0x6C,0xF3,0xB0,0xA0,0x20,0x7E,0xF3,0xE6,0x09,0x60,0x18,0xAD,0x42,0x02,
|
||||
0x69,0x06,0x85,0x04,0xAD,0x43,0x02,0x69,0x00,0x85,0x05,0x6C,0x04,0x00,0x6C,0x0C,
|
||||
0x00,0xA2,0x0D,0xA0,0xF1,0x8A,0xA2,0x00,0x9D,0x44,0x03,0x98,0x9D,0x45,0x03,0xA9,
|
||||
0x09,0x9D,0x42,0x03,0xA9,0xFF,0x9D,0x48,0x03,0x20,0x56,0xE4,0x60,0xA5,0x4B,0xF0,
|
||||
0x03,0x4C,0x7A,0xE4,0xA9,0x52,0x8D,0x02,0x03,0xA9,0x01,0x8D,0x01,0x03,0x20,0x53,
|
||||
0xE4,0x60,0xA5,0x08,0xF0,0x0A,0xA5,0x09,0x29,0x02,0xF0,0x03,0x20,0xE1,0xF3,0x60,
|
||||
0xA5,0x4A,0xF0,0x1C,0xA9,0x80,0x85,0x3E,0xE6,0x4B,0x20,0x7D,0xE4,0x20,0x01,0xF3,
|
||||
0xA9,0x00,0x85,0x4B,0x85,0x4A,0x06,0x09,0xA5,0x0C,0x85,0x02,0xA5,0x0D,0x85,0x03,
|
||||
0x60,0x6C,0x02,0x00,0xA9,0xFF,0x8D,0xFC,0x02,0xAD,0xE6,0x02,0x29,0xF0,0x85,0x6A,
|
||||
0xA9,0x40,0x8D,0xBE,0x02,0x60,0xA5,0x2B,0x29,0x0F,0xD0,0x08,0xA5,0x2A,0x29,0x0F,
|
||||
0x85,0x2A,0xA9,0x00,0x85,0x57,0xA9,0xE0,0x8D,0xF4,0x02,0xA9,0x02,0x8D,0xF3,0x02,
|
||||
0x8D,0x2F,0x02,0xA9,0x01,0x85,0x4C,0xA9,0xC0,0x05,0x10,0x85,0x10,0x8D,0x0E,0xD2,
|
||||
0xA9,0x00,0x8D,0x93,0x02,0x85,0x64,0x85,0x7B,0x8D,0xF0,0x02,0xA0,0x0E,0xA9,0x01,
|
||||
0x99,0xA3,0x02,0x88,0x10,0xFA,0xA2,0x04,0xBD,0xC1,0xFE,0x9D,0xC4,0x02,0xCA,0x10,
|
||||
0xF7,0xA4,0x6A,0x88,0x8C,0x95,0x02,0xA9,0x60,0x8D,0x94,0x02,0xA6,0x57,0xBD,0x69,
|
||||
0xFE,0xD0,0x04,0xA9,0x91,0x85,0x4C,0x85,0x51,0xA5,0x6A,0x85,0x65,0xBC,0x45,0xFE,
|
||||
0xA9,0x28,0x20,0x21,0xF9,0x88,0xD0,0xF8,0xAD,0x6F,0x02,0x29,0x3F,0x85,0x67,0xA8,
|
||||
0xE0,0x08,0x90,0x17,0x8A,0x6A,0x6A,0x6A,0x29,0xC0,0x05,0x67,0xA8,0xA9,0x10,0x20,
|
||||
0x21,0xF9,0xE0,0x0B,0xD0,0x05,0xA9,0x06,0x8D,0xC8,0x02,0x8C,0x6F,0x02,0xA5,0x64,
|
||||
0x85,0x58,0xA5,0x65,0x85,0x59,0xAD,0x0B,0xD4,0xC9,0x7A,0xD0,0xF9,0x20,0x1F,0xF9,
|
||||
0xBD,0x75,0xFE,0xF0,0x06,0xA9,0xFF,0x85,0x64,0xC6,0x65,0xA5,0x64,0x85,0x68,0xA5,
|
||||
0x65,0x85,0x69,0x20,0x13,0xF9,0xA9,0x41,0x20,0x17,0xF9,0x86,0x66,0xA9,0x18,0x8D,
|
||||
0xBF,0x02,0xA5,0x57,0xC9,0x09,0xB0,0x2D,0xA5,0x2A,0x29,0x10,0xF0,0x27,0xA9,0x04,
|
||||
0x8D,0xBF,0x02,0xA2,0x02,0xA9,0x02,0x20,0x17,0xF9,0xCA,0x10,0xF8,0xA4,0x6A,0x88,
|
||||
0x98,0x20,0x17,0xF9,0xA9,0x60,0x20,0x17,0xF9,0xA9,0x42,0x20,0x17,0xF9,0x18,0xA9,
|
||||
0x0C,0x65,0x66,0x85,0x66,0xA4,0x66,0xBE,0x51,0xFE,0xA5,0x51,0x20,0x17,0xF9,0xCA,
|
||||
0xD0,0xF8,0xA5,0x57,0xC9,0x08,0x90,0x1C,0xA2,0x5D,0xA5,0x6A,0x38,0xE9,0x10,0x20,
|
||||
0x17,0xF9,0xA9,0x00,0x20,0x17,0xF9,0xA9,0x4F,0x20,0x17,0xF9,0xA5,0x51,0x20,0x17,
|
||||
0xF9,0xCA,0xD0,0xF8,0xA5,0x59,0x20,0x17,0xF9,0xA5,0x58,0x20,0x17,0xF9,0xA5,0x51,
|
||||
0x09,0x40,0x20,0x17,0xF9,0xA9,0x70,0x20,0x17,0xF9,0xA9,0x70,0x20,0x17,0xF9,0xA5,
|
||||
0x64,0x8D,0x30,0x02,0xA5,0x65,0x8D,0x31,0x02,0xA9,0x70,0x20,0x17,0xF9,0xA5,0x64,
|
||||
0x8D,0xE5,0x02,0xA5,0x65,0x8D,0xE6,0x02,0xA5,0x68,0x85,0x64,0xA5,0x69,0x85,0x65,
|
||||
0xAD,0x31,0x02,0x20,0x17,0xF9,0xAD,0x30,0x02,0x20,0x17,0xF9,0xA5,0x4C,0x10,0x07,
|
||||
0x48,0x20,0xFC,0xF3,0x68,0xA8,0x60,0xA5,0x2A,0x29,0x20,0xD0,0x0B,0x20,0xB9,0xF7,
|
||||
0x8D,0x90,0x02,0xA5,0x52,0x8D,0x91,0x02,0xA9,0x22,0x0D,0x2F,0x02,0x8D,0x2F,0x02,
|
||||
0x4C,0x21,0xF6,0x20,0x96,0xFA,0x20,0xA2,0xF5,0x20,0x32,0xFB,0x20,0xD4,0xF9,0x4C,
|
||||
0x34,0xF6,0x20,0x47,0xF9,0xB1,0x64,0x2D,0xA0,0x02,0x46,0x6F,0xB0,0x03,0x4A,0x10,
|
||||
0xF9,0x8D,0xFA,0x02,0xC9,0x00,0x60,0x8D,0xFB,0x02,0x20,0x96,0xFA,0xAD,0xFB,0x02,
|
||||
0xC9,0x7D,0xD0,0x06,0x20,0xB9,0xF7,0x4C,0x21,0xF6,0xAD,0xFB,0x02,0xC9,0x9B,0xD0,
|
||||
0x06,0x20,0x30,0xFA,0x4C,0x21,0xF6,0x20,0xE0,0xF5,0x20,0xD8,0xF9,0x4C,0x21,0xF6,
|
||||
0xAD,0xFF,0x02,0xD0,0xFB,0xA2,0x02,0xB5,0x54,0x95,0x5A,0xCA,0x10,0xF9,0xAD,0xFB,
|
||||
0x02,0xA8,0x2A,0x2A,0x2A,0x2A,0x29,0x03,0xAA,0x98,0x29,0x9F,0x1D,0xF6,0xFE,0x8D,
|
||||
0xFA,0x02,0x20,0x47,0xF9,0xAD,0xFA,0x02,0x46,0x6F,0xB0,0x04,0x0A,0x4C,0x08,0xF6,
|
||||
0x2D,0xA0,0x02,0x85,0x50,0xAD,0xA0,0x02,0x49,0xFF,0x31,0x64,0x05,0x50,0x91,0x64,
|
||||
0x60,0x20,0xA2,0xF5,0x85,0x5D,0xA6,0x57,0xD0,0x0A,0xAE,0xF0,0x02,0xD0,0x05,0x49,
|
||||
0x80,0x20,0xFF,0xF5,0xA4,0x4C,0xA9,0x01,0x85,0x4C,0xAD,0xFB,0x02,0x60,0x20,0xB3,
|
||||
0xFC,0x20,0x88,0xFA,0xA5,0x6B,0xD0,0x34,0xA5,0x54,0x85,0x6C,0xA5,0x55,0x85,0x6D,
|
||||
0x20,0xE2,0xF6,0x84,0x4C,0xAD,0xFB,0x02,0xC9,0x9B,0xF0,0x12,0x20,0xAD,0xF6,0x20,
|
||||
0xB3,0xFC,0xA5,0x63,0xC9,0x71,0xD0,0x03,0x20,0x0A,0xF9,0x4C,0x50,0xF6,0x20,0xE4,
|
||||
0xFA,0x20,0x00,0xFC,0xA5,0x6C,0x85,0x54,0xA5,0x6D,0x85,0x55,0xA5,0x6B,0xF0,0x11,
|
||||
0xC6,0x6B,0xF0,0x0D,0xA5,0x4C,0x30,0xF8,0x20,0x93,0xF5,0x8D,0xFB,0x02,0x4C,0xB3,
|
||||
0xFC,0x20,0x30,0xFA,0xA9,0x9B,0x8D,0xFB,0x02,0x20,0x21,0xF6,0x84,0x4C,0x4C,0xB3,
|
||||
0xFC,0x6C,0x64,0x00,0x8D,0xFB,0x02,0x20,0xB3,0xFC,0x20,0x88,0xFA,0x20,0xE4,0xFA,
|
||||
0x20,0x8D,0xFC,0xF0,0x09,0x0E,0xA2,0x02,0x20,0xCA,0xF5,0x4C,0xB3,0xFC,0xAD,0xFE,
|
||||
0x02,0x0D,0xA2,0x02,0xD0,0xEF,0x0E,0xA2,0x02,0xE8,0xBD,0xC6,0xFE,0x85,0x64,0xBD,
|
||||
0xC7,0xFE,0x85,0x65,0x20,0xA1,0xF6,0x20,0x21,0xF6,0x4C,0xB3,0xFC,0xA9,0xFF,0x8D,
|
||||
0xFC,0x02,0xA5,0x2A,0x4A,0xB0,0x62,0xA9,0x80,0xA6,0x11,0xF0,0x58,0xAD,0xFC,0x02,
|
||||
0xC9,0xFF,0xF0,0xEE,0x85,0x7C,0xA2,0xFF,0x8E,0xFC,0x02,0x20,0xD8,0xFC,0xAA,0xE0,
|
||||
0xC0,0x90,0x02,0xA2,0x03,0xBD,0xFE,0xFE,0x8D,0xFB,0x02,0xC9,0x80,0xF0,0xCE,0xC9,
|
||||
0x81,0xD0,0x0B,0xAD,0xB6,0x02,0x49,0x80,0x8D,0xB6,0x02,0x4C,0xDD,0xF6,0xC9,0x82,
|
||||
0xD0,0x07,0xA9,0x00,0x8D,0xBE,0x02,0xF0,0xB4,0xC9,0x83,0xD0,0x07,0xA9,0x40,0x8D,
|
||||
0xBE,0x02,0xD0,0xA9,0xC9,0x84,0xD0,0x07,0xA9,0x80,0x8D,0xBE,0x02,0xD0,0x9E,0xC9,
|
||||
0x85,0xD0,0x0A,0xA9,0x88,0x85,0x4C,0x85,0x11,0xA9,0x9B,0xD0,0x26,0xA5,0x7C,0xC9,
|
||||
0x40,0xB0,0x15,0xAD,0xFB,0x02,0xC9,0x61,0x90,0x0E,0xC9,0x7B,0xB0,0x0A,0xAD,0xBE,
|
||||
0x02,0xF0,0x05,0x05,0x7C,0x4C,0xFE,0xF6,0x20,0x8D,0xFC,0xF0,0x09,0xAD,0xFB,0x02,
|
||||
0x4D,0xB6,0x02,0x8D,0xFB,0x02,0x4C,0x34,0xF6,0xA9,0x80,0x8D,0xA2,0x02,0x60,0xC6,
|
||||
0x54,0x10,0x06,0xAE,0xBF,0x02,0xCA,0x86,0x54,0x4C,0x5C,0xFC,0xE6,0x54,0xA5,0x54,
|
||||
0xCD,0xBF,0x02,0x90,0xF4,0xA2,0x00,0xF0,0xEE,0xC6,0x55,0xA5,0x55,0x30,0x04,0xC5,
|
||||
0x52,0xB0,0x04,0xA5,0x53,0x85,0x55,0x4C,0xDD,0xFB,0xE6,0x55,0xA5,0x55,0xC5,0x53,
|
||||
0x90,0xF5,0xF0,0xF3,0xA5,0x52,0x4C,0xA5,0xF7,0x20,0xF3,0xFC,0xA0,0x00,0x98,0x91,
|
||||
0x64,0xC8,0xD0,0xFB,0xE6,0x65,0xA6,0x65,0xE4,0x6A,0x90,0xF3,0xA9,0xFF,0x99,0xB2,
|
||||
0x02,0xC8,0xC0,0x04,0x90,0xF8,0x20,0xE4,0xFC,0x85,0x63,0x85,0x6D,0xA9,0x00,0x85,
|
||||
0x54,0x85,0x56,0x85,0x6C,0x60,0xA5,0x63,0xC5,0x52,0xF0,0x21,0xA5,0x55,0xC5,0x52,
|
||||
0xD0,0x03,0x20,0x73,0xFC,0x20,0x99,0xF7,0xA5,0x55,0xC5,0x53,0xD0,0x07,0xA5,0x54,
|
||||
0xF0,0x03,0x20,0x7F,0xF7,0xA9,0x20,0x8D,0xFB,0x02,0x20,0xE0,0xF5,0x4C,0xDD,0xFB,
|
||||
0x20,0xAA,0xF7,0xA5,0x55,0xC5,0x52,0xD0,0x0A,0x20,0x34,0xFA,0x20,0x20,0xFB,0x90,
|
||||
0x02,0xB0,0x07,0xA5,0x63,0x20,0x25,0xFB,0x90,0xE6,0x4C,0xDD,0xFB,0xA5,0x63,0x4C,
|
||||
0x06,0xFB,0xA5,0x63,0x4C,0x12,0xFB,0x20,0x9D,0xFC,0x20,0xA2,0xF5,0x85,0x7D,0xA9,
|
||||
0x00,0x8D,0xBB,0x02,0x20,0xFF,0xF5,0xA5,0x63,0x48,0x20,0xDC,0xF9,0x68,0xC5,0x63,
|
||||
0xB0,0x0C,0xA5,0x7D,0x48,0x20,0xA2,0xF5,0x85,0x7D,0x68,0x4C,0x44,0xF8,0x20,0xA8,
|
||||
0xFC,0xCE,0xBB,0x02,0x30,0x04,0xC6,0x54,0xD0,0xF7,0x4C,0xDD,0xFB,0x20,0x9D,0xFC,
|
||||
0x20,0x47,0xF9,0xA5,0x64,0x85,0x68,0xA5,0x65,0x85,0x69,0xA5,0x63,0x48,0x20,0xD4,
|
||||
0xF9,0x68,0xC5,0x63,0xB0,0x10,0xA5,0x54,0xCD,0xBF,0x02,0xB0,0x09,0x20,0xA2,0xF5,
|
||||
0xA0,0x00,0x91,0x68,0xF0,0xDA,0xA0,0x00,0x98,0x91,0x68,0x20,0x68,0xFC,0x20,0xA8,
|
||||
0xFC,0x4C,0xDD,0xFB,0x38,0x20,0x7B,0xFB,0xA5,0x52,0x85,0x55,0x20,0x47,0xF9,0xA5,
|
||||
0x64,0x85,0x68,0x18,0x69,0x28,0x85,0x66,0xA5,0x65,0x85,0x69,0x69,0x00,0x85,0x67,
|
||||
0xA6,0x54,0xE0,0x17,0xF0,0x08,0x20,0x4E,0xFB,0xE8,0xE0,0x17,0xD0,0xF8,0x20,0x9B,
|
||||
0xFB,0x4C,0xDD,0xFB,0x20,0xDD,0xFB,0xA4,0x51,0x84,0x54,0xA4,0x54,0x98,0x38,0x20,
|
||||
0x23,0xFB,0x08,0x98,0x18,0x69,0x78,0x28,0x20,0x04,0xFB,0xC8,0xC0,0x18,0xD0,0xED,
|
||||
0xAD,0xB4,0x02,0x09,0x01,0x8D,0xB4,0x02,0xA5,0x52,0x85,0x55,0x20,0x47,0xF9,0x20,
|
||||
0xB7,0xFB,0x20,0x20,0xFB,0x90,0xD4,0x4C,0xDD,0xFB,0x60,0x20,0x20,0xD8,0xFC,0x88,
|
||||
0x10,0xFA,0x60,0xA9,0x02,0xD0,0x0A,0xA4,0x4C,0x30,0x2B,0xA0,0x00,0x91,0x64,0xA9,
|
||||
0x01,0x8D,0x9E,0x02,0xA5,0x4C,0x30,0x1E,0xA5,0x64,0x38,0xED,0x9E,0x02,0x85,0x64,
|
||||
0xB0,0x02,0xC6,0x65,0xA5,0x0F,0xC5,0x65,0x90,0x0C,0xD0,0x06,0xA5,0x0E,0xC5,0x64,
|
||||
0x90,0x04,0xA9,0x93,0x85,0x4C,0x60,0xA5,0x54,0x48,0xA5,0x55,0x48,0xA5,0x56,0x48,
|
||||
0x20,0xF3,0xFC,0xA5,0x54,0x85,0x66,0xA9,0x00,0x85,0x67,0xA5,0x66,0x0A,0x26,0x67,
|
||||
0x85,0x51,0xA4,0x67,0x8C,0x9F,0x02,0x0A,0x26,0x67,0x0A,0x26,0x67,0x18,0x65,0x51,
|
||||
0x85,0x66,0xA5,0x67,0x6D,0x9F,0x02,0x85,0x67,0xA6,0x57,0xBC,0x81,0xFE,0x88,0x30,
|
||||
0x07,0x06,0x66,0x26,0x67,0x4C,0x7E,0xF9,0xBC,0xA5,0xFE,0xA5,0x55,0xA2,0x07,0x88,
|
||||
0x30,0x0A,0xCA,0x46,0x56,0x6A,0x6E,0xA1,0x02,0x4C,0x8F,0xF9,0xC8,0x18,0x65,0x66,
|
||||
0x85,0x66,0x90,0x02,0xE6,0x67,0x38,0x6E,0xA1,0x02,0x18,0xCA,0x10,0xF9,0xAE,0xA1,
|
||||
0x02,0xA5,0x66,0x18,0x65,0x64,0x85,0x64,0x85,0x5E,0xA5,0x67,0x65,0x65,0x85,0x65,
|
||||
0x85,0x5F,0xBD,0xB1,0xFE,0x8D,0xA0,0x02,0x85,0x6F,0x68,0x85,0x56,0x68,0x85,0x55,
|
||||
0x68,0x85,0x54,0x60,0xA9,0x00,0xF0,0x02,0xA9,0x9B,0x85,0x7D,0xE6,0x63,0xE6,0x55,
|
||||
0xD0,0x02,0xE6,0x56,0xA5,0x55,0xA6,0x57,0xDD,0x8D,0xFE,0xF0,0x0B,0xE0,0x00,0xD0,
|
||||
0x06,0xC5,0x53,0xF0,0x02,0xB0,0x01,0x60,0xE0,0x08,0x90,0x04,0xA5,0x56,0xF0,0xF7,
|
||||
0xA5,0x57,0xD0,0x30,0xA5,0x63,0xC9,0x51,0x90,0x0A,0xA5,0x7D,0xF0,0x26,0x20,0x30,
|
||||
0xFA,0x4C,0x77,0xFA,0x20,0x34,0xFA,0xA5,0x54,0x18,0x69,0x78,0x20,0x25,0xFB,0x90,
|
||||
0x08,0xA5,0x7D,0xF0,0x04,0x18,0x20,0xA5,0xF8,0x4C,0xDD,0xFB,0xA9,0x00,0xF0,0x02,
|
||||
0xA9,0x9B,0x85,0x7D,0x20,0xE4,0xFC,0xA9,0x00,0x85,0x56,0xE6,0x54,0xA6,0x57,0xA0,
|
||||
0x18,0x24,0x7B,0x10,0x05,0xA0,0x04,0x98,0xD0,0x03,0xBD,0x99,0xFE,0xC5,0x54,0xD0,
|
||||
0x26,0x8C,0x9D,0x02,0x8A,0xD0,0x20,0xA5,0x7D,0xF0,0x1C,0xC9,0x9B,0x38,0xF0,0x01,
|
||||
0x18,0x20,0xAC,0xFB,0xEE,0xBB,0x02,0xC6,0x6C,0xCE,0x9D,0x02,0xAD,0xB2,0x02,0x38,
|
||||
0x10,0xEF,0xAD,0x9D,0x02,0x85,0x54,0x4C,0xDD,0xFB,0x38,0xB5,0x70,0xE5,0x74,0x95,
|
||||
0x70,0xB5,0x71,0xE5,0x75,0x95,0x71,0x60,0xAD,0xBF,0x02,0xC9,0x04,0xF0,0x07,0xA5,
|
||||
0x57,0xF0,0x03,0x20,0xFC,0xF3,0xA9,0x27,0xC5,0x53,0xB0,0x02,0x85,0x53,0xA6,0x57,
|
||||
0xBD,0x99,0xFE,0xC5,0x54,0x90,0x2A,0xF0,0x28,0xE0,0x08,0xD0,0x0A,0xA5,0x56,0xF0,
|
||||
0x13,0xC9,0x01,0xD0,0x1C,0xF0,0x04,0xA5,0x56,0xD0,0x16,0xBD,0x8D,0xFE,0xC5,0x55,
|
||||
0x90,0x0F,0xF0,0x0D,0xA9,0x01,0x85,0x4C,0xA9,0x80,0xA6,0x11,0x85,0x11,0xF0,0x06,
|
||||
0x60,0x20,0xD6,0xF7,0xA9,0x8D,0x85,0x4C,0x68,0x68,0xA5,0x7B,0x10,0x03,0x20,0xB9,
|
||||
0xFC,0x4C,0x34,0xF6,0xA0,0x00,0xA5,0x5D,0x91,0x5E,0x60,0x48,0x29,0x07,0xAA,0xBD,
|
||||
0xB9,0xFE,0x85,0x6E,0x68,0x4A,0x4A,0x4A,0xAA,0x60,0x2E,0xB4,0x02,0x2E,0xB3,0x02,
|
||||
0x2E,0xB2,0x02,0x60,0x90,0x0C,0x20,0xEB,0xFA,0xBD,0xA3,0x02,0x05,0x6E,0x9D,0xA3,
|
||||
0x02,0x60,0x20,0xEB,0xFA,0xA5,0x6E,0x49,0xFF,0x3D,0xA3,0x02,0x9D,0xA3,0x02,0x60,
|
||||
0xA5,0x54,0x18,0x69,0x78,0x20,0xEB,0xFA,0x18,0xBD,0xA3,0x02,0x25,0x6E,0xF0,0x01,
|
||||
0x38,0x60,0xAD,0xFA,0x02,0xA4,0x57,0xC0,0x03,0xB0,0x0F,0x2A,0x2A,0x2A,0x2A,0x29,
|
||||
0x03,0xAA,0xAD,0xFA,0x02,0x29,0x9F,0x1D,0xFA,0xFE,0x8D,0xFB,0x02,0x60,0xA9,0x02,
|
||||
0x85,0x65,0xA9,0x47,0x85,0x64,0xA0,0x27,0xB1,0x66,0x85,0x50,0xB1,0x68,0x91,0x66,
|
||||
0xA5,0x50,0x91,0x64,0x88,0x10,0xF1,0xA5,0x65,0x85,0x69,0xA5,0x64,0x85,0x68,0x18,
|
||||
0xA5,0x66,0x69,0x28,0x85,0x66,0x90,0x02,0xE6,0x67,0x60,0x08,0xA0,0x17,0x98,0x20,
|
||||
0x22,0xFB,0x08,0x98,0x18,0x69,0x79,0x28,0x20,0x04,0xFB,0x88,0x30,0x04,0xC4,0x54,
|
||||
0xB0,0xEC,0xA5,0x54,0x18,0x69,0x78,0x28,0x4C,0x04,0xFB,0xA5,0x52,0x85,0x55,0x20,
|
||||
0x47,0xF9,0xA0,0x27,0xA9,0x00,0x91,0x64,0x88,0x10,0xFB,0x60,0x20,0xFA,0xFA,0xA5,
|
||||
0x58,0x85,0x64,0xA5,0x59,0x85,0x65,0xA0,0x28,0xB1,0x64,0xA6,0x6A,0xCA,0xE4,0x65,
|
||||
0xD0,0x08,0xA2,0xD7,0xE4,0x64,0xB0,0x02,0xA9,0x00,0xA0,0x00,0x91,0x64,0xE6,0x64,
|
||||
0xD0,0xE5,0xE6,0x65,0xA5,0x65,0xC5,0x6A,0xD0,0xDD,0x4C,0xDD,0xFB,0xA9,0x00,0x85,
|
||||
0x63,0xA5,0x54,0x85,0x51,0xA5,0x51,0x20,0x22,0xFB,0xB0,0x0C,0xA5,0x63,0x18,0x69,
|
||||
0x28,0x85,0x63,0xC6,0x51,0x4C,0xE5,0xFB,0x18,0xA5,0x63,0x65,0x55,0x85,0x63,0x60,
|
||||
0x20,0x9D,0xFC,0xA5,0x63,0x48,0xA5,0x6C,0x85,0x54,0xA5,0x6D,0x85,0x55,0xA9,0x01,
|
||||
0x85,0x6B,0xA2,0x17,0xA5,0x7B,0x10,0x02,0xA2,0x03,0xE4,0x54,0xD0,0x0B,0xA5,0x55,
|
||||
0xC5,0x53,0xD0,0x05,0xE6,0x6B,0x4C,0x39,0xFC,0x20,0xD4,0xF9,0xE6,0x6B,0xA5,0x63,
|
||||
0xC5,0x52,0xD0,0xDE,0xC6,0x54,0x20,0x99,0xF7,0x20,0xA2,0xF5,0xD0,0x17,0xC6,0x6B,
|
||||
0xA5,0x63,0xC5,0x52,0xF0,0x0F,0x20,0x99,0xF7,0xA5,0x55,0xC5,0x53,0xD0,0x02,0xC6,
|
||||
0x54,0xA5,0x6B,0xD0,0xE4,0x68,0x85,0x63,0x20,0xA8,0xFC,0x60,0x20,0xDD,0xFB,0xA5,
|
||||
0x51,0x85,0x6C,0xA5,0x52,0x85,0x6D,0x60,0xA5,0x63,0xC5,0x52,0xD0,0x02,0xC6,0x54,
|
||||
0x20,0xDD,0xFB,0xA5,0x63,0xC5,0x52,0xF0,0x13,0x20,0x47,0xF9,0xA5,0x53,0x38,0xE5,
|
||||
0x52,0xA8,0xB1,0x64,0xD0,0x06,0x88,0x10,0xF9,0x4C,0xDB,0xF8,0x60,0xA2,0x2D,0xBD,
|
||||
0xC6,0xFE,0xCD,0xFB,0x02,0xF0,0x05,0xCA,0xCA,0xCA,0x10,0xF3,0x60,0xA2,0x02,0xB5,
|
||||
0x54,0x9D,0xB8,0x02,0xCA,0x10,0xF8,0x60,0xA2,0x02,0xBD,0xB8,0x02,0x95,0x54,0xCA,
|
||||
0x10,0xF8,0x60,0x20,0xB9,0xFC,0x4C,0x34,0xF6,0xAD,0xBF,0x02,0xC9,0x18,0xF0,0x17,
|
||||
0xA2,0x0B,0xB5,0x54,0x48,0xBD,0x90,0x02,0x95,0x54,0x68,0x9D,0x90,0x02,0xCA,0x10,
|
||||
0xF1,0xA5,0x7B,0x49,0xFF,0x85,0x7B,0x60,0xA2,0x7F,0x8E,0x1F,0xD0,0x8E,0x0A,0xD4,
|
||||
0xCA,0x10,0xF7,0x60,0xA9,0x00,0xA6,0x7B,0xD0,0x04,0xA6,0x57,0xD0,0x02,0xA5,0x52,
|
||||
0x85,0x55,0x60,0xA5,0x58,0x85,0x64,0xA5,0x59,0x85,0x65,0x60,0xA2,0x00,0xA5,0x22,
|
||||
0xC9,0x11,0xF0,0x08,0xC9,0x12,0xF0,0x03,0xA0,0x84,0x60,0xE8,0x8E,0xB7,0x02,0xA5,
|
||||
0x54,0x85,0x60,0xA5,0x55,0x85,0x61,0xA5,0x56,0x85,0x62,0xA9,0x01,0x85,0x79,0x85,
|
||||
0x7A,0x38,0xA5,0x60,0xE5,0x5A,0x85,0x76,0xB0,0x0D,0xA9,0xFF,0x85,0x79,0xA5,0x76,
|
||||
0x49,0xFF,0x18,0x69,0x01,0x85,0x76,0x38,0xA5,0x61,0xE5,0x5B,0x85,0x77,0xA5,0x62,
|
||||
0xE5,0x5C,0x85,0x78,0xB0,0x16,0xA9,0xFF,0x85,0x7A,0xA5,0x77,0x49,0xFF,0x85,0x77,
|
||||
0xA5,0x78,0x49,0xFF,0x85,0x78,0xE6,0x77,0xD0,0x02,0xE6,0x78,0xA2,0x02,0xA0,0x00,
|
||||
0x84,0x73,0x98,0x95,0x70,0xB5,0x5A,0x95,0x54,0xCA,0x10,0xF6,0xA5,0x77,0xE8,0xA8,
|
||||
0xA5,0x78,0x85,0x7F,0x85,0x75,0xD0,0x0B,0xA5,0x77,0xC5,0x76,0xB0,0x05,0xA5,0x76,
|
||||
0xA2,0x02,0xA8,0x98,0x85,0x7E,0x85,0x74,0x48,0xA5,0x75,0x4A,0x68,0x6A,0x95,0x70,
|
||||
0xA5,0x7E,0x05,0x7F,0xD0,0x03,0x4C,0x42,0xFE,0x18,0xA5,0x70,0x65,0x76,0x85,0x70,
|
||||
0x90,0x02,0xE6,0x71,0xA5,0x71,0xC5,0x75,0x90,0x14,0xD0,0x06,0xA5,0x70,0xC5,0x74,
|
||||
0x90,0x0C,0x18,0xA5,0x54,0x65,0x79,0x85,0x54,0xA2,0x00,0x20,0x7A,0xFA,0x18,0xA5,
|
||||
0x72,0x65,0x77,0x85,0x72,0xA5,0x73,0x65,0x78,0x85,0x73,0xC5,0x75,0x90,0x27,0xD0,
|
||||
0x06,0xA5,0x72,0xC5,0x74,0x90,0x1F,0x24,0x7A,0x10,0x10,0xC6,0x55,0xA5,0x55,0xC9,
|
||||
0xFF,0xD0,0x0E,0xA5,0x56,0xF0,0x0A,0xC6,0x56,0x10,0x06,0xE6,0x55,0xD0,0x02,0xE6,
|
||||
0x56,0xA2,0x02,0x20,0x7A,0xFA,0x20,0x96,0xFA,0x20,0xE0,0xF5,0xAD,0xB7,0x02,0xF0,
|
||||
0x2F,0x20,0x9D,0xFC,0xAD,0xFB,0x02,0x8D,0xBC,0x02,0xA5,0x54,0x48,0x20,0xDC,0xF9,
|
||||
0x68,0x85,0x54,0x20,0x96,0xFA,0x20,0xA2,0xF5,0xD0,0x0C,0xAD,0xFD,0x02,0x8D,0xFB,
|
||||
0x02,0x20,0xE0,0xF5,0x4C,0x0A,0xFE,0xAD,0xBC,0x02,0x8D,0xFB,0x02,0x20,0xA8,0xFC,
|
||||
0x38,0xA5,0x7E,0xE9,0x01,0x85,0x7E,0xA5,0x7F,0xE9,0x00,0x85,0x7F,0x30,0x03,0x4C,
|
||||
0x90,0xFD,0x4C,0x34,0xF6,0x18,0x10,0x0A,0x0A,0x10,0x1C,0x34,0x64,0xC4,0xC4,0xC4,
|
||||
0xC4,0x17,0x17,0x0B,0x17,0x2F,0x2F,0x5F,0x5F,0x61,0x61,0x61,0x61,0x13,0x13,0x09,
|
||||
0x13,0x27,0x27,0x4F,0x4F,0x41,0x41,0x41,0x41,0x02,0x06,0x07,0x08,0x09,0x0A,0x0B,
|
||||
0x0D,0x0F,0x0F,0x0F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,
|
||||
0x01,0x02,0x01,0x01,0x00,0x00,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x28,0x14,0x14,
|
||||
0x28,0x50,0x50,0xA0,0xA0,0x40,0x50,0x50,0x50,0x18,0x18,0x0C,0x18,0x30,0x30,0x60,
|
||||
0x60,0xC0,0xC0,0xC0,0xC0,0x00,0x00,0x00,0x02,0x03,0x02,0x03,0x02,0x03,0x01,0x01,
|
||||
0x01,0x00,0xFF,0xF0,0x0F,0xC0,0x30,0x0C,0x03,0x80,0x40,0x20,0x10,0x08,0x04,0x02,
|
||||
0x01,0x28,0xCA,0x94,0x46,0x00,0x1B,0x79,0xF7,0x1C,0x7F,0xF7,0x1D,0x8C,0xF7,0x1E,
|
||||
0x99,0xF7,0x1F,0xAA,0xF7,0x7D,0xB9,0xF7,0x7E,0xE6,0xF7,0x7F,0x10,0xF8,0x9B,0x30,
|
||||
0xFA,0x9C,0xD4,0xF8,0x9D,0xA4,0xF8,0x9E,0x32,0xF8,0x9F,0x2D,0xF8,0xFD,0x0A,0xF9,
|
||||
0xFE,0x6D,0xF8,0xFF,0x37,0xF8,0x40,0x00,0x20,0x60,0x20,0x40,0x00,0x60,0x6C,0x6A,
|
||||
0x3B,0x80,0x80,0x6B,0x2B,0x2A,0x6F,0x80,0x70,0x75,0x9B,0x69,0x2D,0x3D,0x76,0x80,
|
||||
0x63,0x80,0x80,0x62,0x78,0x7A,0x34,0x80,0x33,0x36,0x1B,0x35,0x32,0x31,0x2C,0x20,
|
||||
0x2E,0x6E,0x80,0x6D,0x2F,0x81,0x72,0x80,0x65,0x79,0x7F,0x74,0x77,0x71,0x39,0x80,
|
||||
0x30,0x37,0x7E,0x38,0x3C,0x3E,0x66,0x68,0x64,0x80,0x82,0x67,0x73,0x61,0x4C,0x4A,
|
||||
0x3A,0x80,0x80,0x4B,0x5C,0x5E,0x4F,0x80,0x50,0x55,0x9B,0x49,0x5F,0x7C,0x56,0x80,
|
||||
0x43,0x80,0x80,0x42,0x58,0x5A,0x24,0x80,0x23,0x26,0x1B,0x25,0x22,0x21,0x5B,0x20,
|
||||
0x5D,0x4E,0x80,0x4D,0x3F,0x81,0x52,0x80,0x45,0x59,0x9F,0x54,0x57,0x51,0x28,0x80,
|
||||
0x29,0x27,0x9C,0x40,0x7D,0x9D,0x46,0x48,0x44,0x80,0x83,0x47,0x53,0x41,0x0C,0x0A,
|
||||
0x7B,0x80,0x80,0x0B,0x1E,0x1F,0x0F,0x80,0x10,0x15,0x9B,0x09,0x1C,0x1D,0x16,0x80,
|
||||
0x03,0x80,0x80,0x02,0x18,0x1A,0x80,0x80,0x85,0x80,0x1B,0x80,0xFD,0x80,0x00,0x20,
|
||||
0x60,0x0E,0x80,0x0D,0x80,0x81,0x12,0x80,0x05,0x19,0x9E,0x14,0x17,0x11,0x80,0x80,
|
||||
0x80,0x80,0xFE,0x80,0x7D,0xFF,0x06,0x08,0x04,0x80,0x84,0x07,0x13,0x01,0xAD,0x09,
|
||||
0xD2,0xCD,0xF2,0x02,0xD0,0x05,0xAD,0xF1,0x02,0xD0,0x20,0xAD,0x09,0xD2,0xC9,0x9F,
|
||||
0xD0,0x0A,0xAD,0xFF,0x02,0x49,0xFF,0x8D,0xFF,0x02,0xB0,0x0F,0x8D,0xFC,0x02,0x8D,
|
||||
0xF2,0x02,0xA9,0x03,0x8D,0xF1,0x02,0xA9,0x00,0x85,0x4D,0xA9,0x30,0x8D,0x2B,0x02,
|
||||
0x68,0x40,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF3,0xE6,0x91,0xE7,0x25,0xF1,0xF3,0xE6,
|
||||
};
|
Plik diff jest za duży
Load Diff
|
@ -0,0 +1,55 @@
|
|||
/*
|
||||
* sio.c - Serial I/O emulation
|
||||
*
|
||||
* Copyright (C) 1995-1998 David Firth
|
||||
* Copyright (C) 1998-2010 Atari800 development team (see DOC/CREDITS)
|
||||
*
|
||||
* This file is part of the Atari800 emulator project which emulates
|
||||
* the Atari 400, 800, 800XL, 130XE, and 5200 8-bit computers.
|
||||
*
|
||||
* Atari800 is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Atari800 is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with Atari800; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#define _POSIX_C_SOURCE 200112L /* for snprintf */
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <math.h>
|
||||
|
||||
#include "antic.h" /* ANTIC_ypos */
|
||||
#include "atari.h"
|
||||
#include "cpu.h"
|
||||
#include "memory.h"
|
||||
#include "pokey.h"
|
||||
#include "pokeysnd.h"
|
||||
#include "sio.h"
|
||||
|
||||
|
||||
|
||||
|
||||
/* Put a byte that comes out of POKEY. So get it here... */
|
||||
void SIO_PutByte(int byte)
|
||||
{
|
||||
}
|
||||
|
||||
/* Get a byte from the floppy to the pokey. */
|
||||
int SIO_GetByte(void)
|
||||
{
|
||||
int byte = 0;
|
||||
|
||||
return byte;
|
||||
}
|
||||
|
|
@ -0,0 +1,61 @@
|
|||
#ifndef SIO_H_
|
||||
#define SIO_H_
|
||||
|
||||
|
||||
#include <stdio.h> /* FILENAME_MAX */
|
||||
|
||||
#include "atari.h"
|
||||
|
||||
#define SIO_MAX_DRIVES 8
|
||||
|
||||
typedef enum SIO_tagUnitStatus {
|
||||
SIO_OFF,
|
||||
SIO_NO_DISK,
|
||||
SIO_READ_ONLY,
|
||||
SIO_READ_WRITE
|
||||
} SIO_UnitStatus;
|
||||
|
||||
extern char SIO_status[256];
|
||||
extern SIO_UnitStatus SIO_drive_status[SIO_MAX_DRIVES];
|
||||
extern char SIO_filename[SIO_MAX_DRIVES][FILENAME_MAX];
|
||||
|
||||
#define SIO_LAST_READ 0
|
||||
#define SIO_LAST_WRITE 1
|
||||
extern int SIO_last_op;
|
||||
extern int SIO_last_op_time;
|
||||
extern int SIO_last_drive; /* 1 .. 8 */
|
||||
extern int SIO_last_sector;
|
||||
|
||||
int SIO_Mount(int diskno, const char *filename, int b_open_readonly);
|
||||
void SIO_Dismount(int diskno);
|
||||
void SIO_DisableDrive(int diskno);
|
||||
int SIO_RotateDisks(void);
|
||||
void SIO_Handler(void);
|
||||
|
||||
UBYTE SIO_ChkSum(const UBYTE *buffer, int length);
|
||||
void SIO_SwitchCommandFrame(int onoff);
|
||||
void SIO_PutByte(int byte);
|
||||
int SIO_GetByte(void);
|
||||
int SIO_Initialise(int *argc, char *argv[]);
|
||||
void SIO_Exit(void);
|
||||
|
||||
/* Some defines about the serial I/O timing. Currently fixed! */
|
||||
#define SIO_XMTDONE_INTERVAL 15
|
||||
#define SIO_SERIN_INTERVAL 8
|
||||
#define SIO_SEROUT_INTERVAL 8
|
||||
#define SIO_ACK_INTERVAL 36
|
||||
|
||||
/* These functions are also used by the 1450XLD Parallel disk device */
|
||||
extern int SIO_format_sectorcount[SIO_MAX_DRIVES];
|
||||
extern int SIO_format_sectorsize[SIO_MAX_DRIVES];
|
||||
int SIO_ReadStatusBlock(int unit, UBYTE *buffer);
|
||||
int SIO_FormatDisk(int unit, UBYTE *buffer, int sectsize, int sectcount);
|
||||
void SIO_SizeOfSector(UBYTE unit, int sector, int *sz, ULONG *ofs);
|
||||
int SIO_ReadSector(int unit, int sector, UBYTE *buffer);
|
||||
int SIO_DriveStatus(int unit, UBYTE *buffer);
|
||||
int SIO_WriteStatusBlock(int unit, const UBYTE *buffer);
|
||||
int SIO_WriteSector(int unit, int sector, const UBYTE *buffer);
|
||||
void SIO_StateSave(void);
|
||||
void SIO_StateRead(void);
|
||||
|
||||
#endif /* SIO_H_ */
|
|
@ -0,0 +1,202 @@
|
|||
extern "C" {
|
||||
#include "iopins.h"
|
||||
#include "emuapi.h"
|
||||
}
|
||||
|
||||
extern "C" {
|
||||
#include "atari800.h"
|
||||
}
|
||||
|
||||
#ifdef HAS_T4_VGA
|
||||
#include "vga_t_dma.h"
|
||||
TFT_T_DMA tft;
|
||||
#else
|
||||
#include "tft_t_dma.h"
|
||||
TFT_T_DMA tft = TFT_T_DMA(TFT_CS, TFT_DC, TFT_RST, TFT_MOSI, TFT_SCLK, TFT_MISO, TFT_TOUCH_CS, TFT_TOUCH_INT);
|
||||
#endif
|
||||
|
||||
bool vgaMode = false;
|
||||
|
||||
static unsigned char palette8[PALETTE_SIZE];
|
||||
static unsigned short palette16[PALETTE_SIZE];
|
||||
static IntervalTimer myTimer;
|
||||
volatile boolean vbl=true;
|
||||
static int skip=0;
|
||||
static elapsedMicros tius;
|
||||
|
||||
static void vblCount() {
|
||||
if (vbl) {
|
||||
vbl = false;
|
||||
} else {
|
||||
vbl = true;
|
||||
}
|
||||
}
|
||||
|
||||
void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index)
|
||||
{
|
||||
if (index<PALETTE_SIZE) {
|
||||
//Serial.println("%d: %d %d %d\n", index, r,g,b);
|
||||
palette8[index] = RGBVAL8(r,g,b);
|
||||
palette16[index] = RGBVAL16(r,g,b);
|
||||
}
|
||||
}
|
||||
|
||||
void emu_DrawVsync(void)
|
||||
{
|
||||
volatile boolean vb=vbl;
|
||||
skip += 1;
|
||||
skip &= VID_FRAME_SKIP;
|
||||
if (!vgaMode) {
|
||||
#ifdef HAS_T4_VGA
|
||||
// tft.waitSync();
|
||||
#else
|
||||
// while (vbl==vb) {};
|
||||
#endif
|
||||
while (vbl==vb) {};
|
||||
}
|
||||
}
|
||||
|
||||
void emu_DrawLine(unsigned char * VBuf, int width, int height, int line)
|
||||
{
|
||||
if (!vgaMode) {
|
||||
#ifdef HAS_T4_VGA
|
||||
tft.writeLine(width,1,line, VBuf, palette8);
|
||||
#else
|
||||
tft.writeLine(width,1,line, VBuf, palette16);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
void emu_DrawLine8(unsigned char * VBuf, int width, int height, int line)
|
||||
{
|
||||
if (!vgaMode) {
|
||||
if (skip==0) {
|
||||
#ifdef HAS_T4_VGA
|
||||
tft.writeLine(width,height,line, VBuf);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void emu_DrawLine16(unsigned short * VBuf, int width, int height, int line)
|
||||
{
|
||||
if (!vgaMode) {
|
||||
if (skip==0) {
|
||||
#ifdef HAS_T4_VGA
|
||||
tft.writeLine16(width,height,line, VBuf);
|
||||
#else
|
||||
tft.writeLine(width,height,line, VBuf);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void emu_DrawScreen(unsigned char * VBuf, int width, int height, int stride)
|
||||
{
|
||||
if (!vgaMode) {
|
||||
if (skip==0) {
|
||||
#ifdef HAS_T4_VGA
|
||||
tft.writeScreen(width,height-TFT_VBUFFER_YCROP,stride, VBuf+(TFT_VBUFFER_YCROP/2)*stride, palette8);
|
||||
#else
|
||||
tft.writeScreen(width,height-TFT_VBUFFER_YCROP,stride, VBuf+(TFT_VBUFFER_YCROP/2)*stride, palette16);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int emu_FrameSkip(void)
|
||||
{
|
||||
return skip;
|
||||
}
|
||||
|
||||
void * emu_LineBuffer(int line)
|
||||
{
|
||||
if (!vgaMode) {
|
||||
return (void*)tft.getLineBuffer(line);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ****************************************************
|
||||
// the setup() method runs once, when the sketch starts
|
||||
// ****************************************************
|
||||
void setup() {
|
||||
|
||||
#ifdef HAS_T4_VGA
|
||||
tft.begin(VGA_MODE_320x240);
|
||||
// NVIC_SET_PRIORITY(IRQ_QTIMER3, 0);
|
||||
#else
|
||||
tft.begin();
|
||||
#endif
|
||||
|
||||
emu_init();
|
||||
}
|
||||
|
||||
|
||||
// ****************************************************
|
||||
// the loop() method runs continuously
|
||||
// ****************************************************
|
||||
void loop(void)
|
||||
{
|
||||
if (menuActive()) {
|
||||
uint16_t bClick = emu_DebounceLocalKeys();
|
||||
int action = handleMenu(bClick);
|
||||
char * filename = menuSelection();
|
||||
if (action == ACTION_RUN1) {
|
||||
toggleMenu(false);
|
||||
vgaMode = false;
|
||||
emu_start();
|
||||
emu_Init(filename);
|
||||
tft.fillScreenNoDma( RGBVAL16(0x00,0x00,0x00) );
|
||||
tft.startDMA();
|
||||
myTimer.begin(vblCount, 10000/*16666*/); //to run every 16.666ms
|
||||
}
|
||||
delay(20);
|
||||
}
|
||||
else {
|
||||
emu_Step();
|
||||
uint16_t bClick = emu_DebounceLocalKeys();
|
||||
emu_Input(bClick);
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef HAS_SND
|
||||
|
||||
#include "AudioPlaySystem.h"
|
||||
|
||||
AudioPlaySystem mymixer;
|
||||
|
||||
|
||||
void emu_sndInit() {
|
||||
Serial.println("sound init");
|
||||
#ifdef HAS_T4_VGA
|
||||
tft.begin_audio(256, mymixer.snd_Mixer);
|
||||
#else
|
||||
mymixer.begin_audio(256, mymixer.snd_Mixer);
|
||||
#endif
|
||||
// sgtl5000_1.enable();
|
||||
// sgtl5000_1.volume(0.6);
|
||||
mymixer.start();
|
||||
}
|
||||
|
||||
void emu_sndPlaySound(int chan, int volume, int freq)
|
||||
{
|
||||
if (chan < 6) {
|
||||
mymixer.sound(chan, freq, volume);
|
||||
}
|
||||
/*
|
||||
Serial.print(chan);
|
||||
Serial.print(":" );
|
||||
Serial.print(volume);
|
||||
Serial.print(":" );
|
||||
Serial.println(freq);
|
||||
*/
|
||||
}
|
||||
|
||||
void emu_sndPlayBuzz(int size, int val) {
|
||||
//mymixer.buzz(size,val);
|
||||
//Serial.print((val==1)?1:0);
|
||||
//Serial.print(":");
|
||||
//Serial.println(size);
|
||||
}
|
||||
#endif
|
Plik diff jest za duży
Load Diff
|
@ -0,0 +1,232 @@
|
|||
/*
|
||||
Based on C64 ILI9341 dma driver from Frank Bösing, 2017
|
||||
*/
|
||||
|
||||
#ifndef _TFT_T_DMAH_
|
||||
#define _TFT_T_DMAH_
|
||||
|
||||
#ifdef __cplusplus
|
||||
#include <Arduino.h>
|
||||
#include <SPI.h>
|
||||
#include <DMAChannel.h>
|
||||
#endif
|
||||
|
||||
#include "tft_t_dma_config.h"
|
||||
|
||||
#define RGBVAL32(r,g,b) ( (r<<16) | (g<<8) | b )
|
||||
#define RGBVAL16(r,g,b) ( (((r>>3)&0x1f)<<11) | (((g>>2)&0x3f)<<5) | (((b>>3)&0x1f)<<0) )
|
||||
#define RGBVAL8(r,g,b) ( (((r>>5)&0x07)<<5) | (((g>>5)&0x07)<<2) | (((b>>6)&0x3)<<0) )
|
||||
#define R16(rgb) ((rgb>>8)&0xf8)
|
||||
#define G16(rgb) ((rgb>>3)&0xfc)
|
||||
#define B16(rgb) ((rgb<<3)&0xf8)
|
||||
|
||||
#define PAL_COLOR_MASK 0xff
|
||||
|
||||
#ifdef LOHRES
|
||||
#define TFT_WIDTH 240
|
||||
#define TFT_REALWIDTH 240
|
||||
#else
|
||||
#define TFT_WIDTH 320
|
||||
#define TFT_REALWIDTH 320
|
||||
#endif
|
||||
#define TFT_HEIGHT 240
|
||||
#define TFT_REALHEIGHT 240
|
||||
|
||||
//#define WIDTH 272
|
||||
//#define HEIGHT 228
|
||||
|
||||
#define LINES_PER_BLOCK 64
|
||||
#define NR_OF_BLOCK 4
|
||||
#define SCREEN_DMA_NUM_SETTINGS NR_OF_BLOCK
|
||||
|
||||
|
||||
#ifdef ILI9341
|
||||
|
||||
#define ILI9341_NOP 0x00
|
||||
#define ILI9341_SWRESET 0x01
|
||||
#define ILI9341_RDDID 0x04
|
||||
#define ILI9341_RDDST 0x09
|
||||
|
||||
#define ILI9341_SLPIN 0x10
|
||||
#define ILI9341_SLPOUT 0x11
|
||||
#define ILI9341_PTLON 0x12
|
||||
#define ILI9341_NORON 0x13
|
||||
|
||||
#define ILI9341_RDMODE 0x0A
|
||||
#define ILI9341_RDMADCTL 0x0B
|
||||
#define ILI9341_RDPIXFMT 0x0C
|
||||
#define ILI9341_RDIMGFMT 0x0D
|
||||
#define ILI9341_RDSELFDIAG 0x0F
|
||||
|
||||
#define ILI9341_INVOFF 0x20
|
||||
#define ILI9341_INVON 0x21
|
||||
#define ILI9341_GAMMASET 0x26
|
||||
#define ILI9341_DISPOFF 0x28
|
||||
#define ILI9341_DISPON 0x29
|
||||
|
||||
#define ILI9341_CASET 0x2A
|
||||
#define ILI9341_PASET 0x2B
|
||||
#define ILI9341_RAMWR 0x2C
|
||||
#define ILI9341_RAMRD 0x2E
|
||||
|
||||
#define ILI9341_PTLAR 0x30
|
||||
#define ILI9341_MADCTL 0x36
|
||||
#define ILI9341_VSCRSADD 0x37
|
||||
#define ILI9341_PIXFMT 0x3A
|
||||
|
||||
#define ILI9341_FRMCTR1 0xB1
|
||||
#define ILI9341_FRMCTR2 0xB2
|
||||
#define ILI9341_FRMCTR3 0xB3
|
||||
#define ILI9341_INVCTR 0xB4
|
||||
#define ILI9341_DFUNCTR 0xB6
|
||||
|
||||
#define ILI9341_PWCTR1 0xC0
|
||||
#define ILI9341_PWCTR2 0xC1
|
||||
#define ILI9341_PWCTR3 0xC2
|
||||
#define ILI9341_PWCTR4 0xC3
|
||||
#define ILI9341_PWCTR5 0xC4
|
||||
#define ILI9341_VMCTR1 0xC5
|
||||
#define ILI9341_VMCTR2 0xC7
|
||||
|
||||
#define ILI9341_RDID1 0xDA
|
||||
#define ILI9341_RDID2 0xDB
|
||||
#define ILI9341_RDID3 0xDC
|
||||
#define ILI9341_RDID4 0xDD
|
||||
|
||||
#define ILI9341_GMCTRP1 0xE0
|
||||
#define ILI9341_GMCTRN1 0xE1
|
||||
|
||||
#define ILI9341_MADCTL_MY 0x80
|
||||
#define ILI9341_MADCTL_MX 0x40
|
||||
#define ILI9341_MADCTL_MV 0x20
|
||||
#define ILI9341_MADCTL_ML 0x10
|
||||
#define ILI9341_MADCTL_RGB 0x00
|
||||
#define ILI9341_MADCTL_BGR 0x08
|
||||
#define ILI9341_MADCTL_MH 0x04
|
||||
|
||||
#define TFT_CASET ILI9341_CASET
|
||||
#define TFT_PASET ILI9341_PASET
|
||||
#define TFT_RAMWR ILI9341_RAMWR
|
||||
#define TFT_MADCTL ILI9341_MADCTL
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef ST7789
|
||||
|
||||
#define ST7735_NOP 0x00
|
||||
#define ST7735_SWRESET 0x01
|
||||
#define ST7735_RDDID 0x04
|
||||
#define ST7735_RDDST 0x09
|
||||
|
||||
#define ST7735_SLPIN 0x10
|
||||
#define ST7735_SLPOUT 0x11
|
||||
#define ST7735_PTLON 0x12
|
||||
#define ST7735_NORON 0x13
|
||||
|
||||
#define ST7735_INVOFF 0x20
|
||||
#define ST7735_INVON 0x21
|
||||
#define ST7735_DISPOFF 0x28
|
||||
#define ST7735_DISPON 0x29
|
||||
#define ST7735_CASET 0x2A
|
||||
#define ST7735_RASET 0x2B
|
||||
#define ST7735_RAMWR 0x2C
|
||||
#define ST7735_RAMRD 0x2E
|
||||
|
||||
#define ST7735_PTLAR 0x30
|
||||
#define ST7735_COLMOD 0x3A
|
||||
#define ST7735_MADCTL 0x36
|
||||
|
||||
#define ST7735_FRMCTR1 0xB1
|
||||
#define ST7735_FRMCTR2 0xB2
|
||||
#define ST7735_FRMCTR3 0xB3
|
||||
#define ST7735_INVCTR 0xB4
|
||||
#define ST7735_DISSET5 0xB6
|
||||
|
||||
#define ST7735_PWCTR1 0xC0
|
||||
#define ST7735_PWCTR2 0xC1
|
||||
#define ST7735_PWCTR3 0xC2
|
||||
#define ST7735_PWCTR4 0xC3
|
||||
#define ST7735_PWCTR5 0xC4
|
||||
#define ST7735_VMCTR1 0xC5
|
||||
|
||||
#define ST7735_RDID1 0xDA
|
||||
#define ST7735_RDID2 0xDB
|
||||
#define ST7735_RDID3 0xDC
|
||||
#define ST7735_RDID4 0xDD
|
||||
|
||||
#define ST7735_PWCTR6 0xFC
|
||||
|
||||
#define ST7735_GMCTRP1 0xE0
|
||||
#define ST7735_GMCTRN1 0xE1
|
||||
|
||||
#define ST77XX_MADCTL_MY 0x80
|
||||
#define ST77XX_MADCTL_MX 0x40
|
||||
#define ST77XX_MADCTL_MV 0x20
|
||||
#define ST77XX_MADCTL_ML 0x10
|
||||
#define ST77XX_MADCTL_RGB 0x00
|
||||
#define ST77XX_MADCTL_BGR 0x08
|
||||
#define ST77XX_MADCTL_MH 0x04
|
||||
|
||||
#define TFT_CASET ST7735_CASET
|
||||
#define TFT_PASET ST7735_RASET
|
||||
#define TFT_RAMWR ST7735_RAMWR
|
||||
#define TFT_MADCTL ST7735_MADCTL
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
class TFT_T_DMA
|
||||
{
|
||||
public:
|
||||
TFT_T_DMA(uint8_t _CS, uint8_t _DC, uint8_t _RST = 255, uint8_t _MOSI=11, uint8_t _SCLK=13, uint8_t _MISO=12, uint8_t touch_cs=38, uint8_t touch_irq=37);
|
||||
|
||||
void setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2);
|
||||
void begin(void);
|
||||
void flipscreen(bool flip);
|
||||
boolean isflipped(void);
|
||||
void startDMA(void);
|
||||
void stopDMA();
|
||||
int get_frame_buffer_size(int *width, int *height);
|
||||
|
||||
// Touch screen functions
|
||||
#define TOUCH_ENABLED() ((_touch_cs != 255) && (_touch_irq != 255))
|
||||
bool isTouching(void) { return ((!TOUCH_ENABLED())?false:(digitalRead(_touch_irq) == LOW)); }
|
||||
void readRaw(uint16_t * oX, uint16_t * oY, uint16_t * oZ);
|
||||
void readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ);
|
||||
void callibrateTouch(uint16_t xMin,uint16_t yMin,uint16_t xMax,uint16_t yMax);
|
||||
|
||||
// NoDMA functions
|
||||
void writeScreenNoDma(const uint16_t *pcolors);
|
||||
void fillScreenNoDma(uint16_t color);
|
||||
void drawTextNoDma(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize);
|
||||
void drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color);
|
||||
void drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap);
|
||||
void drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t croparx, uint16_t cropary, uint16_t croparw, uint16_t croparh);
|
||||
|
||||
// DMA functions
|
||||
uint16_t * getLineBuffer(int j);
|
||||
void writeScreen(int width, int height, int stride, uint8_t *buffer, uint16_t *palette16);
|
||||
void writeLine(int width, int height, int stride, uint8_t *buffer, uint16_t *palette16);
|
||||
void writeLine(int width, int height, int y, uint16_t *buf);
|
||||
void fillScreen(uint16_t color);
|
||||
void drawText(int16_t x, int16_t y, const char * text, uint16_t fgcolor, uint16_t bgcolor, bool doublesize);
|
||||
void drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color);
|
||||
void drawSprite(int16_t x, int16_t y, const uint16_t *bitmap);
|
||||
void drawSprite(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t croparx, uint16_t cropary, uint16_t croparw, uint16_t croparh);
|
||||
|
||||
protected:
|
||||
uint8_t _rst, _cs, _dc;
|
||||
uint8_t _miso, _mosi, _sclk;
|
||||
uint8_t _touch_irq=255, _touch_cs=255;
|
||||
bool flipped=false;
|
||||
|
||||
void wait(void);
|
||||
void enableTouchIrq();
|
||||
};
|
||||
|
||||
#endif
|
||||
#endif
|
|
@ -0,0 +1,13 @@
|
|||
#include "platform_config.h"
|
||||
|
||||
//#define ST7789 1
|
||||
//#define ILI9341 1
|
||||
|
||||
#define TFT_LINEARINT 1
|
||||
#define LINEARINT_HACK 1
|
||||
|
||||
//#define FLIP_SCREEN 1
|
||||
//#define TFT_DEBUG 1
|
||||
#if defined(__IMXRT1052__) || defined(__IMXRT1062__)
|
||||
//#define TFT_STATICFB 1
|
||||
#endif
|
|
@ -0,0 +1,53 @@
|
|||
/*
|
||||
Wrapping class to extend VGA_T4 to TFT_T_DMA
|
||||
*/
|
||||
|
||||
#ifndef _VGA_T_DMAH_
|
||||
#define _VGA_T_DMAH_
|
||||
|
||||
#ifdef __cplusplus
|
||||
#include <VGA_t4.h>
|
||||
#endif
|
||||
|
||||
|
||||
#define RGBVAL16(r,g,b) ( (((r>>5)&0x07)<<5) | (((g>>5)&0x07)<<2) | (((b>>6)&0x3)<<0) )
|
||||
#define RGBVAL8(r,g,b) ( (((r>>5)&0x07)<<5) | (((g>>5)&0x07)<<2) | (((b>>6)&0x3)<<0) )
|
||||
|
||||
|
||||
|
||||
|
||||
#define TFT_WIDTH 320
|
||||
#define TFT_REALWIDTH 320
|
||||
|
||||
#define TFT_HEIGHT 240
|
||||
#define TFT_REALHEIGHT 240
|
||||
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
class TFT_T_DMA: public VGA_T4
|
||||
{
|
||||
public:
|
||||
// Fake touch screen functions
|
||||
bool isTouching(void) { return false; }
|
||||
void readRaw(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { }
|
||||
void readCal(uint16_t * oX, uint16_t * oY, uint16_t * oZ) { };
|
||||
void callibrateTouch(uint16_t xMin,uint16_t yMin,uint16_t xMax,uint16_t yMax) { }
|
||||
|
||||
// fake DMA functions
|
||||
void startDMA(void) { };
|
||||
void stopDMA(void) { };
|
||||
|
||||
// fake no DMA functions
|
||||
void writeScreenNoDma(const vga_pixel *pcolors) { writeScreen(pcolors); }
|
||||
void fillScreenNoDma(vga_pixel color) { clear(color); }
|
||||
void drawTextNoDma(int16_t x, int16_t y, const char * text, vga_pixel fgcolor, vga_pixel bgcolor, bool doublesize) { drawText(x,y,text,fgcolor,bgcolor,doublesize); }
|
||||
void drawRectNoDma(int16_t x, int16_t y, int16_t w, int16_t h, vga_pixel color) { drawRect(x, y, w, h, color); }
|
||||
void drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap) { drawSprite(x, y, bitmap); }
|
||||
void drawSpriteNoDma(int16_t x, int16_t y, const uint16_t *bitmap, uint16_t croparx, uint16_t cropary, uint16_t croparw, uint16_t croparh) { drawSprite(x, y, bitmap, croparx, cropary, croparw, croparh); }
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
#endif
|
|
@ -1,20 +0,0 @@
|
|||
|
||||
#ifndef keyboard_osd_h_
|
||||
#define keyboard_osd_h_
|
||||
|
||||
extern bool virtualkeyboardIsActive(void);
|
||||
extern void drawVirtualkeyboard(void);
|
||||
extern void toggleVirtualkeyboard(bool keepOn);
|
||||
extern void handleVirtualkeyboard(void);
|
||||
|
||||
extern bool callibrationActive(void);
|
||||
extern int handleCallibration(uint16_t bClick);
|
||||
|
||||
extern bool menuActive(void);
|
||||
extern char * menuSelection(void);
|
||||
extern void toggleMenu(bool on);
|
||||
extern int handleMenu(uint16_t bClick);
|
||||
|
||||
|
||||
#endif
|
||||
|
|
@ -2,7 +2,6 @@ extern "C" {
|
|||
#include "iopins.h"
|
||||
#include "emuapi.h"
|
||||
}
|
||||
#include "keyboard_osd.h"
|
||||
|
||||
#include "nes_emu.h"
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue