| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -7,20 +7,20 @@ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#pragma once | 
					 | 
					 | 
					 | 
					#pragma once | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#include <cstdint> // uint8_t, uint16_t | 
					 | 
					 | 
					 | 
					#include <cstdint> // int8_t, uint8_t, uint16_t, uint32_t | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#include "processing-unit.h" | 
					 | 
					 | 
					 | 
					#include "processing-unit.h" | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					class CPU final : public ProcessingUnit { | 
					 | 
					 | 
					 | 
					class CPU final : public ProcessingUnit { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					public: | 
					 | 
					 | 
					 | 
					public: | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						CPU(unsigned int frequency); | 
					 | 
					 | 
					 | 
						explicit CPU(uint32_t frequency); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						virtual ~CPU(); | 
					 | 
					 | 
					 | 
						virtual ~CPU(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						void update() override; | 
					 | 
					 | 
					 | 
						void update() override; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						// 8-bit Arithmetic and Logic Instructions
 | 
					 | 
					 | 
					 | 
						// 8-bit Arithmetic and Logic Instructions
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						void add(uint8_t byte, uint8_t immediate = 0); | 
					 | 
					 | 
					 | 
						void add(uint8_t opcode, uint8_t immediate = 0); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						// 16-bit Arithmetic Instructions
 | 
					 | 
					 | 
					 | 
						// 16-bit Arithmetic Instructions
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -50,4 +50,6 @@ private: | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						uint8_t m_n { 0 }; // Subtraction flag (BCD)
 | 
					 | 
					 | 
					 | 
						uint8_t m_n { 0 }; // Subtraction flag (BCD)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						uint8_t m_h { 0 }; // Half Carry flag (BCD)
 | 
					 | 
					 | 
					 | 
						uint8_t m_h { 0 }; // Half Carry flag (BCD)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						uint8_t m_c { 0 }; // Carry flag
 | 
					 | 
					 | 
					 | 
						uint8_t m_c { 0 }; // Carry flag
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						int8_t m_wait_cycles { 0 }; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}; | 
					 | 
					 | 
					 | 
					}; | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
					 | 
					 | 
					
  |