Subversion Repositories Kolibri OS

Rev

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

  1. int PID=-1;
  2.  
  3. int kdebugger_write(unsigned ID, unsigned n, unsigned addr, unsigned* buff)
  4. {
  5.     int num;
  6.     __asm__ __volatile__(
  7.         "int $0x40"
  8.         :"=a"(num)
  9.         :"a"(69), "b"(7), "c"(ID), "d"(n),"S"(addr),"D"(buff)
  10.     );
  11.     return num;
  12. }
  13.  
  14. int kdebugger_read(unsigned ID, unsigned n, unsigned addr, unsigned* buff)
  15. {
  16.     int num;
  17.     __asm__ __volatile__(
  18.         "int $0x40"
  19.         :"=a"(num)
  20.         :"a"(69), "b"(6), "c"(ID), "d"(n),"S"(addr),"D"(buff)
  21.     );
  22.     return num;
  23. }
  24.  
  25. void kdebugger_pause(unsigned ID)
  26. {
  27.     __asm__ __volatile__(
  28.         "int $0x40"
  29.         ::"a"(69), "b"(4), "c"(ID)
  30.     );
  31. }
  32.  
  33. void kdebugger_play(unsigned ID)
  34. {
  35.     __asm__ __volatile__(
  36.         "int $0x40"
  37.         ::"a"(69), "b"(5), "c"(ID)
  38.     );
  39. }
  40.  
  41. void kdebugger_disconnect(unsigned ID)
  42. {
  43.     __asm__ __volatile__(
  44.         "int $0x40"
  45.         ::"a"(69), "b"(3), "c"(ID)
  46.     );
  47. }
  48.  
  49. int load_game(char *app_name, char *args)
  50. {    
  51.     #pragma pack(push, 1)
  52.     struct file_op_t
  53.     {
  54.         unsigned    fn;
  55.         unsigned    flags;
  56.         char*       args;
  57.         unsigned    res1, res2;
  58.         char        zero;
  59.         char*       app_name  __attribute__((packed));
  60.     } file_op;
  61.     #pragma pack(pop)
  62.  
  63.     memset(&file_op, 0, sizeof(file_op));
  64.     file_op.fn = 7;
  65.     file_op.flags = 1;
  66.     file_op.args = args;
  67.     file_op.app_name = app_name;
  68.  
  69.     register int val;
  70.     asm volatile ("int $0x40":"=a"(val):"a"(70), "b"(&file_op));
  71.     return val;
  72. }
  73.