nightloader/bootsector/partition_table.asm

125 lines
2.9 KiB
NASM

times 442 - ($-$$) db 0
db "####"
times 446 - ($-$$) db 0
mbr_table:
.part_1:
db 0x80 ; bootable flag
db 0, 2, 0 ; CHS - start-address (ordering: cylinder, sector, header)
db 0x9d
db 0, 16, 0 ; CHS - end-address (ordering: cylinder, sector, header)
dd 2
dd 16
.part_2:
db 0x00 ; bootable flag
db 0, 0, 0 ; CHS - start-address (ordering: cylinder, sector, header)
db 0x0
db 0, 0, 0 ; CHS - end-address (ordering: cylinder, sector, header)
dd 0
dd 0
.part_3:
db 0x00 ; bootable flag
db 0, 0, 0 ; CHS - start-address (ordering: cylinder, sector, header)
db 0x00
db 0, 0, 0 ; CHS - end-address (ordering: cylinder, sector, header)
dd 0
dd 0
.part_4:
db 0x00 ; bootable flag
db 0, 0, 0 ; CHS - start-address (ordering: cylinder, sector, header)
db 0x00
db 0, 0, 0 ; CHS - end-address (ordering: cylinder, sector, header)
dd 0
dd 0
.signature:
db 0x55, 0xaa
second_stage:
;mov si, finish_text
;mov dl, 36
;mov dh, 12
;mov cx, 8
; set the video mode correctly
xor ah, ah ; bios-function (set video mode)
mov al, 3 ; video mode with 80x25 characters
int 0x10
.happiness:
mov ah, 0x02 ; action: move cursor
mov bh, 0 ; page
mov dh, 1 ; row
mov dl, 1 ; column
int 0x10
mov ah, 0x0a ; action: write character
mov al, '$' ; character
mov bh, 0 ; page
mov cx, 13 ; count
int 10h
jmp .happiness
.prolog:
push di
push cx
push bx
push ax
xor di, di ; character index
.printing_loop:
.set_cursor_position:
.write_character:
push cx ; save len_buffer
; get the current character
mov bx, si
add bx, di
mov al, [bx]
; al now contains the current character
; set the other needed interrupt values
mov ah, 0x0a ; wanted function (write character at cursor position)
mov bh, 0 ; page number
mov cx, 1 ; repetitions of character
int 0x10 ; call bios basic draw functions
pop cx ; restore len_buffer
inc dl ; go to next column
; go to a new line if needed
cmp dl, 80
jb .no_new_line_needed
xor dl, dl
inc dh ; increase column
.no_new_line_needed:
inc di ; go to next character
; go further if the string-printing hasn't been finished
cmp di, cx
jb .printing_loop
.epilog:
jmp .epilog
finish_text:
db "-FINISH-"