Cleanup. Some more tries.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38918 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
François Revol
2010-10-10 11:05:05 +00:00
parent f3ab95c889
commit 92d1f05e9a
+36 -53
View File
@@ -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