88 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			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 }
 | 
						|
 |