Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1.  
  2. /*
  3.  * skip.c
  4.  *
  5. ΓΏ */
  6.  
  7. #define MEMSIZE 65536
  8. #define MASK8   0xFF
  9.  
  10. unsigned char mem[MEMSIZE/8];
  11.  
  12. void mem_reset(void)
  13. {
  14.   int i;
  15.  
  16.   for (i=0; i < sizeof(mem); i++)
  17.     mem[i] = MASK8;
  18. }
  19.  
  20. void mem_skip(int min, int max)
  21. {
  22.   int pc;
  23.  
  24.   for (pc = min; pc < max; pc++)
  25.     mem[pc >> 3] &= ~(1 << (pc & 7));
  26. }
  27.  
  28. void print_mem(void)
  29. {
  30.   int fd = creat("opmap", 0666);
  31.   int i;
  32.  
  33. #if 0
  34.   for (i=0; i < sizeof(mem); i++)
  35.     if (mem[i] != MASK8) printf("%04x: %02x\n", i * 8, mem[i]);
  36. #else
  37.   write(fd, mem, sizeof(mem));
  38. #endif
  39.  
  40.   close(fd);
  41. }
  42.  
  43. void get_range(char *s, int *min, int *max)
  44. {
  45.   sscanf(s, "%x-%x", min, max);
  46.   printf("%x-%x\n", *min, *max);
  47. }
  48.  
  49. main(int argc, char **argv)
  50. {
  51.   int i, min, max;
  52.  
  53.   mem_reset();
  54.  
  55.   for (i=1; i < argc; i++) {
  56.     get_range(argv[i], &min, &max);
  57.     mem_skip(min, max);
  58.   }
  59.  
  60.   print_mem();
  61. }
  62.