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"); }
uint STDCALL gesave_bwdc( uint val ) { if ( val >= KERNEL_COUNT && !gecodes[ val ] ) { print("GESAVE ERROR %i\n", val ); os_getchar(); } return gesave_bwdi( val >= KERNEL_COUNT ? gecodes[ val ] : val ); }
uint STDCALL gesave_cmdflag( uint val ) { uint flag = val & 0xFF000000; val &= 0xFFFFFF; if ( val >= KERNEL_COUNT ) { if ( !gecodes[ val ] ) { print("GESAVE ERROR %i\n", val ); os_getchar(); } else val = gecodes[ val ]; } gesave_adduint( val | flag ); return val | flag; }