8 bootpack in 'bootpack.pas',
9 asmhead in 'asmhead.pas',
14 MEMMAN_ADDR = $003C0000;
18 binfo: ^TBOOTINFO = Pointer(ADR_BOOTINFO);
22 key_to, key_shift, key_leds, keycmd_wait: integer;
26 memman: ^TMEMMAN = Pointer(MEMMAN_ADDR);
30 mo, win, cons: TSheet;
40 asmhead:=TAsmhead.Create;
42 key_leds := (binfo^.leds shr 4) and 7;
45 fifo := TFifo.Create(128);
46 keycmd := TFifo.Create(32);
47 keyboard := TKeyboard.Create(fifo, 216);
49 mouse := TMouse.Create(fifo, 512);
50 ctl := TCtl.Create(fifo);
51 sheet := TShtCtl.Create(binfo^.scrnx, binfo^.scrny);
52 mo := TCursor.Create(16, 16, 99);
53 win := TWindow.Create(160, 68, 'Window', 0);
54 cons := TConsole.Create(160, 100, 'Console', 1);
59 memtest := TMemtest.Create;
60 memtotal := memtest.memtest($00400000, $BFFFFFFF);
64 mem.memfree(memman,$00001000,$0009e000);
65 mem.memfree(memman,$00400000,memtotal-$00400000);
69 sheet.slide(mo, 10, 10);
70 sheet.slide(win, 80, 72);
71 sheet.screen.putfonts8_asc_sht(0, 28, 'Welcom to');
72 sheet.screen.putfonts8_asc_sht(0, 44, 'Haribote-XE');
73 mx := (sheet.screen.bxsize - 16) div 2;
74 my := (sheet.screen.bysize - 28 - 16) div 2;
75 sheet.slide(mo, mx, my);
76 sheet.slide(win, 80, 72);
79 sheet.screen.putfonts8_asc_sht(0, 32, s);
80 sheet.refresh(0, 0, 80, 16);
81 keycmd.Put(KEYCMD_LED);
85 if (keycmd.Status > 0) and (keycmd_wait < 0) then
87 keycmd_wait := keycmd.Get;
88 keyboard.wait_KBC_sendready;
89 io_out8(TKeyboard.PORT_KEYDAT, keycmd_wait);
92 if fifo.Status = 0 then
98 if (i >= 256) and (i <= 511) then
100 if i >= $54 + 256 then
101 if (keyboard.keytable0[i - 256] <> 0) and (win.cursor_x < 144) then
103 s[1] := Char(keyboard.keytable0[i - 256]);
104 win.putfonts8_asc_sht(win.cursor_x, 28, s);
105 inc(win.cursor_x, 8);
107 if (i <= 256 + $0E) and (win.cursor_x > 8) then
109 win.putfonts8_asc_sht(win.cursor_x, 28, ' ');
110 dec(win.cursor_x, 8);
112 if i = 256 + $0F then
117 sheet.updown(win, 0);
118 sheet.updown(cons, 1);
120 (cons as TConsole).fifo.Put(2);
125 sheet.updown(win, 1);
126 sheet.updown(cons, 0);
127 cons.cursor_c:=COL8_000000;
128 TConsole(cons).fifo.Put(3);
131 win.clip := Rect(0, 0, win.bxsize, 21);
132 cons.clip := Rect(0, 0, cons.bxsize, 21);
137 key_shift := key_shift or 1;
139 key_shift := key_shift and 1;
146 key_leds := key_leds * key_leds * key_leds * key_leds;
147 keycmd.Put(KEYCMD_LED);
148 keycmd.Put(key_leds);
152 key_leds := key_leds * key_leds;
153 keycmd.Put(KEYCMD_LED);
154 keycmd.Put(key_leds);
158 keycmd.Put(KEYCMD_LED);
159 keycmd.Put(key_leds);
165 keyboard.wait_KBC_sendready;
166 io_out8(TKeyboard.PORT_KEYDAT, keycmd_wait);
169 win.boxfill8(win.cursor_c, win.cursor_x, 28, win.cursor_x + 8, 44);
171 else if (i >= 512) and (i <= 767) then
173 if mouse.decode(i) <> 0 then
176 if (mouse.dec.btn and $01) <> 0 then
178 if (mouse.dec.btn and $02) <> 0 then
180 if (mouse.dec.btn and $03) <> 0 then
182 sheet.screen.boxfill8(COL8_008484, 32, 16, 32 + 15 * 8 - 1, 31);
183 sheet.screen.putfonts8_asc_sht(32, 16, s);
184 sheet.refresh(32, 16, 32 + 15 * 8, 32);
185 inc(mx, mouse.dec.x);
186 inc(my, mouse.dec.y);
191 if mx > sheet.screen.bxsize - 1 then
192 mx := sheet.screen.bxsize - 1;
193 if my > sheet.screen.bysize - 1 then
194 my := sheet.screen.bysize - 1;
195 sheet.screen.boxfill8(COL8_008484, 0, 0, 78, 15);
196 sheet.screen.putfonts8_asc_sht(0, 0, s);
197 sheet.refresh(0, 0, 80, 16);
198 sheet.slide(mo, mx, my);
200 if fifo.Status <> 0 then
204 sheet.screen.putfonts8_asc_sht(0, 64, '10sec');
205 sheet.refresh(0, 64, 56, 80);
207 sheet.refresh(0, 0, 80, 16);