61 lines
1.1 KiB
Text
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.Mode
|
|
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
|