commit
8fb3e8a982
2
disk.asm
2
disk.asm
|
@ -23,7 +23,7 @@ read_sector:
|
||||||
pop r3
|
pop r3
|
||||||
ret
|
ret
|
||||||
|
|
||||||
; wrtie a sector from the specified memory buffer
|
; write a sector from the specified memory buffer
|
||||||
; inputs:
|
; inputs:
|
||||||
; r0: sector number
|
; r0: sector number
|
||||||
; r1: disk ID
|
; r1: disk ID
|
||||||
|
|
2
main.asm
2
main.asm
|
@ -33,7 +33,7 @@ entry_seed_loop:
|
||||||
entry_seed_done:
|
entry_seed_done:
|
||||||
mov [RANDOM_STATE], r0
|
mov [RANDOM_STATE], r0
|
||||||
|
|
||||||
; set the stach pointer again to pop the return address and flags off the stack
|
; set the stack pointer again to pop the return address and flags off the stack
|
||||||
mov rsp, SYSTEM_STACK
|
mov rsp, SYSTEM_STACK
|
||||||
|
|
||||||
; set the interrupt vector for interrupt 0xFF - vsync
|
; set the interrupt vector for interrupt 0xFF - vsync
|
||||||
|
|
12
memory.asm
12
memory.asm
|
@ -4,7 +4,7 @@
|
||||||
; if the source and destination overlap, the behavior is undefined
|
; if the source and destination overlap, the behavior is undefined
|
||||||
; inputs:
|
; inputs:
|
||||||
; r0: pointer to source
|
; r0: pointer to source
|
||||||
; r1: pointer to destinaton
|
; r1: pointer to destination
|
||||||
; r2: number of bytes to copy
|
; r2: number of bytes to copy
|
||||||
; outputs:
|
; outputs:
|
||||||
; none
|
; none
|
||||||
|
@ -29,7 +29,7 @@ copy_memory_bytes_loop:
|
||||||
; if the source and destination overlap, the behavior is undefined
|
; if the source and destination overlap, the behavior is undefined
|
||||||
; inputs:
|
; inputs:
|
||||||
; r0: pointer to source
|
; r0: pointer to source
|
||||||
; r1: pointer to destinaton
|
; r1: pointer to destination
|
||||||
; r2: number of words to copy
|
; r2: number of words to copy
|
||||||
; outputs:
|
; outputs:
|
||||||
; none
|
; none
|
||||||
|
@ -53,7 +53,7 @@ copy_memory_words_loop:
|
||||||
; compare specified number of bytes from source pointer with destination pointer
|
; compare specified number of bytes from source pointer with destination pointer
|
||||||
; inputs:
|
; inputs:
|
||||||
; r0: pointer to source
|
; r0: pointer to source
|
||||||
; r1: pointer to destinaton
|
; r1: pointer to destination
|
||||||
; r2: number of bytes to compare
|
; r2: number of bytes to compare
|
||||||
; outputs:
|
; outputs:
|
||||||
; Z flag
|
; Z flag
|
||||||
|
@ -69,7 +69,7 @@ compare_memory_bytes_loop:
|
||||||
inc r0
|
inc r0
|
||||||
inc r1
|
inc r1
|
||||||
loop compare_memory_bytes_loop
|
loop compare_memory_bytes_loop
|
||||||
; set Z flag if we reach thie point
|
; set Z flag if we reach this point
|
||||||
mov r0, 0
|
mov r0, 0
|
||||||
cmp r0, 0
|
cmp r0, 0
|
||||||
compare_memory_bytes_not_equal:
|
compare_memory_bytes_not_equal:
|
||||||
|
@ -81,7 +81,7 @@ compare_memory_bytes_not_equal:
|
||||||
; compare specified number of words from source pointer with destination pointer
|
; compare specified number of words from source pointer with destination pointer
|
||||||
; inputs:
|
; inputs:
|
||||||
; r0: pointer to source
|
; r0: pointer to source
|
||||||
; r1: pointer to destinaton
|
; r1: pointer to destination
|
||||||
; r2: number of words to compare
|
; r2: number of words to compare
|
||||||
; outputs:
|
; outputs:
|
||||||
; Z flag
|
; Z flag
|
||||||
|
@ -97,7 +97,7 @@ compare_memory_words_loop:
|
||||||
add r0, 4
|
add r0, 4
|
||||||
add r1, 4
|
add r1, 4
|
||||||
loop compare_memory_words_loop
|
loop compare_memory_words_loop
|
||||||
; set Z flag if we reach thie point
|
; set Z flag if we reach this point
|
||||||
mov r0, 0
|
mov r0, 0
|
||||||
cmp r0, 0
|
cmp r0, 0
|
||||||
compare_memory_words_not_equal:
|
compare_memory_words_not_equal:
|
||||||
|
|
|
@ -143,7 +143,7 @@ print_character_to_monitor_end:
|
||||||
; none
|
; none
|
||||||
; outputs:
|
; outputs:
|
||||||
; none
|
; none
|
||||||
; FIXME: this shouldnt have hard coded values
|
; FIXME: this shouldn't have hard coded values
|
||||||
; also this is extremely slow and bad
|
; also this is extremely slow and bad
|
||||||
scroll_monitor_console:
|
scroll_monitor_console:
|
||||||
push r0
|
push r0
|
||||||
|
|
16
overlay.asm
16
overlay.asm
|
@ -89,7 +89,7 @@ fill_overlay:
|
||||||
mov r2, r1
|
mov r2, r1
|
||||||
or r2, 0x80000100 ; bitwise or the overlay number with the command to get the overlay size
|
or r2, 0x80000100 ; bitwise or the overlay number with the command to get the overlay size
|
||||||
or r1, 0x80000200 ; bitwise or the overlay number with the command to get the framebuffer pointer
|
or r1, 0x80000200 ; bitwise or the overlay number with the command to get the framebuffer pointer
|
||||||
in r1, r1 ; r1: overlay framebuffer poiner
|
in r1, r1 ; r1: overlay framebuffer pointer
|
||||||
in r2, r2
|
in r2, r2
|
||||||
mov r3, r2
|
mov r3, r2
|
||||||
and r2, 0x0000FFFF ; r2: X size
|
and r2, 0x0000FFFF ; r2: X size
|
||||||
|
@ -122,7 +122,7 @@ draw_pixel_to_overlay:
|
||||||
mov r4, r3
|
mov r4, r3
|
||||||
or r4, 0x80000100 ; bitwise or the overlay number with the command to get the overlay size
|
or r4, 0x80000100 ; bitwise or the overlay number with the command to get the overlay size
|
||||||
or r3, 0x80000200 ; bitwise or the overlay number with the command to get the framebuffer pointer
|
or r3, 0x80000200 ; bitwise or the overlay number with the command to get the framebuffer pointer
|
||||||
in r3, r3 ; r3: overlay framebuffer poiner
|
in r3, r3 ; r3: overlay framebuffer pointer
|
||||||
in r4, r4
|
in r4, r4
|
||||||
and r4, 0x0000FFFF ; r4: overlay width
|
and r4, 0x0000FFFF ; r4: overlay width
|
||||||
|
|
||||||
|
@ -149,7 +149,7 @@ draw_filled_rectangle_to_overlay:
|
||||||
mov r6, r5
|
mov r6, r5
|
||||||
or r6, 0x80000100 ; bitwise or the overlay number with the command to get the overlay size
|
or r6, 0x80000100 ; bitwise or the overlay number with the command to get the overlay size
|
||||||
or r5, 0x80000200 ; bitwise or the overlay number with the command to get the framebuffer pointer
|
or r5, 0x80000200 ; bitwise or the overlay number with the command to get the framebuffer pointer
|
||||||
in r5, r5 ; r5: overlay framebuffer poiner
|
in r5, r5 ; r5: overlay framebuffer pointer
|
||||||
in r6, r6
|
in r6, r6
|
||||||
and r6, 0x0000FFFF ; r6: overlay width
|
and r6, 0x0000FFFF ; r6: overlay width
|
||||||
|
|
||||||
|
@ -176,7 +176,7 @@ draw_tile_to_overlay:
|
||||||
mov r4, r3
|
mov r4, r3
|
||||||
or r4, 0x80000100 ; bitwise or the overlay number with the command to get the overlay size
|
or r4, 0x80000100 ; bitwise or the overlay number with the command to get the overlay size
|
||||||
or r3, 0x80000200 ; bitwise or the overlay number with the command to get the framebuffer pointer
|
or r3, 0x80000200 ; bitwise or the overlay number with the command to get the framebuffer pointer
|
||||||
in r8, r3 ; r8: overlay framebuffer poiner
|
in r8, r3 ; r8: overlay framebuffer pointer
|
||||||
in r9, r4
|
in r9, r4
|
||||||
and r9, 0x0000FFFF ; r9: overlay width
|
and r9, 0x0000FFFF ; r9: overlay width
|
||||||
|
|
||||||
|
@ -208,7 +208,7 @@ draw_font_tile_to_overlay:
|
||||||
mov r6, r5
|
mov r6, r5
|
||||||
or r6, 0x80000100 ; bitwise or the overlay number with the command to get the overlay size
|
or r6, 0x80000100 ; bitwise or the overlay number with the command to get the overlay size
|
||||||
or r5, 0x80000200 ; bitwise or the overlay number with the command to get the framebuffer pointer
|
or r5, 0x80000200 ; bitwise or the overlay number with the command to get the framebuffer pointer
|
||||||
in r8, r5 ; r8: overlay framebuffer poiner
|
in r8, r5 ; r8: overlay framebuffer pointer
|
||||||
in r9, r6
|
in r9, r6
|
||||||
and r9, 0x0000FFFF ; r9: overlay width
|
and r9, 0x0000FFFF ; r9: overlay width
|
||||||
|
|
||||||
|
@ -245,7 +245,7 @@ draw_format_str_to_overlay:
|
||||||
mov r6, r5
|
mov r6, r5
|
||||||
or r6, 0x80000100 ; bitwise or the overlay number with the command to get the overlay size
|
or r6, 0x80000100 ; bitwise or the overlay number with the command to get the overlay size
|
||||||
or r5, 0x80000200 ; bitwise or the overlay number with the command to get the framebuffer pointer
|
or r5, 0x80000200 ; bitwise or the overlay number with the command to get the framebuffer pointer
|
||||||
in r8, r5 ; r8: overlay framebuffer poiner
|
in r8, r5 ; r8: overlay framebuffer pointer
|
||||||
in r9, r6
|
in r9, r6
|
||||||
and r9, 0x0000FFFF ; r9: overlay width
|
and r9, 0x0000FFFF ; r9: overlay width
|
||||||
|
|
||||||
|
@ -306,7 +306,7 @@ draw_decimal_to_overlay:
|
||||||
mov r6, r5
|
mov r6, r5
|
||||||
or r6, 0x80000100 ; bitwise or the overlay number with the command to get the overlay size
|
or r6, 0x80000100 ; bitwise or the overlay number with the command to get the overlay size
|
||||||
or r5, 0x80000200 ; bitwise or the overlay number with the command to get the framebuffer pointer
|
or r5, 0x80000200 ; bitwise or the overlay number with the command to get the framebuffer pointer
|
||||||
in r8, r5 ; r8: overlay framebuffer poiner
|
in r8, r5 ; r8: overlay framebuffer pointer
|
||||||
in r9, r6
|
in r9, r6
|
||||||
and r9, 0x0000FFFF ; r9: overlay width
|
and r9, 0x0000FFFF ; r9: overlay width
|
||||||
|
|
||||||
|
@ -342,7 +342,7 @@ draw_hex_to_overlay:
|
||||||
mov r6, r5
|
mov r6, r5
|
||||||
or r6, 0x80000100 ; bitwise or the overlay number with the command to get the overlay size
|
or r6, 0x80000100 ; bitwise or the overlay number with the command to get the overlay size
|
||||||
or r5, 0x80000200 ; bitwise or the overlay number with the command to get the framebuffer pointer
|
or r5, 0x80000200 ; bitwise or the overlay number with the command to get the framebuffer pointer
|
||||||
in r8, r5 ; r8: overlay framebuffer poiner
|
in r8, r5 ; r8: overlay framebuffer pointer
|
||||||
in r9, r6
|
in r9, r6
|
||||||
and r9, 0x0000FFFF ; r9: overlay width
|
and r9, 0x0000FFFF ; r9: overlay width
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
; if the source and destination overlap, the behavior is undefined
|
; if the source and destination overlap, the behavior is undefined
|
||||||
; inputs:
|
; inputs:
|
||||||
; r0: pointer to source
|
; r0: pointer to source
|
||||||
; r1: pointer to destinaton
|
; r1: pointer to destination
|
||||||
; outputs:
|
; outputs:
|
||||||
; none
|
; none
|
||||||
copy_string:
|
copy_string:
|
||||||
|
@ -28,7 +28,7 @@ copy_string_loop:
|
||||||
; compare string from source pointer with destination pointer
|
; compare string from source pointer with destination pointer
|
||||||
; inputs:
|
; inputs:
|
||||||
; r0: pointer to source
|
; r0: pointer to source
|
||||||
; r1: pointer to destinaton
|
; r1: pointer to destination
|
||||||
; outputs:
|
; outputs:
|
||||||
; Z flag
|
; Z flag
|
||||||
compare_string:
|
compare_string:
|
||||||
|
@ -40,7 +40,7 @@ compare_string_loop:
|
||||||
ifnz jmp compare_string_not_equal
|
ifnz jmp compare_string_not_equal
|
||||||
|
|
||||||
; if this is the end of string 1, then this must also be the end of string 2
|
; if this is the end of string 1, then this must also be the end of string 2
|
||||||
; the cmp above alredy ensured that both strings have a null-terminator here
|
; the cmp above already ensured that both strings have a null-terminator here
|
||||||
cmp.8 [r0], 0
|
cmp.8 [r0], 0
|
||||||
ifz jmp compare_string_equal
|
ifz jmp compare_string_equal
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user