|
@@ -31,10 +31,6 @@
|
31
|
31
|
|
32
|
32
|
jmp $BOOTSEG, $go /* reload cs:ip to match relocation addr */
|
33
|
33
|
go:
|
34
|
|
- xorw %ax,%ax /* put stack at 0000:7c00 */
|
35
|
|
- movw %ax,%ss
|
36
|
|
- movw $0x7c00,%sp
|
37
|
|
-
|
38
|
34
|
movw $0x2000-12, %di /* 0x2000 is arbitrary value >= length */
|
39
|
35
|
/* of bootsect + room for stack + 12 for */
|
40
|
36
|
/* saved disk parm block */
|
|
@@ -42,6 +38,8 @@ go:
|
42
|
38
|
movw $BOOTSEG, %ax
|
43
|
39
|
movw %ax,%ds
|
44
|
40
|
movw %ax,%es
|
|
41
|
+ movw %ax,%ss /* put stack at BOOTSEG:0x4000-12. */
|
|
42
|
+ movw %di,%sp
|
45
|
43
|
|
46
|
44
|
/* Many BIOS's default disk parameter tables will not recognize multi-sector
|
47
|
45
|
* reads beyond the maximum sector number specified in the default diskette
|
|
@@ -52,7 +50,7 @@ go:
|
52
|
50
|
* will set the maximum sector count to 36 - the most we will encounter on an
|
53
|
51
|
* ED 2.88. High doesn't hurt. Low does.
|
54
|
52
|
*
|
55
|
|
- * Segments are as follows: ds=es=cs - BOOTSEG
|
|
53
|
+ * Segments are as follows: ds=es=ss=cs - BOOTSEG
|
56
|
54
|
*/
|
57
|
55
|
|
58
|
56
|
xorw %cx,%cx
|