Zapis znaku na ekran (PUT)
From Atariki
(Różnice między wersjami)
Wersja z dnia 19:35, 9 sty 2008 KMK (Dyskusja | wkład) ← Previous diff |
Aktualna wersja KMK (Dyskusja | wkład) |
||
Linia 1: | Linia 1: | ||
- | Procedura wyprowadza znak na ekran na pozycji X/Y kursora określonej przez zmienne odpowiednio COLCRS ($55-$56) i ROWCRS ($54). Zakłada się, że obowiązują przy tym domyślne ustawienia OS-u, to jest ekran jest w trybie [[Graphics 0]], a kanał, przez który wysyłamy bajt (w przykładzie [[IOCB]] 0), '''jest otwarty dla edytora ekranowego''' (urządzenie "E:" [[CIO]]). | + | Procedura wyprowadza znak na ekran na pozycji X/Y kursora określonej przez zmienne odpowiednio COLCRS ($55-$56) i ROWCRS ($54). Zakłada się, że obowiązują przy tym poprawne ustawienia trybów grafiki [[OS]]-u, to jest ekran jest w trybie "konsoli" ([[Graphics 0]]), lub w trybie graficznym z oknem tekstowym, a kanał, przez który wysyłamy bajt (w przykładzie [[IOCB]] 0), '''jest otwarty dla edytora ekranowego''' (urządzenie "E:" [[CIO]]). |
- | Wyprowadzenie znaku polega na załadowaniu jego kodu ATASCII do akumulatora i wykonaniu rozkazu JSR PUTCHR. | + | Wyprowadzenie znaku polega na załadowaniu jego kodu [[ATASCII]] do akumulatora i wykonaniu rozkazu JSR PUTCHR. |
+ | |||
+ | Po wyświetleniu znaku pozycja kursora jest uaktualniana automatycznie, a gdy kursor ma się znaleźć poniżej dolnej skrajni ekranu, następuje przesuw całej zawartości ekranu o jeden wiersz (logiczny) w górę. | ||
== Wersja dla 6502 == | == Wersja dla 6502 == | ||
- | <pre> | ||
- | icputb = $0346 | ||
- | putchr ldx #$00 ;nr IOCB pomnożony przez 16 | + | icputb = $0346 |
- | tay ;znak do wysłania jest w akumulatorze | + | ; |
- | lda icputb+1,x | + | putchr ldx #$00 ;nr IOCB pomnożony przez 16 |
- | pha | + | tay ;znak do wysłania jest w akumulatorze |
- | lda icputb,x | + | lda icputb+1,x |
- | pha | + | pha |
- | tya | + | lda icputb,x |
- | rts | + | pha |
- | </pre> | + | tya |
+ | rts | ||
== Wersja dla 65C816 == | == Wersja dla 65C816 == | ||
- | <pre> | + | icputb = $0346 |
- | icputb = $0346 | + | ; |
- | + | putchr ldx #$00 | |
- | putchr ldx #$00 | + | ldy icputb+1,x |
- | ldy icputb+1,x | + | phy |
- | phy | + | ldy icputb,x |
- | ldy icputb,x | + | phy |
- | phy | + | rts |
- | rts | + | |
- | </pre> | + | |
[[Kategoria:Niezbędnik kodera]] | [[Kategoria:Niezbędnik kodera]] |
Aktualna wersja
Procedura wyprowadza znak na ekran na pozycji X/Y kursora określonej przez zmienne odpowiednio COLCRS ($55-$56) i ROWCRS ($54). Zakłada się, że obowiązują przy tym poprawne ustawienia trybów grafiki OS-u, to jest ekran jest w trybie "konsoli" (Graphics 0), lub w trybie graficznym z oknem tekstowym, a kanał, przez który wysyłamy bajt (w przykładzie IOCB 0), jest otwarty dla edytora ekranowego (urządzenie "E:" CIO).
Wyprowadzenie znaku polega na załadowaniu jego kodu ATASCII do akumulatora i wykonaniu rozkazu JSR PUTCHR.
Po wyświetleniu znaku pozycja kursora jest uaktualniana automatycznie, a gdy kursor ma się znaleźć poniżej dolnej skrajni ekranu, następuje przesuw całej zawartości ekranu o jeden wiersz (logiczny) w górę.
[Edytuj]
Wersja dla 6502
icputb = $0346 ; putchr ldx #$00 ;nr IOCB pomnożony przez 16 tay ;znak do wysłania jest w akumulatorze lda icputb+1,x pha lda icputb,x pha tya rts
[Edytuj]
Wersja dla 65C816
icputb = $0346 ; putchr ldx #$00 ldy icputb+1,x phy ldy icputb,x phy rts