From 92d1f05e9aabbb4c0ea3c9bb4263acd8062a6d99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= Date: Sun, 10 Oct 2010 11:05:05 +0000 Subject: [PATCH] Cleanup. Some more tries. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38918 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/system/boot/platform/amiga_m68k/stage1.S | 89 ++++++++------------ 1 file changed, 36 insertions(+), 53 deletions(-) diff --git a/src/system/boot/platform/amiga_m68k/stage1.S b/src/system/boot/platform/amiga_m68k/stage1.S index 096f709b7b..8cabb93951 100644 --- a/src/system/boot/platform/amiga_m68k/stage1.S +++ b/src/system/boot/platform/amiga_m68k/stage1.S @@ -61,7 +61,11 @@ // AmigaDOS calls // exec.library +#define _Supervisor -0x1e #define _FindResident -0x60 +#define _Alert -0x6c +#define _SuperState -0x96 +#define _UserState -0x9c #define _OldOpenLibrary -0x198 #define _CloseLibrary -0x19e // dos.library @@ -81,28 +85,30 @@ _floppy_entry: .ascii "DOS" +// .ascii "BFS" .byte 0 _floppy_checksum: .long 0 _floppy_osversion: // ?? +//_super_stack: // also used as a variable in the code //.long 0x370 .long 0x09D5A859 // dos private ??? _floppy_boot: + + // we get an open IO request in A1 + // seems like a6 is already set to ExecBase when called from the ROM ? // copy it move.l 4.w,%a6 lea _execbase(%pc),%a2 move.l %a6,(%a2) +// jsr _SuperState(%a6) +// move.l %d0,_super_stack + - lea dosname_boot(%pc),%a1 - jsr _FindResident(%a6) - lea _dosbase(%pc),%a2 - tst.l %d0 - beq.s _floppy_err - move.l %d0,(%a2) // bra _continue /* @@ -122,6 +128,9 @@ _loop_2: bra _loop_2 */ + //lea _display_alert,%a5 + //jsr _Supervisor(%a6) + jsr _display_alert @@ -136,14 +145,35 @@ _loop_2: tst.l %d0 beq.s _floppy_err + + + _continue: + move.l 4.w,%a6 + + + lea dosname_boot(%pc),%a1 + jsr _FindResident(%a6) + lea _dosbase(%pc),%a2 + tst.l %d0 + beq.s _floppy_err + move.l %d0,(%a2) + +// move.l _super_stack,%d0 +// jsr _UserState(%a6) + move.l _dosbase,%a0 move.l 0x16(%a0),%a0 + moveq #0,%d0 rts _floppy_err: +// move.l 4.w,%a6 +// move.l _super_stack,%d0 +// jsr _UserState(%a6) + moveq #-1,%d0 rts @@ -193,50 +223,3 @@ end_buff: // equ *-_floppy_entry .dcb.b (1024)-(end_buff-_floppy_entry),0 -#if 0 -//XXX: atari stuff here - -// NOTE: normal programs (.prg) run as user mode, -// while boot sector is chained in supervisor mode. -// this means using Super(SUP_INQUIRE) we can know -// from the same entry point if we were run from boot code or prg. - - - //Pterm0 - //move.w #1,%d0 - //trap #1 - //rts - - lea.l str,%a0 -.loopt: - move.b (%a0)+,%d0 - beq .strout - bsr putc - bra .loopt -.strout: - //Pterm0 - move.w #1,%d0 - trap #1 - - rts - -.loop: - move #'.',%d0 - bsr putc - bra .loop - rts - -/* prints the char in d0.b to the console */ -putc: - movem.l %a0,-(%sp) - move.w %d0,-(%sp) - move.w #DEV_CON,-(%sp) // DEV_CON - move.w #3,-(%sp) // Bconout - trap #13 - add.l #6,%sp - movem.l (%sp)+,%a0 - rts -str: - .ascii "Haiku!" - .byte 0 -#endif