blob: afae0f62a08836bb5a0d8fec306877c2e0b073b3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
// Struct defining the contents of the register state used
// for bios calls
export type state = struct {
@offset(0) eax: u32,
@offset(4) ebx: u32,
@offset(8) ecx: u32,
@offset(12) edx: u32,
@offset(16) edi: u32,
@offset(20) esi: u32,
@offset(24) ds: u16,
@offset(26) es: u16,
@offset(28) ss: u16,
@offset(30) gs: u16,
@offset(32) fs: u16
};
// The set real mode registers
export let regs: state;
// The address of a 512 bytes workspace that is located below 0xFFFFF and can be used to store the results
// of various bios calls
export const @symbol("_ws") ws: u16;
// The boot drive number as given by the BIOS at boot time
export const @symbol("drive_no") drive_number: u8;
// The amount of sectors per track that the boot drive has
export const @symbol("drive_spt") drive_sectors_per_track: u8;
// The amount of heads that the boot drive has
export const @symbol("drive_heads") drive_heads: u8;
// Clears the BIOS mode registers
export fn clearregs() void = {
regs = state {
...
};
};
// Call a BIOS interrupt
export fn call(intno: u8) void;
|