|
|
| version 1.32, 2004/03/07 23:04:50 | version 1.35, 2004/04/08 13:08:22 |
|---|---|
| Line 8 | Line 8 |
| #include "font.h" | #include "font.h" |
| static int sti_waiting = 0; | |
| typedef struct { | typedef struct { |
| BYTE GBON_PTN; | BYTE GBON_PTN; |
| BYTE GBBCC; | BYTE GBBCC; |
| Line 41 typedef struct { | Line 39 typedef struct { |
| static const UINT8 modenum[4] = {3, 1, 0, 2}; | static const UINT8 modenum[4] = {3, 1, 0, 2}; |
| static const CRTDATA crtdata[7] = { | static const CRTDATA crtdata[7] = { |
| {0x07, 0x00, 0x07, 0x08}, // 200-20 | {0x09, 0x1f, 0x08, 0x08}, // 200-20 |
| {0x09, 0x1f, 0x08, 0x08}, // 200-25 | {0x07, 0x00, 0x07, 0x08}, // 200-25 |
| {0x0f, 0x00, 0x0f, 0x10}, // 400-20 | {0x13, 0x1e, 0x11, 0x10}, // 400-20 |
| {0x13, 0x1e, 0x11, 0x10}, // 400-25 | {0x0f, 0x00, 0x0f, 0x10}, // 400-25 |
| {0x17, 0x1c, 0x13, 0x10}, // 480-20 | {0x17, 0x1c, 0x13, 0x10}, // 480-20 |
| {0x12, 0x1f, 0x11, 0x10}, // 480-25 | {0x12, 0x1f, 0x11, 0x10}, // 480-25 |
| {0x0f, 0x00, 0x0f, 0x10}}; // 480-30 | {0x0f, 0x00, 0x0f, 0x10}}; // 480-30 |
| Line 114 const CRTDATA *crt; | Line 112 const CRTDATA *crt; |
| gdc.mode1 |= 0x08; | gdc.mode1 |= 0x08; |
| crt += 2; | crt += 2; |
| } | } |
| if (mode & 0x01) { | if (!(mode & 0x01)) { |
| crt += 1; // 20行 | crt += 1; // 25行 |
| } | } |
| if (mode & 0x02) { | if (mode & 0x02) { |
| gdc.mode1 |= 0x04; // 40桁 | gdc.mode1 |= 0x04; // 40桁 |
| Line 135 const CRTDATA *crt; | Line 133 const CRTDATA *crt; |
| bios0x18_10(0); | bios0x18_10(0); |
| } | } |
| void bios0x18_0c(void) { | |
| if (!(gdcs.textdisp & GDCSCRN_ENABLE)) { | |
| gdcs.textdisp |= GDCSCRN_ENABLE; | |
| screenupdate |= 2; | |
| } | |
| } | |
| static void bios0x18_0f(UINT seg, UINT off, REG8 num, REG8 cnt) { | static void bios0x18_0f(UINT seg, UINT off, REG8 num, REG8 cnt) { |
| BYTE *p; | BYTE *p; |
| Line 468 void bios0x18_42(REG8 mode) { | Line 474 void bios0x18_42(REG8 mode) { |
| scrn = bios0x18_31bh(); | scrn = bios0x18_31bh(); |
| if ((mem[MEMB_CRT_BIOS] & 0x80) && | if ((mem[MEMB_CRT_BIOS] & 0x80) && |
| (((scrn & 0x30) == 0x30) || (crtmode == 3))) { | (((scrn & 0x30) == 0x30) || (crtmode == 3))) { |
| bios0x18_30(rate, (crtmode << 4) + 1); | bios0x18_30(rate, (REG8)((crtmode << 4) + 1)); |
| } | } |
| else { | else { |
| #endif | #endif |
| Line 760 void bios0x18(void) { | Line 766 void bios0x18(void) { |
| MEML_READ16(CPU_SS, CPU_SP))); | MEML_READ16(CPU_SS, CPU_SP))); |
| #endif | #endif |
| sti_waiting ^= 1; | |
| if (sti_waiting) { // 割込み許可の遊び | |
| CPU_STI; | |
| if (PICEXISTINTR) { | |
| CPU_IP--; | |
| nevent_forceexit(); | |
| return; | |
| } | |
| } | |
| sti_waiting = 0; | |
| switch(CPU_AH) { | switch(CPU_AH) { |
| case 0x00: // キー・データの読みだし | case 0x00: // キー・データの読みだし |
| if (mem[MEMB_KB_COUNT]) { | if (mem[MEMB_KB_COUNT]) { |
| Line 825 void bios0x18(void) { | Line 820 void bios0x18(void) { |
| break; | break; |
| case 0x0c: // テキスト画面の表示開始 | case 0x0c: // テキスト画面の表示開始 |
| if (!(gdcs.textdisp & GDCSCRN_ENABLE)) { | bios0x18_0c(); |
| gdcs.textdisp |= GDCSCRN_ENABLE; | |
| screenupdate |= 2; | |
| } | |
| break; | break; |
| case 0x0d: // テキスト画面の表示終了 | case 0x0d: // テキスト画面の表示終了 |
| Line 940 void bios0x18(void) { | Line 932 void bios0x18(void) { |
| if (tmp.r8 == 0x05) { | if (tmp.r8 == 0x05) { |
| CPU_AL = 0; | CPU_AL = 0; |
| CPU_BH = 0; | CPU_BH = 0; |
| TRACEOUT(("success")); | |
| } | } |
| else { | else { |
| CPU_AL = 1; | CPU_AL = 1; |
| CPU_BH = 1; | CPU_BH = 1; |
| TRACEOUT(("failure")); | |
| } | } |
| } | } |
| break; | break; |