Ostatnie moje pomysły skłoniły mnie do dalszego oswajania madsa 🙂
adres equ $80 org $600 print_line #napis1 print_line #napis2 print_line #napis3 jmp * print_line .proc (.word adres) .var ldy #0 @ phr lda (adres),y beq @+ print_char plr iny jmp @- @ plr rts .endp print_char .proc tax lda $0347 ;ICPTL/H from IOCB #0 pha lda $0346 pha txa rts .endp napis1 .by 'Atari',$9b,0 napis2 .by 'rulez',$9b,0 napis3 .by '!!!!!!!!!!',$9b,0
Spodobała mi się sztuczka z wypchaniem na stos wektora i rts, co powoduje „powrót” pod adres ze stosu (zamiast jsr). Druga sztuczka, której zastosowania jeszcze przede mną do odkrycia, to magiczne gwiazdki:
org $600 ldy #0 sty test test equ *+1 lda #111 sta 710 jmp *
*+1 to bieżące położenie w pamięci + 1 bajt, czyli wartością spod etykiety można nadpisać operand. Takie programowanie generyczne sprzed trzech dekad :). No i jmp * sam sobie wykoncypowałem.