├── .gitignore ├── Makefile ├── README.md ├── asmhead.nas ├── bootpack.c ├── bootpack.h ├── dsctbl.c ├── fifo.c ├── graphic.c ├── hankaku.txt ├── haribote.rul ├── int.c ├── ipl.nas ├── keyboard.c ├── memory.c ├── mouse.c ├── mtask.c ├── naskfunc.nas ├── sheet.c ├── timer.c └── tools ├── bim2bin ├── bim2hrb ├── bin2obj ├── bochs ├── .gitignore ├── Makefile └── bochsrc.txt ├── edimg ├── fdimg0at.tek ├── gas2nask ├── gocc1 ├── gocc1plus ├── gocpp0 ├── golib00 ├── haribote ├── errno.h ├── float.h ├── golibc.lib ├── haribote.rul ├── harilibc.lib ├── limits.h ├── math.h ├── setjmp.h ├── stdarg.h ├── stddef.h ├── stdio.h └── string.h ├── haritol ├── make ├── makefont ├── makeiso ├── .gitignore ├── Makefile ├── fdimg2iso └── fdimg2iso.dat ├── multicmd ├── nask ├── naskcnv0 ├── obj2bim ├── qemu ├── .gitignore └── Makefile ├── sjisconv └── t5lzma /.gitignore: -------------------------------------------------------------------------------- 1 | *.img 2 | *.sys 3 | *.bin 4 | *.lst 5 | *.obj 6 | *.gas 7 | 8 | bootpack.nas 9 | graphic.nas 10 | dsctbl.nas 11 | int.nas 12 | fifo.nas 13 | keyboard.nas 14 | mouse.nas 15 | sheet.nas 16 | memory.nas 17 | timer.nas 18 | 19 | bootpack.bim 20 | bootpack.hrb 21 | bootpack.map 22 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | TOOLS = ./tools/ 2 | INPATH = ./tools/haribote/ 3 | 4 | NASK = $(TOOLS)nask 5 | CC1 = $(TOOLS)gocc1 -I$(INPATH) -Os -Wall -quiet 6 | GAS2NASK= $(TOOLS)gas2nask -a 7 | OBJ2BIM = $(TOOLS)obj2bim 8 | MAKEFONT= $(TOOLS)makefont 9 | BIN2OBJ = $(TOOLS)bin2obj 10 | BIM2HRB = $(TOOLS)bim2hrb 11 | RULEFILE= ./tools/haribote/haribote.rul 12 | EDIMG = $(TOOLS)edimg 13 | HARITOL = $(TOOLS)haritol 14 | # デフォルト動作 15 | 16 | default : 17 | make img 18 | 19 | %.bin : %.nas Makefile 20 | $(NASK) $*.nas $*.bin $*.lst 21 | 22 | %.gas : %.c bootpack.h Makefile 23 | $(CC1) -o $*.gas $*.c 24 | 25 | %.nas : %.gas Makefile 26 | $(GAS2NASK) $*.gas $*.nas 27 | 28 | %.obj : %.nas Makefile 29 | $(NASK) $*.nas $*.obj $*.lst 30 | 31 | hankaku.bin : hankaku.txt Makefile 32 | $(MAKEFONT) hankaku.txt hankaku.bin 33 | 34 | hankaku.obj : hankaku.bin Makefile 35 | $(BIN2OBJ) hankaku.bin hankaku.obj _hankaku 36 | 37 | bootpack.bim : bootpack.obj graphic.obj dsctbl.obj naskfunc.obj hankaku.obj int.obj fifo.obj keyboard.obj mouse.obj sheet.obj memory.obj timer.obj mtask.obj Makefile 38 | $(OBJ2BIM) @$(RULEFILE) out:bootpack.bim stack:3136k map:bootpack.map \ 39 | bootpack.obj graphic.obj dsctbl.obj naskfunc.obj hankaku.obj int.obj fifo.obj keyboard.obj mouse.obj sheet.obj memory.obj timer.obj mtask.obj 40 | 41 | bootpack.hrb : bootpack.bim Makefile 42 | $(BIM2HRB) bootpack.bim bootpack.hrb 0 43 | 44 | haribote.sys : asmhead.bin bootpack.hrb Makefile 45 | $(HARITOL) concat haribote.sys asmhead.bin bootpack.hrb 46 | 47 | haribote.img : ipl.bin haribote.sys Makefile 48 | $(EDIMG) imgin:./tools/fdimg0at.tek \ 49 | wbinimg src:ipl.bin len:512 from:0 to:0 \ 50 | copy from:haribote.sys to:@: \ 51 | imgout:haribote.img 52 | 53 | # コマンド 54 | asm : 55 | make -r ipl.bin 56 | 57 | img : 58 | make -r haribote.img 59 | 60 | run : 61 | make img 62 | cp haribote.img ./tools/qemu/fdimage0.bin 63 | make -C ./tools/qemu 64 | 65 | clean : 66 | rm *.bin 67 | rm *.lst 68 | rm *.obj 69 | rm bootpack.hrb 70 | rm bootpack.map 71 | rm bootpack.bim 72 | rm haribote.sys 73 | 74 | src_only : 75 | make clean 76 | rm haribote.img 77 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # hariboteos 2 | 3 | ### About the commit message 4 | #### I'm saying "meow" when I'm tired. 5 | -------------------------------------------------------------------------------- /asmhead.nas: -------------------------------------------------------------------------------- 1 | ;asmhead.nas 2 | ;tab=4 3 | [INSTRSET "i486p"] 4 | 5 | VBEMODE EQU 0x101 6 | BOTPAK EQU 0x00280000 7 | DSKCAC EQU 0x00100000 8 | DSKCAC0 EQU 0x00008000 9 | 10 | ;bootinfo 11 | CYLS EQU 0x0ff0 12 | LEDS EQU 0x0ff1 13 | VMODE EQU 0x0ff2 14 | SCRNX EQU 0x0ff4 15 | SCRNY EQU 0x0ff6 16 | VRAM EQU 0x0ff8 17 | 18 | ORG 0xc200 19 | 20 | MOV AX,0x9000 21 | MOV ES,AX 22 | MOV DI,0 23 | MOV AX,0x4f00 24 | INT 0x10 25 | CMP AX,0x004f 26 | JNE scrn320 27 | 28 | MOV AX,[ES:DI+4] 29 | CMP AX,0x0200 30 | JB scrn320 31 | MOV CX,VBEMODE 32 | MOV AX,0x4f01 33 | INT 0x10 34 | CMP AX,0x004f 35 | JNE scrn320 36 | 37 | CMP BYTE [ES:DI+0x19],8 38 | JNE scrn320 39 | CMP BYTE [ES:DI+0x1b],4 40 | JNE scrn320 41 | MOV AX,[ES:DI+0x00] 42 | AND AX,0x0080 43 | JZ scrn320 44 | 45 | MOV BX,VBEMODE+0x4000 46 | MOV AX,0x4f02 47 | INT 0x10 48 | MOV BYTE [VMODE],8 49 | MOV AX,[ES:DI+0x12] 50 | MOV [SCRNX],AX 51 | MOV AX,[ES:DI+0x14] 52 | MOV [SCRNY],AX 53 | MOV EAX,[ES:DI+0x28] 54 | MOV [VRAM],EAX 55 | JMP keystatus 56 | 57 | scrn320: 58 | MOV AL,0x13 59 | MOV AH,0x00 60 | INT 0x10 61 | MOV BYTE [VMODE],8 62 | MOV WORD [SCRNX],320 63 | MOV WORD [SCRNY],200 64 | MOV DWORD [VRAM],0x000a0000 65 | 66 | keystatus: 67 | MOV AH,0x02 68 | INT 0x16 69 | MOV [LEDS],AL 70 | 71 | MOV AL,0xff 72 | OUT 0x21,AL 73 | NOP 74 | OUT 0xa1,AL 75 | 76 | CLI 77 | 78 | CALL waitkbdout 79 | MOV AL,0xd1 80 | OUT 0x64,AL 81 | CALL waitkbdout 82 | MOV AL,0xdf 83 | OUT 0x60,AL 84 | CALL waitkbdout 85 | 86 | LGDT [GDTR0] 87 | MOV EAX,CR0 88 | AND EAX,0x7fffffff 89 | OR EAX,0x00000001 90 | MOV CR0,EAX 91 | JMP pipelineflush 92 | 93 | pipelineflush: 94 | MOV AX,1*8 95 | MOV DS,AX 96 | MOV ES,AX 97 | MOV FS,AX 98 | MOV GS,AX 99 | MOV SS,AX 100 | 101 | MOV ESI,bootpack 102 | MOV EDI,BOTPAK 103 | MOV ECX,512*1024/4 104 | CALL memcpy 105 | 106 | MOV ESI,0x7c00 107 | MOV EDI,DSKCAC 108 | MOV ECX,512/4 109 | CALL memcpy 110 | 111 | ; MOV ESI,DSKCAC0+512 112 | ; MOV EDI,DSKCAC+512 113 | ; MOV ECX,0 114 | ; MOV CL,BYTE [CYLS] 115 | ; IMUL ECX,512*18*2/4 116 | ; SUB ECX,512/4 117 | ; CALL memcpy 118 | 119 | MOV EBX,BOTPAK 120 | MOV ECX,[EBX+16] 121 | ADD ECX,3 122 | SHR ECX,2 123 | JZ skip 124 | MOV ESI,[EBX+20] 125 | ADD ESI,EBX 126 | MOV EDI,[EBX+12] 127 | CALL memcpy 128 | 129 | skip: 130 | MOV ESP,[EBX+12] 131 | JMP DWORD 2*8:0x0000001b 132 | 133 | waitkbdout: 134 | IN AL,0x64 135 | AND AL,0x02 136 | JNZ waitkbdout 137 | RET 138 | 139 | memcpy: 140 | MOV EAX,[ESI] 141 | ADD ESI,4 142 | MOV [EDI],EAX 143 | ADD EDI,4 144 | SUB ECX,1 145 | JNZ memcpy 146 | RET 147 | 148 | ALIGNB 16 149 | 150 | GDT0: 151 | RESB 8 152 | DW 0xffff,0x0000,0x9200,0x00cf 153 | DW 0xffff,0x0000,0x9a28,0x0047 154 | 155 | DW 0 156 | 157 | GDTR0: 158 | DW 8*3-1 159 | DD GDT0 160 | 161 | ALIGNB 16 162 | 163 | bootpack: 164 | -------------------------------------------------------------------------------- /bootpack.c: -------------------------------------------------------------------------------- 1 | #include "bootpack.h" 2 | #include 3 | 4 | void make_window8(unsigned char *buf, int xsize, int ysize, char *title, char act); 5 | void putfonts8_asc_sht(struct SHEET *sht, int x, int y, int c, int b, char *s, int l); 6 | void make_textbox8(struct SHEET *sht, int x0, int y0, int sx, int sy, int c); 7 | void task_b_main(struct SHEET *sht_back); 8 | 9 | void HariMain(void){ 10 | struct BOOTINFO *binfo = (struct BOOTINFO *) ADR_BOOTINFO; 11 | struct FIFO32 fifo; 12 | char s[40]; 13 | int fifobuf[128]; 14 | int mx, my, i, cursor_x, cursor_c; 15 | unsigned int memtotal; 16 | struct MOUSE_DEC mdec; 17 | struct MEMMAN *memman = (struct MEMMAN *) MEMMAN_ADDR; 18 | struct SHTCTL *shtctl; 19 | static char keytable[0x54] = { 20 | 0, 0, '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', '^', 0, 0, 21 | 'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P', '@', '[', 0, 0, 'A', 'S', 22 | 'D', 'F', 'G', 'H', 'J', 'K', 'L', ';', ':', 0, 0, ']', 'Z', 'X', 'C', 'V', 23 | 'B', 'N', 'M', ',', '.', '/', 0, '*', 0, ' ', 0, 0, 0, 0, 0, 0, 24 | 0, 0, 0, 0, 0, 0, 0, '7', '8', '9', '-', '4', '5', '6', '+', '1', 25 | '2', '3', '0', '.' 26 | }; 27 | unsigned char *buf_back, buf_mouse[256], *buf_win, *buf_win_b; 28 | struct SHEET *sht_back, *sht_mouse, *sht_win, *sht_win_b[3]; 29 | struct TASK *task_a, *task_b[3]; 30 | struct TIMER *timer; 31 | 32 | init_gdtidt(); 33 | init_pic(); 34 | io_sti(); 35 | fifo32_init(&fifo, 128, fifobuf, 0); 36 | init_pit(); 37 | init_keyboard(&fifo, 256); 38 | enable_mouse(&fifo, 512, &mdec); 39 | io_out8(PIC0_IMR, 0xf8); 40 | io_out8(PIC1_IMR, 0xef); 41 | 42 | memtotal = memtest(0x00400000, 0xbfffffff); 43 | memman_init(memman); 44 | memman_free(memman, 0x00001000, 0x0009e000); 45 | memman_free(memman, 0x00400000, memtotal - 0x00400000); 46 | 47 | init_palette(); 48 | shtctl = shtctl_init(memman, binfo->vram, binfo->scrnx, binfo->scrny); 49 | task_a = task_init(memman); 50 | fifo.task = task_a; 51 | 52 | /* sht_back */ 53 | sht_back = sheet_alloc(shtctl); 54 | buf_back = (unsigned char *) memman_alloc_4k(memman, binfo->scrnx * binfo->scrny); 55 | sheet_setbuf(sht_back, buf_back, binfo->scrnx, binfo->scrny, -1); 56 | init_screen8(buf_back, binfo->scrnx, binfo->scrny); 57 | 58 | /* sht_win_b */ 59 | for(i = 0; i < 3; i++){ 60 | sht_win_b[i] = sheet_alloc(shtctl); 61 | buf_win_b = (unsigned char *) memman_alloc_4k(memman, 144 * 52); 62 | sheet_setbuf(sht_win_b[i], buf_win_b, 144, 52, -1); 63 | sprintf(s, "task_b%d", i); 64 | make_window8(buf_win_b, 144, 52, s, 0); 65 | task_b[i] = task_alloc(); 66 | task_b[i]->tss.esp = memman_alloc_4k(memman, 64 * 1024) + 64 * 1024 - 8; 67 | task_b[i]->tss.eip = (int) &task_b_main; 68 | task_b[i]->tss.es = 1 * 8; 69 | task_b[i]->tss.cs = 2 * 8; 70 | task_b[i]->tss.ss = 1 * 8; 71 | task_b[i]->tss.ds = 1 * 8; 72 | task_b[i]->tss.fs = 1 * 8; 73 | task_b[i]->tss.gs = 1 * 8; 74 | *((int *) (task_b[i]->tss.esp + 4)) = (int) sht_win_b[i]; 75 | task_run(task_b[i]); 76 | } 77 | 78 | /* sht_win */ 79 | sht_win = sheet_alloc(shtctl); 80 | buf_win = (unsigned char *) memman_alloc_4k(memman, 160 * 52); 81 | sheet_setbuf(sht_win, buf_win, 144, 52, -1); 82 | make_window8(buf_win, 144, 52, "task_a", 1); 83 | make_textbox8(sht_win, 8, 28, 128, 16, COL8_FFFFFF); 84 | cursor_x = 8; 85 | cursor_c = COL8_FFFFFF; 86 | timer = timer_alloc(); 87 | timer_init(timer, &fifo, 1); 88 | timer_settime(timer, 50); 89 | 90 | /* sht_mouse */ 91 | sht_mouse = sheet_alloc(shtctl); 92 | sheet_setbuf(sht_mouse, buf_mouse, 16, 16, 99); 93 | init_mouse_cursor8(buf_mouse, 99); 94 | mx = (binfo->scrnx - 16) / 2; 95 | my = (binfo->scrny - 28 - 16) / 2; 96 | 97 | sheet_slide(sht_back, 0, 0); 98 | sheet_slide(sht_win_b[0], 168, 56); 99 | sheet_slide(sht_win_b[1], 8, 116); 100 | sheet_slide(sht_win_b[2], 168, 116); 101 | sheet_slide(sht_win, 8, 56); 102 | sheet_slide(sht_mouse, mx, my); 103 | sheet_updown(sht_back, 0); 104 | sheet_updown(sht_win_b[0], 1); 105 | sheet_updown(sht_win_b[1], 2); 106 | sheet_updown(sht_win_b[2], 3); 107 | sheet_updown(sht_win, 4); 108 | sheet_updown(sht_mouse, 5); 109 | sprintf(s, "(%3d, %3d)", mx, my); 110 | putfonts8_asc_sht(sht_back, 0, 0, COL8_FFFFFF, COL8_008484, s, 10); 111 | sprintf(s, "memory %dMB free : %dKB", 112 | memtotal / (1024 * 1024), memman_total(memman) / 1024); 113 | putfonts8_asc_sht(sht_back, 0, 32, COL8_FFFFFF, COL8_008484, s, 40); 114 | 115 | for(;;){ 116 | io_cli(); 117 | if(fifo32_status(&fifo) == 0){ 118 | task_sleep(task_a); 119 | io_sti(); 120 | }else{ 121 | i = fifo32_get(&fifo); 122 | io_sti(); 123 | if(256 <= i && i <= 511){ 124 | sprintf(s, "%02X", i - 256); 125 | putfonts8_asc_sht(sht_back, 0, 16, COL8_FFFFFF, COL8_008484, s, 2); 126 | if(i < 0x54 + 256){ 127 | if(keytable[i - 256] != 0 && cursor_x < 128){ 128 | s[0] = keytable[i - 256]; 129 | s[1] = 0; 130 | putfonts8_asc_sht(sht_win, cursor_x, 28, COL8_000000, COL8_FFFFFF, s, 1); 131 | cursor_x += 8; 132 | } 133 | } 134 | if(i == 256 + 0x0e && cursor_x > 8){ 135 | putfonts8_asc_sht(sht_win, cursor_x, 28, COL8_000000, COL8_FFFFFF, " ", 1); 136 | cursor_x -= 8; 137 | } 138 | boxfill8(sht_win->buf, sht_win->bxsize, cursor_c, cursor_x, 28, cursor_x + 7, 43); 139 | sheet_refresh(sht_win, cursor_x, 28, cursor_x + 8, 44); 140 | }else if(512 <= i && i <= 767){ 141 | if(mouse_decode(&mdec, i - 512) != 0){ 142 | sprintf(s, "[lcr %4d %4d]", mdec.x, mdec.y); 143 | if((mdec.btn & 0x01) != 0){ 144 | s[1] = 'L'; 145 | } 146 | if((mdec.btn & 0x02) != 0){ 147 | s[3] = 'R'; 148 | } 149 | if((mdec.btn & 0x04) != 0){ 150 | s[2] = 'C'; 151 | } 152 | putfonts8_asc_sht(sht_back, 32, 16, COL8_FFFFFF, COL8_008484, s, 15); 153 | mx += mdec.x; 154 | my += mdec.y; 155 | if(mx < 0){ 156 | mx = 0; 157 | } 158 | if(my < 0){ 159 | my = 0; 160 | } 161 | if(mx > binfo->scrnx - 1){ 162 | mx = binfo->scrnx - 1; 163 | } 164 | if(my > binfo->scrny - 1){ 165 | my = binfo->scrny - 1; 166 | } 167 | sprintf(s, "(%3d, %3d)", mx, my); 168 | putfonts8_asc_sht(sht_back, 0, 0, COL8_FFFFFF, COL8_008484, s, 10); 169 | sheet_slide(sht_mouse, mx, my); 170 | if((mdec.btn & 0x01) != 0){ 171 | sheet_slide(sht_win, mx - 80, my - 8); 172 | } 173 | } 174 | }else if(i <= 1){ 175 | if(i != 0){ 176 | timer_init(timer, &fifo, 0); 177 | cursor_c = COL8_000000; 178 | }else{ 179 | timer_init(timer, &fifo, 1); 180 | cursor_c = COL8_FFFFFF; 181 | } 182 | timer_settime(timer, 50); 183 | boxfill8(sht_win->buf, sht_win->bxsize, cursor_c, cursor_x, 28, cursor_x + 7, 43); 184 | sheet_refresh(sht_win, cursor_x, 28, cursor_x + 8, 44); 185 | } 186 | } 187 | } 188 | } 189 | 190 | void make_window8(unsigned char *buf, int xsize, int ysize, char *title, char act){ 191 | static char closebtn[14][16] = { 192 | "OOOOOOOOOOOOOOO@", 193 | "OQQQQQQQQQQQQQ$@", 194 | "OQQQQQQQQQQQQQ$@", 195 | "OQQQ@@QQQQ@@QQ$@", 196 | "OQQQQ@@QQ@@QQQ$@", 197 | "OQQQQQ@@@@QQQQ$@", 198 | "OQQQQQQ@@QQQQQ$@", 199 | "OQQQQQ@@@@QQQQ$@", 200 | "OQQQQ@@QQ@@QQQ$@", 201 | "OQQQ@@QQQQ@@QQ$@", 202 | "OQQQQQQQQQQQQQ$@", 203 | "OQQQQQQQQQQQQQ$@", 204 | "O$$$$$$$$$$$$$$@", 205 | "@@@@@@@@@@@@@@@@" 206 | }; 207 | int x, y; 208 | char c, tc, tbc; 209 | if(act != 0){ 210 | tc = COL8_FFFFFF; 211 | tbc = COL8_000084; 212 | }else{ 213 | tc = COL8_C6C6C6; 214 | tbc = COL8_848484; 215 | } 216 | boxfill8(buf, xsize, COL8_C6C6C6, 0, 0, xsize - 1, 0 ); 217 | boxfill8(buf, xsize, COL8_FFFFFF, 1, 1, xsize - 2, 1 ); 218 | boxfill8(buf, xsize, COL8_C6C6C6, 0, 0, 0, ysize - 1); 219 | boxfill8(buf, xsize, COL8_FFFFFF, 1, 1, 1, ysize - 2); 220 | boxfill8(buf, xsize, COL8_848484, xsize - 2, 1, xsize - 2, ysize - 2); 221 | boxfill8(buf, xsize, COL8_000000, xsize - 1, 0, xsize - 1, ysize - 1); 222 | boxfill8(buf, xsize, COL8_C6C6C6, 2, 2, xsize - 3, ysize - 3); 223 | boxfill8(buf, xsize, tbc, 3, 3, xsize - 4, 20 ); 224 | boxfill8(buf, xsize, COL8_848484, 1, ysize - 2, xsize - 2, ysize - 2); 225 | boxfill8(buf, xsize, COL8_000000, 0, ysize - 1, xsize - 1, ysize - 1); 226 | putfonts8_asc(buf, xsize, 24, 4, tc, title); 227 | for(y = 0; y < 14; y++){ 228 | for(x = 0; x < 16; x++){ 229 | c = closebtn[y][x]; 230 | if(c == '@'){ 231 | c = COL8_000000; 232 | }else if(c == '$'){ 233 | c = COL8_848484; 234 | }else if(c == 'Q'){ 235 | c = COL8_C6C6C6; 236 | }else{ 237 | c = COL8_FFFFFF; 238 | } 239 | buf[(5 + y) * xsize + (xsize - 21 + x)] = c; 240 | } 241 | } 242 | return; 243 | } 244 | 245 | void putfonts8_asc_sht(struct SHEET *sht, int x, int y, int c, int b, char *s, int l){ 246 | boxfill8(sht->buf, sht->bxsize, b, x, y, x + l * 8 - 1, y + 15); 247 | putfonts8_asc(sht->buf, sht->bxsize, x, y, c, s); 248 | sheet_refresh(sht, x, y, x + l * 8, y + 16); 249 | return; 250 | } 251 | 252 | void make_textbox8(struct SHEET *sht, int x0, int y0, int sx, int sy, int c){ 253 | int x1 = x0 + sx, y1 = y0 + sy; 254 | boxfill8(sht->buf, sht->bxsize, COL8_848484, x0 - 2, y0 - 3, x1 + 1, y0 - 3); 255 | boxfill8(sht->buf, sht->bxsize, COL8_848484, x0 - 3, y0 - 3, x0 - 3, y1 + 1); 256 | boxfill8(sht->buf, sht->bxsize, COL8_FFFFFF, x0 - 3, y1 + 2, x1 + 1, y1 + 2); 257 | boxfill8(sht->buf, sht->bxsize, COL8_FFFFFF, x1 + 2, y0 - 3, x1 + 2, y1 + 2); 258 | boxfill8(sht->buf, sht->bxsize, COL8_000000, x0 - 1, y0 - 2, x1 + 0, y0 - 2); 259 | boxfill8(sht->buf, sht->bxsize, COL8_000000, x0 - 2, y0 - 2, x0 - 2, y1 + 0); 260 | boxfill8(sht->buf, sht->bxsize, COL8_C6C6C6, x0 - 2, y1 + 1, x1 + 0, y1 + 1); 261 | boxfill8(sht->buf, sht->bxsize, COL8_C6C6C6, x1 + 1, y0 - 2, x1 + 1, y1 + 1); 262 | boxfill8(sht->buf, sht->bxsize, c, x0 - 1, y0 - 1, x1 + 0, y1 + 0); 263 | return; 264 | } 265 | 266 | void task_b_main(struct SHEET *sht_win_b){ 267 | struct FIFO32 fifo; 268 | struct TIMER *timer_1s; 269 | int i, fifobuf[128], count = 0, count0 = 0; 270 | char s[12]; 271 | 272 | fifo32_init(&fifo, 128, fifobuf, 0); 273 | timer_1s = timer_alloc(); 274 | timer_init(timer_1s, &fifo, 100); 275 | timer_settime(timer_1s, 100); 276 | 277 | for(;;){ 278 | count++; 279 | io_cli(); 280 | if(fifo32_status(&fifo) == 0){ 281 | io_sti(); 282 | }else{ 283 | i = fifo32_get(&fifo); 284 | io_sti(); 285 | if(i == 100){ 286 | sprintf(s, "%11d", count - count0); 287 | putfonts8_asc_sht(sht_win_b, 24, 28, COL8_000000, COL8_C6C6C6, s, 11); 288 | count0 = count; 289 | timer_settime(timer_1s, 100); 290 | } 291 | } 292 | } 293 | } 294 | -------------------------------------------------------------------------------- /bootpack.h: -------------------------------------------------------------------------------- 1 | /* asmhead.nas */ 2 | struct BOOTINFO{ 3 | char cyls; 4 | char leds; 5 | char vmode; 6 | char reserve; 7 | short scrnx, scrny; 8 | char *vram; 9 | }; 10 | #define ADR_BOOTINFO 0x00000ff0 11 | 12 | /* naskfunc.nas */ 13 | void io_hlt(void); 14 | void io_cli(void); 15 | void io_sti(void); 16 | void io_stihlt(void); 17 | int io_in8(int port); 18 | void io_out8(int port, int data); 19 | int io_load_eflags(void); 20 | void io_store_eflags(int eflags); 21 | void load_gdtr(int limit, int addr); 22 | void load_idtr(int limit, int addr); 23 | int load_cr0(void); 24 | void store_cr0(int cr0); 25 | void load_tr(int tr); 26 | void asm_inthandler20(void); 27 | void asm_inthandler21(void); 28 | void asm_inthandler27(void); 29 | void asm_inthandler2c(void); 30 | unsigned int memtest_sub(unsigned int start, unsigned int end); 31 | void farjmp(int eip, int cs); 32 | 33 | /* fifo.c */ 34 | struct FIFO32{ 35 | int *buf; 36 | int p, q, size, free, flags; 37 | struct TASK *task; 38 | }; 39 | void fifo32_init(struct FIFO32 *fifo, int size, int *buf, struct TASK *task); 40 | int fifo32_put(struct FIFO32 *fifo, int data); 41 | int fifo32_get(struct FIFO32 *fifo); 42 | int fifo32_status(struct FIFO32 *fifo); 43 | 44 | /* graphic.c */ 45 | void init_palette(void); 46 | void set_palette(int start, int end, unsigned char *rgb); 47 | void boxfill8(unsigned char *vram, int xsize, unsigned char c, int x0, int y0, int x1, int y1); 48 | void init_screen8(char *vram, int x, int y); 49 | void putfont8(char *vram, int xsize, int x, int y, char c, char *font); 50 | void putfonts8_asc(char *vram, int xsize, int x, int y, char c, unsigned char *s); 51 | void init_mouse_cursor8(char *mouse, char bc); 52 | void putblock8_8(char *vram, int vxsize, int pxsize, 53 | int pysize, int px0, int py0, char *buf, int bxsize); 54 | #define COL8_000000 0 55 | #define COL8_FF0000 1 56 | #define COL8_00FF00 2 57 | #define COL8_FFFF00 3 58 | #define COL8_0000FF 4 59 | #define COL8_FF00FF 5 60 | #define COL8_00FFFF 6 61 | #define COL8_FFFFFF 7 62 | #define COL8_C6C6C6 8 63 | #define COL8_840000 9 64 | #define COL8_008400 10 65 | #define COL8_848400 11 66 | #define COL8_000084 12 67 | #define COL8_840084 13 68 | #define COL8_008484 14 69 | #define COL8_848484 15 70 | 71 | /* dsctbl.c */ 72 | struct SEGMENT_DESCRIPTOR{ 73 | short limit_low, base_low; 74 | char base_mid, access_right; 75 | char limit_high, base_high; 76 | }; 77 | struct GATE_DESCRIPTOR{ 78 | short offset_low, selector; 79 | char dw_count, access_right; 80 | short offset_high; 81 | }; 82 | void init_gdtidt(void); 83 | void set_segmdesc(struct SEGMENT_DESCRIPTOR *sd, unsigned int limit, int base, int ar); 84 | void set_gatedesc(struct GATE_DESCRIPTOR *gd, int offset, int selector, int ar); 85 | #define ADR_IDT 0x0026f800 86 | #define LIMIT_IDT 0x000007ff 87 | #define ADR_GDT 0x00270000 88 | #define LIMIT_GDT 0x0000ffff 89 | #define ADR_BOTPAK 0x00280000 90 | #define LIMIT_BOTPAK 0x0007ffff 91 | #define AR_DATA32_RW 0x4092 92 | #define AR_CODE32_ER 0x409a 93 | #define AR_TSS32 0x0089 94 | #define AR_INTGATE32 0x008e 95 | 96 | /* int.c */ 97 | void init_pic(void); 98 | void inthandler27(int *esp); 99 | #define PIC0_ICW1 0x0020 100 | #define PIC0_OCW2 0x0020 101 | #define PIC0_IMR 0x0021 102 | #define PIC0_ICW2 0x0021 103 | #define PIC0_ICW3 0x0021 104 | #define PIC0_ICW4 0x0021 105 | #define PIC1_ICW1 0x00a0 106 | #define PIC1_OCW2 0x00a0 107 | #define PIC1_IMR 0x00a1 108 | #define PIC1_ICW2 0x00a1 109 | #define PIC1_ICW3 0x00a1 110 | #define PIC1_ICW4 0x00a1 111 | 112 | /* keyboard.c */ 113 | void inthandler21(int *esp); 114 | void wait_KBC_sendready(void); 115 | void init_keyboard(struct FIFO32 *fifo, int data0); 116 | #define PORT_KEYDAT 0x0060 117 | #define PORT_KEYCMD 0x0064 118 | 119 | /* mouse.c */ 120 | struct MOUSE_DEC{ 121 | unsigned char buf[3], phase; 122 | int x, y, btn; 123 | }; 124 | void inthandler2c(int *esp); 125 | void enable_mouse(struct FIFO32 *fifo, int data0, struct MOUSE_DEC *mdec); 126 | int mouse_decode(struct MOUSE_DEC *mdec, unsigned char dat); 127 | 128 | /* memory.c */ 129 | #define MEMMAN_FREES 4090 130 | #define MEMMAN_ADDR 0x003c0000 131 | struct FREEINFO{ 132 | unsigned int addr, size; 133 | }; 134 | struct MEMMAN{ 135 | int frees, maxfrees, lostsize, losts; 136 | struct FREEINFO free[MEMMAN_FREES]; 137 | }; 138 | unsigned int memtest(unsigned int start, unsigned int end); 139 | void memman_init(struct MEMMAN *man); 140 | unsigned int memman_total(struct MEMMAN *man); 141 | unsigned int memman_alloc(struct MEMMAN *man, unsigned int size); 142 | int memman_free(struct MEMMAN *man, unsigned int addr, unsigned int size); 143 | unsigned int memman_alloc_4k(struct MEMMAN *man, unsigned int size); 144 | int memman_free_4k(struct MEMMAN *man, unsigned int addr, unsigned int size); 145 | 146 | /* sheet.c */ 147 | #define MAX_SHEETS 256 148 | struct SHEET{ 149 | unsigned char *buf; 150 | int bxsize, bysize, vx0, vy0, col_inv, height, flags; 151 | struct SHTCTL *ctl; 152 | }; 153 | struct SHTCTL{ 154 | unsigned char *vram, *map; 155 | int xsize, ysize, top; 156 | struct SHEET *sheets[MAX_SHEETS]; 157 | struct SHEET sheets0[MAX_SHEETS]; 158 | }; 159 | struct SHTCTL *shtctl_init(struct MEMMAN *memman, unsigned char *vram, int xsize, int ysize); 160 | struct SHEET *sheet_alloc(struct SHTCTL *ctl); 161 | void sheet_setbuf(struct SHEET *sht, unsigned char *buf, int xsize, int ysize, int col_inv); 162 | void sheet_updown(struct SHEET *sht, int height); 163 | void sheet_refresh(struct SHEET *sht, int bx0, int by0, int bx1, int by1); 164 | void sheet_slide(struct SHEET *sht, int vx0, int vy0); 165 | void sheet_free(struct SHEET *sht); 166 | 167 | /* timer.c */ 168 | #define MAX_TIMER 500 169 | struct TIMER{ 170 | struct TIMER *next; 171 | unsigned int timeout, flags; 172 | struct FIFO32 *fifo; 173 | int data; 174 | }; 175 | struct TIMERCTL{ 176 | unsigned int count, next; 177 | struct TIMER *t0; 178 | struct TIMER timers0[MAX_TIMER]; 179 | }; 180 | extern struct TIMERCTL timerctl; 181 | void init_pit(void); 182 | struct TIMER *timer_alloc(void); 183 | void timer_free(struct TIMER *timer); 184 | void timer_init(struct TIMER *timer, struct FIFO32 *fifo, int data); 185 | void timer_settime(struct TIMER *timer, unsigned int timeout); 186 | void inthandler20(int *esp); 187 | 188 | /* mtask.c */ 189 | #define MAX_TASKS 1000 190 | #define TASK_GDT0 3 191 | struct TSS32{ 192 | int backlink, esp0, ss0, esp1, ss1, esp2, ss2, cr3; 193 | int eip, eflags, eax, ecx, edx, ebx, esp, ebp, esi, edi; 194 | int es, cs, ss, ds, fs, gs; 195 | int ldtr, iomap; 196 | }; 197 | struct TASK{ 198 | int sel, flags; 199 | struct TSS32 tss; 200 | }; 201 | struct TASKCTL{ 202 | int running; 203 | int now; 204 | struct TASK *tasks[MAX_TASKS]; 205 | struct TASK tasks0[MAX_TASKS]; 206 | }; 207 | extern struct TIMER *task_timer; 208 | struct TASK *task_init(struct MEMMAN *memman); 209 | struct TASK *task_alloc(void); 210 | void task_run(struct TASK *task); 211 | void task_switch(void); 212 | void task_sleep(struct TASK *task); 213 | -------------------------------------------------------------------------------- /dsctbl.c: -------------------------------------------------------------------------------- 1 | #include "bootpack.h" 2 | 3 | void init_gdtidt(void){ 4 | struct SEGMENT_DESCRIPTOR *gdt = (struct SEGMENT_DESCRIPTOR *) ADR_GDT; 5 | struct GATE_DESCRIPTOR *idt = (struct GATE_DESCRIPTOR *) ADR_IDT; 6 | int i; 7 | 8 | for(i = 0; i <= LIMIT_GDT / 8; i++){ 9 | set_segmdesc(gdt + i, 0, 0, 0); 10 | } 11 | set_segmdesc(gdt + 1, 0xffffffff, 0x00000000, AR_DATA32_RW); 12 | set_segmdesc(gdt + 2, LIMIT_BOTPAK, ADR_BOTPAK, AR_CODE32_ER); 13 | load_gdtr(LIMIT_GDT, ADR_GDT); 14 | 15 | for(i = 0; i <= LIMIT_IDT / 8; i++){ 16 | set_gatedesc(idt + i, 0, 0, 0); 17 | } 18 | load_idtr(LIMIT_IDT, ADR_IDT); 19 | 20 | set_gatedesc(idt + 0x20, (int) asm_inthandler20, 2 * 8, AR_INTGATE32); 21 | set_gatedesc(idt + 0x21, (int) asm_inthandler21, 2 * 8, AR_INTGATE32); 22 | set_gatedesc(idt + 0x27, (int) asm_inthandler27, 2 * 8, AR_INTGATE32); 23 | set_gatedesc(idt + 0x2c, (int) asm_inthandler2c, 2 * 8, AR_INTGATE32); 24 | 25 | return; 26 | } 27 | 28 | void set_segmdesc(struct SEGMENT_DESCRIPTOR *sd, unsigned int limit, int base, int ar){ 29 | if (limit > 0xfffff){ 30 | ar |= 0x8000; 31 | limit /= 0x1000; 32 | } 33 | sd->limit_low = limit & 0xffff; 34 | sd->base_low = base & 0xffff; 35 | sd->base_mid = (base >> 16) & 0xff; 36 | sd->access_right = ar & 0xff; 37 | sd->limit_high = ((limit >> 16) & 0x0f) | ((ar >> 8) & 0xf0); 38 | sd->base_high = (base >> 24) & 0xff; 39 | return; 40 | } 41 | 42 | void set_gatedesc(struct GATE_DESCRIPTOR *gd, int offset, int selector, int ar){ 43 | gd->offset_low = offset & 0xffff; 44 | gd->selector = selector; 45 | gd->dw_count = (ar >> 8) & 0xff; 46 | gd->access_right = ar & 0xff; 47 | gd->offset_high = (offset >> 16) & 0xffff; 48 | return; 49 | } 50 | -------------------------------------------------------------------------------- /fifo.c: -------------------------------------------------------------------------------- 1 | #include "bootpack.h" 2 | #define FLAGS_OVERRUN 0x0001 3 | 4 | void fifo32_init(struct FIFO32 *fifo, int size, int *buf, struct TASK *task){ 5 | fifo->size = size; 6 | fifo->buf = buf; 7 | fifo->free = size; 8 | fifo->flags = 0; 9 | fifo->p = 0; 10 | fifo->q = 0; 11 | fifo->task = task; 12 | return; 13 | } 14 | 15 | int fifo32_put(struct FIFO32 *fifo, int data){ 16 | if(fifo->free == 0){ 17 | fifo->flags |= FLAGS_OVERRUN; 18 | return -1; 19 | } 20 | fifo->buf[fifo->p] = data; 21 | fifo->p++; 22 | if(fifo->p == fifo->size){ 23 | fifo->p = 0; 24 | } 25 | fifo->free--; 26 | if(fifo->task->flags != 2){ 27 | task_run(fifo->task); 28 | } 29 | return 0; 30 | } 31 | 32 | int fifo32_get(struct FIFO32 *fifo){ 33 | int data; 34 | if(fifo->free == fifo->size){ 35 | return -1; 36 | } 37 | data = fifo->buf[fifo->q]; 38 | fifo->q++; 39 | if(fifo->q == fifo->size){ 40 | fifo->q = 0; 41 | } 42 | fifo->free++; 43 | return data; 44 | } 45 | 46 | int fifo32_status(struct FIFO32 *fifo){ 47 | return fifo->size - fifo->free; 48 | } 49 | -------------------------------------------------------------------------------- /graphic.c: -------------------------------------------------------------------------------- 1 | #include "bootpack.h" 2 | 3 | void init_palette(void){ 4 | static unsigned char table_rgb[16 * 3] = { 5 | 0x00, 0x00, 0x00, 6 | 0xff, 0x00, 0x00, 7 | 0x00, 0xff, 0x00, 8 | 0xff, 0xff, 0x00, 9 | 0x00, 0x00, 0xff, 10 | 0xff, 0x00, 0xff, 11 | 0x00, 0xff, 0xff, 12 | 0xff, 0xff, 0xff, 13 | 0xc6, 0xc6, 0xc6, 14 | 0x84, 0x00, 0x00, 15 | 0x00, 0x84, 0x00, 16 | 0x84, 0x84, 0x00, 17 | 0x00, 0x00, 0x84, 18 | 0x84, 0x00, 0x84, 19 | 0x00, 0x84, 0x84, 20 | 0x84, 0x84, 0x84 21 | }; 22 | set_palette(0, 15, table_rgb); 23 | return; 24 | } 25 | 26 | void set_palette(int start, int end, unsigned char *rgb){ 27 | int i, eflags; 28 | eflags = io_load_eflags(); 29 | io_cli(); 30 | io_out8(0x03c8, start); 31 | for(i = start; i <= end; i++){ 32 | io_out8(0x03c9, rgb[0] / 4); 33 | io_out8(0x03c9, rgb[1] / 4); 34 | io_out8(0x03c9, rgb[2] / 4); 35 | rgb += 3; 36 | } 37 | io_store_eflags(eflags); 38 | return; 39 | } 40 | 41 | void boxfill8(unsigned char *vram, int xsize, unsigned char c, int x0, int y0, int x1, int y1){ 42 | int x, y; 43 | for(y = y0; y <= y1; y++){ 44 | for(x = x0; x <= x1; x++) 45 | vram[y * xsize + x] = c; 46 | } 47 | return; 48 | } 49 | 50 | void init_screen8(char *vram, int x, int y){ 51 | boxfill8(vram, x, COL8_008484, 0, 0, x - 1, y - 29); 52 | boxfill8(vram, x, COL8_C6C6C6, 0, y - 28, x - 1, y - 28); 53 | boxfill8(vram, x, COL8_FFFFFF, 0, y - 27, x - 1, y - 27); 54 | boxfill8(vram, x, COL8_C6C6C6, 0, y - 26, x - 1, y - 1); 55 | 56 | boxfill8(vram, x, COL8_FFFFFF, 3, y - 24, 59, y - 24); 57 | boxfill8(vram, x, COL8_FFFFFF, 2, y - 24, 2, y - 4); 58 | boxfill8(vram, x, COL8_848484, 3, y - 4, 59, y - 4); 59 | boxfill8(vram, x, COL8_848484, 59, y - 23, 59, y - 5); 60 | boxfill8(vram, x, COL8_000000, 2, y - 3, 59, y - 3); 61 | boxfill8(vram, x, COL8_000000, 60, y - 24, 60, y - 3); 62 | 63 | boxfill8(vram, x, COL8_848484, x - 47, y - 24, x - 4, y - 24); 64 | boxfill8(vram, x, COL8_848484, x - 47, y - 23, x - 47, y - 4); 65 | boxfill8(vram, x, COL8_FFFFFF, x - 47, y - 3, x - 4, y - 3); 66 | boxfill8(vram, x, COL8_FFFFFF, x - 3, y - 24, x - 3, y - 3); 67 | return; 68 | } 69 | 70 | void putfont8(char *vram, int xsize, int x, int y, char c, char *font){ 71 | int i; 72 | char *p, d; 73 | for(i = 0; i < 16; i++){ 74 | p = vram + (y + i) * xsize + x; 75 | d = font[i]; 76 | if((d & 0x80) != 0){p[0] = c;} 77 | if((d & 0x40) != 0){p[1] = c;} 78 | if((d & 0x20) != 0){p[2] = c;} 79 | if((d & 0x10) != 0){p[3] = c;} 80 | if((d & 0x08) != 0){p[4] = c;} 81 | if((d & 0x04) != 0){p[5] = c;} 82 | if((d & 0x02) != 0){p[6] = c;} 83 | if((d & 0x01) != 0){p[7] = c;} 84 | } 85 | return; 86 | } 87 | 88 | void putfonts8_asc(char *vram, int xsize, int x, int y, char c, unsigned char *s){ 89 | extern char hankaku[4096]; 90 | for(; *s != 0x00; s++){ 91 | putfont8(vram, xsize, x, y, c, hankaku + *s * 16); 92 | x += 8; 93 | } 94 | return; 95 | } 96 | 97 | void init_mouse_cursor8(char *mouse, char bc){ 98 | static char cursor[16][16] = { 99 | "**************..", 100 | "*OOOOOOOOOOO*...", 101 | "*OOOOOOOOOO*....", 102 | "*OOOOOOOOO*.....", 103 | "*OOOOOOOO*......", 104 | "*OOOOOOO*.......", 105 | "*OOOOOOO*.......", 106 | "*OOOOOOOO*......", 107 | "*OOOO**OOO*.....", 108 | "*OOO*..*OOO*....", 109 | "*OO*....*OOO*...", 110 | "*O*......*OOO*..", 111 | "**........*OOO*.", 112 | "*..........*OOO*", 113 | "............*OO*", 114 | ".............***" 115 | }; 116 | int x, y; 117 | 118 | for(y = 0; y < 16; y++){ 119 | for(x = 0; x < 16; x++){ 120 | if(cursor[y][x] == '*'){ 121 | mouse[y * 16 + x] = COL8_000000; 122 | } 123 | if(cursor[y][x] == 'O'){ 124 | mouse[y * 16 + x] = COL8_FFFFFF; 125 | } 126 | if(cursor[y][x] == '.'){ 127 | mouse[y * 16 + x] = bc; 128 | } 129 | } 130 | } 131 | return; 132 | } 133 | 134 | void putblock8_8(char *vram, int vxsize, int pxsize, int pysize, int px0, int py0, char *buf, int bxsize){ 135 | int x, y; 136 | for(y = 0; y < pysize; y++){ 137 | for(x = 0; x < pxsize; x++){ 138 | vram[(py0 + y) * vxsize + (px0 + x)] = buf[y * bxsize + x]; 139 | } 140 | } 141 | return; 142 | } 143 | -------------------------------------------------------------------------------- /hankaku.txt: -------------------------------------------------------------------------------- 1 | char 0x00 2 | ........ 3 | ........ 4 | ........ 5 | ........ 6 | ........ 7 | ........ 8 | ........ 9 | ........ 10 | ........ 11 | ........ 12 | ........ 13 | ........ 14 | ........ 15 | ........ 16 | ........ 17 | ........ 18 | 19 | char 0x01 20 | ........ 21 | ........ 22 | ..***... 23 | .*...*.. 24 | *.....*. 25 | *.*.*.*. 26 | *.*.*.*. 27 | *.....*. 28 | *.....*. 29 | *.*.*.*. 30 | *..*..*. 31 | .*...*.. 32 | ..***... 33 | ........ 34 | ........ 35 | ........ 36 | 37 | char 0x02 38 | ........ 39 | ........ 40 | ..***... 41 | .*****.. 42 | *******. 43 | **.*.**. 44 | **.*.**. 45 | *******. 46 | *******. 47 | **.*.**. 48 | ***.***. 49 | .*****.. 50 | ..***... 51 | ........ 52 | ........ 53 | ........ 54 | 55 | char 0x03 56 | ........ 57 | ........ 58 | ........ 59 | ........ 60 | .**.**.. 61 | *******. 62 | *******. 63 | *******. 64 | .*****.. 65 | ..***... 66 | ...*.... 67 | ........ 68 | ........ 69 | ........ 70 | ........ 71 | ........ 72 | 73 | char 0x04 74 | ........ 75 | ........ 76 | ........ 77 | ........ 78 | ...*.... 79 | ..***... 80 | .*****.. 81 | *******. 82 | .*****.. 83 | ..***... 84 | ...*.... 85 | ........ 86 | ........ 87 | ........ 88 | ........ 89 | ........ 90 | 91 | char 0x05 92 | ........ 93 | ........ 94 | ........ 95 | ........ 96 | ...*.... 97 | ..***... 98 | .*.*.*.. 99 | *******. 100 | .*.*.*.. 101 | ...*.... 102 | ..***... 103 | ........ 104 | ........ 105 | ........ 106 | ........ 107 | ........ 108 | 109 | char 0x06 110 | ........ 111 | ........ 112 | ........ 113 | ........ 114 | ...*.... 115 | ..***... 116 | .*****.. 117 | *******. 118 | **.*.**. 119 | ...*.... 120 | ..***... 121 | ........ 122 | ........ 123 | ........ 124 | ........ 125 | ........ 126 | 127 | char 0x07 128 | ........ 129 | ........ 130 | ........ 131 | ........ 132 | ........ 133 | ........ 134 | ...**... 135 | ..****.. 136 | ..****.. 137 | ...**... 138 | ........ 139 | ........ 140 | ........ 141 | ........ 142 | ........ 143 | ........ 144 | 145 | char 0x08 146 | ******** 147 | ******** 148 | ******** 149 | ******** 150 | ******** 151 | ******** 152 | ***..*** 153 | **....** 154 | **....** 155 | ***..*** 156 | ******** 157 | ******** 158 | ******** 159 | ******** 160 | ******** 161 | ******** 162 | 163 | char 0x09 164 | ........ 165 | ........ 166 | ........ 167 | ........ 168 | ........ 169 | ..****.. 170 | .**..**. 171 | .*....*. 172 | .*....*. 173 | .**..**. 174 | ..****.. 175 | ........ 176 | ........ 177 | ........ 178 | ........ 179 | ........ 180 | 181 | char 0x0a 182 | ******** 183 | ******** 184 | ******** 185 | ******** 186 | ******** 187 | **....** 188 | *..**..* 189 | *.****.* 190 | *.****.* 191 | *..**..* 192 | **....** 193 | ******** 194 | ******** 195 | ******** 196 | ******** 197 | ******** 198 | 199 | char 0x0b 200 | ........ 201 | ...*.... 202 | ..***... 203 | .*.*.*.. 204 | *..*..*. 205 | ...*.... 206 | ...*.... 207 | ..***... 208 | .*...*.. 209 | *.....*. 210 | *.....*. 211 | *.....*. 212 | .*...*.. 213 | ..***... 214 | ........ 215 | ........ 216 | 217 | char 0x0c 218 | ........ 219 | ..***... 220 | .*...*.. 221 | *.....*. 222 | *.....*. 223 | *.....*. 224 | .*...*.. 225 | ..***... 226 | ...*.... 227 | ...*.... 228 | *******. 229 | ...*.... 230 | ...*.... 231 | ...*.... 232 | ........ 233 | ........ 234 | 235 | char 0x0d 236 | ........ 237 | ........ 238 | ....**.. 239 | ....***. 240 | ....*.** 241 | ....*.** 242 | ....*.*. 243 | ....*... 244 | ....*... 245 | ...**... 246 | .****... 247 | *****... 248 | .***.... 249 | ........ 250 | ........ 251 | ........ 252 | 253 | char 0x0e 254 | ........ 255 | ........ 256 | ...***** 257 | ...***** 258 | ...*...* 259 | ...*...* 260 | ...*...* 261 | ...*...* 262 | ...*...* 263 | ...*...* 264 | .***.*** 265 | ******** 266 | .**..**. 267 | ........ 268 | ........ 269 | ........ 270 | 271 | char 0x0f 272 | ........ 273 | ........ 274 | ........ 275 | ........ 276 | ...*.... 277 | .*.*.*.. 278 | ..***... 279 | ..*.*... 280 | ..***... 281 | .*.*.*.. 282 | ...*.... 283 | ........ 284 | ........ 285 | ........ 286 | ........ 287 | ........ 288 | 289 | char 0x10 290 | ........ 291 | *....... 292 | **...... 293 | ***..... 294 | ****.... 295 | *****... 296 | ******.. 297 | *******. 298 | ******.. 299 | *****... 300 | ****.... 301 | ***..... 302 | **...... 303 | *....... 304 | ........ 305 | ........ 306 | 307 | char 0x11 308 | ........ 309 | ......*. 310 | .....**. 311 | ....***. 312 | ...****. 313 | ..*****. 314 | .******. 315 | *******. 316 | .******. 317 | ..*****. 318 | ...****. 319 | ....***. 320 | .....**. 321 | ......*. 322 | ........ 323 | ........ 324 | 325 | char 0x12 326 | ........ 327 | ........ 328 | ...*.... 329 | ..***... 330 | .*.*.*.. 331 | *..*..*. 332 | ...*.... 333 | ...*.... 334 | ...*.... 335 | *..*..*. 336 | .*.*.*.. 337 | ..***... 338 | ...*.... 339 | ........ 340 | ........ 341 | ........ 342 | 343 | char 0x13 344 | ........ 345 | ........ 346 | .*...*.. 347 | .*...*.. 348 | .*...*.. 349 | .*...*.. 350 | .*...*.. 351 | .*...*.. 352 | .*...*.. 353 | .*...*.. 354 | ........ 355 | ........ 356 | .*...*.. 357 | .*...*.. 358 | ........ 359 | ........ 360 | 361 | char 0x14 362 | ........ 363 | ..*****. 364 | .*..*.*. 365 | *...*.*. 366 | *...*.*. 367 | *...*.*. 368 | *...*.*. 369 | .*..*.*. 370 | ..***.*. 371 | ....*.*. 372 | ....*.*. 373 | ....*.*. 374 | ....*.*. 375 | ....*.*. 376 | ........ 377 | ........ 378 | 379 | char 0x15 380 | .*****.. 381 | *.....*. 382 | .*...... 383 | ..*..... 384 | ..***... 385 | .*...*.. 386 | *.....*. 387 | *.....*. 388 | *.....*. 389 | .*...*.. 390 | ..***... 391 | ....*... 392 | .....*.. 393 | *.....*. 394 | .*****.. 395 | ........ 396 | 397 | char 0x16 398 | ........ 399 | ........ 400 | ........ 401 | ........ 402 | ........ 403 | ........ 404 | ........ 405 | ........ 406 | ........ 407 | ........ 408 | ........ 409 | *******. 410 | *******. 411 | *******. 412 | ........ 413 | ........ 414 | 415 | char 0x17 416 | ........ 417 | ........ 418 | ...*.... 419 | ..***... 420 | .*.*.*.. 421 | *..*..*. 422 | ...*.... 423 | ...*.... 424 | ...*.... 425 | *..*..*. 426 | .*.*.*.. 427 | ..***... 428 | ...*.... 429 | .*****.. 430 | ........ 431 | ........ 432 | 433 | char 0x18 434 | ........ 435 | ...*.... 436 | ..***... 437 | .*.*.*.. 438 | *..*..*. 439 | ...*.... 440 | ...*.... 441 | ...*.... 442 | ...*.... 443 | ...*.... 444 | ...*.... 445 | ...*.... 446 | ...*.... 447 | ...*.... 448 | ........ 449 | ........ 450 | 451 | char 0x19 452 | ........ 453 | ...*.... 454 | ...*.... 455 | ...*.... 456 | ...*.... 457 | ...*.... 458 | ...*.... 459 | ...*.... 460 | ...*.... 461 | ...*.... 462 | *..*..*. 463 | .*.*.*.. 464 | ..***... 465 | ...*.... 466 | ........ 467 | ........ 468 | 469 | char 0x1a 470 | ........ 471 | ........ 472 | ........ 473 | ........ 474 | ...*.... 475 | ....*... 476 | .....*.. 477 | *******. 478 | .....*.. 479 | ....*... 480 | ...*.... 481 | ........ 482 | ........ 483 | ........ 484 | ........ 485 | ........ 486 | 487 | char 0x1b 488 | ........ 489 | ........ 490 | ........ 491 | ........ 492 | ...*.... 493 | ..*..... 494 | .*...... 495 | *******. 496 | .*...... 497 | ..*..... 498 | ...*.... 499 | ........ 500 | ........ 501 | ........ 502 | ........ 503 | ........ 504 | 505 | char 0x1c 506 | ........ 507 | ........ 508 | ........ 509 | ........ 510 | ........ 511 | ........ 512 | ........ 513 | ........ 514 | ........ 515 | ........ 516 | ........ 517 | *....... 518 | *....... 519 | *******. 520 | ........ 521 | ........ 522 | 523 | char 0x1d 524 | ........ 525 | ........ 526 | ........ 527 | ........ 528 | ........ 529 | ..*.*... 530 | .*...*.. 531 | *******. 532 | .*...*.. 533 | ..*.*... 534 | ........ 535 | ........ 536 | ........ 537 | ........ 538 | ........ 539 | ........ 540 | 541 | char 0x1e 542 | ........ 543 | ........ 544 | ........ 545 | ........ 546 | ...*.... 547 | ...*.... 548 | ..***... 549 | ..***... 550 | .*****.. 551 | .*****.. 552 | *******. 553 | *******. 554 | ........ 555 | ........ 556 | ........ 557 | ........ 558 | 559 | char 0x1f 560 | ........ 561 | ........ 562 | ........ 563 | ........ 564 | *******. 565 | *******. 566 | .*****.. 567 | .*****.. 568 | ..***... 569 | ..***... 570 | ...*.... 571 | ...*.... 572 | ........ 573 | ........ 574 | ........ 575 | ........ 576 | 577 | char 0x20 578 | ........ 579 | ........ 580 | ........ 581 | ........ 582 | ........ 583 | ........ 584 | ........ 585 | ........ 586 | ........ 587 | ........ 588 | ........ 589 | ........ 590 | ........ 591 | ........ 592 | ........ 593 | ........ 594 | 595 | char 0x21 596 | ........ 597 | ...*.... 598 | ...*.... 599 | ...*.... 600 | ...*.... 601 | ...*.... 602 | ...*.... 603 | ...*.... 604 | ...*.... 605 | ...*.... 606 | ........ 607 | ........ 608 | ...*.... 609 | ...*.... 610 | ........ 611 | ........ 612 | 613 | char 0x22 614 | ..*.*... 615 | ..*.*... 616 | ..*.*... 617 | ........ 618 | ........ 619 | ........ 620 | ........ 621 | ........ 622 | ........ 623 | ........ 624 | ........ 625 | ........ 626 | ........ 627 | ........ 628 | ........ 629 | ........ 630 | 631 | char 0x23 632 | ........ 633 | .*...*.. 634 | .*...*.. 635 | .*...*.. 636 | *******. 637 | .*...*.. 638 | .*...*.. 639 | .*...*.. 640 | .*...*.. 641 | .*...*.. 642 | *******. 643 | .*...*.. 644 | .*...*.. 645 | .*...*.. 646 | ........ 647 | ........ 648 | 649 | char 0x24 650 | ...*.... 651 | ..***.*. 652 | .*.*.**. 653 | *..*..*. 654 | *..*..*. 655 | *..*.... 656 | .*.*.... 657 | ..***... 658 | ...*.*.. 659 | ...*..*. 660 | *..*..*. 661 | *..*..*. 662 | **.*.*.. 663 | *.***... 664 | ...*.... 665 | ...*.... 666 | 667 | char 0x25 668 | .**...*. 669 | *..*..*. 670 | *..*.*.. 671 | *..*.*.. 672 | .**.*... 673 | ....*... 674 | ...*.... 675 | ...*.... 676 | ..*..... 677 | ..*.**.. 678 | .*.*..*. 679 | .*.*..*. 680 | *..*..*. 681 | *...**.. 682 | ........ 683 | ........ 684 | 685 | char 0x26 686 | ........ 687 | .***.... 688 | *...*... 689 | *...*... 690 | *...*... 691 | *..*.... 692 | .**..... 693 | .*...*** 694 | *.*...*. 695 | *..*..*. 696 | *...*.*. 697 | *....*.. 698 | .*...**. 699 | ..***..* 700 | ........ 701 | ........ 702 | 703 | char 0x27 704 | .....*.. 705 | ....*... 706 | ...*.... 707 | ........ 708 | ........ 709 | ........ 710 | ........ 711 | ........ 712 | ........ 713 | ........ 714 | ........ 715 | ........ 716 | ........ 717 | ........ 718 | ........ 719 | ........ 720 | 721 | char 0x28 722 | ......*. 723 | .....*.. 724 | ....*... 725 | ....*... 726 | ...*.... 727 | ...*.... 728 | ...*.... 729 | ...*.... 730 | ...*.... 731 | ...*.... 732 | ...*.... 733 | ....*... 734 | ....*... 735 | .....*.. 736 | ......*. 737 | ........ 738 | 739 | char 0x29 740 | *....... 741 | .*...... 742 | ..*..... 743 | ..*..... 744 | ...*.... 745 | ...*.... 746 | ...*.... 747 | ...*.... 748 | ...*.... 749 | ...*.... 750 | ...*.... 751 | ..*..... 752 | ..*..... 753 | .*...... 754 | *....... 755 | ........ 756 | 757 | char 0x2a 758 | ........ 759 | ........ 760 | ........ 761 | ........ 762 | ........ 763 | ...*.... 764 | *..*..*. 765 | .*.*.*.. 766 | ..***... 767 | .*.*.*.. 768 | *..*..*. 769 | ...*.... 770 | ........ 771 | ........ 772 | ........ 773 | ........ 774 | 775 | char 0x2b 776 | ........ 777 | ........ 778 | ........ 779 | ........ 780 | ........ 781 | ...*.... 782 | ...*.... 783 | ...*.... 784 | *******. 785 | ...*.... 786 | ...*.... 787 | ...*.... 788 | ........ 789 | ........ 790 | ........ 791 | ........ 792 | 793 | char 0x2c 794 | ........ 795 | ........ 796 | ........ 797 | ........ 798 | ........ 799 | ........ 800 | ........ 801 | ........ 802 | ........ 803 | ........ 804 | ........ 805 | ...**... 806 | ...**... 807 | ....*... 808 | ....*... 809 | ...*.... 810 | 811 | char 0x2d 812 | ........ 813 | ........ 814 | ........ 815 | ........ 816 | ........ 817 | ........ 818 | ........ 819 | ........ 820 | *******. 821 | ........ 822 | ........ 823 | ........ 824 | ........ 825 | ........ 826 | ........ 827 | ........ 828 | 829 | char 0x2e 830 | ........ 831 | ........ 832 | ........ 833 | ........ 834 | ........ 835 | ........ 836 | ........ 837 | ........ 838 | ........ 839 | ........ 840 | ........ 841 | ........ 842 | ...**... 843 | ...**... 844 | ........ 845 | ........ 846 | 847 | char 0x2f 848 | ......*. 849 | ......*. 850 | .....*.. 851 | .....*.. 852 | ....*... 853 | ....*... 854 | ....*... 855 | ...*.... 856 | ...*.... 857 | ..*..... 858 | ..*..... 859 | .*...... 860 | .*...... 861 | .*...... 862 | *....... 863 | *....... 864 | 865 | char 0x30 866 | ........ 867 | ...**... 868 | ..*..*.. 869 | ..*..*.. 870 | .*....*. 871 | .*....*. 872 | .*....*. 873 | .*....*. 874 | .*....*. 875 | .*....*. 876 | .*....*. 877 | ..*..*.. 878 | ..*..*.. 879 | ...**... 880 | ........ 881 | ........ 882 | 883 | char 0x31 884 | ........ 885 | ....*... 886 | ...**... 887 | ..*.*... 888 | ....*... 889 | ....*... 890 | ....*... 891 | ....*... 892 | ....*... 893 | ....*... 894 | ....*... 895 | ....*... 896 | ....*... 897 | ..*****. 898 | ........ 899 | ........ 900 | 901 | char 0x32 902 | ........ 903 | ...**... 904 | ..*..*.. 905 | .*....*. 906 | .*....*. 907 | ......*. 908 | .....*.. 909 | ....*... 910 | ...*.... 911 | ..*..... 912 | ..*..... 913 | .*...... 914 | .*...... 915 | .******. 916 | ........ 917 | ........ 918 | 919 | char 0x33 920 | ........ 921 | ...**... 922 | ..*..*.. 923 | .*....*. 924 | ......*. 925 | ......*. 926 | .....*.. 927 | ...**... 928 | .....*.. 929 | ......*. 930 | ......*. 931 | .*....*. 932 | ..*..*.. 933 | ...**... 934 | ........ 935 | ........ 936 | 937 | char 0x34 938 | ........ 939 | ....**.. 940 | ....**.. 941 | ....**.. 942 | ...*.*.. 943 | ...*.*.. 944 | ...*.*.. 945 | ..*..*.. 946 | ..*..*.. 947 | .*...*.. 948 | .******. 949 | .....*.. 950 | .....*.. 951 | ...****. 952 | ........ 953 | ........ 954 | 955 | char 0x35 956 | ........ 957 | .*****.. 958 | .*...... 959 | .*...... 960 | .*...... 961 | .*.**... 962 | .**..*.. 963 | ......*. 964 | ......*. 965 | ......*. 966 | ......*. 967 | .*....*. 968 | ..*..*.. 969 | ...**... 970 | ........ 971 | ........ 972 | 973 | char 0x36 974 | ........ 975 | ...**... 976 | ..*..*.. 977 | .*....*. 978 | .*...... 979 | .*.**... 980 | .**..*.. 981 | .*....*. 982 | .*....*. 983 | .*....*. 984 | .*....*. 985 | .*....*. 986 | ..*..*.. 987 | ...**... 988 | ........ 989 | ........ 990 | 991 | char 0x37 992 | ........ 993 | .******. 994 | .*....*. 995 | .*....*. 996 | .....*.. 997 | .....*.. 998 | ....*... 999 | ....*... 1000 | ....*... 1001 | ...*.... 1002 | ...*.... 1003 | ...*.... 1004 | ...*.... 1005 | ..***... 1006 | ........ 1007 | ........ 1008 | 1009 | char 0x38 1010 | ........ 1011 | ...**... 1012 | ..*..*.. 1013 | .*....*. 1014 | .*....*. 1015 | .*....*. 1016 | ..*..*.. 1017 | ...**... 1018 | ..*..*.. 1019 | .*....*. 1020 | .*....*. 1021 | .*....*. 1022 | ..*..*.. 1023 | ...**... 1024 | ........ 1025 | ........ 1026 | 1027 | char 0x39 1028 | ........ 1029 | ...**... 1030 | ..*..*.. 1031 | .*....*. 1032 | .*....*. 1033 | .*....*. 1034 | .*....*. 1035 | .*....*. 1036 | ..*..**. 1037 | ...**.*. 1038 | ......*. 1039 | .*....*. 1040 | ..*..*.. 1041 | ...**... 1042 | ........ 1043 | ........ 1044 | 1045 | char 0x3a 1046 | ........ 1047 | ........ 1048 | ........ 1049 | ........ 1050 | ........ 1051 | ...**... 1052 | ...**... 1053 | ........ 1054 | ........ 1055 | ........ 1056 | ........ 1057 | ........ 1058 | ...**... 1059 | ...**... 1060 | ........ 1061 | ........ 1062 | 1063 | char 0x3b 1064 | ........ 1065 | ........ 1066 | ........ 1067 | ........ 1068 | ........ 1069 | ...**... 1070 | ...**... 1071 | ........ 1072 | ........ 1073 | ........ 1074 | ........ 1075 | ...**... 1076 | ...**... 1077 | ....*... 1078 | ....*... 1079 | ...*.... 1080 | 1081 | char 0x3c 1082 | ........ 1083 | ......*. 1084 | .....*.. 1085 | ....*... 1086 | ...*.... 1087 | ..*..... 1088 | .*...... 1089 | *....... 1090 | *....... 1091 | .*...... 1092 | ..*..... 1093 | ...*.... 1094 | ....*... 1095 | .....*.. 1096 | ......*. 1097 | ........ 1098 | 1099 | char 0x3d 1100 | ........ 1101 | ........ 1102 | ........ 1103 | ........ 1104 | ........ 1105 | ........ 1106 | *******. 1107 | ........ 1108 | ........ 1109 | *******. 1110 | ........ 1111 | ........ 1112 | ........ 1113 | ........ 1114 | ........ 1115 | ........ 1116 | 1117 | char 0x3e 1118 | ........ 1119 | *....... 1120 | .*...... 1121 | ..*..... 1122 | ...*.... 1123 | ....*... 1124 | .....*.. 1125 | ......*. 1126 | ......*. 1127 | .....*.. 1128 | ....*... 1129 | ...*.... 1130 | ..*..... 1131 | .*...... 1132 | *....... 1133 | ........ 1134 | 1135 | char 0x3f 1136 | ........ 1137 | ..***... 1138 | .*...*.. 1139 | *.....*. 1140 | *.....*. 1141 | *.....*. 1142 | .....*.. 1143 | ....*... 1144 | ...*.... 1145 | ...*.... 1146 | ........ 1147 | ........ 1148 | ...**... 1149 | ...**... 1150 | ........ 1151 | ........ 1152 | 1153 | char 0x40 1154 | ........ 1155 | ..***... 1156 | .*...*.. 1157 | *.....*. 1158 | *..**.*. 1159 | *.*.*.*. 1160 | *.*.*.*. 1161 | *.*.*.*. 1162 | *.*.*.*. 1163 | *.*.*.*. 1164 | *..***.. 1165 | *....... 1166 | .*...**. 1167 | ..***... 1168 | ........ 1169 | ........ 1170 | 1171 | char 0x41 1172 | ........ 1173 | ...**... 1174 | ...**... 1175 | ...**... 1176 | ...**... 1177 | ..*..*.. 1178 | ..*..*.. 1179 | ..*..*.. 1180 | ..*..*.. 1181 | .******. 1182 | .*....*. 1183 | .*....*. 1184 | .*....*. 1185 | ***..*** 1186 | ........ 1187 | ........ 1188 | 1189 | char 0x42 1190 | ........ 1191 | ****.... 1192 | .*..*... 1193 | .*...*.. 1194 | .*...*.. 1195 | .*...*.. 1196 | .*..*... 1197 | .****... 1198 | .*...*.. 1199 | .*....*. 1200 | .*....*. 1201 | .*....*. 1202 | .*...*.. 1203 | *****... 1204 | ........ 1205 | ........ 1206 | 1207 | char 0x43 1208 | ........ 1209 | ..***.*. 1210 | .*...**. 1211 | .*....*. 1212 | *.....*. 1213 | *....... 1214 | *....... 1215 | *....... 1216 | *....... 1217 | *....... 1218 | *.....*. 1219 | .*....*. 1220 | .*...*.. 1221 | ..***... 1222 | ........ 1223 | ........ 1224 | 1225 | char 0x44 1226 | ........ 1227 | *****... 1228 | .*...*.. 1229 | .*...*.. 1230 | .*....*. 1231 | .*....*. 1232 | .*....*. 1233 | .*....*. 1234 | .*....*. 1235 | .*....*. 1236 | .*....*. 1237 | .*...*.. 1238 | .*...*.. 1239 | *****... 1240 | ........ 1241 | ........ 1242 | 1243 | char 0x45 1244 | ........ 1245 | *******. 1246 | .*....*. 1247 | .*....*. 1248 | .*...... 1249 | .*...... 1250 | .*...*.. 1251 | .*****.. 1252 | .*...*.. 1253 | .*...... 1254 | .*...... 1255 | .*....*. 1256 | .*....*. 1257 | *******. 1258 | ........ 1259 | ........ 1260 | 1261 | char 0x46 1262 | ........ 1263 | *******. 1264 | .*....*. 1265 | .*....*. 1266 | .*...... 1267 | .*...... 1268 | .*...*.. 1269 | .*****.. 1270 | .*...*.. 1271 | .*...*.. 1272 | .*...... 1273 | .*...... 1274 | .*...... 1275 | ****.... 1276 | ........ 1277 | ........ 1278 | 1279 | char 0x47 1280 | ........ 1281 | ..***.*. 1282 | .*...**. 1283 | .*....*. 1284 | *.....*. 1285 | *....... 1286 | *....... 1287 | *..****. 1288 | *.....*. 1289 | *.....*. 1290 | *.....*. 1291 | .*....*. 1292 | .*...**. 1293 | ..***... 1294 | ........ 1295 | ........ 1296 | 1297 | char 0x48 1298 | ........ 1299 | ***..*** 1300 | .*....*. 1301 | .*....*. 1302 | .*....*. 1303 | .*....*. 1304 | .*....*. 1305 | .******. 1306 | .*....*. 1307 | .*....*. 1308 | .*....*. 1309 | .*....*. 1310 | .*....*. 1311 | ***..*** 1312 | ........ 1313 | ........ 1314 | 1315 | char 0x49 1316 | ........ 1317 | .*****.. 1318 | ...*.... 1319 | ...*.... 1320 | ...*.... 1321 | ...*.... 1322 | ...*.... 1323 | ...*.... 1324 | ...*.... 1325 | ...*.... 1326 | ...*.... 1327 | ...*.... 1328 | ...*.... 1329 | .*****.. 1330 | ........ 1331 | ........ 1332 | 1333 | char 0x4a 1334 | ........ 1335 | ...***** 1336 | .....*.. 1337 | .....*.. 1338 | .....*.. 1339 | .....*.. 1340 | .....*.. 1341 | .....*.. 1342 | .....*.. 1343 | .....*.. 1344 | .....*.. 1345 | .....*.. 1346 | *....*.. 1347 | .*..*... 1348 | ..**.... 1349 | ........ 1350 | 1351 | char 0x4b 1352 | ........ 1353 | ***..*** 1354 | .*....*. 1355 | .*...*.. 1356 | .*..*... 1357 | .*.*.... 1358 | .*.*.... 1359 | .**..... 1360 | .*.*.... 1361 | .*.*.... 1362 | .*..*... 1363 | .*...*.. 1364 | .*....*. 1365 | ***..*** 1366 | ........ 1367 | ........ 1368 | 1369 | char 0x4c 1370 | ........ 1371 | ****.... 1372 | .*...... 1373 | .*...... 1374 | .*...... 1375 | .*...... 1376 | .*...... 1377 | .*...... 1378 | .*...... 1379 | .*...... 1380 | .*...... 1381 | .*....*. 1382 | .*....*. 1383 | *******. 1384 | ........ 1385 | ........ 1386 | 1387 | char 0x4d 1388 | ........ 1389 | **....** 1390 | .*....*. 1391 | .**..**. 1392 | .**..**. 1393 | .**..**. 1394 | .*.**.*. 1395 | .*.**.*. 1396 | .*.**.*. 1397 | .*....*. 1398 | .*....*. 1399 | .*....*. 1400 | .*....*. 1401 | ***..*** 1402 | ........ 1403 | ........ 1404 | 1405 | char 0x4e 1406 | ........ 1407 | **...*** 1408 | .*....*. 1409 | .**...*. 1410 | .**...*. 1411 | .*.*..*. 1412 | .*.*..*. 1413 | .*.*..*. 1414 | .*..*.*. 1415 | .*..*.*. 1416 | .*..*.*. 1417 | .*...**. 1418 | .*...**. 1419 | ***...*. 1420 | ........ 1421 | ........ 1422 | 1423 | char 0x4f 1424 | ........ 1425 | ..***... 1426 | .*...*.. 1427 | *.....*. 1428 | *.....*. 1429 | *.....*. 1430 | *.....*. 1431 | *.....*. 1432 | *.....*. 1433 | *.....*. 1434 | *.....*. 1435 | *.....*. 1436 | .*...*.. 1437 | ..***... 1438 | ........ 1439 | ........ 1440 | 1441 | char 0x50 1442 | ........ 1443 | *****... 1444 | .*...*.. 1445 | .*....*. 1446 | .*....*. 1447 | .*....*. 1448 | .*...*.. 1449 | .****... 1450 | .*...... 1451 | .*...... 1452 | .*...... 1453 | .*...... 1454 | .*...... 1455 | ****.... 1456 | ........ 1457 | ........ 1458 | 1459 | char 0x51 1460 | ........ 1461 | ..***... 1462 | .*...*.. 1463 | *.....*. 1464 | *.....*. 1465 | *.....*. 1466 | *.....*. 1467 | *.....*. 1468 | *.....*. 1469 | *.....*. 1470 | *..*..*. 1471 | *...*.*. 1472 | .*...*.. 1473 | ..***.*. 1474 | ........ 1475 | ........ 1476 | 1477 | char 0x52 1478 | ........ 1479 | ******.. 1480 | .*....*. 1481 | .*....*. 1482 | .*....*. 1483 | .*....*. 1484 | .*****.. 1485 | .*...*.. 1486 | .*....*. 1487 | .*....*. 1488 | .*....*. 1489 | .*....*. 1490 | .*....*. 1491 | ***..*** 1492 | ........ 1493 | ........ 1494 | 1495 | char 0x53 1496 | ........ 1497 | ..***.*. 1498 | .*...**. 1499 | *.....*. 1500 | *.....*. 1501 | *....... 1502 | .*...... 1503 | ..***... 1504 | .....*.. 1505 | ......*. 1506 | *.....*. 1507 | *.....*. 1508 | **...*.. 1509 | *.***... 1510 | ........ 1511 | ........ 1512 | 1513 | char 0x54 1514 | ........ 1515 | *******. 1516 | *..*..*. 1517 | *..*..*. 1518 | ...*.... 1519 | ...*.... 1520 | ...*.... 1521 | ...*.... 1522 | ...*.... 1523 | ...*.... 1524 | ...*.... 1525 | ...*.... 1526 | ...*.... 1527 | .*****.. 1528 | ........ 1529 | ........ 1530 | 1531 | char 0x55 1532 | ........ 1533 | ***..*** 1534 | .*....*. 1535 | .*....*. 1536 | .*....*. 1537 | .*....*. 1538 | .*....*. 1539 | .*....*. 1540 | .*....*. 1541 | .*....*. 1542 | .*....*. 1543 | .*....*. 1544 | ..*..*.. 1545 | ..****.. 1546 | ........ 1547 | ........ 1548 | 1549 | char 0x56 1550 | ........ 1551 | ***..*** 1552 | .*....*. 1553 | .*....*. 1554 | .*....*. 1555 | .*....*. 1556 | ..*..*.. 1557 | ..*..*.. 1558 | ..*..*.. 1559 | ..*..*.. 1560 | ...**... 1561 | ...**... 1562 | ...**... 1563 | ...**... 1564 | ........ 1565 | ........ 1566 | 1567 | char 0x57 1568 | ........ 1569 | ***..*** 1570 | .*....*. 1571 | .*....*. 1572 | .*....*. 1573 | .*.**.*. 1574 | .*.**.*. 1575 | .*.**.*. 1576 | .*.**.*. 1577 | ..*..*.. 1578 | ..*..*.. 1579 | ..*..*.. 1580 | ..*..*.. 1581 | ..*..*.. 1582 | ........ 1583 | ........ 1584 | 1585 | char 0x58 1586 | ........ 1587 | ***..*** 1588 | .*....*. 1589 | .*....*. 1590 | ..*..*.. 1591 | ..*..*.. 1592 | ..*..*.. 1593 | ...**... 1594 | ..*..*.. 1595 | ..*..*.. 1596 | ..*..*.. 1597 | .*....*. 1598 | .*....*. 1599 | ***..*** 1600 | ........ 1601 | ........ 1602 | 1603 | char 0x59 1604 | ........ 1605 | ***.***. 1606 | .*...*.. 1607 | .*...*.. 1608 | .*...*.. 1609 | ..*.*... 1610 | ..*.*... 1611 | ..*.*... 1612 | ...*.... 1613 | ...*.... 1614 | ...*.... 1615 | ...*.... 1616 | ...*.... 1617 | .*****.. 1618 | ........ 1619 | ........ 1620 | 1621 | char 0x5a 1622 | ........ 1623 | *******. 1624 | *....*.. 1625 | *....*.. 1626 | ....*... 1627 | ....*... 1628 | ...*.... 1629 | ...*.... 1630 | ..*..... 1631 | ..*..... 1632 | .*...... 1633 | .*....*. 1634 | *.....*. 1635 | *******. 1636 | ........ 1637 | ........ 1638 | 1639 | char 0x5b 1640 | ........ 1641 | ..*****. 1642 | ..*..... 1643 | ..*..... 1644 | ..*..... 1645 | ..*..... 1646 | ..*..... 1647 | ..*..... 1648 | ..*..... 1649 | ..*..... 1650 | ..*..... 1651 | ..*..... 1652 | ..*..... 1653 | ..*..... 1654 | ..*****. 1655 | ........ 1656 | 1657 | char 0x5c 1658 | *....... 1659 | *....... 1660 | .*...... 1661 | .*...... 1662 | ..*..... 1663 | ..*..... 1664 | ..*..... 1665 | ...*.... 1666 | ...*.... 1667 | ....*... 1668 | ....*... 1669 | .....*.. 1670 | .....*.. 1671 | .....*.. 1672 | ......*. 1673 | ......*. 1674 | 1675 | char 0x5d 1676 | ........ 1677 | .*****.. 1678 | .....*.. 1679 | .....*.. 1680 | .....*.. 1681 | .....*.. 1682 | .....*.. 1683 | .....*.. 1684 | .....*.. 1685 | .....*.. 1686 | .....*.. 1687 | .....*.. 1688 | .....*.. 1689 | .....*.. 1690 | .*****.. 1691 | ........ 1692 | 1693 | char 0x5e 1694 | ........ 1695 | ...*.... 1696 | ..*.*... 1697 | .*...*.. 1698 | *.....*. 1699 | ........ 1700 | ........ 1701 | ........ 1702 | ........ 1703 | ........ 1704 | ........ 1705 | ........ 1706 | ........ 1707 | ........ 1708 | ........ 1709 | ........ 1710 | 1711 | char 0x5f 1712 | ........ 1713 | ........ 1714 | ........ 1715 | ........ 1716 | ........ 1717 | ........ 1718 | ........ 1719 | ........ 1720 | ........ 1721 | ........ 1722 | ........ 1723 | ........ 1724 | ........ 1725 | ........ 1726 | *******. 1727 | ........ 1728 | 1729 | char 0x60 1730 | ...*.... 1731 | ....*... 1732 | .....*.. 1733 | ........ 1734 | ........ 1735 | ........ 1736 | ........ 1737 | ........ 1738 | ........ 1739 | ........ 1740 | ........ 1741 | ........ 1742 | ........ 1743 | ........ 1744 | ........ 1745 | ........ 1746 | 1747 | char 0x61 1748 | ........ 1749 | ........ 1750 | ........ 1751 | ........ 1752 | ........ 1753 | .***.... 1754 | ....*... 1755 | .....*.. 1756 | ..****.. 1757 | .*...*.. 1758 | *....*.. 1759 | *....*.. 1760 | *...**.. 1761 | .***.**. 1762 | ........ 1763 | ........ 1764 | 1765 | char 0x62 1766 | **...... 1767 | .*...... 1768 | .*...... 1769 | .*...... 1770 | .*...... 1771 | .*.**... 1772 | .**..*.. 1773 | .*....*. 1774 | .*....*. 1775 | .*....*. 1776 | .*....*. 1777 | .*....*. 1778 | .**..*.. 1779 | .*.**... 1780 | ........ 1781 | ........ 1782 | 1783 | char 0x63 1784 | ........ 1785 | ........ 1786 | ........ 1787 | ........ 1788 | ........ 1789 | ..**.... 1790 | .*..**.. 1791 | *....*.. 1792 | *....*.. 1793 | *....... 1794 | *....... 1795 | *.....*. 1796 | .*...*.. 1797 | ..***... 1798 | ........ 1799 | ........ 1800 | 1801 | char 0x64 1802 | ....**.. 1803 | .....*.. 1804 | .....*.. 1805 | .....*.. 1806 | .....*.. 1807 | ..**.*.. 1808 | .*..**.. 1809 | *....*.. 1810 | *....*.. 1811 | *....*.. 1812 | *....*.. 1813 | *....*.. 1814 | .*..**.. 1815 | ..**.**. 1816 | ........ 1817 | ........ 1818 | 1819 | char 0x65 1820 | ........ 1821 | ........ 1822 | ........ 1823 | ........ 1824 | ........ 1825 | ..***... 1826 | .*...*.. 1827 | *.....*. 1828 | *.....*. 1829 | ******.. 1830 | *....... 1831 | *.....*. 1832 | .*....*. 1833 | ..****.. 1834 | ........ 1835 | ........ 1836 | 1837 | char 0x66 1838 | ....***. 1839 | ...*.... 1840 | ...*.... 1841 | ...*.... 1842 | ...*.... 1843 | .*****.. 1844 | ...*.... 1845 | ...*.... 1846 | ...*.... 1847 | ...*.... 1848 | ...*.... 1849 | ...*.... 1850 | ...*.... 1851 | .*****.. 1852 | ........ 1853 | ........ 1854 | 1855 | char 0x67 1856 | ........ 1857 | ........ 1858 | ........ 1859 | ........ 1860 | ........ 1861 | ..**.**. 1862 | .*..**.. 1863 | *....*.. 1864 | *....*.. 1865 | *....*.. 1866 | *....*.. 1867 | .*..**.. 1868 | ..**.*.. 1869 | .....*.. 1870 | .....*.. 1871 | .****... 1872 | 1873 | char 0x68 1874 | **...... 1875 | .*...... 1876 | .*...... 1877 | .*...... 1878 | .*...... 1879 | .*.**... 1880 | .**..*.. 1881 | .*....*. 1882 | .*....*. 1883 | .*....*. 1884 | .*....*. 1885 | .*....*. 1886 | .*....*. 1887 | ***...** 1888 | ........ 1889 | ........ 1890 | 1891 | char 0x69 1892 | ........ 1893 | ...*.... 1894 | ...*.... 1895 | ........ 1896 | ........ 1897 | ..**.... 1898 | ...*.... 1899 | ...*.... 1900 | ...*.... 1901 | ...*.... 1902 | ...*.... 1903 | ...*.... 1904 | ...*.... 1905 | ..***... 1906 | ........ 1907 | ........ 1908 | 1909 | char 0x6a 1910 | ........ 1911 | .....*.. 1912 | .....*.. 1913 | ........ 1914 | ........ 1915 | ....**.. 1916 | .....*.. 1917 | .....*.. 1918 | .....*.. 1919 | .....*.. 1920 | .....*.. 1921 | .....*.. 1922 | .....*.. 1923 | ....*... 1924 | ....*... 1925 | ..**.... 1926 | 1927 | char 0x6b 1928 | **...... 1929 | .*...... 1930 | .*...... 1931 | .*...... 1932 | .*...... 1933 | .*..***. 1934 | .*...*.. 1935 | .*..*... 1936 | .*.*.... 1937 | .**..... 1938 | .*.*.... 1939 | .*..*... 1940 | .*...*.. 1941 | ***..**. 1942 | ........ 1943 | ........ 1944 | 1945 | char 0x6c 1946 | ..**.... 1947 | ...*.... 1948 | ...*.... 1949 | ...*.... 1950 | ...*.... 1951 | ...*.... 1952 | ...*.... 1953 | ...*.... 1954 | ...*.... 1955 | ...*.... 1956 | ...*.... 1957 | ...*.... 1958 | ...*.... 1959 | ..***... 1960 | ........ 1961 | ........ 1962 | 1963 | char 0x6d 1964 | ........ 1965 | ........ 1966 | ........ 1967 | ........ 1968 | ........ 1969 | ****.**. 1970 | .*..*..* 1971 | .*..*..* 1972 | .*..*..* 1973 | .*..*..* 1974 | .*..*..* 1975 | .*..*..* 1976 | .*..*..* 1977 | **.**.** 1978 | ........ 1979 | ........ 1980 | 1981 | char 0x6e 1982 | ........ 1983 | ........ 1984 | ........ 1985 | ........ 1986 | ........ 1987 | **.**... 1988 | .**..*.. 1989 | .*....*. 1990 | .*....*. 1991 | .*....*. 1992 | .*....*. 1993 | .*....*. 1994 | .*....*. 1995 | ***...** 1996 | ........ 1997 | ........ 1998 | 1999 | char 0x6f 2000 | ........ 2001 | ........ 2002 | ........ 2003 | ........ 2004 | ........ 2005 | ..***... 2006 | .*...*.. 2007 | *.....*. 2008 | *.....*. 2009 | *.....*. 2010 | *.....*. 2011 | *.....*. 2012 | .*...*.. 2013 | ..***... 2014 | ........ 2015 | ........ 2016 | 2017 | char 0x70 2018 | ........ 2019 | ........ 2020 | ........ 2021 | ........ 2022 | ........ 2023 | **.**... 2024 | .**..*.. 2025 | .*....*. 2026 | .*....*. 2027 | .*....*. 2028 | .*....*. 2029 | .*....*. 2030 | .**..*.. 2031 | .*.**... 2032 | .*...... 2033 | ***..... 2034 | 2035 | char 0x71 2036 | ........ 2037 | ........ 2038 | ........ 2039 | ........ 2040 | ........ 2041 | ..**.*.. 2042 | .*..**.. 2043 | *....*.. 2044 | *....*.. 2045 | *....*.. 2046 | *....*.. 2047 | *....*.. 2048 | .*..**.. 2049 | ..**.*.. 2050 | .....*.. 2051 | ....***. 2052 | 2053 | char 0x72 2054 | ........ 2055 | ........ 2056 | ........ 2057 | ........ 2058 | ........ 2059 | **.***.. 2060 | .**...*. 2061 | .*....*. 2062 | .*...... 2063 | .*...... 2064 | .*...... 2065 | .*...... 2066 | .*...... 2067 | ***..... 2068 | ........ 2069 | ........ 2070 | 2071 | char 0x73 2072 | ........ 2073 | ........ 2074 | ........ 2075 | ........ 2076 | ........ 2077 | .****.*. 2078 | *....**. 2079 | *.....*. 2080 | **...... 2081 | ..***... 2082 | .....**. 2083 | *.....*. 2084 | **....*. 2085 | *.****.. 2086 | ........ 2087 | ........ 2088 | 2089 | char 0x74 2090 | ........ 2091 | ........ 2092 | ...*.... 2093 | ...*.... 2094 | ...*.... 2095 | .*****.. 2096 | ...*.... 2097 | ...*.... 2098 | ...*.... 2099 | ...*.... 2100 | ...*.... 2101 | ...*.... 2102 | ...*.... 2103 | ....***. 2104 | ........ 2105 | ........ 2106 | 2107 | char 0x75 2108 | ........ 2109 | ........ 2110 | ........ 2111 | ........ 2112 | ........ 2113 | **...**. 2114 | .*....*. 2115 | .*....*. 2116 | .*....*. 2117 | .*....*. 2118 | .*....*. 2119 | .*....*. 2120 | .*...**. 2121 | ..***.** 2122 | ........ 2123 | ........ 2124 | 2125 | char 0x76 2126 | ........ 2127 | ........ 2128 | ........ 2129 | ........ 2130 | ........ 2131 | ***..*** 2132 | .*....*. 2133 | .*....*. 2134 | .*....*. 2135 | ..*..*.. 2136 | ..*..*.. 2137 | ..*..*.. 2138 | ...**... 2139 | ...**... 2140 | ........ 2141 | ........ 2142 | 2143 | char 0x77 2144 | ........ 2145 | ........ 2146 | ........ 2147 | ........ 2148 | ........ 2149 | ***..*** 2150 | .*....*. 2151 | .*....*. 2152 | .*.**.*. 2153 | .*.**.*. 2154 | .*.**.*. 2155 | ..*..*.. 2156 | ..*..*.. 2157 | ..*..*.. 2158 | ........ 2159 | ........ 2160 | 2161 | char 0x78 2162 | ........ 2163 | ........ 2164 | ........ 2165 | ........ 2166 | ........ 2167 | **...**. 2168 | .*...*.. 2169 | ..*.*... 2170 | ..*.*... 2171 | ...*.... 2172 | ..*.*... 2173 | ..*.*... 2174 | .*...*.. 2175 | **...**. 2176 | ........ 2177 | ........ 2178 | 2179 | char 0x79 2180 | ........ 2181 | ........ 2182 | ........ 2183 | ........ 2184 | ........ 2185 | ***..*** 2186 | .*....*. 2187 | .*....*. 2188 | ..*..*.. 2189 | ..*..*.. 2190 | ..*..*.. 2191 | ...**... 2192 | ...**... 2193 | ...*.... 2194 | ...*.... 2195 | .**..... 2196 | 2197 | char 0x7a 2198 | ........ 2199 | ........ 2200 | ........ 2201 | ........ 2202 | ........ 2203 | *******. 2204 | *.....*. 2205 | *....*.. 2206 | ....*... 2207 | ...*.... 2208 | ..*..... 2209 | .*....*. 2210 | *.....*. 2211 | *******. 2212 | ........ 2213 | ........ 2214 | 2215 | char 0x7b 2216 | ........ 2217 | .....**. 2218 | ....*... 2219 | ...*.... 2220 | ...*.... 2221 | ...*.... 2222 | ...*.... 2223 | .**..... 2224 | ...*.... 2225 | ...*.... 2226 | ...*.... 2227 | ...*.... 2228 | ....*... 2229 | .....**. 2230 | ........ 2231 | ........ 2232 | 2233 | char 0x7c 2234 | ...*.... 2235 | ...*.... 2236 | ...*.... 2237 | ...*.... 2238 | ...*.... 2239 | ...*.... 2240 | ...*.... 2241 | ...*.... 2242 | ...*.... 2243 | ...*.... 2244 | ...*.... 2245 | ...*.... 2246 | ...*.... 2247 | ...*.... 2248 | ...*.... 2249 | ...*.... 2250 | 2251 | char 0x7d 2252 | ........ 2253 | .**..... 2254 | ...*.... 2255 | ....*... 2256 | ....*... 2257 | ....*... 2258 | ....*... 2259 | .....**. 2260 | ....*... 2261 | ....*... 2262 | ....*... 2263 | ....*... 2264 | ...*.... 2265 | .**..... 2266 | ........ 2267 | ........ 2268 | 2269 | char 0x7e 2270 | ........ 2271 | .***..*. 2272 | *...**.. 2273 | ........ 2274 | ........ 2275 | ........ 2276 | ........ 2277 | ........ 2278 | ........ 2279 | ........ 2280 | ........ 2281 | ........ 2282 | ........ 2283 | ........ 2284 | ........ 2285 | ........ 2286 | 2287 | char 0x7f 2288 | ........ 2289 | ........ 2290 | ........ 2291 | ........ 2292 | ...*.... 2293 | ..*.*... 2294 | .*...*.. 2295 | *.....*. 2296 | *******. 2297 | *.....*. 2298 | *******. 2299 | ........ 2300 | ........ 2301 | ........ 2302 | ........ 2303 | ........ 2304 | 2305 | char 0x80 2306 | ........ 2307 | ..***... 2308 | .*...*.. 2309 | *.....*. 2310 | *....... 2311 | *....... 2312 | *....... 2313 | *....... 2314 | *....... 2315 | *....... 2316 | *....... 2317 | *.....*. 2318 | .*...*.. 2319 | ..***... 2320 | ...*.... 2321 | ..*..... 2322 | 2323 | char 0x81 2324 | ........ 2325 | ........ 2326 | ..*..*.. 2327 | ..*..*.. 2328 | ........ 2329 | *.....*. 2330 | *.....*. 2331 | *.....*. 2332 | *.....*. 2333 | *.....*. 2334 | *.....*. 2335 | *.....*. 2336 | .*....*. 2337 | ..*****. 2338 | ........ 2339 | ........ 2340 | 2341 | char 0x82 2342 | ....**.. 2343 | ....*... 2344 | ...*.... 2345 | ........ 2346 | ........ 2347 | ..***... 2348 | .*...*.. 2349 | *.....*. 2350 | *.....*. 2351 | *******. 2352 | *....... 2353 | *.....*. 2354 | .*...*.. 2355 | ..***... 2356 | ........ 2357 | ........ 2358 | 2359 | char 0x83 2360 | ........ 2361 | ...*.... 2362 | ..*.*... 2363 | .*...*.. 2364 | ........ 2365 | .****... 2366 | .....*.. 2367 | .....*.. 2368 | ..****.. 2369 | .*...*.. 2370 | *....*.. 2371 | *....*.. 2372 | .*...*.. 2373 | ..*****. 2374 | ........ 2375 | ........ 2376 | 2377 | char 0x84 2378 | ........ 2379 | ........ 2380 | ..*..*.. 2381 | ..*..*.. 2382 | ........ 2383 | .****... 2384 | .....*.. 2385 | .....*.. 2386 | ..****.. 2387 | .*...*.. 2388 | *....*.. 2389 | *....*.. 2390 | .*...*.. 2391 | ..*****. 2392 | ........ 2393 | ........ 2394 | 2395 | char 0x85 2396 | ...*.... 2397 | ....*... 2398 | .....*.. 2399 | ........ 2400 | ........ 2401 | .****... 2402 | .....*.. 2403 | .....*.. 2404 | ..****.. 2405 | .*...*.. 2406 | *....*.. 2407 | *....*.. 2408 | .*...*.. 2409 | ..*****. 2410 | ........ 2411 | ........ 2412 | 2413 | char 0x86 2414 | ........ 2415 | ...**... 2416 | ..*..*.. 2417 | ...**... 2418 | ........ 2419 | .****... 2420 | .....*.. 2421 | .....*.. 2422 | ..****.. 2423 | .*...*.. 2424 | *....*.. 2425 | *....*.. 2426 | .*...*.. 2427 | ..*****. 2428 | ........ 2429 | ........ 2430 | 2431 | char 0x87 2432 | ........ 2433 | ........ 2434 | ........ 2435 | ........ 2436 | ........ 2437 | ..****.. 2438 | .*....*. 2439 | *....... 2440 | *....... 2441 | *....... 2442 | *....... 2443 | *....... 2444 | .*....*. 2445 | ..****.. 2446 | ....*... 2447 | ...*.... 2448 | 2449 | char 0x88 2450 | ........ 2451 | ...*.... 2452 | ..*.*... 2453 | .*...*.. 2454 | ........ 2455 | ..***... 2456 | .*...*.. 2457 | *.....*. 2458 | *.....*. 2459 | *******. 2460 | *....... 2461 | *.....*. 2462 | .*...*.. 2463 | ..***... 2464 | ........ 2465 | ........ 2466 | 2467 | char 0x89 2468 | ........ 2469 | ........ 2470 | ..*..*.. 2471 | ..*..*.. 2472 | ........ 2473 | ..***... 2474 | .*...*.. 2475 | *.....*. 2476 | *.....*. 2477 | *******. 2478 | *....... 2479 | *.....*. 2480 | .*...*.. 2481 | ..***... 2482 | ........ 2483 | ........ 2484 | 2485 | char 0x8a 2486 | ...*.... 2487 | ....*... 2488 | .....*.. 2489 | ........ 2490 | ........ 2491 | ..***... 2492 | .*...*.. 2493 | *.....*. 2494 | *.....*. 2495 | *******. 2496 | *....... 2497 | *.....*. 2498 | .*...*.. 2499 | ..***... 2500 | ........ 2501 | ........ 2502 | 2503 | char 0x8b 2504 | ........ 2505 | ........ 2506 | ..*..*.. 2507 | ..*..*.. 2508 | ........ 2509 | ...*.... 2510 | ...*.... 2511 | ...*.... 2512 | ...*.... 2513 | ...*.... 2514 | ...*.... 2515 | ...*.... 2516 | ...*.... 2517 | ...*.... 2518 | ........ 2519 | ........ 2520 | 2521 | char 0x8c 2522 | ........ 2523 | ...*.... 2524 | ..*.*... 2525 | .*...*.. 2526 | ........ 2527 | ...*.... 2528 | ...*.... 2529 | ...*.... 2530 | ...*.... 2531 | ...*.... 2532 | ...*.... 2533 | ...*.... 2534 | ...*.... 2535 | ...*.... 2536 | ........ 2537 | ........ 2538 | 2539 | char 0x8d 2540 | ...*.... 2541 | ....*... 2542 | .....*.. 2543 | ........ 2544 | ........ 2545 | ...*.... 2546 | ...*.... 2547 | ...*.... 2548 | ...*.... 2549 | ...*.... 2550 | ...*.... 2551 | ...*.... 2552 | ...*.... 2553 | ...*.... 2554 | ........ 2555 | ........ 2556 | 2557 | char 0x8e 2558 | ..*..*.. 2559 | ..*..*.. 2560 | ........ 2561 | ..***... 2562 | .*...*.. 2563 | *.....*. 2564 | *.....*. 2565 | *.....*. 2566 | *.....*. 2567 | *******. 2568 | *.....*. 2569 | *.....*. 2570 | *.....*. 2571 | *.....*. 2572 | ........ 2573 | ........ 2574 | 2575 | char 0x8f 2576 | ........ 2577 | ..***... 2578 | .*...*.. 2579 | ..***... 2580 | .*...*.. 2581 | *.....*. 2582 | *.....*. 2583 | *.....*. 2584 | *.....*. 2585 | *******. 2586 | *.....*. 2587 | *.....*. 2588 | *.....*. 2589 | *.....*. 2590 | ........ 2591 | ........ 2592 | 2593 | char 0x90 2594 | ....**.. 2595 | ....*... 2596 | ...*.... 2597 | *******. 2598 | *....... 2599 | *....... 2600 | *....... 2601 | *....... 2602 | *****... 2603 | *....... 2604 | *....... 2605 | *....... 2606 | *....... 2607 | *******. 2608 | ........ 2609 | ........ 2610 | 2611 | char 0x91 2612 | ........ 2613 | ........ 2614 | ........ 2615 | ........ 2616 | ........ 2617 | .**..... 2618 | ...***.. 2619 | ...*..*. 2620 | .***..*. 2621 | *..****. 2622 | *..*.... 2623 | *..*.... 2624 | *..*..*. 2625 | .**.**.. 2626 | ........ 2627 | ........ 2628 | 2629 | char 0x92 2630 | ....**.. 2631 | ...*.... 2632 | ..*..... 2633 | ..*.*... 2634 | ..*.*... 2635 | ..*.*... 2636 | *******. 2637 | ..*.*... 2638 | ..*.*... 2639 | ..*.*... 2640 | ..*.*... 2641 | ..*.*... 2642 | ..*.*... 2643 | ..*.*... 2644 | ........ 2645 | ........ 2646 | 2647 | char 0x93 2648 | ........ 2649 | ...*.... 2650 | ..*.*... 2651 | .*...*.. 2652 | ........ 2653 | ..***... 2654 | .*...*.. 2655 | *.....*. 2656 | *.....*. 2657 | *.....*. 2658 | *.....*. 2659 | *.....*. 2660 | .*...*.. 2661 | ..***... 2662 | ........ 2663 | ........ 2664 | 2665 | char 0x94 2666 | ........ 2667 | ........ 2668 | ..*..*.. 2669 | ..*..*.. 2670 | ........ 2671 | ..***... 2672 | .*...*.. 2673 | *.....*. 2674 | *.....*. 2675 | *.....*. 2676 | *.....*. 2677 | *.....*. 2678 | .*...*.. 2679 | ..***... 2680 | ........ 2681 | ........ 2682 | 2683 | char 0x95 2684 | ...*.... 2685 | ....*... 2686 | .....*.. 2687 | ........ 2688 | ........ 2689 | ..***... 2690 | .*...*.. 2691 | *.....*. 2692 | *.....*. 2693 | *.....*. 2694 | *.....*. 2695 | *.....*. 2696 | .*...*.. 2697 | ..***... 2698 | ........ 2699 | ........ 2700 | 2701 | char 0x96 2702 | ........ 2703 | ...*.... 2704 | ..*.*... 2705 | .*...*.. 2706 | ........ 2707 | *.....*. 2708 | *.....*. 2709 | *.....*. 2710 | *.....*. 2711 | *.....*. 2712 | *.....*. 2713 | *.....*. 2714 | .*....*. 2715 | ..*****. 2716 | ........ 2717 | ........ 2718 | 2719 | char 0x97 2720 | ...*.... 2721 | ....*... 2722 | .....*.. 2723 | ........ 2724 | ........ 2725 | *.....*. 2726 | *.....*. 2727 | *.....*. 2728 | *.....*. 2729 | *.....*. 2730 | *.....*. 2731 | *.....*. 2732 | .*....*. 2733 | ..*****. 2734 | ........ 2735 | ........ 2736 | 2737 | char 0x98 2738 | ........ 2739 | ........ 2740 | ..*..*.. 2741 | ..*..*.. 2742 | ........ 2743 | *.....*. 2744 | *.....*. 2745 | .*...*.. 2746 | .*...*.. 2747 | ..*.*... 2748 | ..*.*... 2749 | ...*.... 2750 | ...*.... 2751 | ..*..... 2752 | ..*..... 2753 | .*...... 2754 | 2755 | char 0x99 2756 | ..*..*.. 2757 | ..*..*.. 2758 | ........ 2759 | ..***... 2760 | .*...*.. 2761 | *.....*. 2762 | *.....*. 2763 | *.....*. 2764 | *.....*. 2765 | *.....*. 2766 | *.....*. 2767 | *.....*. 2768 | .*...*.. 2769 | ..***... 2770 | ........ 2771 | ........ 2772 | 2773 | char 0x9a 2774 | ..*..*.. 2775 | ..*..*.. 2776 | ........ 2777 | *.....*. 2778 | *.....*. 2779 | *.....*. 2780 | *.....*. 2781 | *.....*. 2782 | *.....*. 2783 | *.....*. 2784 | *.....*. 2785 | *.....*. 2786 | .*...*.. 2787 | ..***... 2788 | ........ 2789 | ........ 2790 | 2791 | char 0x9b 2792 | ........ 2793 | ..*.*... 2794 | ..*.*... 2795 | ..*.*... 2796 | ..****.. 2797 | .**.*.*. 2798 | *.*.*... 2799 | *.*.*... 2800 | *.*.*... 2801 | *.*.*... 2802 | *.*.*... 2803 | .**.*.*. 2804 | ..****.. 2805 | ..*.*... 2806 | ..*.*... 2807 | ..*.*... 2808 | 2809 | char 0x9c 2810 | ........ 2811 | ....**.. 2812 | ...*..*. 2813 | ..*..... 2814 | ..*..... 2815 | ..*..... 2816 | ******.. 2817 | ..*..... 2818 | ..*..... 2819 | ..*..... 2820 | .**..... 2821 | *.*..... 2822 | *.**..*. 2823 | .*..**.. 2824 | ........ 2825 | ........ 2826 | 2827 | char 0x9d 2828 | ........ 2829 | *.....*. 2830 | *.....*. 2831 | .*...*.. 2832 | ..*.*... 2833 | ...*.... 2834 | *******. 2835 | ...*.... 2836 | ...*.... 2837 | *******. 2838 | ...*.... 2839 | ...*.... 2840 | ...*.... 2841 | ...*.... 2842 | ........ 2843 | ........ 2844 | 2845 | char 0x9e 2846 | ........ 2847 | ***..... 2848 | *..*.... 2849 | *...*... 2850 | *...*... 2851 | *...*... 2852 | *..*.*.. 2853 | ***..*.. 2854 | *..***** 2855 | *....*.. 2856 | *....*.. 2857 | *....*.. 2858 | *....*.. 2859 | *....*.. 2860 | ........ 2861 | ........ 2862 | 2863 | char 0x9f 2864 | ........ 2865 | ....**.. 2866 | ...*..*. 2867 | ...*.... 2868 | ...*.... 2869 | ...*.... 2870 | *******. 2871 | ...*.... 2872 | ...*.... 2873 | ...*.... 2874 | ...*.... 2875 | ...*.... 2876 | *..*.... 2877 | .**..... 2878 | ........ 2879 | ........ 2880 | 2881 | char 0xa0 2882 | ....**.. 2883 | ....*... 2884 | ...*.... 2885 | ........ 2886 | ........ 2887 | .****... 2888 | .....*.. 2889 | .....*.. 2890 | ..****.. 2891 | .*...*.. 2892 | *....*.. 2893 | *....*.. 2894 | .*...*.. 2895 | ..*****. 2896 | ........ 2897 | ........ 2898 | 2899 | char 0xa1 2900 | ....**.. 2901 | ....*... 2902 | ...*.... 2903 | ........ 2904 | ........ 2905 | ...*.... 2906 | ...*.... 2907 | ...*.... 2908 | ...*.... 2909 | ...*.... 2910 | ...*.... 2911 | ...*.... 2912 | ...*.... 2913 | ...*.... 2914 | ........ 2915 | ........ 2916 | 2917 | char 0xa2 2918 | ....**.. 2919 | ....*... 2920 | ...*.... 2921 | ........ 2922 | ........ 2923 | ..***... 2924 | .*...*.. 2925 | *.....*. 2926 | *.....*. 2927 | *.....*. 2928 | *.....*. 2929 | *.....*. 2930 | .*...*.. 2931 | ..***... 2932 | ........ 2933 | ........ 2934 | 2935 | char 0xa3 2936 | ....**.. 2937 | ....*... 2938 | ...*.... 2939 | ........ 2940 | ........ 2941 | *.....*. 2942 | *.....*. 2943 | *.....*. 2944 | *.....*. 2945 | *.....*. 2946 | *.....*. 2947 | *.....*. 2948 | .*....*. 2949 | ..*****. 2950 | ........ 2951 | ........ 2952 | 2953 | char 0xa4 2954 | ........ 2955 | ...*..*. 2956 | ..*.*.*. 2957 | ..*..*.. 2958 | ........ 2959 | *****... 2960 | *....*.. 2961 | *.....*. 2962 | *.....*. 2963 | *.....*. 2964 | *.....*. 2965 | *.....*. 2966 | *.....*. 2967 | *.....*. 2968 | ........ 2969 | ........ 2970 | 2971 | char 0xa5 2972 | ...*..*. 2973 | ..*.*.*. 2974 | ..*..*.. 2975 | ........ 2976 | *.....*. 2977 | **....*. 2978 | **....*. 2979 | *.*...*. 2980 | *..*..*. 2981 | *..*..*. 2982 | *...*.*. 2983 | *....**. 2984 | *....**. 2985 | *.....*. 2986 | ........ 2987 | ........ 2988 | 2989 | char 0xa6 2990 | ........ 2991 | ........ 2992 | ........ 2993 | .****... 2994 | .....*.. 2995 | .....*.. 2996 | ..****.. 2997 | .*...*.. 2998 | *....*.. 2999 | *....*.. 3000 | .*...*.. 3001 | ..*****. 3002 | ........ 3003 | *******. 3004 | ........ 3005 | ........ 3006 | 3007 | char 0xa7 3008 | ........ 3009 | ........ 3010 | ........ 3011 | ..***... 3012 | .*...*.. 3013 | *.....*. 3014 | *.....*. 3015 | *.....*. 3016 | *.....*. 3017 | *.....*. 3018 | .*...*.. 3019 | ..***... 3020 | ........ 3021 | *******. 3022 | ........ 3023 | ........ 3024 | 3025 | char 0xa8 3026 | ........ 3027 | ...*.... 3028 | ...*.... 3029 | ........ 3030 | ........ 3031 | ...*.... 3032 | ...*.... 3033 | ..*..... 3034 | .*...*.. 3035 | *.....*. 3036 | *.....*. 3037 | *.....*. 3038 | .*...*.. 3039 | ..***... 3040 | ........ 3041 | ........ 3042 | 3043 | char 0xa9 3044 | ........ 3045 | ........ 3046 | ........ 3047 | ........ 3048 | ........ 3049 | ........ 3050 | ........ 3051 | ........ 3052 | ........ 3053 | ........ 3054 | *******. 3055 | *....... 3056 | *....... 3057 | *....... 3058 | ........ 3059 | ........ 3060 | 3061 | char 0xaa 3062 | ........ 3063 | ........ 3064 | ........ 3065 | ........ 3066 | ........ 3067 | ........ 3068 | ........ 3069 | ........ 3070 | ........ 3071 | ........ 3072 | *******. 3073 | ......*. 3074 | ......*. 3075 | ......*. 3076 | ........ 3077 | ........ 3078 | 3079 | char 0xab 3080 | ........ 3081 | ...*.... 3082 | ..**.... 3083 | ...*.... 3084 | ...*.... 3085 | ...*.... 3086 | ........ 3087 | *******. 3088 | ........ 3089 | .****... 3090 | .....*.. 3091 | ..***... 3092 | .*...... 3093 | .*****.. 3094 | ........ 3095 | ........ 3096 | 3097 | char 0xac 3098 | ........ 3099 | ...*.... 3100 | ..**.... 3101 | ...*.... 3102 | ...*.... 3103 | ...*.... 3104 | ........ 3105 | *******. 3106 | ........ 3107 | ...**... 3108 | ..*.*... 3109 | .*..*... 3110 | .*****.. 3111 | ....*... 3112 | ........ 3113 | ........ 3114 | 3115 | char 0xad 3116 | ........ 3117 | ...*.... 3118 | ...*.... 3119 | ........ 3120 | ........ 3121 | ...*.... 3122 | ...*.... 3123 | ...*.... 3124 | ...*.... 3125 | ...*.... 3126 | ...*.... 3127 | ...*.... 3128 | ...*.... 3129 | ...*.... 3130 | ........ 3131 | ........ 3132 | 3133 | char 0xae 3134 | ........ 3135 | ........ 3136 | ........ 3137 | ........ 3138 | ...*..*. 3139 | ..*..*.. 3140 | .*..*... 3141 | *..*.... 3142 | *..*.... 3143 | .*..*... 3144 | ..*..*.. 3145 | ...*..*. 3146 | ........ 3147 | ........ 3148 | ........ 3149 | ........ 3150 | 3151 | char 0xaf 3152 | ........ 3153 | ........ 3154 | ........ 3155 | ........ 3156 | *..*.... 3157 | .*..*... 3158 | ..*..*.. 3159 | ...*..*. 3160 | ...*..*. 3161 | ..*..*.. 3162 | .*..*... 3163 | *..*.... 3164 | ........ 3165 | ........ 3166 | ........ 3167 | ........ 3168 | 3169 | char 0xb0 3170 | ...*...* 3171 | .*...*.. 3172 | ...*...* 3173 | .*...*.. 3174 | ...*...* 3175 | .*...*.. 3176 | ...*...* 3177 | .*...*.. 3178 | ...*...* 3179 | .*...*.. 3180 | ...*...* 3181 | .*...*.. 3182 | ...*...* 3183 | .*...*.. 3184 | ...*...* 3185 | .*...*.. 3186 | 3187 | char 0xb1 3188 | .*.*.*.* 3189 | *.*.*.*. 3190 | .*.*.*.* 3191 | *.*.*.*. 3192 | .*.*.*.* 3193 | *.*.*.*. 3194 | .*.*.*.* 3195 | *.*.*.*. 3196 | .*.*.*.* 3197 | *.*.*.*. 3198 | .*.*.*.* 3199 | *.*.*.*. 3200 | .*.*.*.* 3201 | *.*.*.*. 3202 | .*.*.*.* 3203 | *.*.*.*. 3204 | 3205 | char 0xb2 3206 | .***.*** 3207 | **.***.* 3208 | .***.*** 3209 | **.***.* 3210 | .***.*** 3211 | **.***.* 3212 | .***.*** 3213 | **.***.* 3214 | .***.*** 3215 | **.***.* 3216 | .***.*** 3217 | **.***.* 3218 | .***.*** 3219 | **.***.* 3220 | .***.*** 3221 | **.***.* 3222 | 3223 | char 0xb3 3224 | ...*.... 3225 | ...*.... 3226 | ...*.... 3227 | ...*.... 3228 | ...*.... 3229 | ...*.... 3230 | ...*.... 3231 | ...*.... 3232 | ...*.... 3233 | ...*.... 3234 | ...*.... 3235 | ...*.... 3236 | ...*.... 3237 | ...*.... 3238 | ...*.... 3239 | ...*.... 3240 | 3241 | char 0xb4 3242 | ...*.... 3243 | ...*.... 3244 | ...*.... 3245 | ...*.... 3246 | ...*.... 3247 | ...*.... 3248 | ...*.... 3249 | ****.... 3250 | ...*.... 3251 | ...*.... 3252 | ...*.... 3253 | ...*.... 3254 | ...*.... 3255 | ...*.... 3256 | ...*.... 3257 | ...*.... 3258 | 3259 | char 0xb5 3260 | ...*.... 3261 | ...*.... 3262 | ...*.... 3263 | ...*.... 3264 | ...*.... 3265 | ...*.... 3266 | ...*.... 3267 | ****.... 3268 | ...*.... 3269 | ****.... 3270 | ...*.... 3271 | ...*.... 3272 | ...*.... 3273 | ...*.... 3274 | ...*.... 3275 | ...*.... 3276 | 3277 | char 0xb6 3278 | ...*.*.. 3279 | ...*.*.. 3280 | ...*.*.. 3281 | ...*.*.. 3282 | ...*.*.. 3283 | ...*.*.. 3284 | ...*.*.. 3285 | ****.*.. 3286 | ...*.*.. 3287 | ...*.*.. 3288 | ...*.*.. 3289 | ...*.*.. 3290 | ...*.*.. 3291 | ...*.*.. 3292 | ...*.*.. 3293 | ...*.*.. 3294 | 3295 | char 0xb7 3296 | ........ 3297 | ........ 3298 | ........ 3299 | ........ 3300 | ........ 3301 | ........ 3302 | ........ 3303 | ******.. 3304 | ...*.*.. 3305 | ...*.*.. 3306 | ...*.*.. 3307 | ...*.*.. 3308 | ...*.*.. 3309 | ...*.*.. 3310 | ...*.*.. 3311 | ...*.*.. 3312 | 3313 | char 0xb8 3314 | ........ 3315 | ........ 3316 | ........ 3317 | ........ 3318 | ........ 3319 | ........ 3320 | ........ 3321 | ****.... 3322 | ...*.... 3323 | ****.... 3324 | ...*.... 3325 | ...*.... 3326 | ...*.... 3327 | ...*.... 3328 | ...*.... 3329 | ...*.... 3330 | 3331 | char 0xb9 3332 | ...*.*.. 3333 | ...*.*.. 3334 | ...*.*.. 3335 | ...*.*.. 3336 | ...*.*.. 3337 | ...*.*.. 3338 | ...*.*.. 3339 | ****.*.. 3340 | .....*.. 3341 | ****.*.. 3342 | ...*.*.. 3343 | ...*.*.. 3344 | ...*.*.. 3345 | ...*.*.. 3346 | ...*.*.. 3347 | ...*.*.. 3348 | 3349 | char 0xba 3350 | ...*.*.. 3351 | ...*.*.. 3352 | ...*.*.. 3353 | ...*.*.. 3354 | ...*.*.. 3355 | ...*.*.. 3356 | ...*.*.. 3357 | ...*.*.. 3358 | ...*.*.. 3359 | ...*.*.. 3360 | ...*.*.. 3361 | ...*.*.. 3362 | ...*.*.. 3363 | ...*.*.. 3364 | ...*.*.. 3365 | ...*.*.. 3366 | 3367 | char 0xbb 3368 | ........ 3369 | ........ 3370 | ........ 3371 | ........ 3372 | ........ 3373 | ........ 3374 | ........ 3375 | ******.. 3376 | .....*.. 3377 | ****.*.. 3378 | ...*.*.. 3379 | ...*.*.. 3380 | ...*.*.. 3381 | ...*.*.. 3382 | ...*.*.. 3383 | ...*.*.. 3384 | 3385 | char 0xbc 3386 | ...*.*.. 3387 | ...*.*.. 3388 | ...*.*.. 3389 | ...*.*.. 3390 | ...*.*.. 3391 | ...*.*.. 3392 | ...*.*.. 3393 | ****.*.. 3394 | .....*.. 3395 | ******.. 3396 | ........ 3397 | ........ 3398 | ........ 3399 | ........ 3400 | ........ 3401 | ........ 3402 | 3403 | char 0xbd 3404 | ...*.*.. 3405 | ...*.*.. 3406 | ...*.*.. 3407 | ...*.*.. 3408 | ...*.*.. 3409 | ...*.*.. 3410 | ...*.*.. 3411 | ******.. 3412 | ........ 3413 | ........ 3414 | ........ 3415 | ........ 3416 | ........ 3417 | ........ 3418 | ........ 3419 | ........ 3420 | 3421 | char 0xbe 3422 | ...*.... 3423 | ...*.... 3424 | ...*.... 3425 | ...*.... 3426 | ...*.... 3427 | ...*.... 3428 | ...*.... 3429 | ****.... 3430 | ...*.... 3431 | ****.... 3432 | ........ 3433 | ........ 3434 | ........ 3435 | ........ 3436 | ........ 3437 | ........ 3438 | 3439 | char 0xbf 3440 | ........ 3441 | ........ 3442 | ........ 3443 | ........ 3444 | ........ 3445 | ........ 3446 | ........ 3447 | ****.... 3448 | ...*.... 3449 | ...*.... 3450 | ...*.... 3451 | ...*.... 3452 | ...*.... 3453 | ...*.... 3454 | ...*.... 3455 | ...*.... 3456 | 3457 | char 0xc0 3458 | ...*.... 3459 | ...*.... 3460 | ...*.... 3461 | ...*.... 3462 | ...*.... 3463 | ...*.... 3464 | ...*.... 3465 | ...***** 3466 | ........ 3467 | ........ 3468 | ........ 3469 | ........ 3470 | ........ 3471 | ........ 3472 | ........ 3473 | ........ 3474 | 3475 | char 0xc1 3476 | ...*.... 3477 | ...*.... 3478 | ...*.... 3479 | ...*.... 3480 | ...*.... 3481 | ...*.... 3482 | ...*.... 3483 | ******** 3484 | ........ 3485 | ........ 3486 | ........ 3487 | ........ 3488 | ........ 3489 | ........ 3490 | ........ 3491 | ........ 3492 | 3493 | char 0xc2 3494 | ........ 3495 | ........ 3496 | ........ 3497 | ........ 3498 | ........ 3499 | ........ 3500 | ........ 3501 | ******** 3502 | ...*.... 3503 | ...*.... 3504 | ...*.... 3505 | ...*.... 3506 | ...*.... 3507 | ...*.... 3508 | ...*.... 3509 | ...*.... 3510 | 3511 | char 0xc3 3512 | ...*.... 3513 | ...*.... 3514 | ...*.... 3515 | ...*.... 3516 | ...*.... 3517 | ...*.... 3518 | ...*.... 3519 | ...***** 3520 | ...*.... 3521 | ...*.... 3522 | ...*.... 3523 | ...*.... 3524 | ...*.... 3525 | ...*.... 3526 | ...*.... 3527 | ...*.... 3528 | 3529 | char 0xc4 3530 | ........ 3531 | ........ 3532 | ........ 3533 | ........ 3534 | ........ 3535 | ........ 3536 | ........ 3537 | ******** 3538 | ........ 3539 | ........ 3540 | ........ 3541 | ........ 3542 | ........ 3543 | ........ 3544 | ........ 3545 | ........ 3546 | 3547 | char 0xc5 3548 | ...*.... 3549 | ...*.... 3550 | ...*.... 3551 | ...*.... 3552 | ...*.... 3553 | ...*.... 3554 | ...*.... 3555 | ******** 3556 | ...*.... 3557 | ...*.... 3558 | ...*.... 3559 | ...*.... 3560 | ...*.... 3561 | ...*.... 3562 | ...*.... 3563 | ...*.... 3564 | 3565 | char 0xc6 3566 | ...*.... 3567 | ...*.... 3568 | ...*.... 3569 | ...*.... 3570 | ...*.... 3571 | ...*.... 3572 | ...*.... 3573 | ...***** 3574 | ...*.... 3575 | ...***** 3576 | ...*.... 3577 | ...*.... 3578 | ...*.... 3579 | ...*.... 3580 | ...*.... 3581 | ...*.... 3582 | 3583 | char 0xc7 3584 | ...*.*.. 3585 | ...*.*.. 3586 | ...*.*.. 3587 | ...*.*.. 3588 | ...*.*.. 3589 | ...*.*.. 3590 | ...*.*.. 3591 | ...*.*** 3592 | ...*.*.. 3593 | ...*.*.. 3594 | ...*.*.. 3595 | ...*.*.. 3596 | ...*.*.. 3597 | ...*.*.. 3598 | ...*.*.. 3599 | ...*.*.. 3600 | 3601 | char 0xc8 3602 | ...*.*.. 3603 | ...*.*.. 3604 | ...*.*.. 3605 | ...*.*.. 3606 | ...*.*.. 3607 | ...*.*.. 3608 | ...*.*.. 3609 | ...*.*** 3610 | ...*.... 3611 | ...***** 3612 | ........ 3613 | ........ 3614 | ........ 3615 | ........ 3616 | ........ 3617 | ........ 3618 | 3619 | char 0xc9 3620 | ........ 3621 | ........ 3622 | ........ 3623 | ........ 3624 | ........ 3625 | ........ 3626 | ........ 3627 | ...***** 3628 | ...*.... 3629 | ...*.*** 3630 | ...*.*.. 3631 | ...*.*.. 3632 | ...*.*.. 3633 | ...*.*.. 3634 | ...*.*.. 3635 | ...*.*.. 3636 | 3637 | char 0xca 3638 | ...*.*.. 3639 | ...*.*.. 3640 | ...*.*.. 3641 | ...*.*.. 3642 | ...*.*.. 3643 | ...*.*.. 3644 | ...*.*.. 3645 | ****.*** 3646 | ........ 3647 | ******** 3648 | ........ 3649 | ........ 3650 | ........ 3651 | ........ 3652 | ........ 3653 | ........ 3654 | 3655 | char 0xcb 3656 | ........ 3657 | ........ 3658 | ........ 3659 | ........ 3660 | ........ 3661 | ........ 3662 | ........ 3663 | ******** 3664 | ........ 3665 | ****.*** 3666 | ...*.*.. 3667 | ...*.*.. 3668 | ...*.*.. 3669 | ...*.*.. 3670 | ...*.*.. 3671 | ...*.*.. 3672 | 3673 | char 0xcc 3674 | ...*.*.. 3675 | ...*.*.. 3676 | ...*.*.. 3677 | ...*.*.. 3678 | ...*.*.. 3679 | ...*.*.. 3680 | ...*.*.. 3681 | ...*.*** 3682 | ...*.... 3683 | ...*.*** 3684 | ...*.*.. 3685 | ...*.*.. 3686 | ...*.*.. 3687 | ...*.*.. 3688 | ...*.*.. 3689 | ...*.*.. 3690 | 3691 | char 0xcd 3692 | ........ 3693 | ........ 3694 | ........ 3695 | ........ 3696 | ........ 3697 | ........ 3698 | ........ 3699 | ******** 3700 | ........ 3701 | ******** 3702 | ........ 3703 | ........ 3704 | ........ 3705 | ........ 3706 | ........ 3707 | ........ 3708 | 3709 | char 0xce 3710 | ...*.*.. 3711 | ...*.*.. 3712 | ...*.*.. 3713 | ...*.*.. 3714 | ...*.*.. 3715 | ...*.*.. 3716 | ...*.*.. 3717 | ****.*** 3718 | ........ 3719 | ****.*** 3720 | ...*.*.. 3721 | ...*.*.. 3722 | ...*.*.. 3723 | ...*.*.. 3724 | ...*.*.. 3725 | ...*.*.. 3726 | 3727 | char 0xcf 3728 | ...*.... 3729 | ...*.... 3730 | ...*.... 3731 | ...*.... 3732 | ...*.... 3733 | ...*.... 3734 | ...*.... 3735 | ******** 3736 | ........ 3737 | ******** 3738 | ........ 3739 | ........ 3740 | ........ 3741 | ........ 3742 | ........ 3743 | ........ 3744 | 3745 | char 0xd0 3746 | ...*.*.. 3747 | ...*.*.. 3748 | ...*.*.. 3749 | ...*.*.. 3750 | ...*.*.. 3751 | ...*.*.. 3752 | ...*.*.. 3753 | ******** 3754 | ........ 3755 | ........ 3756 | ........ 3757 | ........ 3758 | ........ 3759 | ........ 3760 | ........ 3761 | ........ 3762 | 3763 | char 0xd1 3764 | ........ 3765 | ........ 3766 | ........ 3767 | ........ 3768 | ........ 3769 | ........ 3770 | ........ 3771 | ******** 3772 | ........ 3773 | ******** 3774 | ...*.... 3775 | ...*.... 3776 | ...*.... 3777 | ...*.... 3778 | ...*.... 3779 | ...*.... 3780 | 3781 | char 0xd2 3782 | ........ 3783 | ........ 3784 | ........ 3785 | ........ 3786 | ........ 3787 | ........ 3788 | ........ 3789 | ******** 3790 | ...*.*.. 3791 | ...*.*.. 3792 | ...*.*.. 3793 | ...*.*.. 3794 | ...*.*.. 3795 | ...*.*.. 3796 | ...*.*.. 3797 | ...*.*.. 3798 | 3799 | char 0xd3 3800 | ...*.*.. 3801 | ...*.*.. 3802 | ...*.*.. 3803 | ...*.*.. 3804 | ...*.*.. 3805 | ...*.*.. 3806 | ...*.*.. 3807 | ...***** 3808 | ........ 3809 | ........ 3810 | ........ 3811 | ........ 3812 | ........ 3813 | ........ 3814 | ........ 3815 | ........ 3816 | 3817 | char 0xd4 3818 | ...*.... 3819 | ...*.... 3820 | ...*.... 3821 | ...*.... 3822 | ...*.... 3823 | ...*.... 3824 | ...*.... 3825 | ...***** 3826 | ...*.... 3827 | ...***** 3828 | ........ 3829 | ........ 3830 | ........ 3831 | ........ 3832 | ........ 3833 | ........ 3834 | 3835 | char 0xd5 3836 | ........ 3837 | ........ 3838 | ........ 3839 | ........ 3840 | ........ 3841 | ........ 3842 | ........ 3843 | ...***** 3844 | ...*.... 3845 | ...***** 3846 | ...*.... 3847 | ...*.... 3848 | ...*.... 3849 | ...*.... 3850 | ...*.... 3851 | ...*.... 3852 | 3853 | char 0xd6 3854 | ........ 3855 | ........ 3856 | ........ 3857 | ........ 3858 | ........ 3859 | ........ 3860 | ........ 3861 | ...***** 3862 | ...*.*.. 3863 | ...*.*.. 3864 | ...*.*.. 3865 | ...*.*.. 3866 | ...*.*.. 3867 | ...*.*.. 3868 | ...*.*.. 3869 | ...*.*.. 3870 | 3871 | char 0xd7 3872 | ...*.*.. 3873 | ...*.*.. 3874 | ...*.*.. 3875 | ...*.*.. 3876 | ...*.*.. 3877 | ...*.*.. 3878 | ...*.*.. 3879 | ****.*** 3880 | ...*.*.. 3881 | ...*.*.. 3882 | ...*.*.. 3883 | ...*.*.. 3884 | ...*.*.. 3885 | ...*.*.. 3886 | ...*.*.. 3887 | ...*.*.. 3888 | 3889 | char 0xd8 3890 | ...*.... 3891 | ...*.... 3892 | ...*.... 3893 | ...*.... 3894 | ...*.... 3895 | ...*.... 3896 | ...*.... 3897 | ******** 3898 | ...*.... 3899 | ******** 3900 | ...*.... 3901 | ...*.... 3902 | ...*.... 3903 | ...*.... 3904 | ...*.... 3905 | ...*.... 3906 | 3907 | char 0xd9 3908 | ...*.... 3909 | ...*.... 3910 | ...*.... 3911 | ...*.... 3912 | ...*.... 3913 | ...*.... 3914 | ...*.... 3915 | ****.... 3916 | ........ 3917 | ........ 3918 | ........ 3919 | ........ 3920 | ........ 3921 | ........ 3922 | ........ 3923 | ........ 3924 | 3925 | char 0xda 3926 | ........ 3927 | ........ 3928 | ........ 3929 | ........ 3930 | ........ 3931 | ........ 3932 | ........ 3933 | ...***** 3934 | ...*.... 3935 | ...*.... 3936 | ...*.... 3937 | ...*.... 3938 | ...*.... 3939 | ...*.... 3940 | ...*.... 3941 | ...*.... 3942 | 3943 | char 0xdb 3944 | ******** 3945 | ******** 3946 | ******** 3947 | ******** 3948 | ******** 3949 | ******** 3950 | ******** 3951 | ******** 3952 | ******** 3953 | ******** 3954 | ******** 3955 | ******** 3956 | ******** 3957 | ******** 3958 | ******** 3959 | ******** 3960 | 3961 | char 0xdc 3962 | ........ 3963 | ........ 3964 | ........ 3965 | ........ 3966 | ........ 3967 | ........ 3968 | ........ 3969 | ........ 3970 | ******** 3971 | ******** 3972 | ******** 3973 | ******** 3974 | ******** 3975 | ******** 3976 | ******** 3977 | ******** 3978 | 3979 | char 0xdd 3980 | ****.... 3981 | ****.... 3982 | ****.... 3983 | ****.... 3984 | ****.... 3985 | ****.... 3986 | ****.... 3987 | ****.... 3988 | ****.... 3989 | ****.... 3990 | ****.... 3991 | ****.... 3992 | ****.... 3993 | ****.... 3994 | ****.... 3995 | ****.... 3996 | 3997 | char 0xde 3998 | ....**** 3999 | ....**** 4000 | ....**** 4001 | ....**** 4002 | ....**** 4003 | ....**** 4004 | ....**** 4005 | ....**** 4006 | ....**** 4007 | ....**** 4008 | ....**** 4009 | ....**** 4010 | ....**** 4011 | ....**** 4012 | ....**** 4013 | ....**** 4014 | 4015 | char 0xdf 4016 | ******** 4017 | ******** 4018 | ******** 4019 | ******** 4020 | ******** 4021 | ******** 4022 | ******** 4023 | ******** 4024 | ........ 4025 | ........ 4026 | ........ 4027 | ........ 4028 | ........ 4029 | ........ 4030 | ........ 4031 | ........ 4032 | 4033 | char 0xe0 4034 | ........ 4035 | ........ 4036 | ........ 4037 | ........ 4038 | ........ 4039 | ........ 4040 | ........ 4041 | ........ 4042 | ........ 4043 | ........ 4044 | ........ 4045 | ........ 4046 | ........ 4047 | ........ 4048 | ........ 4049 | ........ 4050 | 4051 | char 0xe1 4052 | ........ 4053 | ........ 4054 | ........ 4055 | ........ 4056 | ........ 4057 | ........ 4058 | ........ 4059 | ........ 4060 | ........ 4061 | ........ 4062 | ........ 4063 | ........ 4064 | ........ 4065 | ........ 4066 | ........ 4067 | ........ 4068 | 4069 | char 0xe2 4070 | ........ 4071 | ........ 4072 | ........ 4073 | ........ 4074 | ........ 4075 | ........ 4076 | ........ 4077 | ........ 4078 | ........ 4079 | ........ 4080 | ........ 4081 | ........ 4082 | ........ 4083 | ........ 4084 | ........ 4085 | ........ 4086 | 4087 | char 0xe3 4088 | ........ 4089 | ........ 4090 | ........ 4091 | ........ 4092 | ........ 4093 | ........ 4094 | ........ 4095 | ........ 4096 | ........ 4097 | ........ 4098 | ........ 4099 | ........ 4100 | ........ 4101 | ........ 4102 | ........ 4103 | ........ 4104 | 4105 | char 0xe4 4106 | ........ 4107 | ........ 4108 | ........ 4109 | ........ 4110 | ........ 4111 | ........ 4112 | ........ 4113 | ........ 4114 | ........ 4115 | ........ 4116 | ........ 4117 | ........ 4118 | ........ 4119 | ........ 4120 | ........ 4121 | ........ 4122 | 4123 | char 0xe5 4124 | ........ 4125 | ........ 4126 | ........ 4127 | ........ 4128 | ........ 4129 | ........ 4130 | ........ 4131 | ........ 4132 | ........ 4133 | ........ 4134 | ........ 4135 | ........ 4136 | ........ 4137 | ........ 4138 | ........ 4139 | ........ 4140 | 4141 | char 0xe6 4142 | ........ 4143 | ........ 4144 | ........ 4145 | ........ 4146 | ........ 4147 | ........ 4148 | ........ 4149 | ........ 4150 | ........ 4151 | ........ 4152 | ........ 4153 | ........ 4154 | ........ 4155 | ........ 4156 | ........ 4157 | ........ 4158 | 4159 | char 0xe7 4160 | ........ 4161 | ........ 4162 | ........ 4163 | ........ 4164 | ........ 4165 | ........ 4166 | ........ 4167 | ........ 4168 | ........ 4169 | ........ 4170 | ........ 4171 | ........ 4172 | ........ 4173 | ........ 4174 | ........ 4175 | ........ 4176 | 4177 | char 0xe8 4178 | ........ 4179 | ........ 4180 | ........ 4181 | ........ 4182 | ........ 4183 | ........ 4184 | ........ 4185 | ........ 4186 | ........ 4187 | ........ 4188 | ........ 4189 | ........ 4190 | ........ 4191 | ........ 4192 | ........ 4193 | ........ 4194 | 4195 | char 0xe9 4196 | ........ 4197 | ........ 4198 | ........ 4199 | ........ 4200 | ........ 4201 | ........ 4202 | ........ 4203 | ........ 4204 | ........ 4205 | ........ 4206 | ........ 4207 | ........ 4208 | ........ 4209 | ........ 4210 | ........ 4211 | ........ 4212 | 4213 | char 0xea 4214 | ........ 4215 | ........ 4216 | ........ 4217 | ........ 4218 | ........ 4219 | ........ 4220 | ........ 4221 | ........ 4222 | ........ 4223 | ........ 4224 | ........ 4225 | ........ 4226 | ........ 4227 | ........ 4228 | ........ 4229 | ........ 4230 | 4231 | char 0xeb 4232 | ........ 4233 | ........ 4234 | ........ 4235 | ........ 4236 | ........ 4237 | ........ 4238 | ........ 4239 | ........ 4240 | ........ 4241 | ........ 4242 | ........ 4243 | ........ 4244 | ........ 4245 | ........ 4246 | ........ 4247 | ........ 4248 | 4249 | char 0xec 4250 | ........ 4251 | ........ 4252 | ........ 4253 | ........ 4254 | ........ 4255 | ........ 4256 | ........ 4257 | ........ 4258 | ........ 4259 | ........ 4260 | ........ 4261 | ........ 4262 | ........ 4263 | ........ 4264 | ........ 4265 | ........ 4266 | 4267 | char 0xed 4268 | ........ 4269 | ........ 4270 | ........ 4271 | ........ 4272 | ........ 4273 | ........ 4274 | ........ 4275 | ........ 4276 | ........ 4277 | ........ 4278 | ........ 4279 | ........ 4280 | ........ 4281 | ........ 4282 | ........ 4283 | ........ 4284 | 4285 | char 0xee 4286 | ........ 4287 | ........ 4288 | ........ 4289 | ........ 4290 | ........ 4291 | ........ 4292 | ........ 4293 | ........ 4294 | ........ 4295 | ........ 4296 | ........ 4297 | ........ 4298 | ........ 4299 | ........ 4300 | ........ 4301 | ........ 4302 | 4303 | char 0xef 4304 | ........ 4305 | ........ 4306 | ........ 4307 | ........ 4308 | ........ 4309 | ........ 4310 | ........ 4311 | ........ 4312 | ........ 4313 | ........ 4314 | ........ 4315 | ........ 4316 | ........ 4317 | ........ 4318 | ........ 4319 | ........ 4320 | 4321 | char 0xf0 4322 | ........ 4323 | ........ 4324 | ........ 4325 | ........ 4326 | ........ 4327 | ........ 4328 | ........ 4329 | ........ 4330 | ........ 4331 | ........ 4332 | ........ 4333 | ........ 4334 | ........ 4335 | ........ 4336 | ........ 4337 | ........ 4338 | 4339 | char 0xf1 4340 | ........ 4341 | ........ 4342 | ........ 4343 | ........ 4344 | ........ 4345 | ........ 4346 | ........ 4347 | ........ 4348 | ........ 4349 | ........ 4350 | ........ 4351 | ........ 4352 | ........ 4353 | ........ 4354 | ........ 4355 | ........ 4356 | 4357 | char 0xf2 4358 | ........ 4359 | ........ 4360 | ........ 4361 | ........ 4362 | ........ 4363 | ........ 4364 | ........ 4365 | ........ 4366 | ........ 4367 | ........ 4368 | ........ 4369 | ........ 4370 | ........ 4371 | ........ 4372 | ........ 4373 | ........ 4374 | 4375 | char 0xf3 4376 | ........ 4377 | ........ 4378 | ........ 4379 | ........ 4380 | ........ 4381 | ........ 4382 | ........ 4383 | ........ 4384 | ........ 4385 | ........ 4386 | ........ 4387 | ........ 4388 | ........ 4389 | ........ 4390 | ........ 4391 | ........ 4392 | 4393 | char 0xf4 4394 | ........ 4395 | ........ 4396 | ........ 4397 | ........ 4398 | ........ 4399 | ........ 4400 | ........ 4401 | ........ 4402 | ........ 4403 | ........ 4404 | ........ 4405 | ........ 4406 | ........ 4407 | ........ 4408 | ........ 4409 | ........ 4410 | 4411 | char 0xf5 4412 | ........ 4413 | ........ 4414 | ........ 4415 | ........ 4416 | ........ 4417 | ........ 4418 | ........ 4419 | ........ 4420 | ........ 4421 | ........ 4422 | ........ 4423 | ........ 4424 | ........ 4425 | ........ 4426 | ........ 4427 | ........ 4428 | 4429 | char 0xf6 4430 | ........ 4431 | ........ 4432 | ........ 4433 | ........ 4434 | ........ 4435 | ........ 4436 | ........ 4437 | ........ 4438 | ........ 4439 | ........ 4440 | ........ 4441 | ........ 4442 | ........ 4443 | ........ 4444 | ........ 4445 | ........ 4446 | 4447 | char 0xf7 4448 | ........ 4449 | ........ 4450 | ........ 4451 | ........ 4452 | ........ 4453 | ........ 4454 | ........ 4455 | ........ 4456 | ........ 4457 | ........ 4458 | ........ 4459 | ........ 4460 | ........ 4461 | ........ 4462 | ........ 4463 | ........ 4464 | 4465 | char 0xf8 4466 | ........ 4467 | ........ 4468 | ........ 4469 | ........ 4470 | ........ 4471 | ........ 4472 | ........ 4473 | ........ 4474 | ........ 4475 | ........ 4476 | ........ 4477 | ........ 4478 | ........ 4479 | ........ 4480 | ........ 4481 | ........ 4482 | 4483 | char 0xf9 4484 | ........ 4485 | ........ 4486 | ........ 4487 | ........ 4488 | ........ 4489 | ........ 4490 | ........ 4491 | ........ 4492 | ........ 4493 | ........ 4494 | ........ 4495 | ........ 4496 | ........ 4497 | ........ 4498 | ........ 4499 | ........ 4500 | 4501 | char 0xfa 4502 | ........ 4503 | ........ 4504 | ........ 4505 | ........ 4506 | ........ 4507 | ........ 4508 | ........ 4509 | ........ 4510 | ........ 4511 | ........ 4512 | ........ 4513 | ........ 4514 | ........ 4515 | ........ 4516 | ........ 4517 | ........ 4518 | 4519 | char 0xfb 4520 | ........ 4521 | ........ 4522 | ........ 4523 | ........ 4524 | ........ 4525 | ........ 4526 | ........ 4527 | ........ 4528 | ........ 4529 | ........ 4530 | ........ 4531 | ........ 4532 | ........ 4533 | ........ 4534 | ........ 4535 | ........ 4536 | 4537 | char 0xfc 4538 | ........ 4539 | ........ 4540 | ........ 4541 | ........ 4542 | ........ 4543 | ........ 4544 | ........ 4545 | ........ 4546 | ........ 4547 | ........ 4548 | ........ 4549 | ........ 4550 | ........ 4551 | ........ 4552 | ........ 4553 | ........ 4554 | 4555 | char 0xfd 4556 | ........ 4557 | ........ 4558 | ........ 4559 | ........ 4560 | ........ 4561 | ........ 4562 | ........ 4563 | ........ 4564 | ........ 4565 | ........ 4566 | ........ 4567 | ........ 4568 | ........ 4569 | ........ 4570 | ........ 4571 | ........ 4572 | 4573 | char 0xfe 4574 | ........ 4575 | ........ 4576 | ........ 4577 | ........ 4578 | ........ 4579 | ........ 4580 | ........ 4581 | ........ 4582 | ........ 4583 | ........ 4584 | ........ 4585 | ........ 4586 | ........ 4587 | ........ 4588 | ........ 4589 | ........ 4590 | 4591 | char 0xff 4592 | ........ 4593 | ........ 4594 | ........ 4595 | ........ 4596 | ........ 4597 | ........ 4598 | ........ 4599 | ........ 4600 | ........ 4601 | ........ 4602 | ........ 4603 | ........ 4604 | ........ 4605 | ........ 4606 | ........ 4607 | ........ 4608 | -------------------------------------------------------------------------------- /haribote.rul: -------------------------------------------------------------------------------- 1 | format: 2 | /* このセクションでリンクの方針を記述 */ 3 | code(align:1, logic:0x24, file:0x24); 4 | data(align:4, logic:stack_end, file:code_end); 5 | 6 | file: 7 | /* このセクションでコマンドラインに書ききれなかった 8 | .objファイル,.libファイルを記載 */ 9 | /* なお,このセクションはフルパスで書いてもよい. */ 10 | /* 例: c:/osask/gg00libc.lib; */ 11 | ./z_tools/haribote/harilibc.lib; 12 | ./z_tools/haribote/golibc.lib; 13 | 14 | label: 15 | /* 必ずリンクしなければいけないラベルを指定 */ 16 | /* エントリポイントを指定すればいいと思って下さい */ 17 | _HariStartup; 18 | /* 上記3セクションの順序は入れ替えてはいけません! */ 19 | -------------------------------------------------------------------------------- /int.c: -------------------------------------------------------------------------------- 1 | #include "bootpack.h" 2 | #include 3 | 4 | void init_pic(void){ 5 | io_out8(PIC0_IMR, 0xff ); 6 | io_out8(PIC1_IMR, 0xff ); 7 | 8 | io_out8(PIC0_ICW1, 0x11 ); 9 | io_out8(PIC0_ICW2, 0x20 ); 10 | io_out8(PIC0_ICW3, 1 << 2); 11 | io_out8(PIC0_ICW4, 0x01 ); 12 | 13 | io_out8(PIC1_ICW1, 0x11 ); 14 | io_out8(PIC1_ICW2, 0x28 ); 15 | io_out8(PIC1_ICW3, 2 ); 16 | io_out8(PIC1_ICW4, 0x01 ); 17 | 18 | io_out8(PIC0_IMR, 0xfb ); 19 | io_out8(PIC1_IMR, 0xff ); 20 | 21 | return; 22 | } 23 | 24 | void inthandler27(int *esp){ 25 | io_out8(PIC0_OCW2, 0x67); 26 | return; 27 | } 28 | -------------------------------------------------------------------------------- /ipl.nas: -------------------------------------------------------------------------------- 1 | ; hello-os 2 | ; コメントがつけられる 3 | 4 | CYLS EQU 10 5 | 6 | ORG 0x7c00 7 | 8 | ; 以下は標準的なFAT12フォーマットフロッピーディスクのための記述 9 | 10 | JMP entry 11 | DB 0x90 12 | DB "HARIBOTE" ;ブートセクタの名前を自由に書いてよい(8byte) 13 | DW 512 ;1セクタの大きさ(512にしなければならない) 14 | DB 1 ;クラスタの大きさ(1セクタにしなければならない) 15 | DW 1 ;FATがどこから始まるか(普通は1セクタ目からにする) 16 | DB 2 ;FATの個数(2にしなければならない) 17 | DW 224 ;ルートディレクトリ領域の大きさ(普通は224エントリにする) 18 | DW 2880 ;このドライブの大きさ(2880セクタにしなければならない) 19 | DB 0xf0 ;メディアのタイプ(0xf0にしなければならない) 20 | DW 9 ;FAT領域の長さ(9セクタにしなければならない) 21 | DW 18 ;1トラックにいくつセクタがあるか(18にしなければならない) 22 | DW 2 ;ヘッドの数(2にしなければならない) 23 | DD 0 ;パーティションを使っていないので0 24 | DD 2880 ;ドライブの大きさをもう一度書く 25 | DB 0,0,0x29 ;よく分からないがこの値にしておくと良いらしい 26 | DD 0xffffffff ;ボリュームシリアル番号 27 | DB "HARIBOTEOS " ;ディスクの名前(11byte) 28 | DB "FAT12 " ;フォーマットの名前(8byte) 29 | RESB 18 ;18byteあけておく 30 | 31 | ; プログラム本体 32 | 33 | entry: 34 | MOV AX,0 ; レジスタ初期化 35 | MOV SS,AX 36 | MOV SP,0x7c00 37 | MOV DS,AX 38 | 39 | MOV AX,0x0820 40 | MOV ES,AX 41 | MOV CH,0 ;シリンダ0 42 | MOV DH,0 ;ヘッド0 43 | MOV CL,2 ;セクタ0 44 | readloop: 45 | MOV SI,0 ;失敗回数を数えるレジスタ 46 | retry: 47 | MOV AH,0x02 ;AH=0x20:ディスク読み込み 48 | MOV AL,1 ;1セクタ 49 | MOV BX,0 50 | MOV DL,0x00 ;Aドライブ 51 | INT 0x13 ;ディスクBIOS呼び出し 52 | JNC next ;エラーが起きなければnextへ 53 | ADD SI,1 ;SIに1を足す 54 | CMP SI,5 ;SIを5と比較 55 | JAE error ;SI >= 5だったらerrorへ 56 | MOV AH,0x00 57 | MOV DL,0x00 ;Aドライブ 58 | INT 0x13 ;ドライブのリセット 59 | JMP retry 60 | next: 61 | MOV AX,ES ;アドレスを0x200埋める 62 | ADD AX,0x0020 63 | MOV ES,AX ;ADD ES 0x020という命令が無いのでこうしてる 64 | ADD CL,1 ;CLに1を足す 65 | CMP CL,18 ;CLと18を比較 66 | JBE readloop ;CL <= だったらreadloopへ 67 | MOV CL,1 68 | ADD DH,1 69 | CMP DH,2 70 | JB readloop ;DH < 2 だったらreadloopへ 71 | MOV DH,0 72 | ADD CH,1 73 | CMP CH,CYLS 74 | JB readloop ;CH < CYLS だったらreadloopへ 75 | 76 | 77 | MOV [0x0ff0],CH 78 | JMP 0xc200 79 | error: 80 | MOV SI,msg 81 | putloop: 82 | MOV AL,[SI] 83 | ADD SI,1 ;SIに1を足す 84 | CMP AL,0 85 | JE fin 86 | MOV AH,0x0e ;1文字表示ファンクション 87 | MOV BX,15 ;カラーコード 88 | INT 0x10 89 | JMP putloop 90 | fin: 91 | HLT ;何かあるまでCPUを停止させる 92 | JMP fin ;無限ループ 93 | msg: 94 | DB 0x0a, 0x0a ;改行を2つ 95 | DB "load error" 96 | DB 0x0a ;改行 97 | DB 0 98 | 99 | RESB 0x7dfe-$ ;0x7dfeまでを0x00で埋める 100 | 101 | DB 0x55, 0xaa ;ブートセクタ 102 | -------------------------------------------------------------------------------- /keyboard.c: -------------------------------------------------------------------------------- 1 | #include "bootpack.h" 2 | 3 | struct FIFO32 *keyfifo; 4 | int keydata0; 5 | 6 | void inthandler21(int *esp){ 7 | int data; 8 | io_out8(PIC0_OCW2, 0x61); 9 | data = io_in8(PORT_KEYDAT); 10 | fifo32_put(keyfifo, data + keydata0); 11 | return; 12 | } 13 | 14 | #define PORT_KEYSTA 0x0064 15 | #define KEYSTA_SEND_NOTREADY 0x02 16 | #define KEYCMD_WRITE_MODE 0x60 17 | #define KBC_MODE 0x47 18 | 19 | void wait_KBC_sendready(void){ 20 | for(;;){ 21 | if((io_in8(PORT_KEYSTA) & KEYSTA_SEND_NOTREADY) == 0){ 22 | break; 23 | } 24 | } 25 | return; 26 | } 27 | 28 | void init_keyboard(struct FIFO32 *fifo, int data0){ 29 | keyfifo = fifo; 30 | keydata0 = data0; 31 | wait_KBC_sendready(); 32 | io_out8(PORT_KEYCMD, KEYCMD_WRITE_MODE); 33 | wait_KBC_sendready(); 34 | io_out8(PORT_KEYDAT, KBC_MODE); 35 | return; 36 | } 37 | -------------------------------------------------------------------------------- /memory.c: -------------------------------------------------------------------------------- 1 | #include "bootpack.h" 2 | 3 | #define EFLAGS_AC_BIT 0x00040000 4 | #define CR0_CACHE_DISABLE 0x60000000 5 | 6 | unsigned int memtest(unsigned int start, unsigned int end){ 7 | char flg486 = 0; 8 | unsigned int eflg, cr0, i; 9 | eflg = io_load_eflags(); 10 | eflg |= EFLAGS_AC_BIT; 11 | io_store_eflags(eflg); 12 | eflg = io_load_eflags(); 13 | if((eflg & EFLAGS_AC_BIT) != 0){ 14 | flg486 = 1; 15 | } 16 | eflg &= ~EFLAGS_AC_BIT; 17 | io_store_eflags(eflg); 18 | if(flg486 != 0){ 19 | cr0 = load_cr0(); 20 | cr0 |= CR0_CACHE_DISABLE; 21 | store_cr0(cr0); 22 | } 23 | i = memtest_sub(start, end); 24 | if(flg486 != 0){ 25 | cr0 = load_cr0(); 26 | cr0 &= ~CR0_CACHE_DISABLE; 27 | store_cr0(cr0); 28 | } 29 | return i; 30 | } 31 | 32 | void memman_init(struct MEMMAN *man){ 33 | man->frees = 0; 34 | man->maxfrees = 0; 35 | man->lostsize = 0; 36 | man->losts = 0; 37 | return; 38 | } 39 | 40 | unsigned int memman_total(struct MEMMAN *man){ 41 | unsigned int i, t = 0; 42 | for(i = 0; i < man->frees; i++){ 43 | t += man->free[i].size; 44 | } 45 | return t; 46 | } 47 | 48 | unsigned int memman_alloc(struct MEMMAN *man, unsigned int size){ 49 | unsigned int i, a; 50 | for(i = 0; i < man->frees; i++){ 51 | if(man->free[i].size >= size){ 52 | a = man->free[i].addr; 53 | man->free[i].addr += size; 54 | man->free[i].size -= size; 55 | if(man->free[i].size == 0){ 56 | man->frees--; 57 | for(; i < man->frees; i++){ 58 | man->free[i] = man->free[i + 1]; 59 | } 60 | } 61 | return a; 62 | } 63 | } 64 | return 0; 65 | } 66 | 67 | int memman_free(struct MEMMAN *man, unsigned int addr, unsigned int size){ 68 | int i, j; 69 | for(i = 0; i < man->frees; i++){ 70 | if(man->free[i].addr > addr){ 71 | break; 72 | } 73 | } 74 | if(i > 0){ 75 | if(man->free[i - 1].addr + man->free[i - 1].size == addr){ 76 | man->free[i - 1].size += size; 77 | if(i < man->frees){ 78 | if(addr + size == man->free[i].addr){ 79 | man->free[i - 1].size += man->free[i].size; 80 | man->frees--; 81 | for(; i < man->frees; i++){ 82 | man->free[i] = man->free[i + 1]; 83 | } 84 | } 85 | } 86 | return 0; 87 | } 88 | } 89 | if(i < man->frees){ 90 | if(addr + size == man->free[i].addr){ 91 | man->free[i].addr = addr; 92 | man->free[i].size += size; 93 | return 0; 94 | } 95 | } 96 | if(man->frees < MEMMAN_FREES){ 97 | for(j = man->frees; j > i; j--){ 98 | man->free[j] = man->free[j - 1]; 99 | } 100 | man->frees++; 101 | if(man->maxfrees < man->frees){ 102 | man->maxfrees = man->frees; 103 | } 104 | man->free[i].addr = addr; 105 | man->free[i].size = size; 106 | return 0; 107 | } 108 | man->losts++; 109 | man->lostsize += size; 110 | return -1; 111 | } 112 | 113 | unsigned int memman_alloc_4k(struct MEMMAN *man, unsigned int size){ 114 | unsigned int a; 115 | size = (size + 0xfff) & 0xfffff000; 116 | a = memman_alloc(man, size); 117 | return a; 118 | } 119 | 120 | int memman_free_4k(struct MEMMAN *man, unsigned int addr, unsigned int size){ 121 | int i; 122 | size = (size + 0xfff) & 0xfffff000; 123 | i = memman_free(man, addr, size); 124 | return i; 125 | } 126 | -------------------------------------------------------------------------------- /mouse.c: -------------------------------------------------------------------------------- 1 | #include "bootpack.h" 2 | 3 | struct FIFO32 *mousefifo; 4 | int mousedata0; 5 | 6 | void inthandler2c(int *esp){ 7 | int data; 8 | io_out8(PIC1_OCW2, 0x64); 9 | io_out8(PIC0_OCW2, 0x62); 10 | data = io_in8(PORT_KEYDAT); 11 | fifo32_put(mousefifo, data + mousedata0); 12 | return; 13 | } 14 | 15 | #define KEYCMD_SENDTO_MOUSE 0xd4 16 | #define MOUSECMD_ENABLE 0xf4 17 | 18 | void enable_mouse(struct FIFO32 *fifo, int data0, struct MOUSE_DEC *mdec){ 19 | mousefifo = fifo; 20 | mousedata0 = data0; 21 | wait_KBC_sendready(); 22 | io_out8(PORT_KEYCMD, KEYCMD_SENDTO_MOUSE); 23 | wait_KBC_sendready(); 24 | io_out8(PORT_KEYDAT, MOUSECMD_ENABLE); 25 | mdec->phase = 0; 26 | return; 27 | } 28 | 29 | int mouse_decode(struct MOUSE_DEC *mdec, unsigned char dat){ 30 | if(mdec->phase == 0){ 31 | if(dat == 0xfa){ 32 | mdec->phase = 1; 33 | } 34 | return 0; 35 | } 36 | if(mdec->phase == 1){ 37 | if((dat & 0xc8) == 0x08){ 38 | mdec->buf[0] = dat; 39 | mdec->phase = 2; 40 | } 41 | return 0; 42 | } 43 | if(mdec->phase == 2){ 44 | mdec->buf[1] = dat; 45 | mdec->phase = 3; 46 | return 0; 47 | } 48 | if(mdec->phase == 3){ 49 | mdec->buf[2] = dat; 50 | mdec->phase = 1; 51 | mdec->btn = mdec->buf[0] & 0x07; 52 | mdec->x = mdec->buf[1]; 53 | mdec->y = mdec->buf[2]; 54 | if((mdec->buf[0] & 0x10) != 0){ 55 | mdec->x |= 0xffffff00; 56 | } 57 | if((mdec->buf[0] & 0x20) != 0){ 58 | mdec->y |= 0xffffff00; 59 | } 60 | mdec->y = - mdec->y; 61 | return 1; 62 | } 63 | return -1; 64 | } 65 | -------------------------------------------------------------------------------- /mtask.c: -------------------------------------------------------------------------------- 1 | #include "bootpack.h" 2 | 3 | struct TASKCTL *taskctl; 4 | struct TIMER *task_timer; 5 | 6 | struct TASK *task_init(struct MEMMAN *memman){ 7 | int i; 8 | struct TASK *task; 9 | struct SEGMENT_DESCRIPTOR *gdt = (struct SEGMENT_DESCRIPTOR *) ADR_GDT; 10 | taskctl = (struct TASKCTL *) memman_alloc_4k(memman, sizeof (struct TASKCTL)); 11 | for(i = 0; i < MAX_TASKS; i++){ 12 | taskctl->tasks0[i].flags = 0; 13 | taskctl->tasks0[i].sel = (TASK_GDT0 + i) * 8; 14 | set_segmdesc(gdt + TASK_GDT0 + i, 103, (int) &taskctl->tasks0[i].tss, AR_TSS32); 15 | } 16 | task = task_alloc(); 17 | task->flags = 2; 18 | taskctl->running = 1; 19 | taskctl->now = 0; 20 | taskctl->tasks[0] = task; 21 | load_tr(task->sel); 22 | task_timer = timer_alloc(); 23 | timer_settime(task_timer, 2); 24 | return task; 25 | } 26 | 27 | struct TASK *task_alloc(void){ 28 | int i; 29 | struct TASK *task; 30 | for(i = 0; i < MAX_TASKS; i++){ 31 | if(taskctl->tasks0[i].flags == 0){ 32 | task = &taskctl->tasks0[i]; 33 | task->flags = 1; 34 | task->tss.eflags = 0x00000202; 35 | task->tss.eax = 0; 36 | task->tss.ecx = 0; 37 | task->tss.edx = 0; 38 | task->tss.ebx = 0; 39 | task->tss.ebp = 0; 40 | task->tss.esi = 0; 41 | task->tss.edi = 0; 42 | task->tss.es = 0; 43 | task->tss.ds = 0; 44 | task->tss.fs = 0; 45 | task->tss.gs = 0; 46 | task->tss.ldtr = 0; 47 | task->tss.iomap = 0x40000000; 48 | return task; 49 | } 50 | } 51 | return 0; 52 | } 53 | 54 | void task_run(struct TASK *task){ 55 | task->flags = 2; 56 | taskctl->tasks[taskctl->running] = task; 57 | taskctl->running++; 58 | return; 59 | } 60 | 61 | void task_switch(void){ 62 | timer_settime(task_timer, 2); 63 | if(taskctl->running >= 2){ 64 | taskctl->now++; 65 | if(taskctl->now == taskctl->running){ 66 | taskctl->now = 0; 67 | } 68 | farjmp(0, taskctl->tasks[taskctl->now]->sel); 69 | } 70 | return; 71 | } 72 | 73 | void task_sleep(struct TASK *task){ 74 | int i; 75 | char ts = 0; 76 | if(task->flags == 2){ 77 | if(task == taskctl->tasks[taskctl->now]){ 78 | ts = 1; 79 | } 80 | for(i = 0; i < taskctl->running; i++){ 81 | if(taskctl->tasks[i] == task){ 82 | break; 83 | } 84 | } 85 | taskctl->running--; 86 | if(i < taskctl->now){ 87 | taskctl->now--; 88 | } 89 | for(; i < taskctl->running; i++){ 90 | taskctl->tasks[i] = taskctl->tasks[i + 1]; 91 | } 92 | task->flags = 1; 93 | if(ts != 0){ 94 | if(taskctl->now >= taskctl->running){ 95 | taskctl->now = 0; 96 | } 97 | farjmp(0, taskctl->tasks[taskctl->now]->sel); 98 | } 99 | } 100 | return; 101 | } 102 | -------------------------------------------------------------------------------- /naskfunc.nas: -------------------------------------------------------------------------------- 1 | ;naskfunc 2 | ;tab=4 3 | 4 | [FORMAT "WCOFF"] 5 | [INSTRSET "i486p"] 6 | [BITS 32] 7 | [FILE "naskfunc.nas"] 8 | 9 | GLOBAL _io_hlt, _io_cli, _io_sti, _io_stihlt 10 | GLOBAL _io_in8, _io_in16, _io_in32 11 | GLOBAL _io_out8, _io_out16, _io_out32 12 | GLOBAL _io_load_eflags, _io_store_eflags 13 | GLOBAL _load_gdtr, _load_idtr 14 | GLOBAL _load_cr0, _store_cr0 15 | GLOBAL _load_tr 16 | GLOBAL _asm_inthandler20, _asm_inthandler21 17 | GLOBAL _asm_inthandler27, _asm_inthandler2c 18 | GLOBAL _memtest_sub 19 | GLOBAL _farjmp 20 | EXTERN _inthandler20, _inthandler21 21 | EXTERN _inthandler27, _inthandler2c 22 | 23 | [SECTION .text] 24 | 25 | _io_hlt: 26 | HLT 27 | RET 28 | 29 | _io_cli: 30 | CLI 31 | RET 32 | 33 | _io_sti: 34 | STI 35 | RET 36 | 37 | _io_stihlt: 38 | STI 39 | HLT 40 | RET 41 | 42 | _io_in8: 43 | MOV EDX,[ESP+4] 44 | MOV EAX,0 45 | IN AL,DX 46 | RET 47 | 48 | _io_in16: 49 | MOV EDX,[ESP+4] 50 | MOV EAX,0 51 | IN AX,DX 52 | RET 53 | 54 | _io_in32: 55 | MOV EDX,[ESP+4] 56 | IN EAX,DX 57 | RET 58 | 59 | _io_out8: 60 | MOV EDX,[ESP+4] 61 | MOV AL,[ESP+8] 62 | OUT DX,AL 63 | RET 64 | 65 | _io_out16: 66 | MOV EDX,[ESP+4] 67 | MOV EAX,[ESP+8] 68 | OUT DX,AX 69 | RET 70 | 71 | _io_out32: 72 | MOV EDX,[ESP+4] 73 | MOV EAX,[ESP+8] 74 | OUT DX,EAX 75 | RET 76 | 77 | _io_load_eflags: 78 | PUSHFD 79 | POP EAX 80 | RET 81 | 82 | _io_store_eflags: 83 | MOV EAX,[ESP+4] 84 | PUSH EAX 85 | POPFD 86 | RET 87 | 88 | _load_gdtr: 89 | MOV AX,[ESP+4] 90 | MOV [ESP+6],AX 91 | LGDT [ESP+6] 92 | RET 93 | 94 | _load_idtr: 95 | MOV AX,[ESP+4] 96 | MOV [ESP+6],AX 97 | LIDT [ESP+6] 98 | RET 99 | 100 | _load_cr0: 101 | MOV EAX,CR0 102 | RET 103 | 104 | _store_cr0: 105 | MOV EAX,[ESP+4] 106 | MOV CR0,EAX 107 | RET 108 | 109 | _load_tr: 110 | LTR [ESP+4] 111 | RET 112 | 113 | _asm_inthandler20: 114 | PUSH ES 115 | PUSH DS 116 | PUSHAD 117 | MOV EAX,ESP 118 | PUSH EAX 119 | MOV AX,SS 120 | MOV DS,AX 121 | MOV ES,AX 122 | CALL _inthandler20 123 | POP EAX 124 | POPAD 125 | POP DS 126 | POP ES 127 | IRETD 128 | 129 | _asm_inthandler21: 130 | PUSH ES 131 | PUSH DS 132 | PUSHAD 133 | MOV EAX,ESP 134 | PUSH EAX 135 | MOV AX,SS 136 | MOV DS,AX 137 | MOV ES,AX 138 | CALL _inthandler21 139 | POP EAX 140 | POPAD 141 | POP DS 142 | POP ES 143 | IRETD 144 | 145 | _asm_inthandler27: 146 | PUSH ES 147 | PUSH DS 148 | PUSHAD 149 | MOV EAX,ESP 150 | PUSH EAX 151 | MOV AX,SS 152 | MOV DS,AX 153 | MOV ES,AX 154 | CALL _inthandler27 155 | POP EAX 156 | POPAD 157 | POP DS 158 | POP ES 159 | IRETD 160 | 161 | _asm_inthandler2c: 162 | PUSH ES 163 | PUSH DS 164 | PUSHAD 165 | MOV EAX,ESP 166 | PUSH EAX 167 | MOV AX,SS 168 | MOV DS,AX 169 | MOV ES,AX 170 | CALL _inthandler2c 171 | POP EAX 172 | POPAD 173 | POP DS 174 | POP ES 175 | IRETD 176 | 177 | _memtest_sub: 178 | PUSH EDI 179 | PUSH ESI 180 | PUSH EBX 181 | MOV ESI,0xaa55aa55 182 | MOV EDI,0x55aa55aa 183 | MOV EAX,[ESP+12+4] 184 | mts_loop: 185 | MOV EBX,EAX 186 | ADD EBX,0xffc 187 | MOV EDX,[EBX] 188 | MOV [EBX],ESI 189 | XOR DWORD [EBX],0xffffffff 190 | CMP EDI,[EBX] 191 | JNE mts_fin 192 | XOR DWORD [EBX],0xffffffff 193 | CMP ESI,[EBX] 194 | JNE mts_fin 195 | MOV [EBX],EDX 196 | ADD EAX,0x1000 197 | CMP EAX,[ESP+12+8] 198 | JBE mts_loop 199 | POP EBX 200 | POP ESI 201 | POP EDI 202 | RET 203 | mts_fin: 204 | MOV [EBX],EDX 205 | POP EBX 206 | POP ESI 207 | POP EDI 208 | RET 209 | 210 | _farjmp: 211 | JMP FAR [ESP+4] 212 | RET 213 | -------------------------------------------------------------------------------- /sheet.c: -------------------------------------------------------------------------------- 1 | #include "bootpack.h" 2 | #define SHEET_USE 1 3 | 4 | struct SHTCTL *shtctl_init(struct MEMMAN *memman, unsigned char *vram, int xsize, int ysize){ 5 | struct SHTCTL *ctl; 6 | int i; 7 | ctl = (struct SHTCTL *) memman_alloc_4k(memman, sizeof (struct SHTCTL)); 8 | if(ctl == 0){ 9 | goto err; 10 | } 11 | ctl->map = (unsigned char *) memman_alloc_4k(memman, xsize * ysize); 12 | if(ctl->map == 0){ 13 | memman_free_4k(memman, (int) ctl, sizeof (struct SHTCTL)); 14 | goto err; 15 | } 16 | ctl->vram = vram; 17 | ctl->xsize = xsize; 18 | ctl->ysize = ysize; 19 | ctl->top = -1; 20 | for(i = 0; i < MAX_SHEETS; i++){ 21 | ctl->sheets0[i].flags = 0; 22 | ctl->sheets0[i].ctl = ctl; 23 | } 24 | err: 25 | return ctl; 26 | } 27 | 28 | struct SHEET *sheet_alloc(struct SHTCTL *ctl){ 29 | struct SHEET *sht; 30 | int i; 31 | for(i = 0; i < MAX_SHEETS; i++){ 32 | if(ctl->sheets0[i].flags == 0){ 33 | sht = &ctl->sheets0[i]; 34 | sht->flags = SHEET_USE; 35 | sht->height = -1; 36 | return sht; 37 | } 38 | } 39 | return 0; 40 | } 41 | 42 | void sheet_setbuf(struct SHEET *sht, unsigned char *buf, int xsize, int ysize, int col_inv){ 43 | sht->buf = buf; 44 | sht->bxsize = xsize; 45 | sht->bysize = ysize; 46 | sht->col_inv = col_inv; 47 | return; 48 | } 49 | 50 | void sheet_refreshmap(struct SHTCTL *ctl, int vx0, int vy0, int vx1, int vy1, int h0){ 51 | int h, bx, by, vx, vy, bx0, by0, bx1, by1; 52 | unsigned char *buf, sid, *map = ctl->map; 53 | struct SHEET *sht; 54 | if(vx0 < 0){vx0 = 0;} 55 | if(vy0 < 0){vy0 = 0;} 56 | if(vx1 > ctl->xsize){vx1 = ctl->xsize;} 57 | if(vy1 > ctl->ysize){vy1 = ctl->ysize;} 58 | for(h = h0; h <= ctl->top; h++){ 59 | sht = ctl->sheets[h]; 60 | sid = sht - ctl->sheets0; 61 | buf = sht->buf; 62 | bx0 = vx0 - sht->vx0; 63 | by0 = vy0 - sht->vy0; 64 | bx1 = vx1 - sht->vx0; 65 | by1 = vy1 - sht->vy0; 66 | if(bx0 < 0){bx0 = 0;} 67 | if(by0 < 0){by0 = 0;} 68 | if(bx1 > sht->bxsize){bx1 = sht->bxsize;} 69 | if(by1 > sht->bysize){by1 = sht->bysize;} 70 | for(by = by0; by < by1; by++){ 71 | vy = sht->vy0 + by; 72 | for(bx = bx0; bx < bx1; bx++){ 73 | vx = sht->vx0 + bx; 74 | if(buf[by * sht->bxsize + bx] != sht->col_inv){ 75 | map[vy * ctl->xsize + vx] = sid; 76 | } 77 | } 78 | } 79 | } 80 | return; 81 | } 82 | 83 | void sheet_refreshsub(struct SHTCTL *ctl, int vx0, int vy0, int vx1, int vy1, int h0, int h1){ 84 | int h, bx, by, vx, vy, bx0, by0, bx1, by1; 85 | unsigned char *buf, *vram = ctl->vram, *map = ctl->map, sid; 86 | struct SHEET *sht; 87 | if(vx0 < 0){vx0 = 0;} 88 | if(vy0 < 0){vy0 = 0;} 89 | if(vx1 > ctl->xsize){vx1 = ctl->xsize;} 90 | if(vy1 > ctl->ysize){vy1 = ctl->ysize;} 91 | for(h = h0; h <= h1; h++){ 92 | sht = ctl->sheets[h]; 93 | buf = sht->buf; 94 | sid = sht - ctl->sheets0; 95 | bx0 = vx0 - sht->vx0; 96 | by0 = vy0 - sht->vy0; 97 | bx1 = vx1 - sht->vx0; 98 | by1 = vy1 - sht->vy0; 99 | if(bx0 < 0){bx0 = 0;} 100 | if(by0 < 0){by0 = 0;} 101 | if(bx1 > sht->bxsize){bx1 = sht->bxsize;} 102 | if(by1 > sht->bysize){by1 = sht->bysize;} 103 | for(by = by0; by < by1; by++){ 104 | vy = sht->vy0 + by; 105 | for(bx = bx0; bx < bx1; bx++){ 106 | vx = sht->vx0 + bx; 107 | if(map[vy * ctl->xsize + vx] == sid){ 108 | vram[vy * ctl->xsize + vx] = buf[by * sht->bxsize + bx]; 109 | } 110 | } 111 | } 112 | } 113 | return; 114 | } 115 | 116 | void sheet_updown(struct SHEET *sht, int height){ 117 | struct SHTCTL *ctl = sht->ctl; 118 | int h, old = sht->height; 119 | if(height > ctl->top + 1){ 120 | height = ctl->top + 1; 121 | } 122 | if(height < -1){ 123 | height = -1; 124 | } 125 | sht->height = height; 126 | if(old > height){ 127 | if(height >= 0){ 128 | for(h = old; h > height; h--){ 129 | ctl->sheets[h] = ctl->sheets[h - 1]; 130 | ctl->sheets[h]->height = h; 131 | } 132 | ctl->sheets[height] = sht; 133 | sheet_refreshmap(ctl, sht->vx0, sht->vy0, sht->vx0 + sht->bxsize, sht->vy0 + sht->bysize, height + 1); 134 | sheet_refreshsub(ctl, sht->vx0, sht->vy0, sht->vx0 + sht->bxsize, sht->vy0 + sht->bysize, height + 1, old); 135 | }else{ 136 | if(ctl->top > old){ 137 | for(h = old; h < ctl->top; h++){ 138 | ctl->sheets[h] = ctl->sheets[h + 1]; 139 | ctl->sheets[h]->height = h; 140 | } 141 | } 142 | ctl->top--; 143 | sheet_refreshmap(ctl, sht->vx0, sht->vy0, sht->vx0 + sht->bxsize, sht->vy0 + sht->bysize, 0); 144 | sheet_refreshsub(ctl, sht->vx0, sht->vy0, sht->vx0 + sht->bxsize, sht->vy0 + sht->bysize, 0, old - 1); 145 | } 146 | }else if(old < height){ 147 | if(old >= 0){ 148 | for(h = old; h < height; h++){ 149 | ctl->sheets[h] = ctl->sheets[h + 1]; 150 | ctl->sheets[h]->height = h; 151 | } 152 | ctl->sheets[height] = sht; 153 | }else{ 154 | for(h = ctl->top; h >= height; h--){ 155 | ctl->sheets[h + 1] = ctl->sheets[h]; 156 | ctl->sheets[h + 1]->height = h + 1; 157 | } 158 | ctl->sheets[height] = sht; 159 | ctl->top++; 160 | } 161 | sheet_refreshmap(ctl, sht->vx0, sht->vy0, sht->vx0 + sht->bxsize, sht->vy0 + sht->bysize, height); 162 | sheet_refreshsub(ctl, sht->vx0, sht->vy0, sht->vx0 + sht->bxsize, sht->vy0 + sht->bysize, height, height); 163 | } 164 | return; 165 | } 166 | 167 | void sheet_refresh(struct SHEET *sht, int bx0, int by0, int bx1, int by1){ 168 | if(sht->height >= 0){ 169 | sheet_refreshsub(sht->ctl, sht->vx0 + bx0, sht->vy0 + by0, sht->vx0 + bx1, sht->vy0 + by1, sht->height, sht->height); 170 | } 171 | return; 172 | } 173 | 174 | void sheet_slide(struct SHEET *sht, int vx0, int vy0){ 175 | struct SHTCTL *ctl = sht->ctl; 176 | int old_vx0 = sht->vx0, old_vy0 = sht->vy0; 177 | sht->vx0 = vx0; 178 | sht->vy0 = vy0; 179 | if(sht->height >= 0){ 180 | sheet_refreshmap(ctl, old_vx0, old_vy0, old_vx0 + sht->bxsize, old_vy0 + sht->bysize, 0); 181 | sheet_refreshmap(ctl, vx0, vy0, vx0 + sht->bxsize, vy0 + sht->bysize, sht->height); 182 | sheet_refreshsub(ctl, old_vx0, old_vy0, old_vx0 + sht->bxsize, old_vy0 + sht->bysize, 0, sht->height - 1); 183 | sheet_refreshsub(ctl, vx0, vy0, vx0 + sht->bxsize, vy0 + sht->bysize, sht->height, sht->height); 184 | } 185 | return; 186 | } 187 | 188 | void sheet_free(struct SHEET *sht){ 189 | if(sht->height >= 0){ 190 | sheet_updown(sht, -1); 191 | } 192 | sht->flags = 0; 193 | return; 194 | } 195 | -------------------------------------------------------------------------------- /timer.c: -------------------------------------------------------------------------------- 1 | #include "bootpack.h" 2 | #define PIT_CTRL 0x0043 3 | #define PIT_CNT0 0x0040 4 | 5 | struct TIMERCTL timerctl; 6 | 7 | #define TIMER_FLAGS_ALLOC 1 8 | #define TIMER_FLAGS_USING 2 9 | 10 | void init_pit(void){ 11 | int i; 12 | struct TIMER *t; 13 | io_out8(PIT_CTRL, 0x34); 14 | io_out8(PIT_CNT0, 0x9c); 15 | io_out8(PIT_CNT0, 0x2e); 16 | timerctl.count = 0; 17 | for(i = 0; i < MAX_TIMER; i++){ 18 | timerctl.timers0[i].flags = 0; 19 | } 20 | t = timer_alloc(); 21 | t->timeout = 0xffffffff; 22 | t->flags = TIMER_FLAGS_USING; 23 | t->next = 0; 24 | timerctl.t0 = t; 25 | timerctl.next = 0xffffffff; 26 | return; 27 | } 28 | 29 | struct TIMER *timer_alloc(void){ 30 | int i; 31 | for(i = 0; i < MAX_TIMER; i++){ 32 | if(timerctl.timers0[i].flags == 0){ 33 | timerctl.timers0[i].flags = TIMER_FLAGS_ALLOC; 34 | return &timerctl.timers0[i]; 35 | } 36 | } 37 | return 0; 38 | } 39 | 40 | void timer_free(struct TIMER *timer){ 41 | timer->flags = 0; 42 | return; 43 | } 44 | 45 | void timer_init(struct TIMER *timer, struct FIFO32 *fifo, int data){ 46 | timer->fifo = fifo; 47 | timer->data = data; 48 | return; 49 | } 50 | 51 | void timer_settime(struct TIMER *timer, unsigned int timeout){ 52 | int e; 53 | struct TIMER *t, *s; 54 | timer->timeout = timeout + timerctl.count; 55 | timer->flags = TIMER_FLAGS_USING; 56 | e = io_load_eflags(); 57 | io_cli(); 58 | t = timerctl.t0; 59 | if(timer->timeout <= t->timeout){ 60 | timerctl.t0 = timer; 61 | timer->next = t; 62 | timerctl.next = timer->timeout; 63 | io_store_eflags(e); 64 | return; 65 | } 66 | for(;;){ 67 | s = t; 68 | t = t->next; 69 | if(timer->timeout <= t->timeout){ 70 | s->next = timer; 71 | timer->next = t; 72 | io_store_eflags(e); 73 | return; 74 | } 75 | } 76 | } 77 | 78 | void inthandler20(int *esp){ 79 | struct TIMER *timer; 80 | char ts = 0; 81 | io_out8(PIC0_OCW2, 0x60); 82 | timerctl.count++; 83 | if(timerctl.next > timerctl.count){ 84 | return; 85 | } 86 | timer = timerctl.t0; 87 | for(;;){ 88 | if(timer->timeout > timerctl.count){ 89 | break; 90 | } 91 | timer->flags = TIMER_FLAGS_ALLOC; 92 | if(timer != task_timer){ 93 | fifo32_put(timer->fifo, timer->data); 94 | }else{ 95 | ts = 1; 96 | } 97 | timer = timer->next; 98 | } 99 | timerctl.t0 = timer; 100 | timerctl.next = timer->timeout; 101 | if(ts != 0){ 102 | task_switch(); 103 | } 104 | return; 105 | } 106 | -------------------------------------------------------------------------------- /tools/bim2bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/otyn0308/hariboteos/664bb11f4f42f58121e71291062678cebaf2c5e7/tools/bim2bin -------------------------------------------------------------------------------- /tools/bim2hrb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/otyn0308/hariboteos/664bb11f4f42f58121e71291062678cebaf2c5e7/tools/bim2hrb -------------------------------------------------------------------------------- /tools/bin2obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/otyn0308/hariboteos/664bb11f4f42f58121e71291062678cebaf2c5e7/tools/bin2obj -------------------------------------------------------------------------------- /tools/bochs/.gitignore: -------------------------------------------------------------------------------- 1 | fdimage0.bin 2 | -------------------------------------------------------------------------------- /tools/bochs/Makefile: -------------------------------------------------------------------------------- 1 | 2 | BOCHS = bochs 3 | 4 | # http://forum.osdev.org/viewtopic.php?f=1&t=22138 5 | default: 6 | echo "c" | $(BOCHS) -q 7 | -------------------------------------------------------------------------------- /tools/bochs/bochsrc.txt: -------------------------------------------------------------------------------- 1 | #romimage: file=bios.bin 2 | cpu: count=1, ips=1000000 3 | megs: 32 4 | #vgaromimage: file=vgabios.bin 5 | vga: extension=vbe, update_freq=50 # for fast emulation 6 | floppya: 1_44=fdimage0.bin, status=inserted 7 | boot: floppy 8 | clock: sync=realtime, time0=local 9 | floppy_bootsig_check: disabled=0 10 | #log: bochsout.txt 11 | panic: action=ask 12 | error: action=report 13 | info: action=report 14 | debug: action=ignore 15 | #debugger_log: debugger.out 16 | #parport1: enabled=1, file="parport.out" 17 | #vga_update_interval: 300000 18 | #keyboard_serial_delay: 250 19 | #keyboard_paste_delay: 100000 20 | #mouse: enabled=0 21 | #private_colormap: enabled=0 22 | #keyboard_mapping: enabled=0, map= 23 | #i440fxsupport: enabled=1 24 | display_library: sdl 25 | mouse: enabled=0, toggle=ctrl+alt 26 | -------------------------------------------------------------------------------- /tools/edimg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/otyn0308/hariboteos/664bb11f4f42f58121e71291062678cebaf2c5e7/tools/edimg -------------------------------------------------------------------------------- /tools/fdimg0at.tek: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/otyn0308/hariboteos/664bb11f4f42f58121e71291062678cebaf2c5e7/tools/fdimg0at.tek -------------------------------------------------------------------------------- /tools/gas2nask: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/otyn0308/hariboteos/664bb11f4f42f58121e71291062678cebaf2c5e7/tools/gas2nask -------------------------------------------------------------------------------- /tools/gocc1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/otyn0308/hariboteos/664bb11f4f42f58121e71291062678cebaf2c5e7/tools/gocc1 -------------------------------------------------------------------------------- /tools/gocc1plus: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/otyn0308/hariboteos/664bb11f4f42f58121e71291062678cebaf2c5e7/tools/gocc1plus -------------------------------------------------------------------------------- /tools/gocpp0: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/otyn0308/hariboteos/664bb11f4f42f58121e71291062678cebaf2c5e7/tools/gocpp0 -------------------------------------------------------------------------------- /tools/golib00: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/otyn0308/hariboteos/664bb11f4f42f58121e71291062678cebaf2c5e7/tools/golib00 -------------------------------------------------------------------------------- /tools/haribote/errno.h: -------------------------------------------------------------------------------- 1 | /* copyright(C) 2003 H.Kawai (under KL-01). */ 2 | 3 | #if (!defined(ERRNO_H)) 4 | 5 | #define ERRNO_H 1 6 | 7 | #if (defined(__cplusplus)) 8 | extern "C" { 9 | #endif 10 | 11 | extern int errno; 12 | 13 | #define ENOENT 2 /* No such file or directory */ 14 | #define ERANGE 34 /* Result too large (or too small) */ 15 | 16 | #if (defined(__cplusplus)) 17 | } 18 | #endif 19 | 20 | #endif 21 | -------------------------------------------------------------------------------- /tools/haribote/float.h: -------------------------------------------------------------------------------- 1 | /* copyright(C) 2002 H.Kawai (under KL-01). */ 2 | 3 | #if (!defined(FLOAT_H)) 4 | 5 | #define FLOAT_H 1 6 | 7 | #define FLT_RADIX 2 8 | #define FLT_ROUNDS 1 /* nearest */ 9 | #define FLT_DIG 6 10 | #define FLT_EPSILON 1.19209290e-07F 11 | #define FLT_MANT_DIG 24 12 | #define FLT_MAX 3.40282347e+38F 13 | #define FLT_MAX_EXP (+128) 14 | #define FLT_MIN 1.17549435e-38F 15 | #define FLT_MIN_EXP (-125) 16 | 17 | #define DBL_DIG 15 18 | #define DBL_EPSILON 2.2204460492503131e-16 19 | #define DBL_MANT_DIG 53 20 | #define DBL_MAX 1.7976931348623157e+308 21 | #define DBL_MAX_EXP 1024 22 | #define DBL_MIN 2.2250738585072014e-308 23 | #define DBL_MIN_EXP (-1021) 24 | 25 | #endif 26 | 27 | -------------------------------------------------------------------------------- /tools/haribote/golibc.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/otyn0308/hariboteos/664bb11f4f42f58121e71291062678cebaf2c5e7/tools/haribote/golibc.lib -------------------------------------------------------------------------------- /tools/haribote/haribote.rul: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/otyn0308/hariboteos/664bb11f4f42f58121e71291062678cebaf2c5e7/tools/haribote/haribote.rul -------------------------------------------------------------------------------- /tools/haribote/harilibc.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/otyn0308/hariboteos/664bb11f4f42f58121e71291062678cebaf2c5e7/tools/haribote/harilibc.lib -------------------------------------------------------------------------------- /tools/haribote/limits.h: -------------------------------------------------------------------------------- 1 | /* copyright(C) 2002 H.Kawai (under KL-01). */ 2 | 3 | #if (!defined(LIMITS_H)) 4 | 5 | #define LIMITS_H 1 6 | 7 | #define CHAR_BIT 8 8 | #define CHAR_MAX (+127) 9 | #define CHAR_MIN 0 10 | #define INT_MAX (+0x7fffffff) 11 | #define INT_MIN (-0x7fffffff) 12 | #define LONG_MAX INT_MAX 13 | #define LONG_MIN INT_MIN 14 | #define SCHAR_MAX (+127) 15 | #define SCHAR_MIN (-127) 16 | #define SHRT_MAX (+0x7fff) 17 | #define SHRT_MIN (-0x7fff) 18 | #define UCHAR_MAX (+0xff) 19 | #define UINT_MAX (+0xffffffff) 20 | #define ULONG_MAX UINT_MAX 21 | #define USHRT_MAX (+0xffff) 22 | 23 | #endif 24 | -------------------------------------------------------------------------------- /tools/haribote/math.h: -------------------------------------------------------------------------------- 1 | /* copyright(C) 2003 H.Kawai (under KL-01). */ 2 | 3 | #if (!defined(MATH_H)) 4 | 5 | #define MATH_H 1 6 | 7 | #if (defined(__cplusplus)) 8 | extern "C" { 9 | #endif 10 | 11 | double sin(double); 12 | double cos(double); 13 | double sqrt(double); 14 | double ldexp(double x, int n); 15 | double frexp(double x, int *exp); 16 | 17 | extern __inline__ double sin(double x) 18 | { 19 | double res; 20 | __asm__ ("fsin" : "=t" (res) : "0" (x)); 21 | return res; 22 | } 23 | 24 | extern __inline__ double cos(double x) 25 | { 26 | double res; 27 | __asm__ ("fcos" : "=t" (res) : "0" (x)); 28 | return res; 29 | } 30 | 31 | extern __inline__ double sqrt(double x) 32 | { 33 | double res; 34 | __asm__ ("fsqrt" : "=t" (res) : "0" (x)); 35 | return res; 36 | } 37 | 38 | #if (defined(__cplusplus)) 39 | } 40 | #endif 41 | 42 | #endif 43 | -------------------------------------------------------------------------------- /tools/haribote/setjmp.h: -------------------------------------------------------------------------------- 1 | /* copyright(C) 2003 H.Kawai (under KL-01). */ 2 | 3 | #if (!defined(SETJMP_H)) 4 | 5 | #define SETJMP_H 1 6 | 7 | #if (defined(__cplusplus)) 8 | extern "C" { 9 | #endif 10 | 11 | typedef int jmp_buf[3]; /* EBP, EIP, ESP */ 12 | 13 | #define setjmp(env) __builtin_setjmp(env) 14 | #define longjmp(env, val) __builtin_longjmp(env, val) 15 | 16 | #if (defined(__cplusplus)) 17 | } 18 | #endif 19 | 20 | #endif 21 | -------------------------------------------------------------------------------- /tools/haribote/stdarg.h: -------------------------------------------------------------------------------- 1 | /* copyright(C) 2003 H.Kawai (under KL-01). */ 2 | 3 | #if (!defined(STDARG_H)) 4 | 5 | #define STDARG_H 1 6 | 7 | #if (defined(__cplusplus)) 8 | extern "C" { 9 | #endif 10 | 11 | #define va_start(v,l) __builtin_stdarg_start((v),l) 12 | #define va_end __builtin_va_end 13 | #define va_arg __builtin_va_arg 14 | #define va_copy(d,s) __builtin_va_copy((d),(s)) 15 | #define va_list __builtin_va_list 16 | 17 | #if (defined(__cplusplus)) 18 | } 19 | #endif 20 | 21 | #endif 22 | -------------------------------------------------------------------------------- /tools/haribote/stddef.h: -------------------------------------------------------------------------------- 1 | /* copyright(C) 2003 H.Kawai (under KL-01). */ 2 | 3 | #if (!defined(STDDEF_H)) 4 | 5 | #define STDDEF_H 1 6 | 7 | #if (defined(__cplusplus)) 8 | extern "C" { 9 | #endif 10 | 11 | typedef unsigned int size_t; 12 | 13 | #if (defined(__cplusplus)) 14 | } 15 | #endif 16 | 17 | #endif 18 | -------------------------------------------------------------------------------- /tools/haribote/stdio.h: -------------------------------------------------------------------------------- 1 | /* copyright(C) 2003 H.Kawai (under KL-01). */ 2 | 3 | #if (!defined(STDIO_H)) 4 | 5 | #define STDIO_H 1 6 | 7 | #if (defined(__cplusplus)) 8 | extern "C" { 9 | #endif 10 | 11 | #if (!defined(NULL)) 12 | #define NULL ((void *) 0) 13 | #endif 14 | 15 | #include 16 | 17 | int sprintf(char *s, const char *format, ...); 18 | int vsprintf(char *s, const char *format, va_list arg); 19 | 20 | #if (defined(__cplusplus)) 21 | } 22 | #endif 23 | 24 | #endif 25 | -------------------------------------------------------------------------------- /tools/haribote/string.h: -------------------------------------------------------------------------------- 1 | /* copyright(C) 2003 H.Kawai (under KL-01). */ 2 | 3 | #if (!defined(STRING_H)) 4 | 5 | #define STRING_H 1 6 | 7 | #if (defined(__cplusplus)) 8 | extern "C" { 9 | #endif 10 | 11 | #include /* size_t */ 12 | 13 | char *strcpy(char *s, const char *ct); 14 | char *strncpy(char *s, const char *ct, size_t n); 15 | char *strcat(char *s, const char *ct); 16 | char *strncat(char *s, const char *ct, size_t n); 17 | int strcmp(const char *cs, const char *ct); 18 | int strncmp(const char *cs, const char *ct, size_t n); 19 | char *strchr(const char *cs, int c); 20 | char *strrchr(const char *cs, int c); 21 | size_t strspn(const char *s, const char *accept); 22 | size_t strcspn(const char *s, const char *reject); 23 | char *strpbrk(const char *s, const char *accept); 24 | char *strstr(const char *cs, const char *ct); 25 | size_t strlen(const char *cs); 26 | 27 | void *memcpy(void *s, const void *ct, size_t n); 28 | void *memmove(void *s, const void *ct, size_t n); 29 | int memcmp(const void *cs, const void *ct, size_t n); 30 | void *memchr(const void *cs, int c, size_t n); 31 | void *memset(void *s, int c, size_t n); 32 | char *strdup(const char *s); 33 | 34 | #if (defined(__cplusplus)) 35 | } 36 | #endif 37 | 38 | #endif 39 | -------------------------------------------------------------------------------- /tools/haritol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/otyn0308/hariboteos/664bb11f4f42f58121e71291062678cebaf2c5e7/tools/haritol -------------------------------------------------------------------------------- /tools/make: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/otyn0308/hariboteos/664bb11f4f42f58121e71291062678cebaf2c5e7/tools/make -------------------------------------------------------------------------------- /tools/makefont: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/otyn0308/hariboteos/664bb11f4f42f58121e71291062678cebaf2c5e7/tools/makefont -------------------------------------------------------------------------------- /tools/makeiso/.gitignore: -------------------------------------------------------------------------------- 1 | haribote.iso 2 | fdimage0.bin 3 | -------------------------------------------------------------------------------- /tools/makeiso/Makefile: -------------------------------------------------------------------------------- 1 | 2 | FDIMG2ISO = ./fdimg2iso 3 | FDIMAGE = fdimage0.bin 4 | ISONAME = haribote.iso 5 | ISOHEADER = fdimg2iso.dat 6 | 7 | default: 8 | $(FDIMG2ISO) $(ISOHEADER) $(FDIMAGE) $(ISONAME) 9 | -------------------------------------------------------------------------------- /tools/makeiso/fdimg2iso: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/otyn0308/hariboteos/664bb11f4f42f58121e71291062678cebaf2c5e7/tools/makeiso/fdimg2iso -------------------------------------------------------------------------------- /tools/makeiso/fdimg2iso.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/otyn0308/hariboteos/664bb11f4f42f58121e71291062678cebaf2c5e7/tools/makeiso/fdimg2iso.dat -------------------------------------------------------------------------------- /tools/multicmd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/otyn0308/hariboteos/664bb11f4f42f58121e71291062678cebaf2c5e7/tools/multicmd -------------------------------------------------------------------------------- /tools/nask: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/otyn0308/hariboteos/664bb11f4f42f58121e71291062678cebaf2c5e7/tools/nask -------------------------------------------------------------------------------- /tools/naskcnv0: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/otyn0308/hariboteos/664bb11f4f42f58121e71291062678cebaf2c5e7/tools/naskcnv0 -------------------------------------------------------------------------------- /tools/obj2bim: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/otyn0308/hariboteos/664bb11f4f42f58121e71291062678cebaf2c5e7/tools/obj2bim -------------------------------------------------------------------------------- /tools/qemu/.gitignore: -------------------------------------------------------------------------------- 1 | fdimage0.bin 2 | -------------------------------------------------------------------------------- /tools/qemu/Makefile: -------------------------------------------------------------------------------- 1 | QEMU = qemu-system-i386 2 | QEMU_ARGS = -fda fdimage0.bin 3 | 4 | 5 | default: 6 | $(QEMU) $(QEMU_ARGS) 7 | -------------------------------------------------------------------------------- /tools/sjisconv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/otyn0308/hariboteos/664bb11f4f42f58121e71291062678cebaf2c5e7/tools/sjisconv -------------------------------------------------------------------------------- /tools/t5lzma: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/otyn0308/hariboteos/664bb11f4f42f58121e71291062678cebaf2c5e7/tools/t5lzma --------------------------------------------------------------------------------