fixed reference to __BOOT_FLASH
This commit is contained in:
@@ -140,7 +140,7 @@
|
|||||||
btst #7,d0
|
btst #7,d0
|
||||||
bne irq_protect // ja->
|
bne irq_protect // ja->
|
||||||
// -------------------------------------------
|
// -------------------------------------------
|
||||||
movem.l (a7),d0/a5 // register zur<EFBFBD>ck
|
movem.l (a7),d0/a5 // register zur<EFBFBD>ck
|
||||||
addq.l #8,a7
|
addq.l #8,a7
|
||||||
move.l \vector,-(a7)
|
move.l \vector,-(a7)
|
||||||
move #0x2200,sr
|
move #0x2200,sr
|
||||||
@@ -178,7 +178,7 @@ irq_end:
|
|||||||
adda.l _rt_vbr,a5
|
adda.l _rt_vbr,a5
|
||||||
move.l (a5),12(a7) // vectoradresse eintragen
|
move.l (a5),12(a7) // vectoradresse eintragen
|
||||||
move.b #\int_mask,10(a7) // intmaske setzen
|
move.b #\int_mask,10(a7) // intmaske setzen
|
||||||
movem.l (a7),d0/a5 // register zur<EFBFBD>ck
|
movem.l (a7),d0/a5 // register zur<EFBFBD>ck
|
||||||
addq.l #8,a7
|
addq.l #8,a7
|
||||||
rte // und weg
|
rte // und weg
|
||||||
.endm
|
.endm
|
||||||
@@ -216,7 +216,7 @@ init_vec:
|
|||||||
move.l #256,d0
|
move.l #256,d0
|
||||||
lea std_exc_vec(pc),a1 // standard vector
|
lea std_exc_vec(pc),a1 // standard vector
|
||||||
init_vec_loop:
|
init_vec_loop:
|
||||||
move.l a1,(a2)+ // mal standard vector f<EFBFBD>r alle setzen
|
move.l a1,(a2)+ // mal standard vector f<EFBFBD>r alle setzen
|
||||||
subq.l #1,d0
|
subq.l #1,d0
|
||||||
bne init_vec_loop
|
bne init_vec_loop
|
||||||
|
|
||||||
@@ -305,12 +305,12 @@ std_exc_vec:
|
|||||||
add.l _rt_vbr,d0 // + basis
|
add.l _rt_vbr,d0 // + basis
|
||||||
move.l d0,a5
|
move.l d0,a5
|
||||||
move.l (a5),d0
|
move.l (a5),d0
|
||||||
move.l 4(a7),a5 // a5 zur<EFBFBD>ck
|
move.l 4(a7),a5 // a5 zur<EFBFBD>ck
|
||||||
move.l d0,4(a7)
|
move.l d0,4(a7)
|
||||||
move.w 10(a7),d0
|
move.w 10(a7),d0
|
||||||
bset #13,d0 // super
|
bset #13,d0 // super
|
||||||
move.w d0,sr // orginal sr wert in super setzen
|
move.w d0,sr // orginal sr wert in super setzen
|
||||||
move.l (a7)+,d0 // d0 zur<EFBFBD>ck
|
move.l (a7)+,d0 // d0 zur<EFBFBD>ck
|
||||||
rts
|
rts
|
||||||
stv_protect:
|
stv_protect:
|
||||||
move.l usp,a5 // usp holen
|
move.l usp,a5 // usp holen
|
||||||
@@ -335,7 +335,7 @@ stv_protect:
|
|||||||
add.l _rt_vbr,d0 // + basis
|
add.l _rt_vbr,d0 // + basis
|
||||||
move.l d0,a5
|
move.l d0,a5
|
||||||
move.l (a5),12(a7) // hier geht's weiter
|
move.l (a5),12(a7) // hier geht's weiter
|
||||||
movem.l (a7),d0/a5 // register zur<EFBFBD>ck
|
movem.l (a7),d0/a5 // register zur<EFBFBD>ck
|
||||||
addq.l #8,a7
|
addq.l #8,a7
|
||||||
rte // und weg
|
rte // und weg
|
||||||
sev_sup:
|
sev_sup:
|
||||||
@@ -357,16 +357,16 @@ sev_sup:
|
|||||||
add.l _rt_vbr,d0 // + basis
|
add.l _rt_vbr,d0 // + basis
|
||||||
move.l d0,a5
|
move.l d0,a5
|
||||||
move.l (a5),12(a7) // hier geht's weiter
|
move.l (a5),12(a7) // hier geht's weiter
|
||||||
movem.l (a7),d0/a5 // register zur<EFBFBD>ck
|
movem.l (a7),d0/a5 // register zur<EFBFBD>ck
|
||||||
addq.l #8,a7
|
addq.l #8,a7
|
||||||
rte // und weg
|
rte // und weg
|
||||||
//*******************************************
|
//*******************************************
|
||||||
reset_vector:
|
reset_vector:
|
||||||
move.w #0x2700,sr // disable interrupt
|
move.w #0x2700,sr // disable interrupt
|
||||||
move.l #0x31415926,d0
|
move.l #0x31415926,d0
|
||||||
cmp.l 0x426,d0 // reset vector g<EFBFBD>ltg?
|
cmp.l 0x426,d0 // reset vector g<EFBFBD>ltg?
|
||||||
beq std_exc_vec // ja->
|
beq std_exc_vec // ja->
|
||||||
jmp __BOOT_FLASH // sonst kaltstart
|
jmp ___BOOT_FLASH // sonst kaltstart
|
||||||
acess:
|
acess:
|
||||||
move.w #0x2700,sr // disable interrupt
|
move.w #0x2700,sr // disable interrupt
|
||||||
move.l d0,-(sp) // ++ vr
|
move.l d0,-(sp) // ++ vr
|
||||||
@@ -387,7 +387,7 @@ access_mmu:
|
|||||||
bne bus_error
|
bne bus_error
|
||||||
move.l MCF_MMU_MMUAR,d0
|
move.l MCF_MMU_MMUAR,d0
|
||||||
cmp.l #_Bas_base,d0 // max User RAM Bereich
|
cmp.l #_Bas_base,d0 // max User RAM Bereich
|
||||||
bge bus_error // gr<EFBFBD>sser -> bus error
|
bge bus_error // gr<EFBFBD>sser -> bus error
|
||||||
bra _mmutr_miss
|
bra _mmutr_miss
|
||||||
bus_error:
|
bus_error:
|
||||||
move.l (sp)+,d0
|
move.l (sp)+,d0
|
||||||
@@ -464,7 +464,7 @@ irq6: // mfp
|
|||||||
// test auf timeout screen adr change -------------------------------------------------------
|
// test auf timeout screen adr change -------------------------------------------------------
|
||||||
move.l _video_sbt,d0
|
move.l _video_sbt,d0
|
||||||
beq irq6_non_sca // wenn 0 nichts zu tun
|
beq irq6_non_sca // wenn 0 nichts zu tun
|
||||||
sub.l #0x70000000,d0 // 14 sec abz<EFBFBD>hlen
|
sub.l #0x70000000,d0 // 14 sec abz<EFBFBD>hlen
|
||||||
lea MCF_SLT0_SCNT,a5
|
lea MCF_SLT0_SCNT,a5
|
||||||
cmp.l (a5),d0 // aktuelle zeit weg
|
cmp.l (a5),d0 // aktuelle zeit weg
|
||||||
ble irq6_non_sca // noch nicht abgelaufen
|
ble irq6_non_sca // noch nicht abgelaufen
|
||||||
@@ -484,13 +484,13 @@ irq6: // mfp
|
|||||||
swap d4
|
swap d4
|
||||||
move.l d4,MCF_MMU_MMUAR
|
move.l d4,MCF_MMU_MMUAR
|
||||||
mvz.w #0x10e,d4
|
mvz.w #0x10e,d4
|
||||||
move.l d4,MCF_MMU_MMUOR // eintr<EFBFBD>ge holen aus mmu
|
move.l d4,MCF_MMU_MMUOR // eintr<EFBFBD>ge holen aus mmu
|
||||||
nop
|
nop
|
||||||
move.l MCF_MMU_MMUTR,d4 // ID holen
|
move.l MCF_MMU_MMUTR,d4 // ID holen
|
||||||
lsr.l #2,d4 // bit 9 bis 2
|
lsr.l #2,d4 // bit 9 bis 2
|
||||||
cmp.w #sca_page_ID,d4 // ist screen change ID?
|
cmp.w #sca_page_ID,d4 // ist screen change ID?
|
||||||
bne irq6_sca_pn // nein -> page keine screen area next
|
bne irq6_sca_pn // nein -> page keine screen area next
|
||||||
// eintrag <EFBFBD>ndern
|
// eintrag <EFBFBD>ndern
|
||||||
add.l #std_mmutr,d0
|
add.l #std_mmutr,d0
|
||||||
move.l d3,d1 // page 0?
|
move.l d3,d1 // page 0?
|
||||||
beq irq6_sca_pn0 // ja ->
|
beq irq6_sca_pn0 // ja ->
|
||||||
@@ -524,9 +524,9 @@ irq6_sca_pn:
|
|||||||
|
|
||||||
move.l #0x2000,d0
|
move.l #0x2000,d0
|
||||||
move.l d0,_video_tlb // anfangszustand wieder herstellen
|
move.l d0,_video_tlb // anfangszustand wieder herstellen
|
||||||
clr.l _video_sbt // zeit l<EFBFBD>schen
|
clr.l _video_sbt // zeit l<EFBFBD>schen
|
||||||
|
|
||||||
movem.l (a7),d0-d4/a0-a1 // register zur<EFBFBD>ck
|
movem.l (a7),d0-d4/a0-a1 // register zur<EFBFBD>ck
|
||||||
lea 28(a7),a7
|
lea 28(a7),a7
|
||||||
irq6_non_sca:
|
irq6_non_sca:
|
||||||
// test auf acsi dma -----------------------------------------------------------------
|
// test auf acsi dma -----------------------------------------------------------------
|
||||||
@@ -563,9 +563,9 @@ irq6_2:
|
|||||||
move.l 0xF0020000,a5 // vector holen
|
move.l 0xF0020000,a5 // vector holen
|
||||||
add.l _rt_vbr,a5 // basis
|
add.l _rt_vbr,a5 // basis
|
||||||
move.l (a5),d0 // vector holen
|
move.l (a5),d0 // vector holen
|
||||||
move.l 4(a7),a5 // a5 zur<EFBFBD>ck
|
move.l 4(a7),a5 // a5 zur<EFBFBD>ck
|
||||||
move.l d0,4(a7) // vector eintragen
|
move.l d0,4(a7) // vector eintragen
|
||||||
move.l (a7)+,d0 // d0 zur<EFBFBD>ck
|
move.l (a7)+,d0 // d0 zur<EFBFBD>ck
|
||||||
move #0x2600,sr
|
move #0x2600,sr
|
||||||
rts
|
rts
|
||||||
irq6_3:
|
irq6_3:
|
||||||
@@ -587,7 +587,7 @@ irq6_3:
|
|||||||
move.l 0xF0020000,a5 // vector holen: intack routine
|
move.l 0xF0020000,a5 // vector holen: intack routine
|
||||||
add.l _rt_vbr,a5 // virtuelle VBR des Systems
|
add.l _rt_vbr,a5 // virtuelle VBR des Systems
|
||||||
move.l (a5),12(a7) // hier gehts weiter
|
move.l (a5),12(a7) // hier gehts weiter
|
||||||
movem.l (a7),d0/a5 // register zur<EFBFBD>ck
|
movem.l (a7),d0/a5 // register zur<EFBFBD>ck
|
||||||
addq.l #8,a7
|
addq.l #8,a7
|
||||||
move.b #6,2(a7) // intmaske setzen
|
move.b #6,2(a7) // intmaske setzen
|
||||||
rte // und weg
|
rte // und weg
|
||||||
@@ -606,7 +606,7 @@ sev_sup6:
|
|||||||
move.l 0xF0020000,a5 // vector holen: intack routine
|
move.l 0xF0020000,a5 // vector holen: intack routine
|
||||||
add.l _rt_vbr,a5 // virtuelle VBR des Systems
|
add.l _rt_vbr,a5 // virtuelle VBR des Systems
|
||||||
move.l (a5),12(a7) // hier gehts weiter
|
move.l (a5),12(a7) // hier gehts weiter
|
||||||
movem.l (a7),d0/a5 // register zur<EFBFBD>ck
|
movem.l (a7),d0/a5 // register zur<EFBFBD>ck
|
||||||
rts
|
rts
|
||||||
blinker:.long 0
|
blinker:.long 0
|
||||||
/**************************************************/
|
/**************************************************/
|
||||||
@@ -657,8 +657,8 @@ acsi_dma_wl:
|
|||||||
sub.l #16,d0 // byt counter -16
|
sub.l #16,d0 // byt counter -16
|
||||||
bpl acsi_dma_wl
|
bpl acsi_dma_wl
|
||||||
acsi_dma_fertig:
|
acsi_dma_fertig:
|
||||||
move.l a1,-12(a5) // adresse zur<EFBFBD>ck
|
move.l a1,-12(a5) // adresse zur<EFBFBD>ck
|
||||||
move.l d0,-8(a5) // byt counter zur<EFBFBD>ck
|
move.l d0,-8(a5) // byt counter zur<EFBFBD>ck
|
||||||
acsi_dma_end:
|
acsi_dma_end:
|
||||||
tst.b -4(a5) // dma req?
|
tst.b -4(a5) // dma req?
|
||||||
bmi acsi_dma_start // ja->
|
bmi acsi_dma_start // ja->
|
||||||
@@ -731,7 +731,7 @@ loop_sr2:
|
|||||||
cmp.b d1,d2
|
cmp.b d1,d2
|
||||||
bne loop_sr2
|
bne loop_sr2
|
||||||
psc3_fertig:
|
psc3_fertig:
|
||||||
movem.l (a7),d0-d2/a0/a3 // register zur<EFBFBD>ck
|
movem.l (a7),d0-d2/a0/a3 // register zur<EFBFBD>ck
|
||||||
lea 20(a7),a7
|
lea 20(a7),a7
|
||||||
RTE
|
RTE
|
||||||
/**************************************************/
|
/**************************************************/
|
||||||
@@ -742,7 +742,7 @@ timer0:
|
|||||||
// halt
|
// halt
|
||||||
lea -28(a7),a7
|
lea -28(a7),a7
|
||||||
movem.l d0-d4/a0-a1,(a7)
|
movem.l d0-d4/a0-a1,(a7)
|
||||||
mvz.b 0xffff8201,d0 // l<EFBFBD>schen und high byt
|
mvz.b 0xffff8201,d0 // l<EFBFBD>schen und high byt
|
||||||
cmp.w #2,d0
|
cmp.w #2,d0
|
||||||
blt video_chg_end
|
blt video_chg_end
|
||||||
cmp.w #0xd0,d0 // normale addresse
|
cmp.w #0xd0,d0 // normale addresse
|
||||||
@@ -762,7 +762,7 @@ video_chg_1page:
|
|||||||
move.l d0,d2
|
move.l d0,d2
|
||||||
lsr.l d4,d2 // neue page
|
lsr.l d4,d2 // neue page
|
||||||
move.l _video_tlb,d4
|
move.l _video_tlb,d4
|
||||||
bset.l d2,d4 // setzen als ge<EFBFBD>ndert
|
bset.l d2,d4 // setzen als ge<EFBFBD>ndert
|
||||||
bne video_chg_2page // schon gesetzt gewesen? ja->weg
|
bne video_chg_2page // schon gesetzt gewesen? ja->weg
|
||||||
move.l d4,_video_tlb
|
move.l d4,_video_tlb
|
||||||
bsr cpusha // cache leeren
|
bsr cpusha // cache leeren
|
||||||
@@ -784,7 +784,7 @@ video_copy_data_loop:
|
|||||||
// eintrag suchen
|
// eintrag suchen
|
||||||
move.l d0,MCF_MMU_MMUAR // addresse
|
move.l d0,MCF_MMU_MMUAR // addresse
|
||||||
move.l #0x106,d4
|
move.l #0x106,d4
|
||||||
move.l d4,MCF_MMU_MMUOR // suchen -> schl<EFBFBD>gt neuen vor wenn keiner
|
move.l d4,MCF_MMU_MMUOR // suchen -> schl<EFBFBD>gt neuen vor wenn keiner
|
||||||
nop
|
nop
|
||||||
move.l MCF_MMU_MMUOR,d4
|
move.l MCF_MMU_MMUOR,d4
|
||||||
clr.w d4
|
clr.w d4
|
||||||
@@ -806,17 +806,17 @@ video_chg_2page:
|
|||||||
mvz.w 0xffff82a8,d1 // zeilenstart
|
mvz.w 0xffff82a8,d1 // zeilenstart
|
||||||
sub.l d1,d2 // differenz = anzahl zeilen
|
sub.l d1,d2 // differenz = anzahl zeilen
|
||||||
mulu d2,d4 // maximal 480 zeilen
|
mulu d2,d4 // maximal 480 zeilen
|
||||||
add.l d4,d0 // video gr<EFBFBD>sse
|
add.l d4,d0 // video gr<EFBFBD>sse
|
||||||
cmp.l #0xe00000,d0 // maximale addresse
|
cmp.l #0xe00000,d0 // maximale addresse
|
||||||
bge video_chg_end // wenn gleich oder gr<EFBFBD>sser -> fertig
|
bge video_chg_end // wenn gleich oder gr<EFBFBD>sser -> fertig
|
||||||
moveq #20,d4
|
moveq #20,d4
|
||||||
move.l d0,d2
|
move.l d0,d2
|
||||||
lsr.l d4,d2 // neue page
|
lsr.l d4,d2 // neue page
|
||||||
move.l _video_tlb,d4
|
move.l _video_tlb,d4
|
||||||
bset.l d2,d4 // setzen als ge<EFBFBD>ndert
|
bset.l d2,d4 // setzen als ge<EFBFBD>ndert
|
||||||
beq video_copy_data // nein nochmal
|
beq video_copy_data // nein nochmal
|
||||||
video_chg_end:
|
video_chg_end:
|
||||||
// int pending l<EFBFBD>schen
|
// int pending l<EFBFBD>schen
|
||||||
lea MCF_GPT0_GMS,a0
|
lea MCF_GPT0_GMS,a0
|
||||||
bclr.b #0,3(a0)
|
bclr.b #0,3(a0)
|
||||||
nop
|
nop
|
||||||
|
|||||||
Reference in New Issue
Block a user