Added Xi8088 emulation. Patch from EluanCM.
This commit is contained in:
parent
f7384bf085
commit
31dff3a509
17 changed files with 102 additions and 13 deletions
|
|
@ -40,7 +40,7 @@ vid_icd2061.c vid_ics2595.c vid_incolor.c vid_mda.c vid_olivetti_m24.c vid_oti03
|
|||
vid_pc1512.c vid_pc1640.c vid_pcjr.c vid_ps1_svga.c vid_s3.c vid_s3_virge.c vid_sdac_ramdac.c \
|
||||
vid_stg_ramdac.c vid_svga.c vid_svga_render.c vid_t1000.c vid_t3100e.c vid_tandy.c vid_tandysl.c vid_tgui9440.c \
|
||||
vid_tkd8001_ramdac.c vid_tvga.c vid_unk_ramdac.c vid_vga.c vid_voodoo.c video.c wd76c10.c vid_wy700.c \
|
||||
x86seg.c x87.c xtide.c sound_dbopl.cc sound_resid.cc
|
||||
x86seg.c x87.c xi8088.c xtide.c sound_dbopl.cc sound_resid.cc
|
||||
|
||||
# DOSBox
|
||||
pcem_SOURCES += dosbox/cdrom_image.cpp dosbox/dbopl.cpp dosbox/nukedopl.cpp dosbox/vid_cga_comp.c
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ vid_icd2061.o vid_ics2595.o vid_incolor.o vid_mda.o vid_olivetti_m24.o vid_oti03
|
|||
vid_pc1512.o vid_pc1640.o vid_pcjr.o vid_ps1_svga.o vid_s3.o vid_s3_virge.o vid_sdac_ramdac.o \
|
||||
vid_stg_ramdac.o vid_svga.o vid_svga_render.o vid_t1000.o vid_t3100e.o vid_tandy.o vid_tandysl.o vid_tgui9440.o \
|
||||
vid_tkd8001_ramdac.o vid_tvga.o vid_unk_ramdac.o vid_vga.o vid_voodoo.o vid_wy700.o video.o wd76c10.o \
|
||||
x86seg.o x87.o xtide.o sound_dbopl.o sound_resid.o \
|
||||
x86seg.o x87.o xi8088.c xtide.o sound_dbopl.o sound_resid.o \
|
||||
wx-main.o wx-config_sel.o wx-dialogbox.o wx-utils.o wx-app.o wx-sdl2-joystick.o wx-sdl2-mouse.o wx-sdl2-keyboard.o wx-sdl2-video.o wx-sdl2-midi.o \
|
||||
wx-sdl2.o wx-config.o wx-deviceconfig.o wx-status.o wx-sdl2-status.o wx-resources.o wx-thread.o wx-common.o wx-sdl2-display.o \
|
||||
wx-sdl2-video-renderer.o wx-sdl2-video-gl3.o wx-glslp-parser.o wx-shader_man.o wx-shaderconfig.o wx-joystickconfig.o wx-createdisc.o
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ vid_icd2061.o vid_ics2595.o vid_incolor.o vid_mda.o vid_olivetti_m24.o vid_oti03
|
|||
vid_pc1512.o vid_pc1640.o vid_pcjr.o vid_ps1_svga.o vid_s3.o vid_s3_virge.o vid_sdac_ramdac.o \
|
||||
vid_stg_ramdac.o vid_svga.o vid_svga_render.o vid_t1000.o vid_t3100e.o vid_tandy.o vid_tandysl.o vid_tgui9440.o \
|
||||
vid_tkd8001_ramdac.o vid_tvga.o vid_unk_ramdac.o vid_vga.o vid_voodoo.o vid_wy700.o video.o wd76c10.o \
|
||||
x86seg.o x87.o xtide.o sound_dbopl.o sound_resid.o \
|
||||
x86seg.o x87.o xi8088.c xtide.o sound_dbopl.o sound_resid.o \
|
||||
wx-main.o wx-config_sel.o wx-dialogbox.o wx-utils.o wx-app.o wx-sdl2-joystick.o wx-sdl2-mouse.o wx-sdl2-keyboard.o wx-sdl2-video.o wx-sdl2-midi.o \
|
||||
wx-sdl2.o wx-config.o wx-deviceconfig.o wx-status.o wx-sdl2-status.o wx-resources.o wx-thread.o wx-common.o wx-sdl2-display.o \
|
||||
wx-sdl2-video-renderer.o wx-sdl2-video-gl3.o wx-glslp-parser.o wx-shader_man.o wx-shaderconfig.o wx-joystickconfig.o wx-createdisc.o
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ OBJ = 386.o 386_dynarec.o 386_dynarec_ops.o 808x.o acc2036.o acer386sx.o ali1429
|
|||
vid_svga_render.o vid_t1000.o vid_t3100e.o vid_tandy.o vid_tandysl.o vid_tgui9440.o vid_tkd8001_ramdac.o vid_tvga.o vid_unk_ramdac.o \
|
||||
vid_vga.o vid_voodoo.o vid_wy700.o video.o wd76c10.o win.o win-config.o win-config_sel.o win-d3d.o win-d3d-fs.o win-ddraw.o \
|
||||
win-ddraw-fs.o win-deviceconfig.o win-hdconf.o win-joystick.o win-joystickconfig.o win-keyboard.o win-midi.o win-mouse.o \
|
||||
win-status.o win-video.o x86seg.o x87.o xtide.o pc.res
|
||||
win-status.o win-video.o x86seg.o x87.o xi8088.c xtide.o pc.res
|
||||
DBOBJ = cdrom_image.o dbopl.o nukedopl.o vid_cga_comp.o
|
||||
SIDOBJ = convolve.o convolve-sse.o envelope.o extfilt.o filter.o pot.o sid.o voice.o wave6581__ST.o wave6581_P_T.o wave6581_PS_.o wave6581_PST.o wave8580__ST.o wave8580_P_T.o wave8580_PS_.o wave8580_PST.o wave.o
|
||||
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ OBJ = 386.o 386_dynarec.o 386_dynarec_ops.o 808x.o acc2036.o acer386sx.o ali1429
|
|||
vid_svga_render.o vid_t1000.o vid_t3100e.o vid_tandy.o vid_tandysl.o vid_tgui9440.o vid_tkd8001_ramdac.o vid_tvga.o vid_unk_ramdac.o \
|
||||
vid_vga.o vid_voodoo.o vid_wy700.o video.o wd76c10.o win.o win-config.o win-config_sel.o win-d3d.o win-d3d-fs.o win-ddraw.o \
|
||||
win-ddraw-fs.o win-deviceconfig.o win-hdconf.o win-joystick.o win-joystickconfig.o win-keyboard.o win-midi.o win-mouse.o \
|
||||
win-networkconfig.o win-status.o win-video.o x86seg.o x87.o xtide.o pc.res
|
||||
win-networkconfig.o win-status.o win-video.o x86seg.o x87.o xi8088.c xtide.o pc.res
|
||||
DBOBJ = cdrom_image.o dbopl.o nukedopl.o vid_cga_comp.o
|
||||
SIDOBJ = convolve.o convolve-sse.o envelope.o extfilt.o filter.o pot.o sid.o voice.o wave6581__ST.o wave6581_P_T.o wave6581_PS_.o wave6581_PST.o wave8580__ST.o wave8580_P_T.o wave8580_PS_.o wave8580_PST.o wave.o
|
||||
NETOBJ = ne2000.o nethandler.o
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ OBJ = 386.o 386_dynarec.o 386_dynarec_ops.o 808x.o acc2036.o acer386sx.o ali1429
|
|||
vid_olivetti_m24.o vid_oti037.c vid_oti067.o vid_paradise.o vid_pc1512.o vid_pc1640.o vid_pc200.o \
|
||||
vid_pcjr.o vid_ps1_svga.o vid_s3.o vid_s3_virge.o vid_sdac_ramdac.o vid_stg_ramdac.o vid_svga.o \
|
||||
vid_svga_render.o vid_t1000.o vid_t3100e.o vid_tandy.o vid_tandysl.o vid_tgui9440.o vid_tkd8001_ramdac.o vid_tvga.o vid_unk_ramdac.o \
|
||||
vid_vga.o vid_voodoo.o vid_wy700.o video.o wd76c10.o x86seg.o x87.o xtide.o win-midi.o \
|
||||
vid_vga.o vid_voodoo.o vid_wy700.o video.o wd76c10.o x86seg.o x87.o xi8088.c xtide.o win-midi.o \
|
||||
wx-main.o wx-config_sel.o wx-dialogbox.o wx-utils.o wx-app.o wx-sdl2-joystick.o wx-sdl2-mouse.o wx-sdl2-keyboard.o wx-sdl2-video.o \
|
||||
wx-sdl2.o wx-config.o wx-deviceconfig.o wx-status.o wx-sdl2-status.o wx-resources.o wx-thread.o wx-common.o wx-sdl2-display-win.o \
|
||||
wx-sdl2-video-renderer.o wx-sdl2-video-gl3.o wx-glslp-parser.o wx-shader_man.o wx-shaderconfig.o wx-joystickconfig.o wx-createdisc.o wx.res
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ OBJ = 386.o 386_dynarec.o 386_dynarec_ops.o 808x.o acc2036.o acer386sx.o ali1429
|
|||
vid_olivetti_m24.o vid_oti037.c vid_oti067.o vid_paradise.o vid_pc1512.o vid_pc1640.o vid_pc200.o \
|
||||
vid_pcjr.o vid_ps1_svga.o vid_s3.o vid_s3_virge.o vid_sdac_ramdac.o vid_stg_ramdac.o vid_svga.o \
|
||||
vid_svga_render.o vid_t1000.o vid_t3100e.o vid_tandy.o vid_tandysl.o vid_tgui9440.o vid_tkd8001_ramdac.o vid_tvga.o vid_unk_ramdac.o \
|
||||
vid_vga.o vid_voodoo.o vid_wy700.o video.o wd76c10.o x86seg.o x87.o xtide.o win-midi.o \
|
||||
vid_vga.o vid_voodoo.o vid_wy700.o video.o wd76c10.o x86seg.o x87.o xi8088.c xtide.o win-midi.o \
|
||||
wx-main.o wx-config_sel.o wx-dialogbox.o wx-utils.o wx-app.o wx-sdl2-joystick.o wx-sdl2-mouse.o wx-sdl2-keyboard.o wx-sdl2-video.o \
|
||||
wx-sdl2.o wx-config.o wx-deviceconfig.o wx-hostconfig.o wx-status.o wx-sdl2-status.o wx-resources.o wx-thread.o wx-common.o wx-sdl2-display-win.o \
|
||||
wx-sdl2-video-renderer.o wx-sdl2-video-gl3.o wx-glslp-parser.o wx-shader_man.o wx-shaderconfig.o wx-joystickconfig.o wx-createdisc.o wx.res
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ OBJ = 386.o 386_dynarec.o 386_dynarec_ops.o 808x.o acc2036.o acer386sx.o ali1429
|
|||
vid_svga_render.o vid_t1000.o vid_t3100e.o vid_tandy.o vid_tandysl.o vid_tgui9440.o vid_tkd8001_ramdac.o vid_tvga.o vid_unk_ramdac.o \
|
||||
vid_vga.o vid_voodoo.o vid_wy700.o video.o wd76c10.o win.o win-config.o win-config_sel.o win-d3d.o win-d3d-fs.o win-ddraw.o \
|
||||
win-ddraw-fs.o win-deviceconfig.o win-hdconf.o win-joystick.o win-joystickconfig.o win-keyboard.o win-midi.o win-mouse.o \
|
||||
win-status.o win-video.o x86seg.o x87.o xtide.o pc.res
|
||||
win-status.o win-video.o x86seg.o x87.o xi8088.c xtide.o pc.res
|
||||
DBOBJ = cdrom_image.o dbopl.o nukedopl.o vid_cga_comp.o
|
||||
SIDOBJ = convolve.o convolve-sse.o envelope.o extfilt.o filter.o pot.o sid.o voice.o wave6581__ST.o wave6581_P_T.o wave6581_PS_.o wave6581_PST.o wave8580__ST.o wave8580_P_T.o wave8580_PS_.o wave8580_PST.o wave.o
|
||||
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ vid_icd2061.o vid_ics2595.o vid_incolor.o vid_mda.o vid_olivetti_m24.o vid_oti03
|
|||
vid_pc1512.o vid_pc1640.o vid_pcjr.o vid_ps1_svga.o vid_s3.o vid_s3_virge.o vid_sdac_ramdac.o \
|
||||
vid_stg_ramdac.o vid_svga.o vid_svga_render.o vid_t1000.o vid_t3100e.o vid_tandy.o vid_tandysl.o vid_tgui9440.o \
|
||||
vid_tkd8001_ramdac.o vid_tvga.o vid_unk_ramdac.o vid_vga.o vid_voodoo.o vid_wy700.o video.o wd76c10.o \
|
||||
x86seg.o x87.o xtide.o sound_dbopl.o sound_resid.o \
|
||||
x86seg.o x87.o xi8088.c xtide.o sound_dbopl.o sound_resid.o \
|
||||
wx-main.o wx-config_sel.o wx-dialogbox.o wx-utils.o wx-app.o wx-sdl2-joystick.o wx-sdl2-mouse.o wx-sdl2-keyboard.o wx-sdl2-video.o wx-sdl2-midi.o \
|
||||
wx-sdl2.o wx-config.o wx-deviceconfig.o wx-status.o wx-sdl2-status.o wx-resources.o wx-thread.o wx-common.o wx-sdl2-display.o \
|
||||
wx-sdl2-video-renderer.o wx-sdl2-video-gl3.o wx-glslp-parser.o wx-shader_man.o wx-shaderconfig.o wx-joystickconfig.o wx-createdisc.o
|
||||
|
|
|
|||
|
|
@ -87,7 +87,7 @@ void fdc_reset()
|
|||
fdc.lock = 0;
|
||||
fdc.head = 0;
|
||||
fdc.abort = 0;
|
||||
if (!AT)
|
||||
if (!AT && romset != ROM_XI8088)
|
||||
{
|
||||
fdc.rate = 2;
|
||||
// fdc_update_rate();
|
||||
|
|
@ -672,7 +672,8 @@ bad_command:
|
|||
}
|
||||
return;
|
||||
case 7:
|
||||
if (!AT) return;
|
||||
if (!AT && romset != ROM_XI8088)
|
||||
return;
|
||||
fdc.rate=val&3;
|
||||
|
||||
disc_3f7=val;
|
||||
|
|
|
|||
|
|
@ -453,6 +453,7 @@ enum
|
|||
ROM_ZAPPA,
|
||||
ROM_PB520R,
|
||||
ROM_COMPAQ_PIP,
|
||||
ROM_XI8088,
|
||||
|
||||
ROM_MAX
|
||||
};
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@
|
|||
#include "timer.h"
|
||||
#include "video.h"
|
||||
#include "x86.h"
|
||||
#include "xi8088.h"
|
||||
|
||||
#include "keyboard.h"
|
||||
#include "keyboard_at.h"
|
||||
|
|
@ -180,6 +181,8 @@ void keyboard_at_adddata_mouse(uint8_t val)
|
|||
void keyboard_at_write(uint16_t port, uint8_t val, void *priv)
|
||||
{
|
||||
// pclog("keyboard_at : write %04X %02X %i %02X\n", port, val, keyboard_at.key_wantdata, ram[8]);
|
||||
if (romset == ROM_XI8088 && port == 0x63)
|
||||
port = 0x61;
|
||||
/* if (ram[8] == 0xc3)
|
||||
{
|
||||
output = 3;
|
||||
|
|
@ -335,6 +338,14 @@ void keyboard_at_write(uint16_t port, uint8_t val, void *priv)
|
|||
if (speaker_enable)
|
||||
was_speaker_enable = 1;
|
||||
pit_set_gate(&pit, 2, val & 1);
|
||||
|
||||
if (romset == ROM_XI8088)
|
||||
{
|
||||
if (val & 0x04)
|
||||
xi8088_turbo_set(1);
|
||||
else
|
||||
xi8088_turbo_set(0);
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x64:
|
||||
|
|
@ -544,6 +555,8 @@ uint8_t keyboard_at_read(uint16_t port, void *priv)
|
|||
{
|
||||
uint8_t temp = 0xff;
|
||||
// if (port != 0x61) pclog("keyboard_at : read %04X ", port);
|
||||
if (romset == ROM_XI8088 && port == 0x63)
|
||||
port = 0x61;
|
||||
switch (port)
|
||||
{
|
||||
case 0x60:
|
||||
|
|
@ -564,6 +577,13 @@ uint8_t keyboard_at_read(uint16_t port, void *priv)
|
|||
else
|
||||
temp &= ~0x10;
|
||||
}
|
||||
if (romset == ROM_XI8088)
|
||||
{
|
||||
if (xi8088_turbo_get())
|
||||
temp |= 0x04;
|
||||
else
|
||||
temp &= ~0x04;
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x64:
|
||||
|
|
|
|||
13
src/mem.c
13
src/mem.c
|
|
@ -866,12 +866,12 @@ int loadbios()
|
|||
f = romfopen("zappa/1006bs0_.bio", "rb");
|
||||
if (!f) break;
|
||||
fseek(f, 0x80, SEEK_SET);
|
||||
fread(rom + 0x10000, 0x10000, 1, f);
|
||||
romfread(rom + 0x10000, 0x10000, 1, f);
|
||||
fclose(f);
|
||||
f = romfopen("zappa/1006bs0_.bi1", "rb");
|
||||
if (!f) break;
|
||||
fseek(f, 0x80, SEEK_SET);
|
||||
fread(rom, 0xd000, 1, f);
|
||||
romfread(rom, 0xd000, 1, f);
|
||||
fclose(f);
|
||||
biosmask = 0x1ffff;
|
||||
return 1;
|
||||
|
|
@ -898,6 +898,15 @@ int loadbios()
|
|||
fclose(f);
|
||||
return 1;
|
||||
|
||||
case ROM_XI8088:
|
||||
f = romfopen("xi8088/bios-xi8088.bin", "rb"); /* use the bios without xt-ide because it's configurable in pcem */
|
||||
if (!f) break;
|
||||
/* high bit is flipped in xi8088 */
|
||||
romfread(rom + 0x10000, 0x10000, 1, f);
|
||||
romfread(rom, 0x10000, 1, f);
|
||||
fclose(f);
|
||||
biosmask = 0x1ffff;
|
||||
return 1;
|
||||
}
|
||||
printf("Failed to load ROM!\n");
|
||||
if (f) fclose(f);
|
||||
|
|
|
|||
17
src/model.c
17
src/model.c
|
|
@ -62,6 +62,7 @@
|
|||
#include "vid_tandy.h"
|
||||
#include "vid_t1000.h"
|
||||
#include "wd76c10.h"
|
||||
#include "xi8088.h"
|
||||
|
||||
void xt_init();
|
||||
void pcjr_init();
|
||||
|
|
@ -103,6 +104,7 @@ void at_zappa_init();
|
|||
void at_pb520r_init();
|
||||
void at_pb570_init();
|
||||
void compaq_pip_init();
|
||||
void xt_xi8088_init();
|
||||
int model;
|
||||
|
||||
int AMSTRAD, AT, PCI, TANDY;
|
||||
|
|
@ -126,6 +128,7 @@ MODEL models[] =
|
|||
{"[8088] Thomson TO16 PC", ROM_TO16_PC, "to16_pc", { {"", cpus_8088}, {"", NULL}, {"", NULL}}, 0, 0, 512, 640, 128, xt_init, NULL},
|
||||
{"[8088] Toshiba 1000", ROM_T1000, "t1000", { {"", cpus_8088}, {"", NULL}, {"", NULL}}, 1, 0, 512,1280, 768, xt_t1000_init, &t1000_device},
|
||||
{"[8088] VTech Laser Turbo XT", ROM_LTXT, "ltxt", { {"", cpus_8088}, {"", NULL}, {"", NULL}}, 0, 0, 64,1152, 64, xt_laserxt_init, NULL},
|
||||
{"[8088] Xi8088", ROM_XI8088, "xi8088", { {"", cpus_8088}, {"", NULL}, {"", NULL}}, 0, MODEL_AT|MODEL_PS2, 64,1024, 128, xt_xi8088_init, NULL},
|
||||
|
||||
{"[8086] Amstrad PC1512", ROM_PC1512, "pc1512", { {"", cpus_pc1512}, {"", NULL}, {"", NULL}}, 1, MODEL_AMSTRAD, 512, 640, 128, ams_init, NULL},
|
||||
{"[8086] Amstrad PC1640", ROM_PC1640, "pc1640", { {"", cpus_8086}, {"", NULL}, {"", NULL}}, 1, MODEL_AMSTRAD, 640, 640, 0, ams_init, NULL},
|
||||
|
|
@ -350,6 +353,20 @@ void xt_laserxt_init()
|
|||
laserxt_init();
|
||||
}
|
||||
|
||||
void xt_xi8088_init()
|
||||
{
|
||||
/* TODO: set UMBs? See if PCem always sets when we have > 640KB ram and avoids conflicts when a peripheral uses the same memory space */
|
||||
common_init();
|
||||
mem_add_bios();
|
||||
keyboard_at_init();
|
||||
keyboard_at_init_ps2();
|
||||
nmi_init();
|
||||
nvr_init();
|
||||
pic2_init();
|
||||
device_add(&gameport_device);
|
||||
xi8088_init();
|
||||
}
|
||||
|
||||
void at_init()
|
||||
{
|
||||
AT = 1;
|
||||
|
|
|
|||
|
|
@ -301,6 +301,7 @@ void loadnvr()
|
|||
case ROM_PB570: f = nvrfopen("pb570.nvr", "rb"); nvrmask = 127; break;
|
||||
case ROM_ZAPPA: f = nvrfopen("zappa.nvr", "rb"); nvrmask = 127; break;
|
||||
case ROM_PB520R: f = nvrfopen("pb520r.nvr", "rb"); nvrmask = 127; break;
|
||||
case ROM_XI8088: f = nvrfopen("xi8088.nvr", "rb"); nvrmask = 127; break;
|
||||
|
||||
default: return;
|
||||
}
|
||||
|
|
@ -387,6 +388,7 @@ void savenvr()
|
|||
case ROM_PB570: f = nvrfopen("pb570.nvr", "wb"); break;
|
||||
case ROM_ZAPPA: f = nvrfopen("zappa.nvr", "wb"); break;
|
||||
case ROM_PB520R: f = nvrfopen("pb520r.nvr", "wb"); break;
|
||||
case ROM_XI8088: f = nvrfopen("xi8088.nvr", "wb"); break;
|
||||
|
||||
default: return;
|
||||
}
|
||||
|
|
|
|||
36
src/xi8088.c
Normal file
36
src/xi8088.c
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
#include "ibm.h"
|
||||
#include "io.h"
|
||||
#include "cpu.h"
|
||||
#include "keyboard_at.h"
|
||||
|
||||
#include "xi8088.h"
|
||||
|
||||
static uint8_t xi8088_turbo;
|
||||
|
||||
uint8_t xi8088_turbo_get()
|
||||
{
|
||||
return xi8088_turbo;
|
||||
}
|
||||
|
||||
void xi8088_turbo_set(uint8_t value)
|
||||
{
|
||||
xi8088_turbo = value;
|
||||
if (!value)
|
||||
{
|
||||
pclog("Xi8088 turbo off\n");
|
||||
int c = cpu;
|
||||
cpu = 0; /* 8088/4.77 */
|
||||
cpu_set();
|
||||
cpu = c;
|
||||
}
|
||||
else
|
||||
{
|
||||
pclog("Xi8088 turbo on\n");
|
||||
cpu_set();
|
||||
}
|
||||
}
|
||||
|
||||
void xi8088_init()
|
||||
{
|
||||
xi8088_turbo = 1;
|
||||
}
|
||||
3
src/xi8088.h
Normal file
3
src/xi8088.h
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
uint8_t xi8088_turbo_get();
|
||||
void xi8088_turbo_set(uint8_t value);
|
||||
void xi8088_init();
|
||||
Loading…
Reference in a new issue