Np.
what_cpu
clr.l d0
moveq #$01,d1
lea table,a0
move.b (a0,d1.l*2),d0
rts
table: .byte 0,0,1
Jeśli po jsr what_cpu w d0 będzie 0, to mamy Motkę 68000 albo 68010. Jeśli 1, to 68020-60. O ile mi wiadomo, tylko tyle da się zrobić w userze, dokładniejsze testy się robi w superwizorze przez ustawianie wektora nielegalnej instrukcji i wypróbowywanie kolejnych rozkazów (typu: jesli "move from ccr" nie wychodzi, to to jest 68000) oraz rejestrów (np. 68020 od 68030 i 68040 odróżnia się po zachowaniu rejestru CACR). W końcu 68060 od 68040 odróżniamy przez próbę wykonania mnożenia z wynikiem 64-bitowym, co mają wszystkie procesory od 68020 do 68040, a 68060 nie.
Dokładna procedura jest do obejrzenia np. tutaj:
http://sparemint.atariforge.net/cgi-bin … web-markup
Etykieta "detect_cpu".
PS. Grzebanie się w tym samemu ma sens oczywiście tylko pod TOS-em. MiNT robi pełną detekcję CPU i FPU, więc celem dowiedzenia się, jaki jest procesor, wystarczy zajrzeć do Cookie Jaru.
KMK
? HEX$(6670358)