void VM_SetSinglePort(void) { uint8 port, data, msk; volatile uint8 * dptr, * pptr; data = LOBYTE(VM_PopW()); port = LOBYTE(VM_PopW()) & SINGLE_PORT_MASK; if (port > ((uint8)7)) { msk = port & ((uint8)0x07); dptr = &HAL_BYTE_PORT_DDR1; pptr = &HAL_BYTE_PORT1; } else { msk = port; dptr = &HAL_BYTE_PORT_DDR0; pptr = &HAL_BYTE_PORT0; } msk = BitTab8[msk]; if (data != ((uint8)0)) { *pptr |= msk; /* alle Werte ungleich '0' führen zu Hi-Pegel. */ } else { *pptr &= ~msk; } *dptr |= msk; /* Port als Ausgang konfigurieren. */ }
void Lcd_goto(void) { uint8 pos; uint8 line; pos = (uint8)VM_PopW(); line = (uint8)VM_PopW(); }
void Lcd_print(void) { uint8 length; uint8 * buf; length = (uint8)VM_PopW(); /* length */ buf = BPTR(VM_UserRAM, VM_PopW()); /* buf[] */ }
void VM_GetNibblePort(void) { uint8 port, data; port = LOBYTE(VM_PopW()) & NIBBLE_PORT_MASK; switch (port) { case 0: case 1: data = HAL_BYTE_PORT0; break; case 2: case 3: data = HAL_BYTE_PORT1; break; default: CC_ASSERT(FALSE, ERROR_ILLOPA); } if ((port & ((uint8)0x01)) == ((uint8)0x1)) { data >>= 4; }
void VM_GetSinglePort(void) { uint8 port, data, msk; port = LOBYTE(VM_PopW()) & SINGLE_PORT_MASK; if (port > ((uint8)7)) { msk = port & ((uint8)0x07); data = HAL_BYTE_PORT1; } else { msk = port; data = HAL_BYTE_PORT0; } msk = BitTab8[msk]; if ((data & msk) == msk) { data = (uint8)CC_TRUE; } else { data = (uint8)CC_FALSE; } VM_PushW((uint16)data); }
void Lcd_scroll(void) { uint8 pos; pos = (uint8)VM_PopW(); }
void Lcd_show_cursor(void) { uint8 yesno; yesno = (uint8)VM_PopW(); }
void Lcd_put(void) { uint8 ch; ch = (uint8)VM_PopW(); }