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:
@@ -61,7 +61,11 @@
|
|||||||
|
|
||||||
// AmigaDOS calls
|
// AmigaDOS calls
|
||||||
// exec.library
|
// exec.library
|
||||||
|
#define _Supervisor -0x1e
|
||||||
#define _FindResident -0x60
|
#define _FindResident -0x60
|
||||||
|
#define _Alert -0x6c
|
||||||
|
#define _SuperState -0x96
|
||||||
|
#define _UserState -0x9c
|
||||||
#define _OldOpenLibrary -0x198
|
#define _OldOpenLibrary -0x198
|
||||||
#define _CloseLibrary -0x19e
|
#define _CloseLibrary -0x19e
|
||||||
// dos.library
|
// dos.library
|
||||||
@@ -81,28 +85,30 @@
|
|||||||
|
|
||||||
_floppy_entry:
|
_floppy_entry:
|
||||||
.ascii "DOS"
|
.ascii "DOS"
|
||||||
|
// .ascii "BFS"
|
||||||
.byte 0
|
.byte 0
|
||||||
_floppy_checksum:
|
_floppy_checksum:
|
||||||
.long 0
|
.long 0
|
||||||
_floppy_osversion: // ??
|
_floppy_osversion: // ??
|
||||||
|
//_super_stack: // also used as a variable in the code
|
||||||
//.long 0x370
|
//.long 0x370
|
||||||
.long 0x09D5A859 // dos private ???
|
.long 0x09D5A859 // dos private ???
|
||||||
|
|
||||||
_floppy_boot:
|
_floppy_boot:
|
||||||
|
|
||||||
|
// we get an open IO request in A1
|
||||||
|
|
||||||
// seems like a6 is already set to ExecBase when called from the ROM ?
|
// seems like a6 is already set to ExecBase when called from the ROM ?
|
||||||
// copy it
|
// copy it
|
||||||
move.l 4.w,%a6
|
move.l 4.w,%a6
|
||||||
lea _execbase(%pc),%a2
|
lea _execbase(%pc),%a2
|
||||||
move.l %a6,(%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
|
// bra _continue
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -122,6 +128,9 @@ _loop_2:
|
|||||||
bra _loop_2
|
bra _loop_2
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
//lea _display_alert,%a5
|
||||||
|
//jsr _Supervisor(%a6)
|
||||||
|
|
||||||
jsr _display_alert
|
jsr _display_alert
|
||||||
|
|
||||||
|
|
||||||
@@ -136,14 +145,35 @@ _loop_2:
|
|||||||
|
|
||||||
tst.l %d0
|
tst.l %d0
|
||||||
beq.s _floppy_err
|
beq.s _floppy_err
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
_continue:
|
_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 _dosbase,%a0
|
||||||
move.l 0x16(%a0),%a0
|
move.l 0x16(%a0),%a0
|
||||||
|
|
||||||
moveq #0,%d0
|
moveq #0,%d0
|
||||||
|
|
||||||
rts
|
rts
|
||||||
|
|
||||||
_floppy_err:
|
_floppy_err:
|
||||||
|
// move.l 4.w,%a6
|
||||||
|
// move.l _super_stack,%d0
|
||||||
|
// jsr _UserState(%a6)
|
||||||
|
|
||||||
moveq #-1,%d0
|
moveq #-1,%d0
|
||||||
rts
|
rts
|
||||||
|
|
||||||
@@ -193,50 +223,3 @@ end_buff:
|
|||||||
// equ *-_floppy_entry
|
// equ *-_floppy_entry
|
||||||
.dcb.b (1024)-(end_buff-_floppy_entry),0
|
.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
|
|
||||||
|
|||||||
Reference in New Issue
Block a user