Advertisement
electroduck

BIOS Interrupts: getch() and getstr()

Nov 1st, 2015
616
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.09 KB | None | 0 0
  1. #include "input.h"
  2.  
  3. char inp_kbd_getch(void) {
  4.         char inp = 0;
  5.         __asm {
  6.                 MOV AH, 00h
  7.                 INT 16H
  8.                 MOV [inp], AL
  9.         }
  10.         return inp;
  11. }
  12.  
  13. void inp_kbd_getstr(char* buffer, UINT maxlen, char passchar) {
  14.         UINT i = 0;
  15.         char inp = 0;
  16.         while(TRUE) {
  17.                 inp = inp_kbd_getch();
  18.                 if(inp == 13) { // Enter
  19.                         return;
  20.                 } else if(inp == 8) { // Backspace
  21.                         if(i > 0) {
  22.                                 i--;
  23.                                 buffer--;
  24.                                 *buffer = 0;
  25.                                 disp_txt_putch(inp);
  26.                         }
  27.                 } else if(i < maxlen) {
  28.                         *buffer = inp;
  29.                         if(passchar==0)
  30.                                 disp_txt_putch(inp);
  31.                         else
  32.                                 disp_txt_putch(passchar);
  33.                         i++;
  34.                         buffer++;
  35.                 }
  36.         }
  37. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement