home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
World of A1200
/
World_Of_A1200.iso
/
programs
/
develop
/
here
/
crash
/
simcrashboot.s
< prev
Wrap
Text File
|
1995-02-27
|
5KB
|
278 lines
Temp = $100
Temp2 = $104
_MyWinRPort = $108
_IntBase = $10c
IT_Yps = $110
boot: dc.b 'DOS',0
dc.l 0
dc.l $370
movem.l d0-d7/a0-a6,-(a7)
bsr.w GetTopFast
move.l 4,a6 ;alloc chipmem for bootblock
move.l #$480,d0
move.l #$10002,d1
jsr -198(a6)
move.l d0,Temp2
move.l #0,IT_Yps
bsr.w OpenWin
lea Info(pc),a0
bsr.w PrintLine
add.l #18,IT_Yps
lea Load(pc),a0
bsr.w PrintLine
movem.l (a7),d0-d7/a0-a6 ;load simbug
move.w #2,$1c(a1) ;command
move.l #$c000,$24(a1) ;length
move.l Temp,$28(a1) ;load address
move.l #$800,$2c(a1) ;disk address
jsr -$1c8(a6)
movem.l (a7),d0-d7/a0-a6
lea ELoad(pc),a0
tst.b 31(a1)
bne.w Fatal
bsr.w InitComms
lea Ins(pc),a0
bsr.w PrintLine
.loop btst #6,$bfe001
bne.b .loop
lea Load2(pc),a0
bsr.w PrintLine
movem.l (a7),d0-d7/a0-a6 ;read new bootblock
move.w #2,$1c(a1)
move.l #$400,$24(a1) ;length
move.l Temp2,$28(a1) ;load address
move.l #$000,$2c(a1) ;disk address
jsr -$1c8(a6)
lea Exec(pc),a0
bsr.w PrintLine
movem.l (a7),d0-d7/a0-a6
move.l a0,Temp
move.l Temp2,a0
pea 12(a0)
move.l Temp,a0
rts
Fatal: add.l #18,IT_Yps
bsr.w PrintLine
.x bra.s .x
*----------*
GetTopFast:
move.l 4,a6
move.l 322(a6),a0 ; memlist
.loop move.w 14(a0),d0
and.w #4,d0
beq.b .chip
.get sub.l #$c000,24(a0) ;upper
sub.l #$c000,28(a0) ;free
move.l 24(a0),Temp
rts
.chip move.l 0(a0),a0
tst.l (a0)
bne.b .loop
lea GetTopChip(pc),a0
sub.l #$a000,2(a0)
move.l 322(a6),a0 ; memlist
bra .get
*----------*
InitComms:
bsr.b Comms_ConfigMem
bsr.w GetTopChip
move.l Temp,a6
move.l a1,0(a6) ;chipmem display
;move.l #0,4(a6) ;chipmem backup
;move.l #0,264(a6) ;current VBR
Lea VecList(pc),a1
Lea 0,a4
.setup movem.w (a1)+,d0/d1
add.l a6,d1
move.l d1,(a4,d0.w)
tst.w (a1)
bpl.b .setup
rts
*--------------------------------------------*
Comms_ConfigMem:
move.l 4,a6
move.l 322(a6),a0 ; memlist
move.l Temp,a1
lea $7b72(a1),a1
move.l a1,-(a7)
move.w #5,d3
.loop move.l 20(a0),d1 ; lower
and.l #$fffff000,d1
move.l d1,(a1)+
move.l 24(a0),(a1)+ ; upper
sub.w #1,d3
beq.b .max
move.l 0(a0),a0
tst.l (a0)
bne.b .loop
.max move.l (a7)+,a1
move.l a1,a0
.chiploop
tst.l (a0)
bne.b .notchip
;put chipmem first is memlist
move.l (a0),d0
move.l (a1),(a0)
move.l d0,(a1)
lea 4(a0),a0
lea 4(a1),a1
move.l (a0),d0
move.l (a1),(a0)
move.l d0,(a1)
rts
.notchip
lea 8(a0),a0
add.w #1,d3
cmp.w #5,d3
bne.b .chiploop
rts
*--------------------------------------------*
GetTopChip:
lea $200000-$8000,a1
.loop move.l 4,a6
jsr -534(a6) ;TypeOfMem
tst.l d0
bne.b .ok
sub.l #$5000,a1
bra.b .loop
.ok rts
*--------------------------------------------*
OpenWin:
move.l 4,a6
Lea IntName(pc),A1
jsr -408(a6) ;OldOpenLibrary
tst.l d0
Beq.b .Err
move.l d0,_IntBase
move.l d0,a6
lea SimWindow(pc),a0
move.l a1,32(a0)
jsr -204(a6) ;OpenWindow
move.l d0,a0
Move.l $32(A0),_MyWinRPort
move.l Temp2,a1
lea $400(a1),a1
moveq.l #1,d0
move.l d0,d1
move.l d0,d2
move.l d0,d3
jsr -270(a6) ;SetPointer
.Err moveq.l #0,d0
rts
*-------------------------------*
PrintLine:
lea IText(pc),a1
move.l a0,12(a1)
move.l _MyWinRPort,a0
move.l #0,d0
move.l IT_Yps,d1
move.l _IntBase,a6
jsr -216(a6)
rts
*-------------------------------*
VecList: dc.w $08,24 ;Bus Error
dc.w $0C,28 ;Address Error
dc.w $10,32 ;Illegal Instruction
dc.w $14,36 ;Zero Divide
dc.w $18,40 ;CHK/CHK2 Instruction
dc.w $1C,44 ;cpTRAPcc, TRAPcc, TRAPV Instructions
dc.w $24,52 ;Trace Exception
dc.w $28,56 ;Line-A Emulator (1010)
dc.w $2C,60 ;Line-F Emulator (1111) & Coprocessor Instructions
dc.l -1
*-------------------------------*
IntName:
dc.b "intuition.library"
even
SimWindow:
dc.w 0,0 ;window XY origin relative to TopLeft of screen
dc.w 640,200 ;window width and height
dc.b 0,1 ;detail and block pens
dc.l 0 ;IDCMP flags
dc.l $21040 ;other window flags
dc.l 0 ;first gadget in gadget list
dc.l 0 ;custom CHECKMARK imagery
dc.l 0 ;window title
dc.l 0 ;custom screen pointer
dc.l 0 ;custom bitmap
dc.w 5,5 ;minimum width and height
dc.w -1,-1 ;maximum width and height
dc.w 1 ;destination screen type
IText: dc.b 1,0,1,0 ;front and back text pens, drawmode and fill byte
dc.w 12,8 ;XY origin relative to container TopLeft
dc.l 0 ;font pointer or NULL for default
dc.l 0 ;pointer to text
dc.l 0 ;next IntuiText structure
Info: dc.b "Simbug Exception Handler v0.1 By Shagratt/LSD",0
Load: dc.b "Loading Simbug....",0
Ins: dc.b "Insert disk and press LMB",0
Load2: dc.b "Loading new bootblock.. ",0
Exec: dc.b "Executing new bootblock..",0
ELoad: dc.b "Error reading disk",0
even
ds.l 1000