void PIC::SUBWF(){ qDebug() << "SUBWF"; qDebug() << regModel->reg[bank][f]; qDebug() << W; erg = regModel->reg[bank][f] - W; if(erg < 0){ erg = 256 + erg; CBit(!true); }else{CBit(!false);} ChkDCBitWF(erg); //ChkCBit(erg); ChkZBit(erg); if(d==0){ W = erg; qDebug() << W; } else if(d==1){ regModel->reg[bank][f] = erg; qDebug() << regModel->reg[bank][f]; } PC(); }
void PIC::RRF(){ qDebug() << "RRF"; int carryset = regModel->reg[bank][f] & 0x80; int carryget = regModel->reg[bank][STATUS]&0x1; int erg = regModel->reg[bank][f]; erg = erg / 2; if(carryget==1){ erg=erg+128; }else if(carryget==0){ erg = erg; } if(carryset==1){ CBit(true);} else if(carryset==0){ CBit(false);} if(d == 0){ W = erg; }else if(d == 1){ regModel->reg[bank][f] = erg; } PC(); }
int PIC::ChkCBit(int){ if(erg >=256 ) { CBit(true); //return erg=0; } else CBit(false); }
void PIC::SUBLW(){ qDebug() << "SUBLW1"; erg =k - W; if(erg < 0){ erg = 256 + erg; CBit(false); }else{CBit(true);} W=erg; ChkZBit(erg); PC(); }
void PIC::XORLW(){ qDebug() << "XORLW"; erg = W ^ k; if(erg >=256){ erg = erg - 256; CBit(true); }else{CBit(false);} W=erg; ChkZBit(erg); PC(); }
void PIC::ADDLW(){ qDebug() << "ADDLW"; //int erg = regModel->reg[bank][W] + k; qDebug() << W <<"W"; qDebug() << k <<"k"; erg = W + k; if(erg >=256){ erg = erg - 256; CBit(true); }else{CBit(false);} qDebug() << erg << "erg"; //ChkCBit(erg); ChkDCBitLW(erg); ChkZBit(erg); W=erg; PC(); }
void PIC::RLF(){ qDebug() << "RLF"; //Multiplizieren int carryset = regModel->reg[bank][f] & 0x80; int carryget = regModel->reg[bank][STATUS]&0x1; qDebug() << regModel->reg[bank][f] << "f"; regModel->reg[bank][f] = regModel->reg[bank][f]*2; qDebug() << regModel->reg[bank][f] << "f"; if(carryget==1){ regModel->reg[bank][f]=regModel->reg[bank][f]+1; }else if(carryget==0){ regModel->reg[bank][f]=regModel->reg[bank][f]; } if(carryset==1){ CBit(true);} else if(carryset==0){ CBit(false);} PC(); }
COLOUR GScreenDC::Colour(COLOUR c, int Bits) { COLOUR Prev = Colour(); if (Bits < 1) Bits = GetBits(); c = CBit(24, c, Bits); rgb_color Rgb; Rgb.red = R24(c); Rgb.green = G24(c); Rgb.blue = B24(c); d->View->SetHighColor(Rgb); return Prev; }
CBit CBitPointer::operator[](int p_nBitIndex) { return CBit(m_puAddress, m_nBitOffset + p_nBitIndex); }
CBit CBitPointer::operator*() { return CBit(m_puAddress, m_nBitOffset); }
COLOUR GScreenDC::Colour() { rgb_color Rgb = d->View->HighColor(); return CBit(GetBits(), Rgb24(Rgb.red, Rgb.green, Rgb.blue), 24); }