nuclear@0: | vi:filetype=gas68k: nuclear@0: nuclear@0: .equ CMD_READ, 2 nuclear@0: nuclear@0: .equ EXEC_DO_IO, -0x1c8 nuclear@0: nuclear@0: | starting with trackdisk device I/O request pointer in a1 nuclear@0: | load the program at 0x100 and return with that value in a0 nuclear@0: | program length is patched by mk_adf at start - 4 nuclear@0: start: nuclear@0: move.l #0x100, 0x28(%a1) | I/O data pointer nuclear@0: move.l start - 4, 0x24(%a1) | I/O length (1 sector for now) nuclear@0: move.l #512, 0x2c(%a1) | I/O offset (skip first sector) nuclear@0: move.w #CMD_READ, 0x1c(%a1) | I/O command nuclear@0: move.l %a1, -(%sp) nuclear@0: jsr EXEC_DO_IO(%a6) nuclear@0: move.l (%sp)+, %a1 nuclear@0: move.b 0x1f(%a1), %d0 nuclear@0: nuclear@0: move.l #0x100, %a0 nuclear@0: rts nuclear@0: nuclear@0: .ascii "bootblock_end" nuclear@0: .align 4