DragonVM/extra/dss/drake/loader.dss

61 lines
1.1 KiB
Text

.load 0x1380
@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
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
and FL, 0b1111111111111110 ## Disable interrupts
mov FL, ACC
push $ddd
push 1
call $_disk_load_from_ddd_blocking
or FL, 0b0000000000000001 ## Enable interrupts
mov FL, ACC
jmp MemoryAddresses.RAM
_infinite_loop:
jmp $_infinite_loop
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
@include <disk.dss>
.fixed 512, 0x00