65 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
		
		
			
		
	
	
			65 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								m6502_nz    .req r3  // bit 31=N, Z=1 if bits 0-7=0		  ;RN<52><4E><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>
							 | 
						|||
| 
								 | 
							
								m6502_rmem  .req r4  // readmem_tbl
							 | 
						|||
| 
								 | 
							
								m6502_a     .req r5  // bits 0-23=0, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD>е<EFBFBD><EFBFBD>ֽ<EFBFBD>
							 | 
						|||
| 
								 | 
							
								m6502_x     .req r6  // bits 0-23=0
							 | 
						|||
| 
								 | 
							
								m6502_y     .req r7  // bits 0-23=0
							 | 
						|||
| 
								 | 
							
								cycles      .req r8  // also VDIC flagsҲVDIC<EFBFBD><EFBFBD>־
							 | 
						|||
| 
								 | 
							
								m6502_pc    .req r9
							 | 
						|||
| 
								 | 
							
								globalptr   .req r10 // =wram_globals* ptr
							 | 
						|||
| 
								 | 
							
								m6502_optbl .req r10
							 | 
						|||
| 
								 | 
							
								cpu_zpage   .req r11 // =CPU_RAM
							 | 
						|||
| 
								 | 
							
								addy        .req r12 // keep this at r12 (<EFBFBD><EFBFBD>ͷ APCS)	//addr  :<EFBFBD><EFBFBD><EFBFBD><EFBFBD>8λ<EFBFBD><EFBFBD>ַ
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// equates.s - GCC/GAS version
							 | 
						|||
| 
								 | 
							
								// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD>⣺GAS <EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD> RN<EFBFBD><EFBFBD>ֱ<EFBFBD><EFBFBD>ʹ<EFBFBD>üĴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD>
							 | 
						|||
| 
								 | 
							
								// globalptr, r10
							 | 
						|||
| 
								 | 
							
								// cpu_zpage <EFBFBD><EFBFBD>Ӧ r11<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹƫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>൱<EFBFBD><EFBFBD> MAP 0, globalptr<EFBFBD><EFBFBD>
							 | 
						|||
| 
								 | 
							
								// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> globalptr ָ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD>ƫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								.equ opz,           0                    // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
							 | 
						|||
| 
								 | 
							
								.equ readmem_tbl,   opz + 4              // <EFBFBD><EFBFBD><EFBFBD>ڴ溯<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD>
							 | 
						|||
| 
								 | 
							
								.equ writemem_tbl,  readmem_tbl + 32     // д<EFBFBD>ڴ溯<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD>
							 | 
						|||
| 
								 | 
							
								.equ memmap_tbl,    writemem_tbl + 32    // ROM/RAM ӳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD>
							 | 
						|||
| 
								 | 
							
								.equ cpuregs,       memmap_tbl + 32      // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> 6502 <EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD>ʼƫ<EFBFBD><EFBFBD>
							 | 
						|||
| 
								 | 
							
								.equ m6502_s,       cpuregs + 28         // ջָ<EFBFBD><EFBFBD> s
							 | 
						|||
| 
								 | 
							
								.equ lastbank,      m6502_s + 4          // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD> ROM bank <EFBFBD><EFBFBD>ַ
							 | 
						|||
| 
								 | 
							
								.equ nexttimeout,   lastbank + 4         // <EFBFBD>´γ<EFBFBD>ʱ<EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD>ַ
							 | 
						|||
| 
								 | 
							
								.equ rombase,       nexttimeout + 4      // ROM <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>ַ
							 | 
						|||
| 
								 | 
							
								.equ romnumber,     rombase + 4          // ROM <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
							 | 
						|||
| 
								 | 
							
								.equ rommask,       romnumber + 4        // ROM <EFBFBD><EFBFBD><EFBFBD>루romsize-1<EFBFBD><EFBFBD>
							 | 
						|||
| 
								 | 
							
								.equ joy0data,      rommask + 4          // <EFBFBD>ֱ<EFBFBD> 1 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
							 | 
						|||
| 
								 | 
							
								.equ joy1data,      joy0data + 4         // <EFBFBD>ֱ<EFBFBD> 2 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
							 | 
						|||
| 
								 | 
							
								.equ clocksh,       joy1data + 4         // APU ʱ<EFBFBD>Ӽ<EFBFBD><EFBFBD><EFBFBD>
							 | 
						|||
| 
								 | 
							
								.equ cpunmif,       clocksh + 4          // NMI <EFBFBD>жϱ<EFBFBD>־
							 | 
						|||
| 
								 | 
							
								.equ cpuirqf,       cpunmif + 4          // IRQ <EFBFBD>жϱ<EFBFBD>־
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								.equ C, 0x01    // 6502 flags  6502<EFBFBD><EFBFBD>־
							 | 
						|||
| 
								 | 
							
								.equ Z, 0x02
							 | 
						|||
| 
								 | 
							
								.equ I, 0x04
							 | 
						|||
| 
								 | 
							
								.equ D, 0x08
							 | 
						|||
| 
								 | 
							
								.equ B, 0x10    // (always 1 except when IRQ pushes it) IRQ<EFBFBD>ⲿ<EFBFBD>ж<EFBFBD>
							 | 
						|||
| 
								 | 
							
								.equ R, 0x20    // (locked at 1)
							 | 
						|||
| 
								 | 
							
								.equ V, 0x40
							 | 
						|||
| 
								 | 
							
								.equ N, 0x80
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								.equ CYC_C,         0x01	// Carry bit <EFBFBD><EFBFBD>λ
							 | 
						|||
| 
								 | 
							
								.equ BRANCH,        0x02	// branch instruction encountered	<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ֧<EFBFBD><EFBFBD>
							 | 
						|||
| 
								 | 
							
								.equ CYC_I,         0x04	// IRQ mask
							 | 
						|||
| 
								 | 
							
								.equ CYC_D,         0x08	// Decimal bit	С<EFBFBD><EFBFBD>λ
							 | 
						|||
| 
								 | 
							
								.equ CYC_V,         0x40	// Overflow bit	 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
							 | 
						|||
| 
								 | 
							
								.equ CYC_MASK,      0xFF    // CYCLE-1	;Mask
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 |