diff --git a/pc98-testme-1/contents/BUILD.BAT b/pc98-testme-1/contents/BUILD.BAT index 153f08e60..34b847170 100755 --- a/pc98-testme-1/contents/BUILD.BAT +++ b/pc98-testme-1/contents/BUILD.BAT @@ -1 +1,2 @@ -tcc -mt -lt -O -Z -3 ansiatrb.c +tcc -mt -lt -O -Z -3 ansiatrb.c +tcc -mt -lt -O -Z -k- charmode.c diff --git a/pc98-testme-1/contents/CHARMODE.C b/pc98-testme-1/contents/CHARMODE.C new file mode 100644 index 000000000..da8ed904d --- /dev/null +++ b/pc98-testme-1/contents/CHARMODE.C @@ -0,0 +1,53 @@ +volatile unsigned char far* pc98_dos_charmode(void) +{ + return (unsigned char far *)((char __seg *)(0x0060) + 0x8A); +} + +void putc(const char c) +{ + __asm { + mov dl, c + mov ah, 0x02 + int 0x21 + } +} + +void puts(const char *str) +{ + while(*str) { + putc(*str); + str++; + } +} + +int main(void) +{ + static const char *CHARMODE_NAME[2] = { + "\x1B[17mgraph mode\x1B[0m", "\x1B[20mkanji mode\x1B[0m" + }; + static const char *OTHER_ESC[2] = {"\x1B)0", "\x1B)3"}; + + int i = 0; + unsigned char charmode = *pc98_dos_charmode(); + + puts("Switched from "); + puts(CHARMODE_NAME[charmode]); + + puts(OTHER_ESC[charmode]); + + puts(" to "); + puts(CHARMODE_NAME[*pc98_dos_charmode()]); + puts(".\r\n"); + + puts("0x80 - 0xA0: "); + for(i = 0x80; i <= 0xA0; i++) { + putc(i); + } + puts("\r\n0xE0 - 0xFF: "); + for(i = 0xE0; i <= 0xFF; i++) { + putc(i); + } + + puts("\r\nRe-run to switch back.\r\n"); + return 0; +} diff --git a/pc98-testme-1/contents/CHARMODE.COM b/pc98-testme-1/contents/CHARMODE.COM new file mode 100644 index 000000000..c24fab757 Binary files /dev/null and b/pc98-testme-1/contents/CHARMODE.COM differ