Poniżej znajduje się kod źródłowy programu ChkKS, który sprawdza i wyświetla informacje
o wersji Kickstartu, zainstalowanego w Amidze. Rozpoznaje wszystkie Kickstarty od wersji
1.2 (33.166) do 3.1 (40.72). Starsze Kickstarty (0.7, 1.0, 1.1) zostaną rozpoznane jako
"Kickstart 1.x (xx.x)", natomiast nowsze (43+) jako "Kickstart 3.x (vv.rr)" z wersją i rewizją
podaną w nawiasie. Kickstart 1.2.1 (34.4) zostanie rozpoznany jako "Kickstart 1.3 (34.4)".
Kickstart 3.5 (40.71) zostanie rozpoznany jako "Kickstart 3.1 (40.71)". Program działa w sys-
temie Workbench 1.2 lub nowszym. Można go uruchomić przez dwukrotne kliknięcie jego
ikony lub wpisując jego nazwę w CLI.
Program rozpoznaje wersję Kickstartu na podstawie 16-bitowych wartości identyfikacyjnych,
które są w nim zapisane pod adresami: $F8000C (wersja) i $F8000E (rewizja):
$F8000C | $F8000E | WERSJA |
FFFF | FFFF | Kickstart 0.7 |
FFFF | FFFF | Kickstart 1.0 |
FFFF | FFFF | Kickstart 1.1 (31.34) |
0021 | 00A6 | Kickstart 1.2 (33.166) |
0021 | 00B4 | Kickstart 1.2 (33.180) |
0022 | 0004 | Kickstart 1.2.1 (34.4) |
0022 | 0005 | Kickstart 1.3 (34.5) |
0024 | 0002 | Kickstart 1.4 (36.2) |
0024 | 0003 | Kickstart 1.4 (36.3) |
0024 | 000F | Kickstart 1.4 (36.15) |
0024 | 0010 | Kickstart 1.4 (36.16) |
0024 | 001C | Kickstart 2.0 (36.28) |
0024 | 0041 | Kickstart 2.0 (36.65) |
0024 | 0043 | Kickstart 2.0 (36.67) |
0024 | 0048 | Kickstart 2.0 (36.72) |
0024 | 008D | Kickstart 2.0 (36.141) |
0024 | 008F | Kickstart 2.0 (36.143) |
0024 | 00CA | Kickstart 2.0 (36.202) |
0024 | 00CF | Kickstart 2.0 (36.207) |
0024 | 00D1 | Kickstart 2.0 (36.209) |
0025 | 004A | Kickstart 2.0 (37.74) |
0025 | 005C | Kickstart 2.0 (37.92) |
0025 | 00AF | Kickstart 2.0 (37.175) |
0025 | 00D2 | Kickstart 2.0 (37.210) |
0025 | 012B | Kickstart 2.0 (37.299) |
0025 | 012C | Kickstart 2.0 (37.300) |
0025 | 015E | Kickstart 2.0 (37.350) |
0027 | 0041 | Kickstart 3.0 (39.65) |
| |
$F8000C | $F8000E | WERSJA |
0027 | 006A | Kickstart 3.0 (39.106) |
0028 | 0003 | Kickstart 3.1 (40.3) |
0028 | 0009 | Kickstart 3.1 (40.9) |
0028 | 0010 | Kickstart 3.1 (40.16) |
0028 | 0037 | Kickstart 3.1 (40.55) |
0028 | 003C | Kickstart 3.1 (40.60) |
0028 | 003E | Kickstart 3.1 (40.62) |
0028 | 003F | Kickstart 3.1 (40.63) |
0028 | 0044 | Kickstart 3.1 (40.68) |
0028 | 0045 | Kickstart 3.1 (40.69) |
0028 | 0046 | Kickstart 3.1 (40.70) |
0028 | 0047 | Kickstart 3.1 (40.71) |
0028 | 0047 | Kickstart 3.5 (40.71) |
0028 | 0048 | Kickstart 3.1 (40.72) |
002B | 0001 | Kickstart 3.2 beta (43.1) |
002C | 0001 | Kickstart 3.5 (44.1) |
002C | 0048 | Kickstart 3.x (44.72) Vampire 600 v2 |
002D | 0039 | Kickstart 3.x (45.57) |
002D | 003D | Kickstart 3.x (45.61) |
002D | 003E | Kickstart 3.x (45.62) |
002D | 0040 | Kickstart 3.x (45.64) |
002D | 0042 | Kickstart 3.x (45.66) |
002E | 008F | Kickstart 3.1.4 (46.143) |
002F | 0060 | Kickstart 3.2 (47.96) |
002F | 0066 | Kickstart 3.2 (47.102) |
002F | 006F | Kickstart 3.2 (47.111) |
|
Kolorem czerwonym są oznaczone wersje, które zostaną rozpoznane jako "Kickstart 1.x (xx.x)".
Kickstart 1.2.1 (34.4) oznaczony kolorem pomarańczowym, zostanie rozpoznany jako "Kickstart 1.3 (34.4)".
Kickstart 3.5 (40.71) oznaczony kolorem pomarańczowym, zostanie rozpoznany jako "Kickstart 3.1 (40.71)".
Kolorem zielonym są oznaczone wersje, które zostaną rozpoznane jako "Kickstart 3.x (vv.rr)".
ChkKS:
;Zakładam, że w tym miejscu procesor pracuje w trybie użytkownika (User mode).
;Każdy procesor 680x0 pracuje w tym trybie, po uruchomieniu programu na Workbenchu.
;Program wyświetla informacje o wersji Kickstartu, zainstalowanego w Amidze.
;Działa w systemie 1.2 lub nowszym i można go uruchomić przez ikonę lub z CLI.
move.w $F8000C,D2 ;odczyt wersji Kickstartu
move.w $F8000E,D3 ;odczyt rewizji Kickstartu
moveq #$F1,D1
cmp.w #$FFFF,D2
beq.s ChkKS1 ;Kickstart 1.x
moveq #$21,D1
cmp.w D1,D2
beq.s ChkKS1 ;Kickstart 1.2
moveq #$31,D1
cmp.w #$22,D2
beq.s ChkKS1 ;Kickstart 1.3
moveq #$02,D1
cmp.w #$24,D2
bne.s ChkKS0
cmp.w #$10,D3
bhi.s ChkKS1 ;Kickstart 2.0
moveq #$41,D1
bra.s ChkKS1 ;Kickstart 1.4
ChkKS0:
cmp.w #$25,D2
beq.s ChkKS1 ;Kickstart 2.0
moveq #$03,D1
cmp.w #$27,D2
beq.s ChkKS1 ;Kickstart 3.0
moveq #$13,D1
cmp.w #$28,D2
beq.s ChkKS1 ;Kickstart 3.1
moveq #$F3,D1 ;Kickstart 3.x
ChkKS1:
lsl.w #4,D1
ror.b #4,D1
add.w #$3030,D1
lea ChkKS10(pc),A0
move.b D1,(A0)
ror.w #8,D1
addq.l #2,A0
cmp.b #$2F,D1
bne.s ChkKS2
cmp.w #$312F,D1
beq.s ChkKS4 ;Kickstart 1.x
bra.s ChkKS3 ;Kickstart 3.x
ChkKS2:
move.b D1,(A0)
ChkKS3:
addq.l #3,A0
bsr.s ChkKS5
move.w D3,D2
addq.l #1,A0
bsr.s ChkKS5
move.b #")",(A0)
ChkKS4:
move.l 4.w,A6 ;adres bazowy biblioteki Exec
lea ChkKS9(pc),A0
move.l A0,D2 ;adres danych do wyświetlenia w CLI
moveq #17,D3 ;liczba bajtów do wyświetlenia w CLI
lea ChkKS11(pc),A1 ;nazwa biblioteki DOS
jsr -408(A6) ;otwiera bibliotekę DOS (funkcja Exec:OldOpenLibrary)
move.l D0,A6 ;adres bazowy biblioteki DOS
jsr -60(A6) ;zwraca uchwyt okna CLI do wyświetlania danych. Jeśli nie ma
;takiego okna, to jest ono otwierane (funkcja DOS:Output).
move.l D0,D1 ;uchwyt okna CLI
jsr -48(A6) ;wyświetla dane w CLI (funkcja DOS:Write)
move.l A6,A1 ;adres bazowy biblioteki DOS
move.l 4.w,A6 ;adres bazowy biblioteki Exec
jsr -414(A6) ;zamyka bibliotekę DOS (funkcja Exec:CloseLibrary)
rts
;Konwersja 2-bajtów z rejestru D2 do systemu DEC-ASCII
ChkKS5:
moveq #$30,D1
move.l #$2710,D4
ChkKS6:
move.b #$2F,(A0)
ChkKS7:
addq.b #1,(A0)
sub.w D4,D2
bcc.s ChkKS7
add.w D4,D2
cmp.b (A0),D1
beq.s ChkKS8
clr.b D1
addq.l #1,A0
ChkKS8:
divu #$0A,D4
bne.s ChkKS6
rts
ChkKS9:
dc.b "KS: "
ChkKS10:
dc.b "x.x (xx.x) ",10
ChkKS11:
dc.b "dos.library",0
;Rozmiar: 234 B, linii kodu: 77
Po kompilacji tego kodu, rozmiar programu wykonywalnego wynosi 272 B.