OSDN Git Service

SimpleHTMLEditorを追加。
[chnosproject/CHNOSProject.git] / CHNOSProject / chnos / tolset_chn_000 / chnos_009 / chnos / asmhead.nas
diff --git a/CHNOSProject/chnos/tolset_chn_000/chnos_009/chnos/asmhead.nas b/CHNOSProject/chnos/tolset_chn_000/chnos_009/chnos/asmhead.nas
deleted file mode 100644 (file)
index d1ed5f6..0000000
+++ /dev/null
@@ -1,888 +0,0 @@
-\r
-[INSTRSET "i486p"]\r
-BOTPAK  equ             0x00280000\r
-DSKCAC  equ             0x00100000\r
-DSKCAC0 equ             0x00008000\r
-\r
-; BOOT_INFO_ADDR\r
-CYLS    equ             0x0ff0 ; uchar\r
-LEDS    equ             0x0ff1 ; uchar\r
-VMODE   equ             0x0ff2 ; uchar\r
-                               ; uchar Padding\r
-SCRNX   equ             0x0ff4 ; ushort\r
-SCRNY   equ             0x0ff6 ; ushort\r
-VRAM    equ             0x0ff8 ; uchar*\r
-VESAVER        equ             0x0ffc  ; ushort\r
-APMVER equ             0x0ffe  ; ushort\r
-ACPI_MEMMAPS   equ     0x1000  ; uint\r
-ACPI_MEMMAP    equ     0x1004  ; 0x18(24)*16=0x180(384)bytes\r
-APM_FLAGS      equ     0x1184  ; ushort\r
-\r
-; INFO_ADDR\r
-ADR_VESA_BIOS_INFO     equ     0x0d00  ;0x0d00-0x0dff\r
-ADR_VESA_MODE_INFO     equ     0x0e00  ;0x0e00-0x0eff\r
-\r
-XRESOLUTION    equ     0x12\r
-YRESOLUTION    equ     0x14\r
-BITSPERPIXEL   equ     0x19\r
-PHYSBASEPTR    equ     0x28\r
-\r
-[BITS 16]\r
-\r
-        org     0xc200\r
-asmhead:\r
-        mov     ax, 0\r
-        mov     ss, ax\r
-        mov     sp, 0xc200\r
-        mov     ds, ax\r
-        mov     es, ax\r
-\r
-       mov     ah, 0x00\r
-       mov     al, 0x03\r
-       int     0x10\r
-\r
-       lea     di, [msg000]\r
-       call    text_putstr\r
-       call    text_newline\r
-\r
-       call    a20_try_loop\r
-       call    text_newline\r
-\r
-       call    chk_acpi_memmap\r
-\r
-       call    chk_apm\r
-       call    text_newline\r
-\r
-       call    chk_vesa\r
-\r
-       call    set_vesa\r
-       call    chk_keyled\r
-\r
-        call    pmode\r
-\r
-halt_loop:\r
-       hlt\r
-       jmp     halt_loop\r
-\r
-; \83T\83u\83\8b\81[\83`\83\93\r
-\r
-chk_acpi_memmap:\r
-       pushad\r
-       mov     edi, ACPI_MEMMAP\r
-       mov     ebx, 0\r
-chk_acpi_memmap_loop:\r
-       mov     eax, 0xe820\r
-       mov     ecx, 24\r
-       mov     edx, 0x534d4150 ; edx="SMAP"\r
-       int     0x15\r
-       jc      chk_acpi_memmap_err\r
-       add     edi, 24\r
-       or      ebx, ebx\r
-       jnz     chk_acpi_memmap_loop\r
-       sub     edi, ACPI_MEMMAP\r
-       mov     eax, edi\r
-       xor     edx, edx\r
-       mov     ecx, 24\r
-       div     ecx\r
-       mov     [ACPI_MEMMAPS], eax\r
-       lea     di, [msg017]\r
-       call    text_putstr\r
-       call    text_newline\r
-       jmp     chk_acpi_memmap_end\r
-\r
-chk_acpi_memmap_err:\r
-       lea     di, [msg016]\r
-       call    text_putstr\r
-       call    text_newline\r
-       mov     dword [ACPI_MEMMAPS], 0\r
-\r
-chk_acpi_memmap_end:\r
-       popad\r
-       ret\r
-\r
-chk_keyled:\r
-       mov     ah, 0x02\r
-       int     0x16\r
-       mov     [LEDS], al\r
-       ret\r
-\r
-A20_TEST_LOOPS         equ     32\r
-A20_ENABLE_LOOPS       equ     255\r
-A20_TEST_ADDR          equ     4*0x80\r
-\r
-\r
-a20_try_loop:\r
-a20_none:\r
-       call    a20_test\r
-       jnz     a20_done\r
-a20_bios:\r
-       mov     ax, 0x2401\r
-       pushfd\r
-       int     0x15\r
-       popfd\r
-       call    a20_test\r
-       jnz     a20_done\r
-a20_kbc:\r
-       call    empty_8042\r
-       call    a20_test\r
-       jnz     a20_done\r
-       mov     al, 0xD1\r
-       out     0x64, al\r
-       call    empty_8042\r
-       mov     al, 0xDF\r
-       out     0x60, al\r
-       call    empty_8042\r
-a20_kbc_wait:\r
-       xor     cx, cx\r
-a20_kbc_wait_loop:\r
-       call    a20_test\r
-       jnz     a20_done\r
-       loop    a20_kbc_wait_loop\r
-a20_fast:\r
-       in      al, 0x92\r
-       or      al, 0x02\r
-\r
-       and     al, 0xFE\r
-       out     0x92, al\r
-a20_fast_wait:\r
-       xor     cx, cx\r
-a20_fast_wait_loop:\r
-       call    a20_test\r
-       jnz     a20_done\r
-       loop    a20_fast_wait_loop\r
-       dec     byte [a20_tries]\r
-       jnz     a20_try_loop\r
-a20_die:\r
-       lea     di, [msg014]\r
-       call    text_putstr\r
-       jmp     halt_loop\r
-\r
-a20_tries:\r
-       db      A20_ENABLE_LOOPS\r
-\r
-a20_done:\r
-       lea     di, [msg015]\r
-       call    text_putstr\r
-       ret\r
-\r
-a20_test:\r
-       push    cx\r
-       push    ax\r
-       xor     cx, cx\r
-       mov     fs, cx\r
-       dec     cx\r
-       mov     gs, cx\r
-       mov     cx, A20_TEST_LOOPS\r
-       mov     ax, word [fs:A20_TEST_ADDR]\r
-       push    ax\r
-a20_test_wait:\r
-       inc     ax\r
-       mov     word [fs:A20_TEST_ADDR], ax\r
-       call    delay\r
-       cmp     ax, word [gs:A20_TEST_ADDR + 0x10]\r
-       loop    a20_test_wait\r
-\r
-       pop     word [fs:A20_TEST_ADDR]\r
-       pop     ax\r
-       pop     cx\r
-       ret\r
-\r
-empty_8042:\r
-       push    ecx\r
-       mov     ecx, 100000\r
-\r
-empty_8042_loop:\r
-       dec     ecx\r
-       jz      empty_8042_end_loop\r
-\r
-       call    delay\r
-\r
-       in      al, 0x64\r
-       test    al, 1                   \r
-       jz      no_output\r
-\r
-       call    delay\r
-;      in      al, 0x60\r
-\r
-       jmp     empty_8042_loop\r
-\r
-no_output:\r
-       test    al, 2\r
-       jnz     empty_8042_loop\r
-\r
-empty_8042_end_loop:\r
-       pop     ecx\r
-       ret\r
-\r
-delay:\r
-       out     0x80, al\r
-       ret\r
-\r
-set_vesa:      ; cx\82É\83\82\81[\83h\94Ô\8d\86\82ð\95Û\91¶ bx\82É\95\8e\9a\90\94\82ð\95Û\91\r
-       pusha\r
-set_vesa_start:\r
-       call    text_newline\r
-       lea     di, [msg007]\r
-       call    text_putstr\r
-       lea     di, [msg008]\r
-       call    text_putstr\r
-       lea     di, [msg009]\r
-       call    text_putstr\r
-       mov     bx, 0x0000\r
-       mov     cx, 0x0000\r
-set_vesa_key_loop:\r
-       mov     ah, 0x00\r
-       int     0x16\r
-       cmp     ah, 0x0e\r
-       je      set_vesa_key_bs\r
-       jmp     set_vesa_key_chk\r
-set_vesa_key_bs:\r
-       cmp     bx, 0\r
-       je      set_vesa_key_loop\r
-       mov     al, 0x08\r
-       mov     ah, 0x0e\r
-       int     0x10\r
-       mov     al, ' '\r
-       mov     ah, 0x0e\r
-       int     0x10\r
-       mov     al, 0x08\r
-       mov     ah, 0x0e\r
-       int     0x10\r
-       dec     bx\r
-       shr     cx, 4\r
-       jmp     set_vesa_key_loop\r
-set_vesa_key_chk:\r
-       cmp     bx, 4\r
-       je      set_vesa_key_chk_ent\r
-       cmp     ah, 0x0b\r
-       je      set_vesa_key_chk_0\r
-       cmp     ah, 0x02\r
-       je      set_vesa_key_chk_1\r
-       cmp     ah, 0x03\r
-       je      set_vesa_key_chk_2\r
-       cmp     ah, 0x04\r
-       je      set_vesa_key_chk_3\r
-       cmp     ah, 0x05\r
-       je      set_vesa_key_chk_4\r
-       cmp     ah, 0x06\r
-       je      set_vesa_key_chk_5\r
-       cmp     ah, 0x07\r
-       je      set_vesa_key_chk_6\r
-       cmp     ah, 0x08\r
-       je      set_vesa_key_chk_7\r
-       cmp     ah, 0x09\r
-       je      set_vesa_key_chk_8\r
-       cmp     ah, 0x0a\r
-       je      set_vesa_key_chk_9\r
-       cmp     ah, 0x1e\r
-       je      set_vesa_key_chk_A\r
-       cmp     ah, 0x30\r
-       je      set_vesa_key_chk_B\r
-       cmp     ah, 0x2e\r
-       je      set_vesa_key_chk_C\r
-       cmp     ah, 0x20\r
-       je      set_vesa_key_chk_D\r
-       cmp     ah, 0x12\r
-       je      set_vesa_key_chk_E\r
-       cmp     ah, 0x21\r
-       je      set_vesa_key_chk_F\r
-       jmp     set_vesa_key_loop\r
-set_vesa_key_chk_0:\r
-       mov     al, '0'\r
-       mov     ah, 0x0e\r
-       int     0x10\r
-       inc     bx\r
-       shl     cx, 4\r
-       add     cx, 0x00\r
-       jmp     set_vesa_key_loop\r
-set_vesa_key_chk_1:\r
-       mov     al, '1'\r
-       mov     ah, 0x0e\r
-       int     0x10\r
-       inc     bx\r
-       shl     cx, 4\r
-       add     cx, 0x01\r
-       jmp     set_vesa_key_loop\r
-set_vesa_key_chk_2:\r
-       mov     al, '2'\r
-       mov     ah, 0x0e\r
-       int     0x10\r
-       inc     bx\r
-       shl     cx, 4\r
-       add     cx, 0x02\r
-       jmp     set_vesa_key_loop\r
-set_vesa_key_chk_3:\r
-       mov     al, '3'\r
-       mov     ah, 0x0e\r
-       int     0x10\r
-       inc     bx\r
-       shl     cx, 4\r
-       add     cx, 0x03\r
-       jmp     set_vesa_key_loop\r
-set_vesa_key_chk_4:\r
-       mov     al, '4'\r
-       mov     ah, 0x0e\r
-       int     0x10\r
-       inc     bx\r
-       shl     cx, 4\r
-       add     cx, 0x04\r
-       jmp     set_vesa_key_loop\r
-set_vesa_key_chk_5:\r
-       mov     al, '5'\r
-       mov     ah, 0x0e\r
-       int     0x10\r
-       inc     bx\r
-       shl     cx, 4\r
-       add     cx, 0x05\r
-       jmp     set_vesa_key_loop\r
-set_vesa_key_chk_6:\r
-       mov     al, '6'\r
-       mov     ah, 0x0e\r
-       int     0x10\r
-       inc     bx\r
-       shl     cx, 4\r
-       add     cx, 0x06\r
-       jmp     set_vesa_key_loop\r
-set_vesa_key_chk_7:\r
-       mov     al, '7'\r
-       mov     ah, 0x0e\r
-       int     0x10\r
-       inc     bx\r
-       shl     cx, 4\r
-       add     cx, 0x07\r
-       jmp     set_vesa_key_loop\r
-set_vesa_key_chk_8:\r
-       mov     al, '8'\r
-       mov     ah, 0x0e\r
-       int     0x10\r
-       inc     bx\r
-       shl     cx, 4\r
-       add     cx, 0x08\r
-       jmp     set_vesa_key_loop\r
-set_vesa_key_chk_9:\r
-       mov     al, '9'\r
-       mov     ah, 0x0e\r
-       int     0x10\r
-       inc     bx\r
-       shl     cx, 4\r
-       add     cx, 0x09\r
-       jmp     set_vesa_key_loop\r
-set_vesa_key_chk_A:\r
-       mov     al, 'A'\r
-       mov     ah, 0x0e\r
-       int     0x10\r
-       inc     bx\r
-       shl     cx, 4\r
-       add     cx, 0x0a\r
-       jmp     set_vesa_key_loop\r
-set_vesa_key_chk_B:\r
-       mov     al, 'B'\r
-       mov     ah, 0x0e\r
-       int     0x10\r
-       inc     bx\r
-       shl     cx, 4\r
-       add     cx, 0x0b\r
-       jmp     set_vesa_key_loop\r
-set_vesa_key_chk_C:\r
-       mov     al, 'C'\r
-       mov     ah, 0x0e\r
-       int     0x10\r
-       inc     bx\r
-       shl     cx, 4\r
-       add     cx, 0x0c\r
-       jmp     set_vesa_key_loop\r
-set_vesa_key_chk_D:\r
-       mov     al, 'D'\r
-       mov     ah, 0x0e\r
-       int     0x10\r
-       inc     bx\r
-       shl     cx, 4\r
-       add     cx, 0x0d\r
-       jmp     set_vesa_key_loop\r
-set_vesa_key_chk_E:\r
-       mov     al, 'E'\r
-       mov     ah, 0x0e\r
-       int     0x10\r
-       inc     bx\r
-       shl     cx, 4\r
-       add     cx, 0x0e\r
-       jmp     set_vesa_key_loop\r
-set_vesa_key_chk_F:\r
-       mov     al, 'F'\r
-       mov     ah, 0x0e\r
-       int     0x10\r
-       inc     bx\r
-       shl     cx, 4\r
-       add     cx, 0x0f\r
-       jmp     set_vesa_key_loop\r
-set_vesa_key_chk_ent:\r
-       cmp     ah, 0x1c\r
-       jne     set_vesa_key_loop\r
-       call    text_newline\r
-       jmp     set_vesa_key_end\r
-set_vesa_key_end:\r
-       lea     di, [msg010]\r
-       call    text_putstr\r
-       mov     ax, cx\r
-       call    text_puthex_str_16\r
-       call    text_newline\r
-\r
-       cmp     cx, 0x0000\r
-       je      set_VGA\r
-\r
-       mov     ax, 0x4f01\r
-       mov     di, ADR_VESA_MODE_INFO\r
-       int     0x10\r
-       cmp     al, 0x4f\r
-       jne     set_vesa_nosup\r
-       cmp     ah, 0\r
-       jne     set_vesa_func_err\r
-\r
-       lea     di, [msg012]\r
-       call    text_putstr\r
-\r
-       mov     ax, 0x0000\r
-       mov     al, [ADR_VESA_MODE_INFO + BITSPERPIXEL]\r
-       call    hex2bcd_16\r
-       call    text_puthex_str_08_no_0x\r
-\r
-       mov     al, '('\r
-       mov     ah, 0x0e\r
-       int     0x10\r
-       mov     ax, [ADR_VESA_MODE_INFO + XRESOLUTION]\r
-       call    hex2bcd_16\r
-       call    text_puthex_str_16_no_0x\r
-       mov     al, 'x'\r
-       mov     ah, 0x0e\r
-       int     0x10\r
-       mov     ax, [ADR_VESA_MODE_INFO + YRESOLUTION]\r
-       call    hex2bcd_16\r
-       call    text_puthex_str_16_no_0x\r
-       mov     al, ')'\r
-       mov     ah, 0x0e\r
-       int     0x10\r
-       call    text_newline\r
-\r
-       lea     di, [msg013]\r
-       call    text_putstr\r
-set_vesa_key_YN:\r
-       mov     ah, 0x00\r
-       int     0x16\r
-       cmp     ah, 0x15\r
-       je      set_vesa_key_Y\r
-       cmp     ah, 0x31\r
-       je      set_vesa_key_N\r
-\r
-set_vesa_key_N:\r
-       mov     al, 'N'\r
-       mov     ah, 0x0e\r
-       int     0x10\r
-       call    text_newline\r
-       jmp     set_vesa_start\r
-set_vesa_key_Y:\r
-       mov     al, 'Y'\r
-       mov     ah, 0x0e\r
-       int     0x10\r
-       call    text_newline\r
-\r
-       mov     ax, 0x4f02\r
-       mov     bx, cx\r
-       or      bx, 0x4000\r
-       int     0x10\r
-       cmp     al, 0x4f\r
-       jne     set_vesa_nosup\r
-       cmp     ah, 0\r
-       jne     set_vesa_func_err\r
-\r
-       mov     ax, [ADR_VESA_MODE_INFO + XRESOLUTION]\r
-       mov     [SCRNX], ax\r
-       mov     ax, [ADR_VESA_MODE_INFO + YRESOLUTION]\r
-       mov     [SCRNY], ax\r
-       mov     al, [ADR_VESA_MODE_INFO + BITSPERPIXEL]\r
-       mov     [VMODE], al\r
-       mov     eax, [ADR_VESA_MODE_INFO + PHYSBASEPTR]\r
-       mov     [VRAM], eax\r
-\r
-       jmp     set_vesa_end\r
-set_vesa_nosup:\r
-       lea     di, [msg001]\r
-       call    text_putstr\r
-       lea     di, [msg003]\r
-       call    text_putstr\r
-       jmp     set_vesa_start\r
-set_vesa_func_err:\r
-       lea     di, [msg001]\r
-       call    text_putstr\r
-       lea     di, [msg011]\r
-       call    text_putstr\r
-       jmp     set_vesa_start\r
-set_VGA:\r
-       mov     ah, 0x00\r
-       mov     al, 0x13\r
-       int     0x10\r
-       mov     byte [VMODE], 8\r
-       mov     word [SCRNX], 320\r
-       mov     word [SCRNY], 200\r
-       mov     dword [VRAM], 0xa0000\r
-       mov     word [ADR_VESA_MODE_INFO + XRESOLUTION], 320\r
-       mov     word [ADR_VESA_MODE_INFO + YRESOLUTION], 200\r
-       mov     byte [ADR_VESA_MODE_INFO + BITSPERPIXEL], 8\r
-       mov     dword [ADR_VESA_MODE_INFO + PHYSBASEPTR], 0xa0000\r
-set_vesa_end:\r
-       popa\r
-       ret\r
-\r
-chk_apm:\r
-       pusha\r
-       lea     di, [msg006]\r
-       call    text_putstr\r
-       lea     di, [msg002]\r
-       call    text_putstr\r
-\r
-       mov     ax, 0x5300\r
-       mov     bx, 0x0000\r
-       pusha\r
-       int     0x15\r
-       jc      chk_apm_err_nosup\r
-       mov     [APMVER], ax\r
-       mov     [APM_FLAGS], cx\r
-       popa\r
-\r
-       lea     di, [msg004]\r
-       call    text_putstr\r
-       mov     ax, [APMVER]\r
-       shr     ax, 8\r
-       call    text_puthex_char\r
-       mov     al, '.'\r
-       mov     ah, 0x0e\r
-       int     0x10\r
-       mov     ax, [APMVER]\r
-       shr     ax, 4\r
-       call    text_puthex_char\r
-       mov     ax, [APMVER]\r
-       call    text_puthex_char\r
-       jmp     chk_apm_end\r
-\r
-chk_apm_err_nosup:\r
-       mov     word [APMVER], 0x0000\r
-       mov     word [APM_FLAGS], 0x0000\r
-       lea     di, [msg006]\r
-       call    text_putstr\r
-       lea     di, [msg003]\r
-       call    text_putstr\r
-chk_apm_end:\r
-       popa\r
-       ret\r
-\r
-chk_vesa:\r
-       pusha\r
-       lea     di, [msg001]\r
-       call    text_putstr\r
-       lea     di, [msg002]\r
-       call    text_putstr\r
-\r
-       mov     ax, 0x4f00\r
-       mov     di, ADR_VESA_BIOS_INFO\r
-       int     0x10\r
-       cmp     al, 0x4f\r
-       jne     chk_vesa_err_nosup\r
-       lea     di, [msg004]\r
-       call    text_putstr\r
-       mov     ax, [ADR_VESA_BIOS_INFO + 0x04]\r
-       mov     [VESAVER], ax\r
-       shr     ax, 8\r
-       call    text_puthex_char\r
-       mov     al, '.'\r
-       mov     ah, 0x0e\r
-       int     0x10\r
-       mov     ax, [ADR_VESA_BIOS_INFO + 0x04]\r
-       shr     ax, 4\r
-       call    text_puthex_char\r
-       mov     ax, [ADR_VESA_BIOS_INFO + 0x04]\r
-       call    text_puthex_char\r
-\r
-       call    text_newline\r
-\r
-       mov     ax, [ADR_VESA_BIOS_INFO + 0x06 + 0x02]\r
-       mov     di, [ADR_VESA_BIOS_INFO + 0x06]\r
-       mov     bx, es\r
-       mov     es, ax\r
-       call    text_putstr\r
-       mov     es, bx\r
-\r
-       call    text_newline\r
-\r
-       lea     di, [msg005]\r
-       call    text_putstr\r
-\r
-       mov     ax, [ADR_VESA_BIOS_INFO + 0x0e + 0x02]\r
-       mov     di, [ADR_VESA_BIOS_INFO + 0x0e]\r
-       mov     bx, es\r
-       mov     es, ax\r
-chk_vesa_vmode_array_loop:\r
-       mov     ax, [es:di]\r
-       cmp     ax, 0xffff\r
-       je      chk_vesa_vmode_array_end\r
-       mov     cx, ax\r
-\r
-       mov     al, '['\r
-       mov     ah, 0x0e\r
-       int     0x10\r
-\r
-       mov     ax, cx\r
-       call    text_puthex_str_16\r
-\r
-       mov     al, ']'\r
-       mov     ah, 0x0e\r
-       int     0x10\r
-\r
-       add     di, 2\r
-       jmp     chk_vesa_vmode_array_loop\r
-chk_vesa_vmode_array_end:\r
-       mov     es, bx\r
-       jmp     chk_vesa_end\r
-chk_vesa_err_nosup:\r
-       mov     word [VESAVER], 0x0000\r
-       lea     di, [msg001]\r
-       call    text_putstr\r
-       lea     di, [msg003]\r
-       call    text_putstr\r
-       jmp     chk_vesa_end\r
-chk_vesa_end:\r
-       call    text_newline\r
-       popa\r
-       ret\r
-\r
-hex2bcd_16:    ;ax\82ðBCD\82É\95Ï\8a·\81B\8dÅ\91å9999\82Ü\82Å\81Bcx\82É\90Vax\82ð\95Û\91\r
-       push    cx\r
-       push    bx\r
-       push    dx\r
-       and     eax, 0x0000ffff\r
-       mov     cx, 0x000000\r
-\r
-       mov     dx, 0x0000\r
-       mov     bx, 1000\r
-       div     bx\r
-       shl     ax, 12\r
-       or      cx, ax\r
-\r
-       mov     ax, dx\r
-       mov     dx, 0x0000\r
-       mov     bx, 100\r
-       div     bx\r
-       shl     ax, 8\r
-       or      cx, ax\r
-\r
-       mov     ax, dx\r
-       mov     dx, 0x0000\r
-       mov     bx, 10\r
-       div     bx\r
-       shl     ax, 4\r
-       or      cx, ax\r
-\r
-       or      cx, dx\r
-\r
-       mov     ax, cx\r
-\r
-       pop     dx\r
-       pop     bx\r
-       pop     cx\r
-       ret\r
-\r
-text_puthex_str_16:    ; ax\82ð\8fo\97Í\81B0x\82Ì\95t\89Á\82 \82è\81B\r
-       push    ax\r
-       push    cx\r
-       mov     cx, ax\r
-       mov     ah, 0x0e\r
-       mov     al, '0'\r
-       int     0x10\r
-       mov     al, 'x'\r
-       int     0x10\r
-       mov     ax, cx\r
-       shr     ax, 12\r
-       call    text_puthex_char\r
-       mov     ax, cx\r
-       shr     ax, 8\r
-       call    text_puthex_char\r
-       mov     ax, cx\r
-       shr     ax, 4\r
-       call    text_puthex_char\r
-       mov     ax, cx\r
-       call    text_puthex_char\r
-       pop     cx\r
-       pop     ax\r
-       ret\r
-\r
-text_puthex_str_16_no_0x:      ; ax\82ð\8fo\97Í\81B0x\82Ì\95t\89Á\82È\82µ\81BBCD\95\\8e¦\97p\r
-       push    ax\r
-       push    cx\r
-       mov     cx, ax\r
-       shr     ax, 12\r
-       call    text_puthex_char\r
-       mov     ax, cx\r
-       shr     ax, 8\r
-       call    text_puthex_char\r
-       mov     ax, cx\r
-       shr     ax, 4\r
-       call    text_puthex_char\r
-       mov     ax, cx\r
-       call    text_puthex_char\r
-       pop     cx\r
-       pop     ax\r
-       ret\r
-\r
-text_puthex_str_08_no_0x:      ; al\82ð\8fo\97Í\81B0x\82Ì\95t\89Á\82È\82µ\81BBCD\95\\8e¦\97p\r
-       push    ax\r
-       push    cx\r
-       mov     cx, ax\r
-       shr     al, 4\r
-       call    text_puthex_char\r
-       mov     ax, cx\r
-       call    text_puthex_char\r
-       pop     cx\r
-       pop     ax\r
-       ret\r
-\r
-text_puthex_char:      ; al\82Ì\89º\88Ê4bit\95ª\8fo\97Í\81B0x\82Ì\95t\89Á\82Í\82È\82µ\81B\r
-       pusha\r
-       and     al, 0x0f\r
-       cmp     al, 9\r
-       ja      text_puthex_char_alphabet\r
-       add     al, 0x30\r
-       jmp     text_puthex_char_end\r
-text_puthex_char_alphabet:\r
-       add     al, 0x37\r
-text_puthex_char_end:\r
-       mov     ah, 0x0e\r
-       int     0x10\r
-       popa\r
-       ret\r
-\r
-text_putstr:   ; di=char*\r
-       pusha\r
-       mov     cx, 0\r
-       mov     ah, 0x0e\r
-text_putstr_loop:\r
-       mov     al, [es:di]\r
-       cmp     al, 0\r
-       je      text_putstr_end\r
-       inc     di\r
-       int     0x10\r
-       jmp     text_putstr_loop\r
-text_putstr_end:\r
-       popa\r
-       ret\r
-\r
-text_newline:\r
-       pusha\r
-       mov     ah, 0x0e\r
-       mov     al, 0x0d\r
-       int     0x10\r
-       mov     al, 0x0a\r
-       int     0x10\r
-       popa\r
-       ret\r
-\r
-; \88È\89º\81A\83v\83\8d\83e\83N\83g\83\82\81[\83h\88Ú\8ds\81Abootpack\8eÀ\8ds\8aÖ\90\94\8cQ\r
-\r
-pmode:\r
-       mov     al, 0xff\r
-       out     0x21, al        ; pic0-imr = 11111111\r
-       nop\r
-       out     0xa1, al        ; pic1-imr = 11111111\r
-       cli\r
-\r
-       lgdt    [GDTR0]\r
-\r
-       mov     eax, cr0\r
-       and     eax, 0x7fffffff ; PG = 0\r
-       or      eax, 0x00000001 ; PE = 1\r
-       mov     cr0, eax\r
-\r
-       jmp     pipelineflush\r
-pipelineflush:\r
-\r
-       mov     ax, 1 * 8\r
-       mov     ds, ax\r
-       mov     es, ax\r
-       mov     fs, ax\r
-       mov     gs, ax\r
-       mov     ss, ax\r
-\r
-       mov     esi, bootpack\r
-       mov     edi, BOTPAK\r
-       mov     ecx, 512 * 1024 / 4\r
-       call    memcpy\r
-\r
-       mov     esi, 0x7c00\r
-       mov     edi, DSKCAC\r
-       mov     ecx, 512 / 4\r
-       call    memcpy\r
-\r
-       mov     esi, DSKCAC0 + 512\r
-       mov     edi, DSKCAC + 512\r
-       mov     ecx, 0\r
-       mov     cl, byte[CYLS]\r
-       imul    ecx, 512 * 18 * 2 / 4\r
-       sub     ecx, 512 / 4\r
-       call    memcpy\r
-\r
-       mov     ebx, BOTPAK\r
-       mov     ecx, [ebx + 16]\r
-       add     ecx, 3\r
-       shr     ecx, 2\r
-       jz      skip\r
-       mov     esi, [ebx + 20]\r
-       add     esi, ebx\r
-       mov     edi, [ebx + 12]\r
-       call    memcpy\r
-\r
-skip:\r
-       mov     esp, [ebx + 12]\r
-       jmp     dword 2 * 8:0x0000001b\r
-\r
-memcpy:\r
-        mov     eax,[esi]\r
-        add     esi,4\r
-        mov     [edi],eax\r
-        add     edi,4\r
-        sub     ecx,1\r
-        jnz     memcpy\r
-        ret\r
-\r
-; \83f\81[\83^\r
-\r
-msg000:        db      "CHNOSProject Boot Menu...", 0x0d, 0x0a, 0x00\r
-msg001:        db      "VESA BIOS Extention ", 0x00\r
-msg002:        db      "Checking...", 0x0d, 0x0a, 0x00\r
-msg003:        db      "is not supported by this computer.", 0x0d, 0x0a, 0x00\r
-msg004:        db      "Version:", 0x00\r
-msg005:        db      "Video Mode Numbers...", 0x0d, 0x0a, 0x00\r
-msg006:        db      "Advanced Power Management BIOS ", 0x00\r
-msg007:        db      "Please select the Video Mode Number.", 0x0d, 0x0a, 0x00\r
-msg008:        db      "VGA mode is 0x0000.", 0x0d, 0x0a, 0x00\r
-msg009:        db      ">0x", 0x00\r
-msg010:        db      "ModeInfo:", 0x00\r
-msg011:        db      "Function Error...", 0x0d, 0x0a, 0x00\r
-msg012:        db      "bpp:", 0x00\r
-msg013:        db      "Do you want to start in this screen mode?[Y/N]", 0x0d, 0x0a, ">", 0x00\r
-msg014:        db      "A20GateLine Failed.", 0x0d, 0x0a, 0x00\r
-msg015:        db      "A20GateLine Passed.", 0x0d, 0x0a, 0x00\r
-msg016:        db      "ACPI 0xe820 Failed.", 0x0d, 0x0a, 0x00\r
-msg017:        db      "ACPI 0xe820 Passed.", 0x0d, 0x0a, 0x00\r
-\r
-GDTR0:\r
-       dw      8 * 3 - 1       ; GDT\83\8a\83~\83b\83g = 8 * \83Z\83\8c\83N\83^\90\94 - 1\r
-       dd      GDT0            ; GDT\8aJ\8en\83A\83h\83\8c\83X\r
-\r
-       alignb  16\r
-\r
-GDT0:  ; \89¼GDT\r
-       resb    8               ; \83k\83\8b\81E\83Z\83\8c\83N\83^\81[\r
-       dw      0xffff, 0x0000, 0x9200, 0x00cf  ; \93Ç\82Ý\8f\91\82«\89Â\94\32\83r\83b\83g\r
-       dw      0xffff, 0x0000, 0x9a28, 0x0047  ; \8eÀ\8ds\89Â\94\32\83r\83b\83g\r
-       dw      0\r
-\r
-       alignb  16\r
-\r
-bootpack:\r