Loading from disk works, but jumping to the kernel does not
This commit is contained in:
@@ -1,26 +1,59 @@
|
||||
resetFloppy:
|
||||
mov ax, 0 ; reset floppy disk (only need ah, reset
|
||||
; al while we're here though)
|
||||
mov dl, 0 ; use drive 0 (first floppy)
|
||||
int 0x13
|
||||
jc resetFloppy
|
||||
ret
|
||||
mov ah, 0 ; reset floppy disk
|
||||
mov dl, 0 ; use drive 0 (first floppy)
|
||||
int 0x13
|
||||
jc resetFloppy
|
||||
ret
|
||||
|
||||
loadDiskSector:
|
||||
;; set al = how many sectors to read
|
||||
;; set ch = what track to read from
|
||||
;; set cl = what sector on the track to start reading
|
||||
;; set es:bx = where to store the disk data
|
||||
loadFloppyDiskSectors:
|
||||
mov ah, 0x02 ; int 0x13 function 2 (read sectors from disk)
|
||||
mov dh, 0 ; head 0 (assume simple small floppy)
|
||||
mov dl, 0 ; drive 0 = floppy drive
|
||||
int 0x13
|
||||
jc loadFloppyDiskSectors ; retry on errors (not much else we can do)
|
||||
|
||||
blankScreen:
|
||||
push cx
|
||||
mov cx, 0x0
|
||||
_blankScreen_next:
|
||||
mov al, 0x20 ; blank space
|
||||
call printCharacter
|
||||
inc cx
|
||||
cmp cx, 0x7d0 ; 80 * 25 screen = 0x7d0
|
||||
jne _blankScreen_next
|
||||
_blankScreen_exit:
|
||||
pop cx
|
||||
ret
|
||||
|
||||
;; set dh = row
|
||||
;; set dl = column
|
||||
setCursorPosition:
|
||||
mov ah, 0x02
|
||||
mov bh, 0
|
||||
int 0x10
|
||||
ret
|
||||
|
||||
;; set al = character to display
|
||||
printCharacter: ; print a single character to the display
|
||||
mov ah, 0x0e ; int 0x10 is the entire display control,
|
||||
; 0x0e means teletype output
|
||||
mov bh, 0x00 ; Print on the zero (primary) page
|
||||
mov bl, 0x07 ; Color. 0x07 is grey on black.
|
||||
int 0x10
|
||||
ret
|
||||
|
||||
printCharacter: ; print a single character to the display
|
||||
mov ah, 0x0e ; int 0x10 is the entire display control,
|
||||
; 0x0e means teletype output
|
||||
mov bh, 0x00 ; Print on the zero (primary) page
|
||||
mov bl, 0x07 ; Color. 0x07 is grey on black.
|
||||
int 0x10
|
||||
ret
|
||||
|
||||
;; set si = string to display
|
||||
printString: ; print the entire string pointed to by si
|
||||
mov al, [si] ; [x] == *x, dereferencing source index
|
||||
call printCharacter
|
||||
inc si
|
||||
cmp al, 0x0 ; found the trailing NULL?
|
||||
jne printString
|
||||
ret
|
||||
_printString_next:
|
||||
mov al, [si] ; [x] == *x, dereferencing source index
|
||||
cmp al, 0x0 ; found the trailing NULL?
|
||||
je _printString_exit
|
||||
call printCharacter
|
||||
inc si
|
||||
jmp _printString_next
|
||||
_printString_exit:
|
||||
ret
|
||||
|
||||
Reference in New Issue
Block a user