Programowanie: Konwersje znaków ATASCII i ANTIC

From Atariki

Revision as of 09:48, 22 wrz 2017; view current revision
←Older revision | Newer revision→
Jump to: navigation, search

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
Personal tools