Exemple #1
0
/** quotient = 0x3322 /0x33 = 0x0100
*   remainder  0x3322 /0x33 = 0x22;
*
*  X = quotient
*  A = remainder
*/
void test_div_x_a(void)
{
  XH = 0X33;
  XL = 0X22;
  
  A = 0X33;
  uint8_t instr[] = {0XAB};
    
  int length = div_x_a(instr);
  TEST_ASSERT_EQUAL_INT16(0x01, XH);
  TEST_ASSERT_EQUAL_INT16(0x00, XL);
  TEST_ASSERT_EQUAL_INT8(0x22, A);
  TEST_ASSERT_EQUAL(1, length);
}
Exemple #2
0
void test_div_y_a(void)
{
  YH = 0X33;
  YL = 0X22;
  
  A = 0X33;
  uint8_t instr[] = {0XAB};
    
  int length = div_y_a(instr);
  TEST_ASSERT_EQUAL_INT16(0x01, YH);
  TEST_ASSERT_EQUAL_INT16(0x00, YL);
  TEST_ASSERT_EQUAL_INT8(0x22, A);
  TEST_ASSERT_EQUAL(2, length);
}
Exemple #3
0
TEST(fs, OpenShouldComplete)
{
	cnmkfs();
	cnmount();
	dir_ptr* dir = cnopendir("");
	int16_t fd1 = cnopen(dir, "file1.txt", FD_WRITE);
	int16_t fd2 = cnopen(dir, "file2.txt", FD_WRITE);
	system("hd /tmp/fs.bin");
	TEST_ASSERT_EQUAL_INT16(fd1, 0);
	TEST_ASSERT_EQUAL_INT16(fd2, 1);
	int16_t result4 = cnclose(fd2);
	int16_t result3 = cnclose(fd1);
	TEST_ASSERT_EQUAL_INT16(result3, 0);
	TEST_ASSERT_EQUAL_INT16(result4, 0);
	cnumount();
}
Exemple #4
0
void test_trap(void){
  I0 = 0;
  I0 = 0;
  *pcToLoad = 0x012244; //*pcToLoad + 1 = 0x012245
  
//pcl =0x45
//pch =0x22
//pce =0x01 
  YL = 0XE4;
  YH = 0XD6;
  XL = 0XC9;
  XH = 0X68;
  A  = 0XBB;
  CC = 0X55;
  
	uint8_t instr[] = {0XBB};

  TEST_ASSERT_EQUAL_INT8(1, trap(instr));
  TEST_ASSERT_EQUAL_INT16(0x012245, *pcToLoad);
  TEST_ASSERT_EQUAL_INT8(0X55, mcu_pop());
  TEST_ASSERT_EQUAL_INT8(0XBB, mcu_pop());
  TEST_ASSERT_EQUAL_INT8(0X68, mcu_pop());
  TEST_ASSERT_EQUAL_INT8(0XC9, mcu_pop());
  TEST_ASSERT_EQUAL_INT8(0XD6, mcu_pop());
  TEST_ASSERT_EQUAL_INT8(0XE4, mcu_pop());
  TEST_ASSERT_EQUAL_INT8(0X01, mcu_pop());
  TEST_ASSERT_EQUAL_INT8(0X22, mcu_pop());
  TEST_ASSERT_EQUAL_INT8(0X45, mcu_pop());
  
  TEST_ASSERT_EQUAL_INT8(1, I0);
  TEST_ASSERT_EQUAL_INT8(1, I1);
}
Exemple #5
0
void test_sub_sp_byte(void)
{
  SET_SP(0x1100);
  uint8_t instr[] = {0XAB, 0X02};
  
  TEST_ASSERT_EQUAL(2, sub_sp_byte(instr));
  TEST_ASSERT_EQUAL_INT16(0x10FE, SP);
}
Exemple #6
0
void test_incw_y(void){

  SET_Y(0x2222);
  uint8_t instr[] = {0XAB};
  
  TEST_ASSERT_EQUAL_INT8(2, incw_y(instr));
  TEST_ASSERT_EQUAL_INT16(0x2223, Y);
}
Exemple #7
0
void test_incw_x(void){

  SET_X(0x2222);
  uint8_t instr[] = {0XAB};
  
  TEST_ASSERT_EQUAL_INT8(1, incw_x(instr));
  TEST_ASSERT_EQUAL_INT16(0x2223, X);
}
Exemple #8
0
void test_incw_x_set_V_flag(void){

  SET_X(0x7FFF);
  uint8_t instr[] = {0XAB};
  
  TEST_ASSERT_EQUAL_INT8(1, incw_x(instr));
  TEST_ASSERT_EQUAL_INT16(0x8000, X);
  TEST_ASSERT_EQUAL_INT8(1, V);
}
void test_ldw_x_shortoff_sp(void){
  SET_SP(0X2B11);
  uint8_t instr[] = {0XFB, 0X11};
  
  MEM_WRITE_WORD(0X2B22 , 0xAE11);  //0x2B11 + 0X11 = 0X2B22
  
  TEST_ASSERT_EQUAL_INT8(2, ldw_x_shortoff_sp(instr));  
  TEST_ASSERT_EQUAL_INT16(0xAE11, X);
}
void test_ldw_x_shortmem(void){
  uint8_t shortMEM    = 0xAD;
  MEM_WRITE_WORD(shortMEM, 0xAE11);
  
  uint8_t instr[] = {0XBB, shortMEM};
  
  TEST_ASSERT_EQUAL_INT8(2, ldw_x_shortmem(instr));
  TEST_ASSERT_EQUAL_INT16(0xAE11, X);
}
Exemple #11
0
void test_swapw_y(void)
{
  SET_Y(0x0000);
  uint8_t instr[] = {0XAB};
  
  TEST_ASSERT_EQUAL_INT8(2, swapw_y(instr));
  TEST_ASSERT_EQUAL_INT16(0x0, Y); 
  TEST_ASSERT_EQUAL_INT8(0, N); 
  TEST_ASSERT_EQUAL_INT8(1, Z); 
}
Exemple #12
0
void test_swapw_x(void)
{
  SET_X(0xBBCC);
  uint8_t instr[] = {0XAB};
  
  TEST_ASSERT_EQUAL_INT8(1, swapw_x(instr));
  TEST_ASSERT_EQUAL_INT16(0xCCBB, X); 
  TEST_ASSERT_EQUAL_INT8(1, N); //bit 15 is 1
  TEST_ASSERT_EQUAL_INT8(0, Z); 
}
Exemple #13
0
void test_btjt_longmem_pos_5_given_the_bit_is_0(void){
  C = 1;
  uint16_t longmem = 0x1101;
  MEM_WRITE_BYTE(longmem, 0);
  
  uint8_t instr[] = {0XBB, 0x11, 0x01, 0xCC};

  TEST_ASSERT_EQUAL_INT8(5, btjt_longmem_pos_5(instr));
  TEST_ASSERT_EQUAL_INT16(0x0104, *pcToLoad );
  TEST_ASSERT_EQUAL_INT8(0, C);
}
void test_ldw_y_shortptr_w_y(void){ 
  SET_Y(0X0011);
  uint8_t instr[] = {0XFB, 0X13};
  
  MEM_WRITE_BYTE(0X13 , 0x11);  
  MEM_WRITE_BYTE(0X14 , 0x11);  
  MEM_WRITE_WORD(0x1122 , 0xAE11);  // 0X1111 + 0X11 = 0X1122
  
  TEST_ASSERT_EQUAL_INT8(3, ldw_y_shortptr_w_y(instr));  
  TEST_ASSERT_EQUAL_INT16(0xAE11, Y);
}
void test_ldw_x_longptr_w_x(void){
  SET_X(0X0011);
  uint8_t instr[] = {0XFB, 0X13, 0X00};
  
  MEM_WRITE_BYTE(0X1300 , 0xAA );  
  MEM_WRITE_BYTE(0X1301 , 0xBB);  
  MEM_WRITE_WORD(0xAACC , 0xAE11);  // 0XAABB + 0X11 = 0XAACC
  
  TEST_ASSERT_EQUAL_INT8(4, ldw_x_longptr_w_x(instr));  
  TEST_ASSERT_EQUAL_INT16(0xAE11, X );
}
Exemple #16
0
TEST(fs, SeekShouldComplete)
{
	cnmkfs();
	cnmount();
	dir_ptr* dir = cnopendir("");
	int16_t fd1 = cnopen(dir, "file1.txt", FD_WRITE);
	int8_t result = cnseek(fd1, 10000);
	system("hd /tmp/fs.bin");
	TEST_ASSERT_EQUAL_INT16(result, 0);
	cnumount();
}
Exemple #17
0
void test_btjt_longmem_pos_7_given_the_bit_is_1(void){
  C = 0;
  uint16_t longmem = 0x1101;
  MEM_WRITE_BYTE(longmem, 0X80);
  
  uint8_t instr[] = {0XBB, 0x11, 0x01, 0xCC};

  TEST_ASSERT_EQUAL_INT8(5, btjt_longmem_pos_7(instr));
  TEST_ASSERT_EQUAL_INT16(0xD0, *pcToLoad );
  TEST_ASSERT_EQUAL_INT8(1, C);
}
/** quotient = 0x3322 /0x33 = 0x0100
*   remainder =  0x3322 /0x33 = 0x22;
*
*  X = quotient
*  A = remainder
*/
void test_mcu_div_with_remainder_22(void)
{
  XH = 0X33;
  XL = 0X22;
  
  A = 0X33;
    
  mcu_div( &XH);
  TEST_ASSERT_EQUAL_INT16(0x01, XH);
  TEST_ASSERT_EQUAL_INT16(0x00, XL);
  TEST_ASSERT_EQUAL_INT8(0x22, A);
  
  TEST_ASSERT_EQUAL(0, V);
  TEST_ASSERT_EQUAL(0, I1);
  TEST_ASSERT_EQUAL(0, H);
  TEST_ASSERT_EQUAL(0, I0);
  TEST_ASSERT_EQUAL(0, N);
  TEST_ASSERT_EQUAL(0, Z);
  TEST_ASSERT_EQUAL(0, C);
}
/** quotient = 0x3322 /0x11 = 0x0302
*   remainder =  0x3322 /0x11 = 0;
*
*  X = quotient
*  A = remainder
*/
void test_mcu_div_with_normal_division(void)
{
  XH = 0X33;
  XL = 0X22;
  
  A = 0X11;
    
  mcu_div( &XH);
  TEST_ASSERT_EQUAL_INT16(0x03, XH);
  TEST_ASSERT_EQUAL_INT16(0x02, XL);
  TEST_ASSERT_EQUAL_INT8(0x00, A);
  
  TEST_ASSERT_EQUAL(0, V);
  TEST_ASSERT_EQUAL(0, I1);
  TEST_ASSERT_EQUAL(0, H);
  TEST_ASSERT_EQUAL(0, I0);
  TEST_ASSERT_EQUAL(0, N);
  TEST_ASSERT_EQUAL(0, Z);
  TEST_ASSERT_EQUAL(0, C);
}
Exemple #20
0
void test_srlw_y(void){
  SET_Y(0x0764);
  uint8_t instr[] = {0XAB};
  
  N = 1;
  Z = 1;
  C = 1;
  
  TEST_ASSERT_EQUAL_INT8(2, srlw_y(instr));
  TEST_ASSERT_EQUAL_INT16(0x03B2, Y); 
  TEST_ASSERT_EQUAL_INT8(0, N); 
  TEST_ASSERT_EQUAL_INT8(0, Z); 
  TEST_ASSERT_EQUAL_INT8(0, C); 
}
Exemple #21
0
void test_srlw_x_make_Z_to_1_C_to_0(void){
  SET_X(0x0);
  uint8_t instr[] = {0XAB};
  
  N = 1;
  Z = 0;
  C = 1;
  
  TEST_ASSERT_EQUAL_INT8(1, srlw_x(instr));
  TEST_ASSERT_EQUAL_INT16(0x0, X); 
  TEST_ASSERT_EQUAL_INT8(0, N); 
  TEST_ASSERT_EQUAL_INT8(1, Z); 
  TEST_ASSERT_EQUAL_INT8(0, C); 
}
Exemple #22
0
void test_srlw_x(void){
  SET_X(0x8765);
  uint8_t instr[] = {0XAB};
  
  N = 1;
  Z = 1;
  C = 0;
  
  TEST_ASSERT_EQUAL_INT8(1, srlw_x(instr));
  TEST_ASSERT_EQUAL_INT16(0x43B2, X); 
  TEST_ASSERT_EQUAL_INT8(0, N); 
  TEST_ASSERT_EQUAL_INT8(0, Z); 
  TEST_ASSERT_EQUAL_INT8(1, C); 
}
Exemple #23
0
void test_pushw_y(void)
{
  YH = 0xAA;
  YL = 0xBB;
  SET_Y(0xAABB);
  
  uint8_t instr[] = {0XAB};

  uint8_t length = pushw_y(instr);
  TEST_ASSERT_EQUAL_INT8(0xBB, MEM_READ_BYTE(inputSP) ); 
  TEST_ASSERT_EQUAL_INT8(0xAA, MEM_READ_BYTE(inputSP_DEC) ); 
  TEST_ASSERT_EQUAL_INT16( inputSP-2 , SP ); // test is SP decreament 2 time
  TEST_ASSERT_EQUAL_INT8( 2, length ); 
}
void test_ldw_x_word(void){
  uint8_t instr[] = {0XAB, 0xAE, 0x11};
  
  TEST_ASSERT_EQUAL_INT8(3, ldw_x_word(instr));
  TEST_ASSERT_EQUAL_INT16(0xAE11, X);
}