Programowanie: Jak stwierdzić typ procesora
From Atariki
(Różnice między wersjami)
Wersja z dnia 19:18, 7 wrz 2005 KMK (Dyskusja | wkład) ← Previous diff |
Aktualna wersja Mazi (Dyskusja | wkład) |
||
Linia 1: | Linia 1: | ||
- | Procedura sprawdzająca, czy zamontowany w komputerze procesor to [[6502]], [[65C02]] czy [[65C816]]. | + | Procedura sprawdzająca, czy zamontowany w komputerze [[procesor]] to [[6502]], [[65C02]] czy [[65C816]]. Niepublikowane rozkazy 6502 nie są używane. |
<pre> | <pre> | ||
- | lda #99 | + | .816 |
- | clc | + | lda #$99 ;W 6502 dodawanie dziesiętne 99+1 |
- | sed | + | clc ;daje w wyniku zero, ale znacznik Z |
- | adc #1 | + | sed ;ma stan taki, jak po dodawaniu binarnym. |
+ | adc #$01 ;W 65C02 poprawiono to. | ||
cld | cld | ||
beq cmos | beq cmos | ||
- | lda #0 ;ustawia znacznik Z jak należy | + | lda #$00 ;ustawia znacznik Z jak należy |
rts | rts | ||
- | cmos rep #$02 | + | cmos rep #$02 ;CPU to co najmniej 65C02. Rozkaz REP #$02 |
- | bne c816 | + | bne c816 ;ustawia Z=0 w 65C816, a na 65C02 nie robi nic. |
inc | inc | ||
rts | rts | ||
- | c816 lda #2 | + | c816 lda #$02 ;Mamy 65C816. |
rts | rts | ||
</pre> | </pre> | ||
- | Po wykonaniu procedury w akumulatorze jest 0 dla procesora 6502, 1 dla 65C02 oraz 2 dla 65C816. | + | Po wykonaniu procedury w akumulatorze jest 0 dla procesora [[6502]], 1 dla [[65C02]] oraz 2 dla [[65C816]]. |
+ | |||
+ | [[Kategoria: Niezbędnik kodera]] |
Aktualna wersja
Procedura sprawdzająca, czy zamontowany w komputerze procesor to 6502, 65C02 czy 65C816. Niepublikowane rozkazy 6502 nie są używane.
.816 lda #$99 ;W 6502 dodawanie dziesiętne 99+1 clc ;daje w wyniku zero, ale znacznik Z sed ;ma stan taki, jak po dodawaniu binarnym. adc #$01 ;W 65C02 poprawiono to. cld beq cmos lda #$00 ;ustawia znacznik Z jak należy rts cmos rep #$02 ;CPU to co najmniej 65C02. Rozkaz REP #$02 bne c816 ;ustawia Z=0 w 65C816, a na 65C02 nie robi nic. inc rts c816 lda #$02 ;Mamy 65C816. rts
Po wykonaniu procedury w akumulatorze jest 0 dla procesora 6502, 1 dla 65C02 oraz 2 dla 65C816.