gigatron/rom/Apps/Mosaic6502/Mosaic6502.gcl
2025-01-28 19:17:01 +03:00

88 lines
3.8 KiB
Plaintext

gcl0x
{ Version check >= ROMv4, see Docs/GT1-files.txt }
\romType, \romTypeValue_ROMv4- [if<0 do _frameCount _vPCH: loop]
{ Tester for v6502 }
{ Nice online assembler: https://www.masswerk.at/6502/assembler.html }
{ Also: https://cc65.github.io Homebrew: brew install cc65 }
{ Demo jumping back and forth between vCPU and v6502 code }
[def
{mosaic}
#$48 { pha }
#$8d #$3e #$02 { sta $023e ins }
#$20 #$18 #$02 { jsr $0218 }
#$68 { pla }
#$00 { brk }
{0218} #$a9 #$02 { lda #>$0220 }
#$48 { pha }
#$a9 #$20 { lda #<$0220 }
#$48 { pha }
#$08 { php }
#$40 { rti }
{0220} #$a9 #$00 { lda #0 }
#$85 #$26 { sta $26 flags }
#$85 #$31 { sta $31 A }
#$a9 #$08 { lda #8 }
#$85 #$33 { sta $33 L }
#$a9 #$58 { lda #88 }
#$85 #$35 { sta $35 }
#$a9 #$22 { lda #$22 }
#$85 #$34 { sta $34 H }
#$85 #$36 { sta $36 }
{loopA} #$a9 #$00 { lda #0 }
#$85 #$32 { sta $32 B }
#$a0 #$00 { ldy #0 }
{loopB} #$a5 #$31 { lda $31 A }
#$38 { sec }
#$18 { clc }
{023e} #$00 #$32 { xxx $32 B }
#$08 { php }
#$28 { plp }
#$08 { php }
#$4a { lsr a }
#$6a { ror a }
#$91 #$33 { sta ($33),y }
#$68 { pla }
#$0a { asl a }
#$2a { rol a }
#$2a { rol a }
#$91 #$35 { sta ($35),y }
#$c8 { iny }
#$a5 #$32 { lda $32 B }
#$09 #$06 { ora #6 }
#$85 #$32 { sta $32 }
#$e6 #$32 { inc $32 }
#$d0 #$e2 { bne *-30 loopB }
#$e6 #$34 { inc $34 H }
#$e6 #$36 { inc $36 }
#$a9 #$06 { lda #6 }
#$05 #$31 { ora $31 A }
#$85 #$31 { sta $31 }
#$e6 #$31 { inc $31 }
#$d0 #$ce { bne *-50 loopA }
#$60 { rts }
] _v6502_PC=
{ GCL notation for main loop }
\SYS_Run6502_v4_80 _sysFn=
[do
push $a5 80!! pop { LDA }
push $25 80!! pop { AND }
push $05 80!! pop { ORA }
push $45 80!! pop { XOR }
push $65 80!! pop { ADC }
push $e5 80!! pop { SBC }
push $c5 80!! pop { CMP }
push $24 80!! pop { BIT }
loop] { Forever }