UNPKG

eighty-eighty-js

Version:

A nice little Intel 8080 emulator for Node.js and Browser!

135 lines (134 loc) 3.58 kB
import { u16, u8 } from 'typed-numbers'; export declare enum Flag { /** Sign flag. */ S = 7, /** Zero flag. */ Z = 6, /** Auxiliary Carry flag (also called AC). */ A = 4, /** Parity flag. */ P = 2, /** Carry flag. */ C = 0 } /** * Represents the register inside the CPU. */ export declare class Register { /** Accumulator (register A). */ a: u8; /** F register (indirectly accessible by the programmer). */ f: u8; /** B register. */ b: u8; /** C register. */ c: u8; /** D register. */ d: u8; /** E register. */ e: u8; /** H register. */ h: u8; /** L register. */ l: u8; /** 16-bit stack pointer register. */ sp: u16; /** Program counter. */ pc: u16; /** * Get register A and F paired. * @return - The value of register A and F combined into one integer. */ getAF(): u16; /** * Get register B and C paired. * @return - The value of register B and C combined into one integer. */ getBC(): u16; /** * Get register D and E paired. * @return - The value of register D and E combined into one integer. */ getDE(): u16; /** * Get register H and L paired. * @return - The value of register H and L combined into one integer. */ getHL(): u16; /** * Set register A and F paired. * @param value - The new value of register A. The new value of register F will be calculated from it. */ setAF(value: u16): void; /** * Set register B and C paired. * @param value - The new value of register B and C combined into one integer. */ setBC(value: u16): void; /** * Set register D and E paired. * @param value - The new value of register D and E combined into one integer. */ setDE(value: u16): void; /** * Set register H and L paired. * @param value - The new value of register H and L combined into one integer. */ setHL(value: u16): void; /** * Set the value of a flag. * @param flag - The flag. * @param value - The new value. */ setFlag(flag: Flag, value: boolean): void; /** * Get the value of a flag. * @param flag - The flag. */ getFlag(flag: Flag): boolean; /** * Helper for setting S flag straight from the result of a calculation. * @param result - Result of a calculation. */ setFlagS(result: u8): void; /** * Helper for setting Z flag straight from the result of a calculation. * @param result - Result of a calculation. */ setFlagZ(result: u8): void; /** * Helper for setting A flag. * @param value - The new value. */ setFlagA(value: boolean): void; /** * Helper for setting P flag straight from the result of a calculation. * @param result - Result of a calculation. */ setFlagP(result: u8): void; /** * Helper for setting C flag. * @param value - The new value. */ setFlagC(value: boolean): void; /** * Helper for getting S flag. */ getFlagS(): boolean; /** * Helper for getting Z flag. */ getFlagZ(): boolean; /** * Helper for getting A flag. */ getFlagA(): boolean; /** * Helper for getting P flag. */ getFlagP(): boolean; /** * Helper for getting C flag. */ getFlagC(): boolean; }