Welcome, Guest. Please login or register.

Author Topic: Minimig Review completed!  (Read 21797 times)

Description:

0 Members and 1 Guest are viewing this topic.

Offline Dennis

  • Full Member
  • ***
  • Join Date: Dec 2005
  • Posts: 128
    • Show all replies
Re: Minimig Review completed!
« on: March 03, 2008, 06:33:10 PM »
Quote
But the 68sec000 insn't a 68000 and isn't a 68010. That is the Problem


Exactly.
Afaik, all roms recognize the MC68SEC000 incorrectly.
What the kickstart code does is the following
(this is the disassembled kickstart 1.2 code by Markus Wandel):

FC03E2  move.w    $0128(A6),D0      See if we are running on a 68010/020.
FC03E6  btst      #0,D0
FC03EA  beq.s     FC041E            Skip the following if not.

        ; Special initialization for machines using a 68010/020.

FC03EC  lea       FC087C(PC),A0     Point at 68010/020 bus error handler.
FC03F0  move.w    #8,A1
FC03F4  move.l    A0,(A1)+          Fix the bus error vector.
FC03F6  move.l    A0,(A1)+          Fix the address error vector.

FC03F8  move.l    #$FC08BA,-$1C(A6)     Use a different Supervisor() routine.

        ; Fix GetCC() for 68010/020 processors.

        ; We simply load the instruction sequence "MOVE.W CCR,D0 / RTS" into
        ; the place where the library jump vector to GetCC() normally is.

FC0400  move.l    #$42C04E75,-$0210(A6)

I think the "move.w $0128(A6),D0" is wrongly disassembled and should actually be the Move from SR instruction. As this instruction is priviliged the code for 68010/68020 will be executed. The bus error and address error vectors are patched; no problem for the Minimig as these are not generated. The GetCC() is also (wrongly) patched. This is a problem for the Minimig. Luckily, this function is only used very rarely so Kickstart 2.04 (V37.175 tested here) runs fine on the MC68SEC000, as does kickstart 3.1.

Dennis