Programowanie: Konwersje znaków ATASCII i ANTIC
From Atariki
ATASCII → ANTIC
Program przekształca wpisany do akumulatora znak w kodzie ATASCII na kod ekranowy ANTIC-a. Wynik w akumulatorze.
atascii2antic:
asl
php
cmp #2*$60
bcs @
sbc #2*$20-1
bcs @
adc #2*$60
@ plp
ror
rts
Można oczywiście użyć tablicy:
atascii2antic:
tax
lda antic,x
rts
antic:
:32 .byte $40+#
:64 .byte $00+#
:32 .byte $60+#
:32 .byte $c0+#
:64 .byte $80+#
:32 .byte $e0+#
ANTIC → ATASCII
Zasadniczo konwersję przeprowadza się analogicznie:
antic2atascii:
asl
php
cmp #2*$60
bcs @
sbc #2*$40-1
bcs @
adc #2*$60
@ plp
ror
rts
i w wersji tablicowej:
antic2atascii:
tax
lda atascii,x
rts
atascii:
:64 .byte $20+#
:32 .byte $00+#
:32 .byte $60+#
:64 .byte $a0+#
:32 .byte $80+#
:32 .byte $e0+#
Warianty
Jeśli w programie mamy już procedurę konwersji ATASCII → ANTIC, można użyć innej metody:
antic2atascii:
jsr atascii2antic
jmp atascii2antic
lub też (dysponując wersją stablicowaną):
antic2atascii:
tax
ldy antic,x
lda antic,y
rts
Analogiczną konwersję ATASCII → ANTIC można oczywiście przeprowadzić mając procedurę konwersji ANTIC → ATASCII
atascii2antic:
jsr antic2atascii
jmp antic2atascii
lub dysponując tablicą:
atascii2antic:
tax
ldy atascii,x
lda atascii,y
rts
