/* * getkey — как getch(), но возвращает И ASCII, И позиционный скан-код, * чтобы различать расширенные клавиши (стрелки, F1..F12, PgUp/PgDn, * Home/End, Ins/Del — у них ASCII == 0 из ESTEX) и обычные символы. * * возврат = (scan << 8) | ascii * * Обычные клавиши: ascii — символ, scan — позиционный код (бит 7 * взведён при Ctrl/Alt/Shift). * Расширенные: ascii == 0, клавишу определяет scan (см. KEY_* в * ). */ #include "_conio.h" uint16_t getkey(void) __naked { __asm push ix ld c, #0x30 ; ESTEX WAITKEY: A=ASCII, D=scan, E=ASCII rst #0x10 pop ix ld e, a ; E = ASCII (защитно: канонична копия в A) ret ; __sdcccall(1) возвращает uint16_t в DE __endasm; }