1

Próbuje liznąć lekko asm dla A8, ogólnie zainspirował mnie David Arlington ze swoją serią na YT, tylko on używa Mac/65 na real Atari, ja jednak wybrałem madsa, w sumie ze względu, że można używać procedur co wydaje mi się ułatwiać programowanie.

Napisałem prostą procedurę do której przekazuje znak.

Może ktoś mi wyjaśni dlaczego jak zadeklaruje ZNAK2 jako byte, to przy przekazaniu tego do procedury dostaję niezgodność typów ?

ZNAK1 = '>'
ZNAK2 .BYTE '*'

org $2000

ZNAK1 = '>' 
ZNAK2 .BYTE '*'

   ; PLOT #ZNAK1
    PLOT #ZNAK2

PLOT .proc (.BYTE ZN) .var 
    .var ZN .byte

    .endp
test2.asm (7) ERROR: Incompatible types ZN

2 Ostatnio edytowany przez Pecus (2024-09-09 07:40:02)

Bo ZNAK2 to adres w pamięci pod którym znajduje się bajt '*'.

Precyzyjniej nie odpowiem, bo nie używałem w MADSie procedur z przekazywaniem parametrów.

W przykładzie, który podałeś nie deklarujesz ZNAK2 jako byte, deklarujesz jako byte to co znajdzie się w komórce wskazywanej przez ZNAK2. Za to ZNAK1 dostaje wartość odpowiadającą kodowi znaku '>' , czyli tak jak oczekujesz.

Bla bla bla bla, bla bla bla. Bla bla bla - bla - bla. Blabla bleee.

3 Ostatnio edytowany przez lopez (2024-09-09 13:44:31)

Dzięki za naprowadzenie oraz dla tebe na disco, chyba mam to co chciałem

    org $2000

    .var znak .byte = '>'
    .var znak2 .byte = '*'

    procka #znak #znak2

.proc procka (.byte temp1, temp2) .var
    .var temp1, temp2 .byte
    
    lda temp1
    lda temp2

.endp