-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmsdos-mbr.s
More file actions
121 lines (103 loc) · 1.51 KB
/
msdos-mbr.s
File metadata and controls
121 lines (103 loc) · 1.51 KB
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
.code16
sector_start:
jmp start
nop
.ascii "MSDOS5.0"
.hword 0x0200
.byte 0x01
.hword 0x0001
.byte 0x02
.hword 0x00e0
.hword 0x0040
.byte 0xf0
.hword 0x0009
.hword 0x0012
.hword 0x0002
.long 0x00000000
.long 0x00000000
.byte 0x00
.byte 0x00
.byte 0x29
.long 0x5a541826
.ascii "NO NAME "
.ascii "FAT12 "
.org sector_start + 0x003e
start:
cli # interrupts off
xor %ax, %ax # AX = 0x0000
mov %ax, %ss # AX = 0x0000
mov $0x7c00, %sp # SP = 0x7c00
push %ss
pop %es # ES = 0x0000
mov $0x0078, %bx # BX = 0x0078
lds %ss:(%bx), %si # DS:SI = (0000:0078)
push %ds
push %si
push %ss
push %bx
mov $start, %di
mov $11, %cx
cld
repz
movsb
push %es
pop %ds
movb $0x0f, -2(%di)
mov (0x7c18), %cx
mov %cl, -7(%di)
mov %ax, 2(%bx)
movw $start, (%bx)
sti
int $0x13
jb nsd
xor %ax, %ax
cmp %ax, (0x7c13)
jz small_disk
mov (0x7c13), %cx
mov %cx, (0x7c20)
small_disk:
mov (0x7c10), %al
mulw (0x7c16)
add (0x7c1c), %ax
adc (0x7c1e), %dx
add (0x7c0e), %ax
adc $0, %dx
mov %ax, (0x7c50)
mov %dx, (0x7c52)
mov %ax, (0x7c49)
mov %dx, (0x7c4b)
mov $0x0020, %ax
mulw (0x7c11)
mov (0x7c0b), %bx
add %ax, %bx
dec %ax
div %bx
add %ax, (0x7c49)
adcw $0, (0x7c4b)
mov $0x0500, %bx
mov (0x7c52), %dx
mov (0x7c50), %ax
call end
jb nsd
mov $1, %al
call end
jb nsd
mov %bx, %di
mov $0x000b, %cx
mov $0x7de6, %si
repz
cmpsb
jnz nsd
lea 32(%bx), %di
mov $11, %cx
repz
cmpsb
jz end
nsd:
mov $0x7d9e, %si
call end
xor %ax, %ax
end:
.org sector_start + 0x01fe
.byte 0x55
.byte 0xaa