← index
ats.web/source/func_setreg.cpp
Source: ats.web/source/func_setreg.cpp
#include"function.hpp"


namespace token {
    
    void token_SetReg(const std::string &command, std::vector<lex::Token> &tokens) {
        std::string reg = icode::lcase(tokens[1].getToken());
        uint32_t val;
        if(tokens[2].getTokenType() == lex::TOKEN_HEX)
            val = icode::toHex(tokens[2].getToken());
        else if(tokens[2].getTokenType() == lex::TOKEN_DIGIT)
            val = atoi(tokens[2].getToken().c_str());
        else {
            stream << "Error: setreg requires decimal or hex argument.\r\n";
            return;
        }
        if(val > 255) {
            stream << "Error: x,y,a,p registers are 8 bits.\r\n";
            return;
        }
        
        if(reg == "x")
            code.proc.reg_x = val;
		 else if(reg == "y")
            code.proc.reg_y = val;
        else if(reg == "a")
            code.proc.reg_a = val;
        else if(reg == "p")
            code.proc.setFlags(val);
        
    }
}