|
|
@ -81,6 +81,7 @@ int 0x16 |
|
|
|
boot_partition: |
|
|
|
; IMPORTANT bx, has to hold the value 1-4 for the partiotion that wanted to be booted. |
|
|
|
|
|
|
|
mov bx, 1 |
|
|
|
mov ax, partition_1 |
|
|
|
.loop: |
|
|
|
cmp bx, 1 |
|
|
@ -90,6 +91,7 @@ mov ax, partition_1 |
|
|
|
jmp .loop |
|
|
|
break: |
|
|
|
|
|
|
|
|
|
|
|
add ax, 8 ; This is the offset to fetch the LBA start adress of the partition record |
|
|
|
mov bx, ax |
|
|
|
xor ax, ax |
|
|
@ -108,7 +110,7 @@ xor ax, ax |
|
|
|
mov ah, 0x42 ; READ |
|
|
|
mov dl, [disk_identifier] |
|
|
|
int 0x13 |
|
|
|
|
|
|
|
;call dumpax |
|
|
|
jc endcarrycheck ; An error ocurred when reading from disk. |
|
|
|
|
|
|
|
; If no error then jump to volume boot record |
|
|
@ -182,7 +184,6 @@ error_str db 'Error', 0 |
|
|
|
boot_this_partition: dw 0 |
|
|
|
disk_identifier db 0 |
|
|
|
|
|
|
|
|
|
|
|
DAPACK: |
|
|
|
.dap_Size: db 0x10 ; This is always 16 bytes (0x10) |
|
|
|
.rev_byte: db 0x0 ; reserved byte, should always be zero |
|
|
@ -203,12 +204,13 @@ partition_1: |
|
|
|
.start_LBA db 0x10, 0x00, 0x00, 0x00 |
|
|
|
.size db 0x00, 0xC8, 0x03, 0x00 |
|
|
|
|
|
|
|
; sector number for 2.nd SingOS -> 16480 |
|
|
|
partition_2: |
|
|
|
.active_partition db 0x00 |
|
|
|
.active_partition db 0x80 |
|
|
|
.start_CHS db 0x8C, 0x3E, 0x0F |
|
|
|
.disk_type db 0x83 |
|
|
|
.end_CHS db 0xFF, 0xFF, 0xFF |
|
|
|
.start_LBA db 0x00, 0xD0, 0x03, 0x00 |
|
|
|
.start_LBA db 0x61, 0x40, 0x00, 0x00 ;0x00, 0xD0, 0x03, 0x00 |
|
|
|
.size db 0x00, 0x28, 0x1C, 0x03 |
|
|
|
|
|
|
|
partition_3: |
|
|
|