Programowanie: Jak wyszukać pierwszy wolny IOCB
From Atariki
(Różnice między wersjami)
| Wersja z dnia 10:01, 11 wrz 2005 Miker (Dyskusja | wkład) ← Previous diff |
Aktualna wersja 0xF (Dyskusja | wkład) (zbędny clc) |
||
| Linia 1: | Linia 1: | ||
| - | Procedura wyszukuje pierwszy wolny kanał IOCB: | + | Procedura wyszukuje pierwszy wolny kanał [[IOCB#Struktura_IOCB|IOCB]]: |
| <pre> | <pre> | ||
| lookup ldx #$00 | lookup ldx #$00 | ||
| + | ldy #$01 | ||
| loop lda icchid,x | loop lda icchid,x | ||
| cmp #$ff | cmp #$ff | ||
| beq found | beq found | ||
| txa | txa | ||
| - | clc | + | adc #$10 ;znacznik C skasowany |
| - | adc #$10 | + | |
| tax | tax | ||
| bpl loop | bpl loop | ||
| ldy #-95 ;kod błędu "TOO MANY CHANNELS OPEN" | ldy #-95 ;kod błędu "TOO MANY CHANNELS OPEN" | ||
| - | rts | + | found rts |
| - | found ldy #$01 | + | |
| - | rts | + | |
| </pre> | </pre> | ||
| W momencie opuszczenia procedury ze skasowanym znacznikiem N (czyli z wynikiem dodatnim), rejestr X zawiera pomnożony przez 16 numer kanału IOCB gotowego do użycia. | W momencie opuszczenia procedury ze skasowanym znacznikiem N (czyli z wynikiem dodatnim), rejestr X zawiera pomnożony przez 16 numer kanału IOCB gotowego do użycia. | ||
| - | [[Kategoria:Programowanie Atari 8-bit]] | ||
| [[Kategoria:Niezbędnik kodera]] | [[Kategoria:Niezbędnik kodera]] | ||
Aktualna wersja
Procedura wyszukuje pierwszy wolny kanał IOCB:
lookup ldx #$00
ldy #$01
loop lda icchid,x
cmp #$ff
beq found
txa
adc #$10 ;znacznik C skasowany
tax
bpl loop
ldy #-95 ;kod błędu "TOO MANY CHANNELS OPEN"
found rts
W momencie opuszczenia procedury ze skasowanym znacznikiem N (czyli z wynikiem dodatnim), rejestr X zawiera pomnożony przez 16 numer kanału IOCB gotowego do użycia.
