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.