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). Program działa w systemie Workbench 1.0 lub nowszym.
Można go uruchomić przez dwukrotne kliknięcie jego ikony lub wpisując jego nazwę w CLI.
Najstarsze Kickstarty 0.7/1.0/1.1 zostaną rozpoznane jako "1.x (xx.x)", natomiast nowsze
(43+) jako "3.x (vv.rr)" z wersją i rewizją podaną w nawiasie. Kickstart 1.2.1 (34.4) zostanie
rozpoznany jako "1.3 (34.4)", a Kickstart 3.5 (40.71) jako "3.1 (40.71)".
Wyświetlona wersja Kickstartu może nie być tą, która jest aktualnie używana przez system
Amigi. Zwłaszcza, jeśli Kickstart został załadowany (relokowany/remapowany) do pamięci
RAM przez program (np. ReKick, SKick), funkcję maprom/fastrom karty turbo lub jednostkę
zarządzania pamięcią (MMU).
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) |
| 0027 | 006A | Kickstart 3.0 (39.106) |
| 0028 | 0003 | Kickstart 3.1 (40.3) |
| |
| $F8000C | $F8000E | WERSJA |
| 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 | 000A | Kickstart AROS (46.10) |
| 002E | 000B | Kickstart AROS (46.11) |
| 002E | 000C | Kickstart AROS (46.12) |
| 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) |
| 002F | 0073 | Kickstart 3.2 (47.115) |
|
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.0 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
cmp.w #$FFFF,D2
beq.s ChkKS3 ;Kickstart 1.x (0.7/1.0/1.1)
lea ChkKS9(pc),A0
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 (1.2.1)
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 (3.5)
addq.b #2,(A0)
addq.l #5,A0
bra.s ChkKS2 ;Kickstart 3.x
ChkKS1:
lsl.w #4,D1
ror.b #4,D1
add.w #$3030,D1
move.b D1,(A0)
ror.w #8,D1
addq.l #2,A0
move.b D1,(A0)
addq.l #3,A0
ChkKS2:
bsr.s ChkKS4
move.w D3,D2
addq.l #1,A0
bsr.s ChkKS4
move.b #")",(A0)
ChkKS3:
move.l 4.w,A6 ;adres bazowy biblioteki Exec
lea ChkKS8(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 ChkKS10(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
ChkKS4:
moveq #$30,D1
move.l #$2710,D4
ChkKS5:
move.b #$2F,(A0)
ChkKS6:
addq.b #1,(A0)
sub.w D4,D2
bcc.s ChkKS6
add.w D4,D2
cmp.b (A0),D1
beq.s ChkKS7
clr.b D1
addq.l #1,A0
ChkKS7:
divu #$0A,D4
bne.s ChkKS5
rts
ChkKS8:
dc.b "KS: "
ChkKS9:
dc.b "1.x (xx.x) ",10
ChkKS10:
dc.b "dos.library",0
;Rozmiar: 222 B, linii kodu: 73
Po kompilacji tego kodu, rozmiar programu wykonywalnego wynosi 260 B.