6 bootpack in 'bootpack.pas',
7 asmhead in 'asmhead.pas';
10 MEMMAN_ADDR = $003C0000;
13 binfo: ^TBOOTINFO = Pointer(ADR_BOOTINFO);
21 memman: ^TMEMMAN = Pointer(MEMMAN_ADDR);
24 mouse, win, back: integer;
26 buf_win, buf_back, keybuf, buf_mouse: TBytes;
29 procedure window8(buf: TBytes; xsize, ysize: integer; title: PAnsiChar);
31 closebtn: array [0 .. 14] of string[16] = ( //
32 ('000000000000000@'), //
33 ('0QQQQQQQQQQQQQ$@'), //
34 ('0QQQQQQQQQQQQQ$@'), //
35 ('0QQQQQQQQQQQQQ$@'), //
36 ('0QQQ@@QQQQ@@QQ$@'), //
37 ('0QQQQ@@QQ@@QQQ$@'), //
38 ('0QQQQQ@@@@QQQQ$@'), //
39 ('0QQQQQQ@@QQQQQ$@'), //
40 ('0QQQQQ@@@@QQQQ$@'), //
41 ('00QQQ@@QQ@@QQQ$@'), //
42 ('0QQQ@@QQQQ@@QQ$@'), //
43 ('0QQQQQQQQQQQQQ$@'), //
44 ('0QQQQQQQQQQQQQ$@'), //
45 ('0$$$$$$$$$$$$$$@'), //
46 ('@@@@@@@@@@@@@@@@') //
56 boxfill8(buf, xsize, COL8_C6C6C6, 0, 0, xsize - 1, 0);
57 boxfill8(buf, xsize, COL8_FFFFFF, 1, 1, xsize - 2, 1);
58 boxfill8(buf, xsize, COL8_C6C6C6, 0, 0, 0, ysize - 1);
59 boxfill8(buf, xsize, COL8_FFFFFF, 1, 1, 1, ysize - 2);
60 boxfill8(buf, xsize, COL8_848484, xsize - 2, 1, xsize - 2, ysize - 2);
61 boxfill8(buf, xsize, COL8_000000, xsize - 1, 0, xsize - 1, ysize - 1);
62 boxfill8(buf, xsize, COL8_C6C6C6, 2, 2, xsize - 3, ysize - 3);
63 boxfill8(buf, xsize, COL8_000084, 3, 3, xsize - 4, 20);
64 boxfill8(buf, xsize, COL8_848484, 1, ysize - 2, xsize - 2, ysize - 2);
65 boxfill8(buf, xsize, COL8_000000, 0, ysize - 1, xsize - 1, ysize - 1);
67 font.putfonts8_asc(buf, xsize, 24, 4, COL8_FFFFFF, title);
82 buf[(5 + y) * xsize + (xsize - 21 + x)] := i;
87 screen := TScreen.Create;
88 screen.Init(binfo^.vram, binfo^.scrnx, binfo^.scrny);
89 keyboard := TKeyboard.Create;
90 mousefifo := TMouse.Create;
92 memtest:=TMemtest.Create;
93 memtotal:=memtest.memtest($00400000,$bfffffff);
96 mem.memfree(memman,$00001000,$0009e000);
97 mem.memfree(memman,$00400000,memtotal-$00400000);
101 font := TPallet.Create;
102 sheet := TShtCtl.Create;
103 back := sheet.allock;
104 mouse := sheet.allock;
106 sheet.slide(mouse, 10, 10);
107 sheet.slide(win, 80, 72);
108 SetLength(buf_win, 160 * 68);
109 SetLength(keybuf, 32);
110 SetLength(buf_mouse, 128);
111 sheet.setbuf(back, buf_back, binfo^.scrnx, binfo^.scrny, -1);
112 sheet.setbuf(mouse, buf_mouse, 16, 16, 99);
113 sheet.setbuf(win, buf_win, 160, 68, -1);
114 font.mouse_cursor8(buf_mouse, 99);
115 window8(buf_win, 160, 68, 'window');
116 font.putfonts8_asc(buf_win, 160, 24, 28, COL8_000000, 'Welcom to');
117 font.putfonts8_asc(buf_win, 160, 24, 44, COL8_000000, 'Haribote-XE');
118 mx := (binfo^.scrnx - 16) div 2;
119 my := (binfo^.scrny - 28 - 16) div 2;
120 sheet.slide(mouse, mx, my);
121 sheet.slide(win, 80, 72);
122 sheet.updown(back, 0);
123 sheet.updown(mouse, 1);
124 sheet.updown(win, 2);
126 font.putfonts8_asc(binfo^.vram, 0, 32, COL8_FFFFFF, s);
127 sheet.refresh(Rect(0, 0, 80, 16));
128 mousefifo.Init(mousefifo.fifo8, 128, buf_mouse);
129 keyboard.Init(keyboard.fifo8, 32, keybuf);
133 if keyboard.fifo.Status(keyboard.fifo8) + mousefifo.fifo.Status
134 (mousefifo.fifo8) = 0 then
138 if keyboard.fifo.Status(keyboard.fifo8) <> 0 then
140 i := keyboard.fifo.Get(keyboard.fifo8);
143 screen.boxfill8(buf_back, binfo^.scrnx, COL8_008484, 0, 16, 15, 31);
144 font.putfonts8_asc(buf_back, binfo^.scrnx, 0, 16, COL8_FFFFFF, s);
145 sheet.refresh(Rect(0, 16, 16, 32));
147 else if mousefifo.fifo.Status(mousefifo.fifo8) <> 0 then
149 i := mousefifo.fifo.Get(mousefifo.fifo8);
151 sheet.refresh(Rect(0, 0, 80, 16));