mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			87 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			87 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
/*
 | 
						|
 * This file is part of PIC
 | 
						|
 * Copyright © 2012 Rachel Mant (dx-mon@users.sourceforge.net)
 | 
						|
 *
 | 
						|
 * PIC is free software: you can redistribute it and/or modify
 | 
						|
 * it under the terms of the GNU Lesser General Public License as published by
 | 
						|
 * the Free Software Foundation, either version 3 of the License, or
 | 
						|
 * (at your option) any later version.
 | 
						|
 *
 | 
						|
 * PIC is distributed in the hope that it will be useful,
 | 
						|
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
						|
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
						|
 * GNU Lesser General Public License for more details.
 | 
						|
 *
 | 
						|
 * You should have received a copy of the GNU Lesser General Public License
 | 
						|
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
						|
 */
 | 
						|
 | 
						|
enum PIC16F88Instruction
 | 
						|
{
 | 
						|
	ADDWF,
 | 
						|
	ANDWF,
 | 
						|
	CLRF,
 | 
						|
	CLRW,
 | 
						|
	COMF,
 | 
						|
	DECF,
 | 
						|
	DECFSZ,
 | 
						|
	INCF,
 | 
						|
	INCFSZ,
 | 
						|
	IORWF,
 | 
						|
	MOVF,
 | 
						|
	MOVWF,
 | 
						|
	NOP,
 | 
						|
	RLF,
 | 
						|
	RRF,
 | 
						|
	SUBWF,
 | 
						|
	SWAPF,
 | 
						|
	XORWF,
 | 
						|
	BCF,
 | 
						|
	BSF,
 | 
						|
	BTFSC,
 | 
						|
	BTFSS,
 | 
						|
	ADDLW,
 | 
						|
	ANDLW,
 | 
						|
	CALL,
 | 
						|
	CLRWDT,
 | 
						|
	GOTO,
 | 
						|
	IORLW,
 | 
						|
	MOVLW,
 | 
						|
	RETFIE,
 | 
						|
	RETLW,
 | 
						|
	RETURN,
 | 
						|
	SLEEP,
 | 
						|
	SUBLW,
 | 
						|
	XORLW
 | 
						|
};
 | 
						|
 | 
						|
class PIC16F88
 | 
						|
{
 | 
						|
public:
 | 
						|
	PIC16F88(ROM *ProgramMemory);
 | 
						|
	void Step();
 | 
						|
 | 
						|
private:
 | 
						|
	uint8_t q;
 | 
						|
	bool nextIsNop, trapped;
 | 
						|
	Memory *memory;
 | 
						|
	ROM *program;
 | 
						|
	Stack<uint16_t, 8> *CallStack;
 | 
						|
	Register<uint16_t> *PC;
 | 
						|
	Register<> *WREG, *PCL, *STATUS, *PCLATCH;
 | 
						|
	PIC16F88Instruction inst;
 | 
						|
	uint16_t instrWord;
 | 
						|
 | 
						|
private:
 | 
						|
	void DecodeInstruction();
 | 
						|
	void ProcessInstruction();
 | 
						|
 | 
						|
	uint8_t GetBank();
 | 
						|
	uint8_t GetMemoryContents(uint8_t partialAddress);
 | 
						|
	void SetMemoryContents(uint8_t partialAddress, uint8_t newVal);
 | 
						|
	void CheckZero(uint8_t value);
 | 
						|
	void StoreValue(uint8_t value, bool updateZero);
 | 
						|
	uint8_t SetCarry(bool val);
 | 
						|
	uint16_t GetPCHFinalBits();
 | 
						|
};
 |