From: Inbar Raz Subj: Accessing the cursor keys ____________________________________________________________________________ Hello everyone. I have seen a debate here about accessing the cursor keys. Well, having written a resident dialer that allows you to dial from the cursor keys, I am posting here a segment of its source, to display the use of the cursor keys. If anyone wants the full source, lemme know. --------------------------------- cut here --------------------------------- Kbd: mov ah,010h int 16h ; Extended kbd read cmp al,01Bh ; ESCape? jz GoodBye1 cmp al,00Dh ; Done? jz Done1 cmp ax,00E08h ; Backspace? jnz Label1 mov bx,offset NumBuf cmp NumPtr,bx jbe Kbd ; Beginning of line? dec NumPtr mov si,NumPtr mov byte ptr [si],000h ; from buffer too jmp Kbd Done1: jmp Done Label1: cmp al,000h ; Extended ASCII? jnz Label2 cmp ah,047h ; Keypad? jb Kbd cmp ah,052h ; - " - ja Kbd mov bx,offset XlatTbl sub bx,047h ; To make up for partiality mov al,ah xlat ; Translate key ; Table is brought in the end cmp al,000h ; If illegal, jz Kbd ; get a new one Echo: mov bx,offset NumBuf <<< some irrelevant code >>> Label3: mov si,NumPtr <<< some irrelevant code >>> Label2: cmp al,02Dh jz Echo ; '-' cmp ah,026h jnz Label5 and al,04Fh cmp al,04Ch jnz Kbd1 mov bx,offset NumBuf cmp NumPtr,bx jne Kbd1 ; Beginning of line? mov AllDone,001h jmp Echo Label5: cmp al,030h jb Kbd1 cmp al,039h jna Echo jmp Kbd1 Done: mov si,NumPtr ; Translation table: XlatTbl db 037h, 038h, 039h, 0, 034h, 035h db 036h, 0, 031h, 032h, 033h, 030h --------------------------------- cut here --------------------------------- Inbar Raz