DragonVM/extra/dss/drake/loader.dss

54 lines
1 KiB
Text

.load 0x1380
.entry _drake_loader_entry_point
@include <../bios_api.dss>
.data
## $_drake_logo_line_1 " ___ ___ ___ __ ______"
## $_drake_logo_line_2 " / _ \/ _ \/ _ | / //_/ __/"
## $_drake_logo_line_3 " / // / , _/ __ |/ ,< / _/ "
## $_drake_logo_line_4 "/____/_/|_/_/ |_/_/|_/___/ "
## $_logo_padding " "
$ddd <DiskDriverData>
.code
_drake_loader_entry_point:
## mov R10, 0xE0
## int 0x30
## push 0
## call $_print_logo
mov [$ddd.Mode], DiskMode.READ
mov [$ddd.Disk], 0x00
mov [$ddd.Sector], 0x0000
mov [$ddd.Address], 0x0400
mov [$ddd.DataSize], 5120
mov [$ddd.MemoryAddress], MemoryAddresses.RAM
mov R9, $ddd
mov R10, 0x12
int 0x20
jmp MemoryAddresses.RAM
hlt
## _print_logo:
## mov R5, $_drake_logo_line_1
## mov R6, 0
## mov ACC, 6
## _print_logo_loop:
## mov R10, 0x0C
## inc R6
## mov R9, $_logo_padding
## int 0x30
## mov R9, R5
## int 0x30
## mov R10, 0x02
## int 0x30
## addip R5, 29
## jls $_print_logo_loop, R6
## ret
.fixed 512, 0x00