;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;; Miguel's FoolOS Helper Functions ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ;disk_load_16 ; [bits 16] DISK_LOAD_HANG_MSG: db " D",0 ;disk_load routune (load dh sectors from drive dl to es:bx) ;lba mode has 52 sectors hardcoded! disk_load_16: pusha ; check if LBA is supported pusha mov ah,0x41 mov bx,0x55aa int 0x13 jnc disk_load_lba popa ; load using CHS mov ah,0x02 ;BIOS read sector func mov al,dh ;read dh sectors (amount) mov ch,0x00 ;cyl 0 mov dh,0x00 ;head 0 mov cl,0x02 ;start at sector 2 ; int 0x13 ;bios interrupt popa ret ; load using LBA disk_load_lba: popa xor ah,ah mov ah,0x42 lea si,[lba_adr] int 0x13 jc skip_print mov bx, 0x1000 call print_string skip_print: popa ret lba_adr: dw 0x10 ; size of packet ( 16 byte) dw 52 ; number of sectors to read dw 0x1000 ; target addr. dw 0 ; dd 1 ; first sector to read dd 0 ;