@RomanWorkshop, post #30
;W tym miejscu procesor pracuje w trybie nadzorcy (Supervisor mode). ;Kod z systemu 3.1 sprawdzający model procesora 680x0 (do 68040 włącznie). ;Algorytm wykorzystuje właściwości bitów (flag) rejestru CACR, ;które są różne dla poszczególnych modeli procesorów 68020+. ; 0C1C MOVEM.L A2/A3,-(A7) 0C20 MOVEA.L $0010.W,A0 ;wektor wyjątku nr 4 (Illegal Instruction) 0C24 MOVEA.L $002C.W,A2 ;wektor wyjątku nr 11 (Line 1111 Emulator) 0C28 LEA (0CC0,PC),A1 0C2C MOVE.L A1,$0010.W ;zmiana wektora wyjątku nr 4 0C30 MOVE.L A1,$002C.W ;zmiana wektora wyjątku nr 11 0C34 MOVEA.L A7,A1 ;zapamiętanie wskaźnika stosu (A7=SSP) 0C36 MOVEQ #$00,D0 0C38 MOVEC D0,VBR ;instrukcja obsługiwana przez 68010/20/30/40. ; ;procesor 68010+ ; 0C3C BSET #$00,D0 0C40 MOVE.L #$0A09,D1 ;Próba ustawienia bitów 0, 3, 9 i 11 w CACR, 0C46 MOVEC D1,CACR ;instrukcją obsługiwaną przez 68020/30/40. ; ;procesor 68020+ ; 0C4A MOVEC CACR,D1 0C4E BSET #$01,D0 0C52 BTST #$09,D1 ;sprawdzanie wartości bitu 9 w CACR 0C56 BEQ.B 0C5C ;skok, jeśli bit 9 w CACR =0, procesor to 68020 0C58 BSET #$02,D0 ;procesor 68030 0C5C BTST #$00,D1 ;sprawdzanie wartości bitu 0 w CACR 0C60 BNE.B 0C84 ;skok, jeśli bit 0 w CACR =1, procesor to 68020/68030 ; ;procesor 68040 ; 0C62 OR.W #$000C,D0 0C66 CINVA BC 0C68 MOVE.L #$C040,D1 0C6E MOVEC D1,DTT0 0C72 MOVE.L #$00FFC000,D1 0C78 MOVEC D1,DTT1 0C7C MOVEC D1,ITT0 0C80 MOVEC D1,ITT1 ; 0C84 MOVE.L #$A009,D1 0C8A MOVEC D1,CACR 0C8E BTST #$03,D0 0C92 BEQ.B 0C9E ;skok, jeśli procesor to 68020/68030 ; ;sprawdzanie FPU w procesorze 68040 ; 0C94 FSAVE -(A7) 0C96 FRESTORE (A7)+ 0C98 BSET #$06,D0 ;FPU wbudowany w procesor 68040 (zgodny z 68882) 0C9C BRA.B 0CC0 ; ;sprawdzanie FPU ; 0C9E MOVEQ #$00,D1 0CA0 FMOVE.L D1,FPCR 0CA4 FMOVE.L FPCR,D1 0CA8 TST.L D1 0CAA BNE.B 0CC0 ;skok, jeśli brak FPU 0CAC BSET #$04,D0 ;FPU 68881+ 0CB0 FSAVE -(A7) 0CB2 CMPI.B #$18,($0001,A7) 0CB8 BEQ.B 0CBE ;skok, jeśli FPU to 68881 0CBA BSET #$05,D0 ;FPU 68882 0CBE FRESTORE (A7)+ ; ;kod obsługi wyjątku nr 4 i 11 ; 0CC0 MOVEA.L A1,A7 ;przywrócenie wskaźnika stosu (A7=SSP) 0CC2 MOVE.L A0,$0010.W ;przywrócenie wektora wyjątku nr 4 0CC6 MOVE.L A2,$002C.W ;przywrócenie wektora wyjątku nr 11 0CCA MOVEM.L (A7)+,A2/A3 0CCE RTS
@RomanWorkshop, post #31
@Don_Adan, post #32
@RomanWorkshop, post #33
@RomanWorkshop, post #36
@RomanWorkshop, post #37
@Radek_Cz, post #38
@RomanWorkshop, post #37
@RomanWorkshop, post #43
@amizet, post #46
@RomanWorkshop, post #47
Poniżej znajduje się kod źródłowy programu ChkCPU,...
68030 (68EC030),
;wartość rejestru MMUSR (68030)/ACUSR (68EC030).
@amizet, post #48
@RomanWorkshop, post #45
@Risc, post #52
@RomanWorkshop, post #53