Programowanie: Jak wyszukać pierwszy wolny IOCB
From Atariki
(Różnice między wersjami)
| Wersja z dnia 10:20, 11 wrz 2005 Miker (Dyskusja | wkład) ← Previous diff |
Wersja z dnia 18:14, 20 gru 2005 KMK (Dyskusja | wkład) (a to można ciut skrócić ;)) Next diff → |
||
| Linia 3: | Linia 3: | ||
| <pre> | <pre> | ||
| lookup ldx #$00 | lookup ldx #$00 | ||
| + | ldy #$01 | ||
| loop lda icchid,x | loop lda icchid,x | ||
| cmp #$ff | cmp #$ff | ||
| Linia 12: | Linia 13: | ||
| 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> | ||
Wersja z dnia 18:14, 20 gru 2005
Procedura wyszukuje pierwszy wolny kanał IOCB:
lookup ldx #$00
ldy #$01
loop lda icchid,x
cmp #$ff
beq found
txa
clc
adc #$10
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.
