1

Temat: mads - procedury

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

Odp: mads - procedury

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.

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

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

3

Odp: mads - procedury

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

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