2 NEC TK-80BS (COMPO BS/80) Emulator 'eTK-80BS'
4 Author : Takeda.Toshiya
13 #define DEVICE_NAME "NEC TK-80BS"
14 #define CONFIG_NAME "tk80bs"
16 // device informations for virtual machine
17 #define FRAMES_PER_SEC 59.9
18 #define LINES_PER_FRAME 262
19 #define CPU_CLOCKS 2048000
21 #define I8255_AUTO_HAND_SHAKE
22 #define SCREEN_WIDTH 768
23 #define SCREEN_HEIGHT 800
24 #define MEMORY_ADDR_MAX 0x10000
25 #define MEMORY_BANK_SIZE 0x200
26 #define IO_ADDR_MAX 0x10000
27 #define SCREEN_WIDTH_ASPECT SCREEN_WIDTH
28 #define SCREEN_HEIGHT_ASPECT SCREEN_HEIGHT
29 #define WINDOW_WIDTH_ASPECT 256
30 #define WINDOW_HEIGHT_ASPECT 192
32 // device informations for win32
33 #define ONE_BOARD_MICRO_COMPUTER
34 #define MAX_BUTTONS 25
35 #define MAX_DRAW_RANGES 9
36 #define BITMAP_OFFSET_Y 384
37 #define USE_BOOT_MODE 2
39 #define TAPE_BINARY_ONLY
40 #define USE_BINARY_FILE1
41 #define NOTIFY_KEY_DOWN
42 #define USE_ALT_F10_KEY
43 #define USE_AUTO_KEY 5
44 #define USE_AUTO_KEY_RELEASE 6
45 #define USE_AUTO_KEY_NO_CAPS
48 #include "../../common.h"
49 #include "../../fileio.h"
52 const _TCHAR* caption;
58 // virtual key codes 0x80-0x8f and 0x98-0x9f are not used in pc keyboard
59 {_T("0"), 512, 750, 40, 40, 20, 0x80},
60 {_T("1"), 557, 750, 40, 40, 20, 0x81},
61 {_T("2"), 602, 750, 40, 40, 20, 0x82},
62 {_T("3"), 647, 750, 40, 40, 20, 0x83},
63 {_T("4"), 512, 705, 40, 40, 20, 0x84},
64 {_T("5"), 557, 705, 40, 40, 20, 0x85},
65 {_T("6"), 602, 705, 40, 40, 20, 0x86},
66 {_T("7"), 647, 705, 40, 40, 20, 0x87},
67 {_T("8"), 512, 660, 40, 40, 20, 0x88},
68 {_T("9"), 557, 660, 40, 40, 20, 0x89},
69 {_T("A"), 602, 660, 40, 40, 20, 0x8a},
70 {_T("B"), 647, 660, 40, 40, 20, 0x8b},
71 {_T("C"), 512, 615, 40, 40, 20, 0x8c},
72 {_T("D"), 557, 615, 40, 40, 20, 0x8d},
73 {_T("E"), 602, 615, 40, 40, 20, 0x8e},
74 {_T("F"), 647, 615, 40, 40, 20, 0x8f},
75 {_T("RET"), 512, 570, 40, 40, 9, 0x98},
76 {_T("RUN"), 557, 570, 40, 40, 9, 0x99},
77 {_T("STORE\nDATA"), 602, 570, 40, 40, 9, 0x9a},
78 {_T("LOAD\nDATA"), 647, 570, 40, 40, 9, 0x9b},
79 {_T("RESET"), 692, 570, 40, 40, 9, 0x00},
80 {_T("ADRS\nSET"), 692, 615, 40, 40, 9, 0x9c},
81 {_T("READ\nINCR"), 692, 660, 40, 40, 9, 0x9d},
82 {_T("READ\nDECR"), 692, 705, 40, 40, 9, 0x9e},
83 {_T("WRITE\nINCR"), 692, 750, 40, 40, 9, 0x9f},
89 {451, 410, 32, 45 }, // 7-seg LEDs
97 {0, 0, 768, 384}, // CRT
141 uint8 ram[0x5000]; // with TK-M20K
147 // ----------------------------------------
149 // ----------------------------------------
154 // ----------------------------------------
155 // for emulation class
156 // ----------------------------------------
158 // drive virtual machine
164 DEVICE *get_cpu(int index);
171 void initialize_sound(int rate, int samples);
172 uint16* create_sound(int* extra_frames);
173 int sound_buffer_ptr();
176 void key_down(int code, bool repeat);
177 void key_up(int code);
180 void load_binary(int drv, const _TCHAR* file_path);
181 void save_binary(int drv, const _TCHAR* file_path);
182 void play_tape(const _TCHAR* file_path);
183 void rec_tape(const _TCHAR* file_path);
185 bool tape_inserted();
188 void update_config();
190 // ----------------------------------------
192 // ----------------------------------------
195 DEVICE* get_device(int id);
197 DEVICE* first_device;