Code: Select all
// i8080_my.cpp - Alexander Shabarshin (26-Aug-2012)
#include "i8080.h"
#include "i8080_hal.h"
#include "proc8080.h"
class my8080 : public Processor8080
{
public:
my8080():Processor8080(){};
~my8080(){};
SH_BYTE get(SH_WORD a){return (SH_BYTE)i8080_hal_memory_read_byte(a);};
void put(SH_WORD a,SH_BYTE b){i8080_hal_memory_write_byte(a,b);};
int newstep(){unsigned long t=timel;step();time=timel;return (timel>t)?timel-t:1;};
int getA(){return A;};
int getB(){return B;};
int getC(){return C;};
int getD(){return D;};
int getE(){return E;};
int getH(){return H;};
int getL(){return L;};
} *my = NULL;
void i8080_init(void){my = new my8080();}
int i8080_instruction(void){return my->newstep();}
void i8080_jump(int addr){my->setPC(addr);}
int i8080_pc(void){return my->getPC();}
int i8080_regs_af(void){return my->getPSW();}
int i8080_regs_bc(void){return my->getBC();}
int i8080_regs_de(void){return my->getDE();}
int i8080_regs_hl(void){return my->getHL();}
int i8080_regs_sp(void){return my->getSP();}
int i8080_regs_a(void){return my->getA();}
int i8080_regs_b(void){return my->getB();}
int i8080_regs_c(void){return my->getC();}
int i8080_regs_d(void){return my->getD();}
int i8080_regs_e(void){return my->getE();}
int i8080_regs_h(void){return my->getH();}
int i8080_regs_l(void){return my->getL();}
Code: Select all
bash-4.1$ make
g++ -O3 -o i8080_test2 proc8080.cpp i8080_my.cpp i8080_hal.c i8080_test.c
./i8080_test2
*********************************
File "CPUTEST.COM" loaded, size 19200
DIAGNOSTICS II V1.2 - CPU TEST
COPYRIGHT (C) 1981 - SUPERSOFT ASSOCIATES
ABCDEFGHIJKLMNOPQRSTUVWXYZ
CPU IS 8080/8085
BEGIN TIMING TEST
END TIMING TEST
CPU FAILED:
ERROR COUNT 0001H
INSTRUCTION SEQUENCE WAS 050000H
REGISTER f CONTAINS 46H
BUT SHOULD CONTAIN 56H
REGISTER VALUE BEFORE INSTRUCTION SEQUENCE WAS 02H
TEST NUMBER 0011H
Jump to 0000 from 3B25
*********************************
File "TEST.COM" loaded, size 1793
MICROCOSM ASSOCIATES 8080/8085 CPU DIAGNOSTIC VERSION 1.0 (C) 1980
CPU IS OPERATIONAL
Jump to 0000 from 06B7
*********************************
File "8080PRE.COM" loaded, size 1024
8080 Preliminary tests complete
Jump to 0000 from 0005
*********************************
File "8080EX1.COM" loaded, size 4608
8080 instruction exerciser (KR580VM80A CPU)
dad <b,d,h,sp>................ OK
aluop nn...................... ERROR **** crc expected:9e922f9e found:1eac32ec