Files
giochino-amiga/boot.s
2025-12-01 18:23:49 +01:00

49 lines
1.1 KiB
ArmAsm

; Simple working bootblock
MACHINE 68000
ORG 0
dc.b 'D','O','S',0 ; DOS magic
dc.l 0 ; Checksum
dc.l 880 ; Rootblock
; Boot code - a1=IORequest, a6=ExecBase
boot_start:
; Save IORequest pointer (PC-relative)
lea SavedA1(pc),a0
move.l a1,(a0)
; Load game from disk
move.w #2,28(a1) ; CMD_READ
move.l #$20000,40(a1) ; io_Data
move.l #11776,36(a1) ; io_Length (Exact game size)
move.l #1024,44(a1) ; io_Offset
jsr -456(a6) ; DoIO
; Check for Error
tst.l d0
bne.s .loadError
; Restore IORequest pointer
lea SavedA1(pc),a0
move.l (a0),a1
; Turn off motor
move.w #9,28(a1) ; CMD_MOTOR
move.l #0,36(a1)
jsr -456(a6) ; DoIO
; Jump to game
jmp $20000
.loadError:
; Error: Magenta Screen Loop
move.w #$F0F,$dff180
bra.s .loadError
SavedA1:
dc.l 0
; Pad to 1024 bytes
dcb.b 1024-(*-0),0