; getkey - Get a key from the console and translate VT100 ; control key sequences. ; conin equ 0F509h ;BIOS console character in public getkey_ getkey_: mvi h, 0 ;Clear H call conin ;Get key from console mov l, a ;Put key in L cpi 1bh ;Is it escape? rnz ;Return if not call conin ;Get key from console mov l, a ;Put key in L cpi '[' ;Is it escape sequence? rnz ;Return if not call conin ;Get key from console cpi 'A' ;Is it cursor up? jnz gk001 ;Try next mvi l, 'k' ;Translate to vi cursor up ora a ;Set flags ret ;Exit gk001: cpi 'B' ;Is it cursor down? jnz gk002 ;Try next mvi l, 'j' ;Translate to vi cursor down ora a ;Set flags ret ;Exit gk002: cpi 'C' ;Is it cursor right? jnz gk003 ;Try next mvi l, 'l' ;Translate to vi cursor right ora a ;Set flags ret ;Exit gk003: cpi 'D' ;Is it cursor left? jnz gk004 ;Try next mvi l, 'h' ;Translate to vi cursor left ora a ;Set flags ret ;Exit gk004: cpi '5' ;Is it page up? jnz gk005 ;Try next call conin ;Discard escape terminate mvi l, 2 ;Translate to vi page up ora a ;Set flags ret ;Exit gk005: cpi '6' ;Is it page down? jnz gk006 ;Try next call conin ;Discard escape terminate mvi l, 6 ;Translate to vi page down ora a ;Set flags ret ;Exit gk006: cpi '1' ;Is it home? jnz gk007 ;Try next call conin ;Discard escape terminate mvi l, '0' ;Translate to vi home ora a ;Set flags ret ;Exit gk007: cpi '4' ;Is it end? jnz gk008 ;Try next call conin ;Discard escape terminate mvi l, '$' ;Translate to vi end ora a ;Set flags ret ;Exit gk008: xra a ;Clear register ret