8 procedure resb(count: integer); virtual;
9 procedure align16; virtual;
20 function io_in8(port: integer): integer;
21 function io_in16(port: integer): integer;
22 function io_in32(port: integer): integer;
23 procedure io_out8(port, data: integer);
24 procedure io_out16(port, data: integer);
25 procedure io_out32(port, data: integer);
26 function io_load_eflags: integer;
27 procedure io_store_eflags(eflags: integer);
28 procedure load_gdtr(limit, addr: integer);
29 procedure load_idtr(limit, addr: integer);
30 function load_cr0: integer;
31 procedure store_cr0(cr0: integer);
60 function io_in8(port: integer): integer;
68 function io_in16(port: integer): integer;
76 function io_in32(port: integer): integer;
83 procedure io_out8(port, data: integer);
91 procedure io_out16(port, data: integer);
99 procedure io_out32(port, data: integer);
107 function io_load_eflags: integer;
114 procedure io_store_eflags(eflags: integer);
122 procedure load_gdtr(limit, addr: integer);
130 procedure load_idtr(limit, addr: integer);
138 function load_cr0: integer;
144 procedure store_cr0(cr0: integer);
153 procedure TAsmhead.resb(count: integer);
162 procedure TAsmhead.align16;
168 CALL [EDX + VMTOFFSET TAsmhead.resb(EBX)]
172 procedure TAsmhead.Boot;
174 VBEMODE: UInt16 = $105;
176 BOTPAK: UInt32 = $00280000;
177 DSKCAC: UInt32 = $00100000;
178 DSKCAC0: UInt32 = $00008000;
180 CYLS: UInt16 = $0FF0;
181 LEDS: UInt16 = $0FF1;
182 VMODE: UInt16 = $0FF2;
183 SCRNX: UInt16 = $0FF4;
184 SCRNY: UInt16 = $0FF6;
185 VRAM: UInt16 = $0FF8;
203 CMP BYTE PTR [ES:DI+$1b],4
212 MOV BYTE PTR [VMODE],8
223 MOV BYTE PTR [VMODE],8
224 MOV WORD PTR [SCRNX],320
225 MOV WORD PTR [SCRNY],200
226 MOV DWORD PTR [VRAM],$000a0000
231 MOV BYTE PTR [LEDS],AL
264 MOV ESI,DWORD PTR @bootpack
277 MOV CL,BYTE PTR [CYLS]
313 CALL DWORD PTR [EDX + VMTOFFSET TAsmhead.align16]
317 CALL DWORD PTR [EDX + VMTOFFSET TAsmhead.resb(8)]
318 DW $ffff,$0000,$9200,$00cf
319 DW $ffff,$0000,$9a28,$0047
328 CALL DWORD PTR [EDX + VMTOFFSET TAsmhead.align16]
332 constructor TAsmhead.Create;
339 procedure TAsmhead.Init;
365 CALL DWORD PTR [EDX + VMTOFFSET TAsmhead.resb(18)]
436 CALL DWORD PTR [EDX + VMTOFFSET TAsmhead.resb(EBX)]