int getMemory8(uint8_t * mem_addr) { static int kbflag=0; static int dflag=0; switch (mem_addr-mem) { case UCSR0A_IDX: #if defined(WIN32) if (!kbflag) kbflag=kbhit(); #endif if (kbflag) dflag=1; return kbflag?0xa0:0x20; case UDR0_IDX: kbflag=0; return os_getchar(); // not getchar()!! case ADCSRA_IDX: //while ((getMemory8(ADCSRA_328P) & (1 << ADIF)) == 0) // Ende der AD-Wandlung abwarten mit ADF==4 return mem_addr[0]|(1<<4); default: #if _DEBUG if (mem_addr-mem<0||mem_addr-mem>=MAXMEMORY) { showstack("out of range"); printf("memory8 [0x%04x]->%d;\n", mem_addr-mem, mem_addr[0]); } else { // printf("memory8 [0x%04x]->%d;\n", top.s1.i, mem[top.s1.i]); } #endif return mem_addr[0]; } // if (dflag) showstack("dflag==1"); }
void post_op(void) { #ifdef DEBUG showstack("\0"); #endif #ifndef IEEE if (errno) { strlcpy(dispstr, "error", sizeof(dispstr)); DrawDisplay(); entered=3; errno=0; } #endif }