I'm having problems with my botostrap code, in that it does copy the system image from teh floppy to teh hard drove, but it copies it to LBA 54 instead of LBA-0 like i was expecting. Needless to say the hard drive remains unbootable.

; HiP-OS Bootstrap by Anthony Q. Bachler copyright 2009, released under the GPL v3
section .text 
[bits 16]
jmp 0x07c0:start
mov WORD [transfer_size] , 0x0040 ; set transfer size
mov ax , 0x07c0
mov ds , ax
mov ax , 0x2000 ; set up the stack
mov ss , ax 
mov sp , 0xfffc
mov [boot_drive] , dl ; save the boot drive info
cmp dl , 0x7f ; is it floppy?
jle floppy_handler
mov ah , 0x42 ; function 0x42
mov si , packet ; pointer to predefined packet
int 0x13 ; int 0x13 / 0x42 EXTENDED READ
jnc continue
; reset the floppy
mov ah , 0x00
int 0x13
; copy 32k image into memory
mov ax , 0x1000
mov es , ax
xor bx , bx
mov cx , 0x0001
mov dh , 0x00
mov ax , 0x0240
int 0x13
jc floppy_handler
; copy the 32k image to the hard drive
mov ax , packet
mov si , ax
mov ax , 0x4301
mov dl , 0x80
int 0x13
jmp 0xffff:0x0000 ; reset the system
mov ax , 0x1000
mov ds , ax
mov dl , [boot_drive]
mov [ds:boot_drive] , dl
jmp 0x1000:loaded
mov ax , 0xb000
mov es , ax
mov ax , 0x4100
mov [es:0x0000] , ax
installer_check db 0xff ; set to 0xff for the install disk 0x00 otherwise
boot_drive db 0x00 ; the drive number this booted from
packet db 0x10 ; size of packet 
db 0x00 ; reserved
transfer_size dw 0x0040 ; number of blocks to transfer - 64 = 32k
transfer_buffer dw 0x1000 , 0x0000 ; destination buffer
block_start db 0x00 , 0x00 , 0x00 , 0x00 ; LBA block to load
db 0x00 , 0x00 , 0x00 , 0x00
times 446-($-$$) db 0
boot_indicator db 0x80 
starting_head db 0x00 
start_sector db 0x01 
start_cylinder db 0x00 
system_id db 0x7f
end_head db 0x01
end_sector db 0x12
end_cylinder db 0x4f
relative_sector db 0x01 , 0x00 , 0x00 , 0x00
total_sectors db 0x40 , 0x0b , 0x00 , 0x00 
times 48 db 0
db 0x55
db 0xAA
times 1474560-($-$$) db 0
section .data 
; put data items here
section .bss 
; put uninitialised data here