/* Quick hack to replicate the dos debug utility in linux */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <asm/io.h>

#define MAX_LEN 100

void main(int argc, char *argv[])
{
  char string[100];
  unsigned int inAdd;
  unsigned int outAdd;

  unsigned char inByte;
  unsigned short inWord;
  unsigned int outByte;

  if (iopl(3) != 0)
  {
      perror("iopl");
      exit(1);
  }

  while(strcmp(string, "q\n")){
    
    printf("- ");
    fgets(string, MAX_LEN, stdin);

    if(string[0] == 'i') {
      sscanf(string, "i %x\n", &inAdd);
      inByte = inb(inAdd);
      printf("0x%02x\n", inByte);
    }

     else if(string[0] == 'n') {
      sscanf(string, "n %x\n", &inAdd);
      inWord = inw(inAdd);
      printf("0x%04x\n", inWord);
    }
    
    else if(string[0] == 'o') {
      sscanf(string, "o %x %x\n", &outAdd, &outByte);

      outb((unsigned char)outByte, outAdd);
    }
    
    else if(string[0] == 'q')
      exit(0);
    else if(string[0] == 'e')
      exit(0);
    else
      printf("  ^ERROR\n");
  }
  
}
