MCUME/MCUME_teensy/teensy8086/test.cpp

638 wiersze
19 KiB
C++

#include <string.h>
#include <Arduino.h>
#include "emuapi.h"
#include "emu.h"
#include "ps2.h"
#ifdef HAS_T41
EXTMEM static unsigned char MemPool[8*1024*1024];
#else
static uint8_t LOMEM[NATIVE_RAM];
#endif
uint8_t * RAM;
uint8_t * LORAM;
#define PALMULT8(x) ((x)<<5)
#define RGBVAL16(r,g,b) ( (((r>>3)&0x1f)<<11) | (((g>>2)&0x3f)<<5) | (((b>>3)&0x1f)<<0) )
struct i8253_s {
uint16_t chandata[3];
uint8_t accessmode[3];
uint8_t bytetoggle[3];
uint32_t effectivedata[3];
float chanfreq[3];
uint8_t active[3];
uint16_t counter[3];
};
extern struct i8253_s i8253;
void doirq(uint8_t irqnum);
void write86(uint32_t addr32, uint8_t value);
uint8_t read86(uint32_t addr32);
uint8_t curkey = 0;
uint8_t VRAM[16384];
uint32_t updateaddrs[64];
uint8_t updatepos = 0;
void VRAM_write(uint32_t addr32, uint8_t value) {
if (addr32 < 16384) {
VRAM[addr32] = value;
//printf("%d %d\n",addr32,value);
}
}
uint8_t VRAM_read(uint32_t addr32) {
if (addr32 < 16384) return VRAM[addr32];
return 0;
}
uint8_t ansicolor[16] = { 0, 4, 2, 6, 1, 5, 3, 7, 0, 4, 2, 6, 1, 5, 3, 7 };
uint16_t palettecga[16], palettevga[256];
void installPalette(void) {
palettecga[0] = RGBVAL16(0, 0, 0);
palettecga[1] = RGBVAL16(0, 0, 0xAA);
palettecga[2] = RGBVAL16(0, 0xAA, 0);
palettecga[3] = RGBVAL16(0, 0xAA, 0xAA);
palettecga[4] = RGBVAL16(0xAA, 0, 0);
palettecga[5] = RGBVAL16(0xAA, 0, 0xAA);
palettecga[6] = RGBVAL16(0xAA, 0x55, 0);
palettecga[7] = RGBVAL16(0xAA, 0xAA, 0xAA);
palettecga[8] = RGBVAL16(0x55, 0x55, 0x55);
palettecga[9] = RGBVAL16(0x55, 0x55, 0xFF);
palettecga[10] = RGBVAL16(0x55, 0xFF, 0x55);
palettecga[11] = RGBVAL16(0x55, 0xFF, 0xFF);
palettecga[12] = RGBVAL16(0xFF, 0x55, 0x55);
palettecga[13] = RGBVAL16(0xFF, 0x55, 0xFF);
palettecga[14] = RGBVAL16(0xFF, 0xFF, 0x55);
palettecga[15] = RGBVAL16(0xFF, 0xFF, 0xFF);
palettevga[0] = RGBVAL16(0, 0, 0);
palettevga[1] = RGBVAL16(0, 0, 169);
palettevga[2] = RGBVAL16(0, 169, 0);
palettevga[3] = RGBVAL16(0, 169, 169);
palettevga[4] = RGBVAL16(169, 0, 0);
palettevga[5] = RGBVAL16(169, 0, 169);
palettevga[6] = RGBVAL16(169, 169, 0);
palettevga[7] = RGBVAL16(169, 169, 169);
palettevga[8] = RGBVAL16(0, 0, 84);
palettevga[9] = RGBVAL16(0, 0, 255);
palettevga[10] = RGBVAL16(0, 169, 84);
palettevga[11] = RGBVAL16(0, 169, 255);
palettevga[12] = RGBVAL16(169, 0, 84);
palettevga[13] = RGBVAL16(169, 0, 255);
palettevga[14] = RGBVAL16(169, 169, 84);
palettevga[15] = RGBVAL16(169, 169, 255);
palettevga[16] = RGBVAL16(0, 84, 0);
palettevga[17] = RGBVAL16(0, 84, 169);
palettevga[18] = RGBVAL16(0, 255, 0);
palettevga[19] = RGBVAL16(0, 255, 169);
palettevga[20] = RGBVAL16(169, 84, 0);
palettevga[21] = RGBVAL16(169, 84, 169);
palettevga[22] = RGBVAL16(169, 255, 0);
palettevga[23] = RGBVAL16(169, 255, 169);
palettevga[24] = RGBVAL16(0, 84, 84);
palettevga[25] = RGBVAL16(0, 84, 255);
palettevga[26] = RGBVAL16(0, 255, 84);
palettevga[27] = RGBVAL16(0, 255, 255);
palettevga[28] = RGBVAL16(169, 84, 84);
palettevga[29] = RGBVAL16(169, 84, 255);
palettevga[30] = RGBVAL16(169, 255, 84);
palettevga[31] = RGBVAL16(169, 255, 255);
palettevga[32] = RGBVAL16(84, 0, 0);
palettevga[33] = RGBVAL16(84, 0, 169);
palettevga[34] = RGBVAL16(84, 169, 0);
palettevga[35] = RGBVAL16(84, 169, 169);
palettevga[36] = RGBVAL16(255, 0, 0);
palettevga[37] = RGBVAL16(255, 0, 169);
palettevga[38] = RGBVAL16(255, 169, 0);
palettevga[39] = RGBVAL16(255, 169, 169);
palettevga[40] = RGBVAL16(84, 0, 84);
palettevga[41] = RGBVAL16(84, 0, 255);
palettevga[42] = RGBVAL16(84, 169, 84);
palettevga[43] = RGBVAL16(84, 169, 255);
palettevga[44] = RGBVAL16(255, 0, 84);
palettevga[45] = RGBVAL16(255, 0, 255);
palettevga[46] = RGBVAL16(255, 169, 84);
palettevga[47] = RGBVAL16(255, 169, 255);
palettevga[48] = RGBVAL16(84, 84, 0);
palettevga[49] = RGBVAL16(84, 84, 169);
palettevga[50] = RGBVAL16(84, 255, 0);
palettevga[51] = RGBVAL16(84, 255, 169);
palettevga[52] = RGBVAL16(255, 84, 0);
palettevga[53] = RGBVAL16(255, 84, 169);
palettevga[54] = RGBVAL16(255, 255, 0);
palettevga[55] = RGBVAL16(255, 255, 169);
palettevga[56] = RGBVAL16(84, 84, 84);
palettevga[57] = RGBVAL16(84, 84, 255);
palettevga[58] = RGBVAL16(84, 255, 84);
palettevga[59] = RGBVAL16(84, 255, 255);
palettevga[60] = RGBVAL16(255, 84, 84);
palettevga[61] = RGBVAL16(255, 84, 255);
palettevga[62] = RGBVAL16(255, 255, 84);
palettevga[63] = RGBVAL16(255, 255, 255);
palettevga[64] = RGBVAL16(255, 125, 125);
palettevga[65] = RGBVAL16(255, 157, 125);
palettevga[66] = RGBVAL16(255, 190, 125);
palettevga[67] = RGBVAL16(255, 222, 125);
palettevga[68] = RGBVAL16(255, 255, 125);
palettevga[69] = RGBVAL16(222, 255, 125);
palettevga[70] = RGBVAL16(190, 255, 125);
palettevga[71] = RGBVAL16(157, 255, 125);
palettevga[72] = RGBVAL16(125, 255, 125);
palettevga[73] = RGBVAL16(125, 255, 157);
palettevga[74] = RGBVAL16(125, 255, 190);
palettevga[75] = RGBVAL16(125, 255, 222);
palettevga[76] = RGBVAL16(125, 255, 255);
palettevga[77] = RGBVAL16(125, 222, 255);
palettevga[78] = RGBVAL16(125, 190, 255);
palettevga[79] = RGBVAL16(125, 157, 255);
palettevga[80] = RGBVAL16(182, 182, 255);
palettevga[81] = RGBVAL16(198, 182, 255);
palettevga[82] = RGBVAL16(218, 182, 255);
palettevga[83] = RGBVAL16(234, 182, 255);
palettevga[84] = RGBVAL16(255, 182, 255);
palettevga[85] = RGBVAL16(255, 182, 234);
palettevga[86] = RGBVAL16(255, 182, 218);
palettevga[87] = RGBVAL16(255, 182, 198);
palettevga[88] = RGBVAL16(255, 182, 182);
palettevga[89] = RGBVAL16(255, 198, 182);
palettevga[90] = RGBVAL16(255, 218, 182);
palettevga[91] = RGBVAL16(255, 234, 182);
palettevga[92] = RGBVAL16(255, 255, 182);
palettevga[93] = RGBVAL16(234, 255, 182);
palettevga[94] = RGBVAL16(218, 255, 182);
palettevga[95] = RGBVAL16(198, 255, 182);
palettevga[96] = RGBVAL16(182, 255, 182);
palettevga[97] = RGBVAL16(182, 255, 198);
palettevga[98] = RGBVAL16(182, 255, 218);
palettevga[99] = RGBVAL16(182, 255, 234);
palettevga[100] = RGBVAL16(182, 255, 255);
palettevga[101] = RGBVAL16(182, 234, 255);
palettevga[102] = RGBVAL16(182, 218, 255);
palettevga[103] = RGBVAL16(182, 198, 255);
palettevga[104] = RGBVAL16(0, 0, 113);
palettevga[105] = RGBVAL16(28, 0, 113);
palettevga[106] = RGBVAL16(56, 0, 113);
palettevga[107] = RGBVAL16(84, 0, 113);
palettevga[108] = RGBVAL16(113, 0, 113);
palettevga[109] = RGBVAL16(113, 0, 84);
palettevga[110] = RGBVAL16(113, 0, 56);
palettevga[111] = RGBVAL16(113, 0, 28);
palettevga[112] = RGBVAL16(113, 0, 0);
palettevga[113] = RGBVAL16(113, 28, 0);
palettevga[114] = RGBVAL16(113, 56, 0);
palettevga[115] = RGBVAL16(113, 84, 0);
palettevga[116] = RGBVAL16(113, 113, 0);
palettevga[117] = RGBVAL16(84, 113, 0);
palettevga[118] = RGBVAL16(56, 113, 0);
palettevga[119] = RGBVAL16(28, 113, 0);
palettevga[120] = RGBVAL16(0, 113, 0);
palettevga[121] = RGBVAL16(0, 113, 28);
palettevga[122] = RGBVAL16(0, 113, 56);
palettevga[123] = RGBVAL16(0, 113, 84);
palettevga[124] = RGBVAL16(0, 113, 113);
palettevga[125] = RGBVAL16(0, 84, 113);
palettevga[126] = RGBVAL16(0, 56, 113);
palettevga[127] = RGBVAL16(0, 28, 113);
palettevga[128] = RGBVAL16(56, 56, 113);
palettevga[129] = RGBVAL16(68, 56, 113);
palettevga[130] = RGBVAL16(84, 56, 113);
palettevga[131] = RGBVAL16(97, 56, 113);
palettevga[132] = RGBVAL16(113, 56, 113);
palettevga[133] = RGBVAL16(113, 56, 97);
palettevga[134] = RGBVAL16(113, 56, 84);
palettevga[135] = RGBVAL16(113, 56, 68);
palettevga[136] = RGBVAL16(113, 56, 56);
palettevga[137] = RGBVAL16(113, 68, 56);
palettevga[138] = RGBVAL16(113, 84, 56);
palettevga[139] = RGBVAL16(113, 97, 56);
palettevga[140] = RGBVAL16(113, 113, 56);
palettevga[141] = RGBVAL16(97, 113, 56);
palettevga[142] = RGBVAL16(84, 113, 56);
palettevga[143] = RGBVAL16(68, 113, 56);
palettevga[144] = RGBVAL16(56, 113, 56);
palettevga[145] = RGBVAL16(56, 113, 68);
palettevga[146] = RGBVAL16(56, 113, 84);
palettevga[147] = RGBVAL16(56, 113, 97);
palettevga[148] = RGBVAL16(56, 113, 113);
palettevga[149] = RGBVAL16(56, 97, 113);
palettevga[150] = RGBVAL16(56, 84, 113);
palettevga[151] = RGBVAL16(56, 68, 113);
palettevga[152] = RGBVAL16(80, 80, 113);
palettevga[153] = RGBVAL16(89, 80, 113);
palettevga[154] = RGBVAL16(97, 80, 113);
palettevga[155] = RGBVAL16(105, 80, 113);
palettevga[156] = RGBVAL16(113, 80, 113);
palettevga[157] = RGBVAL16(113, 80, 105);
palettevga[158] = RGBVAL16(113, 80, 97);
palettevga[159] = RGBVAL16(113, 80, 89);
palettevga[160] = RGBVAL16(113, 80, 80);
palettevga[161] = RGBVAL16(113, 89, 80);
palettevga[162] = RGBVAL16(113, 97, 80);
palettevga[163] = RGBVAL16(113, 105, 80);
palettevga[164] = RGBVAL16(113, 113, 80);
palettevga[165] = RGBVAL16(105, 113, 80);
palettevga[166] = RGBVAL16(97, 113, 80);
palettevga[167] = RGBVAL16(89, 113, 80);
palettevga[168] = RGBVAL16(80, 113, 80);
palettevga[169] = RGBVAL16(80, 113, 89);
palettevga[170] = RGBVAL16(80, 113, 97);
palettevga[171] = RGBVAL16(80, 113, 105);
palettevga[172] = RGBVAL16(80, 113, 113);
palettevga[173] = RGBVAL16(80, 105, 113);
palettevga[174] = RGBVAL16(80, 97, 113);
palettevga[175] = RGBVAL16(80, 89, 113);
palettevga[176] = RGBVAL16(0, 0, 64);
palettevga[177] = RGBVAL16(16, 0, 64);
palettevga[178] = RGBVAL16(32, 0, 64);
palettevga[179] = RGBVAL16(48, 0, 64);
palettevga[180] = RGBVAL16(64, 0, 64);
palettevga[181] = RGBVAL16(64, 0, 48);
palettevga[182] = RGBVAL16(64, 0, 32);
palettevga[183] = RGBVAL16(64, 0, 16);
palettevga[184] = RGBVAL16(64, 0, 0);
palettevga[185] = RGBVAL16(64, 16, 0);
palettevga[186] = RGBVAL16(64, 32, 0);
palettevga[187] = RGBVAL16(64, 48, 0);
palettevga[188] = RGBVAL16(64, 64, 0);
palettevga[189] = RGBVAL16(48, 64, 0);
palettevga[190] = RGBVAL16(32, 64, 0);
palettevga[191] = RGBVAL16(16, 64, 0);
palettevga[192] = RGBVAL16(0, 64, 0);
palettevga[193] = RGBVAL16(0, 64, 16);
palettevga[194] = RGBVAL16(0, 64, 32);
palettevga[195] = RGBVAL16(0, 64, 48);
palettevga[196] = RGBVAL16(0, 64, 64);
palettevga[197] = RGBVAL16(0, 48, 64);
palettevga[198] = RGBVAL16(0, 32, 64);
palettevga[199] = RGBVAL16(0, 16, 64);
palettevga[200] = RGBVAL16(32, 32, 64);
palettevga[201] = RGBVAL16(40, 32, 64);
palettevga[202] = RGBVAL16(48, 32, 64);
palettevga[203] = RGBVAL16(56, 32, 64);
palettevga[204] = RGBVAL16(64, 32, 64);
palettevga[205] = RGBVAL16(64, 32, 56);
palettevga[206] = RGBVAL16(64, 32, 48);
palettevga[207] = RGBVAL16(64, 32, 40);
palettevga[208] = RGBVAL16(64, 32, 32);
palettevga[209] = RGBVAL16(64, 40, 32);
palettevga[210] = RGBVAL16(64, 48, 32);
palettevga[211] = RGBVAL16(64, 56, 32);
palettevga[212] = RGBVAL16(64, 64, 32);
palettevga[213] = RGBVAL16(56, 64, 32);
palettevga[214] = RGBVAL16(48, 64, 32);
palettevga[215] = RGBVAL16(40, 64, 32);
palettevga[216] = RGBVAL16(32, 64, 32);
palettevga[217] = RGBVAL16(32, 64, 40);
palettevga[218] = RGBVAL16(32, 64, 48);
palettevga[219] = RGBVAL16(32, 64, 56);
palettevga[220] = RGBVAL16(32, 64, 64);
palettevga[221] = RGBVAL16(32, 56, 64);
palettevga[222] = RGBVAL16(32, 48, 64);
palettevga[223] = RGBVAL16(32, 40, 64);
palettevga[224] = RGBVAL16(44, 44, 64);
palettevga[225] = RGBVAL16(48, 44, 64);
palettevga[226] = RGBVAL16(52, 44, 64);
palettevga[227] = RGBVAL16(60, 44, 64);
palettevga[228] = RGBVAL16(64, 44, 64);
palettevga[229] = RGBVAL16(64, 44, 60);
palettevga[230] = RGBVAL16(64, 44, 52);
palettevga[231] = RGBVAL16(64, 44, 48);
palettevga[232] = RGBVAL16(64, 44, 44);
palettevga[233] = RGBVAL16(64, 48, 44);
palettevga[234] = RGBVAL16(64, 52, 44);
palettevga[235] = RGBVAL16(64, 60, 44);
palettevga[236] = RGBVAL16(64, 64, 44);
palettevga[237] = RGBVAL16(60, 64, 44);
palettevga[238] = RGBVAL16(52, 64, 44);
palettevga[239] = RGBVAL16(48, 64, 44);
palettevga[240] = RGBVAL16(44, 64, 44);
palettevga[241] = RGBVAL16(44, 64, 48);
palettevga[242] = RGBVAL16(44, 64, 52);
palettevga[243] = RGBVAL16(44, 64, 60);
palettevga[244] = RGBVAL16(44, 64, 64);
palettevga[245] = RGBVAL16(44, 60, 64);
palettevga[246] = RGBVAL16(44, 52, 64);
palettevga[247] = RGBVAL16(44, 48, 64);
palettevga[248] = RGBVAL16(0, 0, 0);
palettevga[249] = RGBVAL16(0, 0, 0);
palettevga[250] = RGBVAL16(0, 0, 0);
palettevga[251] = RGBVAL16(0, 0, 0);
palettevga[252] = RGBVAL16(0, 0, 0);
palettevga[253] = RGBVAL16(0, 0, 0);
palettevga[254] = RGBVAL16(0, 0, 0);
palettevga[255] = RGBVAL16(0, 0, 0);
}
extern uint8_t vidmode, portram[0x400];
#define XRES_MAX 640
#define XRES_HI 640
#define XRES_LO 320
#define YRES 200
#include "font.h"
static unsigned short line[XRES_MAX];
void drawscreentext80(void) {
uint16_t row, col, y, x, xpos;
uint16_t fontdata;
for (y=0; y<(25*8); y++)
{
row = y>>3;
uint8_t * vrampt=&VRAM[160*row];
xpos = 0;
for (col=0; col<80; col++)
{
uint8_t bold, attrib, cc, bg, fg;
cc = *vrampt++;
attrib = *vrampt++;
bg = (attrib >> 4) & 7;
fg = attrib & 0x0F;
//if (y == 0) {printf("0x%02X",cc);}
fontdata = ROM_READ(font, ((uint32_t)cc << 3) + (y&0x7));
for (x=0; x<8; x++)
//for (x=0; x<4; x++)
{
if (fontdata & 1) {
line[xpos++] = palettecga[fg];
} else {
line[xpos++] = palettecga[bg];
}
fontdata >>= 1;
//fontdata >>= 2;
}
}
emu_DrawLine16(&line[0], XRES_HI, YRES, y);
}
}
void drawscreenlorescga(void) {
uint16_t y, x, xpos;
uint8_t intensity, usepal;
uint16_t color;
usepal = (portram[0x3D9]>>5) & 1;
intensity = ( (portram[0x3D9]>>4) & 1) << 3;
for (y=0; y<(25*8); y++)
{
xpos = 0;
for (x=0; x<XRES_LO; x++)
{
int ychar = y;// >> 1;
int xchar = x;// >> 1;
uint8_t curchar = VRAM[((ychar & 1) * 8192 + (ychar >> 1) * 80 + (xchar >> 2))];
switch (xchar & 3) {
case 3: color = curchar & 3; break;
case 2: color = (curchar >> 2) & 3; break;
case 1: color = (curchar >> 4) & 3; break;
case 0: color = (curchar >> 6) & 3; break;
}
color = (color << 1) + usepal + intensity;
if (color == (usepal + intensity)) color = 0;
line[xpos++] = palettecga[color];
}
emu_DrawLine16(&line[0], XRES_LO, YRES, y);
}
}
void drawscreenhirescga(void) {
uint16_t y, x, xpos;
uint16_t color;
for (y=0; y<(25*8); y++)
{
xpos = 0;
for (x=0; x<XRES_HI; x++)
{
int ychar = y >> 1;
int xchar = x;
uint8_t curchar = VRAM[((ychar & 1) * 8192 + (ychar >> 1) * 80 + (xchar >> 3))];
color = ((curchar >> (7-(x&7))) & 1) ? 15 : 0;
line[xpos++] = palettecga[color];
}
emu_DrawLine16(&line[0], XRES_HI, YRES, y);
}
}
void updatescreen() {
switch (vidmode & 0x7F) {
case 0:
case 1:
//drawtext40(origaddr, value);
break;
case 2:
case 3:
//case 7:
drawscreentext80();
break;
case 4:
drawscreenlorescga();
break;
case 5:
drawscreenlorescga(); //change to BW function later
break;
case 6:
drawscreenhirescga();
break;
}
//printf("%d\n",vidmode & 0x7F);
}
static uint8_t nbkeys=0;
static uint8_t kcnt=0;
static int toggle=1;
static char * seq;
static char * seq1="PRINCE.BAT\r";
static char * seq2="CAT.EXE\r";
static char * seq3="DIR\r";
static int mouse_x = 160;
static int mouse_y = 100;
static int prev_key = 0;
static int prev_j = 0;
static int prev_mouseb = 0;
static bool isMouse = true;
static int joynum = 1;
static int hk = 0;
static int prev_hk = 0;
static int k = 0;
static void keyevent(int keysym, int isdown)
{
uint8_t scancode = translatescancode(keysym);
if (scancode != 0xFF) {
portram[0x60] = scancode;
if (!isdown) portram[0x60] |= 0x80;
portram[0x64] |= 2;
doirq(1);
}
}
extern void apc_Input(int bClick) {
hk = emu_ReadI2CKeyboard();
k = emu_ReadKeys();
if (nbkeys == 0) {
if (bClick & MASK_JOY2_BTN) {
nbkeys = strlen(seq1);
seq=seq1;
kcnt=0;
}
if (bClick & MASK_KEY_USER1) {
nbkeys = strlen(seq2);
seq=seq2;
kcnt=0;
}
}
else {
char k = seq[kcnt];
if (k == 13) keyevent(0xFF0D,toggle);
else keyevent(k,toggle);
//setKey(ascii2scan[k],toggle);
if (!toggle) {
kcnt++;
nbkeys--;
toggle = true;
}
else {
toggle = false;
}
}
}
static void do_events(void)
{
if (hk != prev_hk) {
prev_hk == hk;
if ( (hk != 0) && (hk != prev_key) ) {
prev_key = hk;
keyevent ( hk, 0 );
if (hk == 68) {
if (isMouse) isMouse = false;
else isMouse = true;
}
}
}
if ( (hk == 0) && (prev_key) ) {
keyevent ( prev_key, 1 );
prev_key = 0;
}
if (!isMouse)
{
int j = 0;
if (( k & MASK_JOY1_RIGHT) || ( k & MASK_JOY2_RIGHT)) {
j |= 0x08;
}
if (( k & MASK_JOY1_LEFT) || ( k & MASK_JOY2_LEFT)) {
j |= 0x04;
}
if (( k & MASK_JOY1_UP) || ( k & MASK_JOY2_UP)) {
j |= 0x01;
}
if (( k & MASK_JOY1_DOWN) || ( k & MASK_JOY2_DOWN)) {
j |= 0x02;
}
if ( k & MASK_JOY2_BTN) {
j |= 0x80;
}
if (j != prev_j) {
//IkbdJoystickChange(joynum,j);
prev_j = j;
}
}
else {
if (( k & MASK_JOY1_RIGHT) || ( k & MASK_JOY2_RIGHT)) {
if ( mouse_x < XRES_HI ) {
mouse_x += 1;
}
}
else if (( k & MASK_JOY1_LEFT) || ( k & MASK_JOY2_LEFT)) {
if ( mouse_x > 1 ) {
mouse_x -= 1;
}
}
else if (( k & MASK_JOY1_UP) || ( k & MASK_JOY2_UP)) {
if ( mouse_y > 1 ) {
mouse_y -= 1;
}
}
else if (( k & MASK_JOY1_DOWN) || ( k & MASK_JOY2_DOWN)) {
if ( mouse_y < YRES ) {
mouse_y += 1;
}
}
int mouseb=0;
if ( ( k & MASK_JOY2_BTN) ){
mouseb=1;
}
if ( (mouseb != prev_mouseb) ){
prev_mouseb = mouseb;
}
}
}
void emu_KeyboardOnDown(int keymodifer, int key) {
}
void emu_KeyboardOnUp(int keymodifer, int key) {
}
void apc_Step(void)
{
exec86(8000);
updatescreen();
do_events();
emu_DrawVsync();
}
void apc_Init(void)
{
#ifdef HAS_T41
LORAM = MemPool;
RAM = MemPool + NATIVE_RAM;
#else
RAM = (uint8_t*) malloc(RAM_SIZE);
if (!RAM) emu_printf("RAM malloc failed");
LORAM = &LOMEM[0];
//LORAM = (uint8_t*)malloc(NATIVE_RAM);
//if (!LORAM) emu_printf("LORAM malloc failed");
#endif
installPalette();
init8253();
reset86();
init8259();
}
void apc_Start(char * filename)
{
emu_printf("init started");
initDisk(filename);
emu_printf("init done");
}