Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. :void copyVariable(dword x)
  2. {
  3.         load_const(DSDWORD[x],DSBYTE[x+4],DSDWORD[x+5]);
  4. }
  5.  
  6. :void _stdout(dword txt)
  7. {
  8.         dword addr = txt;
  9.         WHILE(DSBYTE[addr]) addr++;
  10.         CreateFile(addr-txt,txt,"/sys/stdout");
  11. }
  12.  
  13. :dword stdcall std__stdout(dword count)
  14. {
  15.         _stdout(_str(popFast()));
  16. }
  17. :dword stdcall std__len(dword c)
  18. {
  19.         popFast();
  20.         load_const(DSDWORD[EAX+5],PY_INT,0);
  21.         RETURN 0;
  22. }
  23.  
  24. :void hexAddress(dword x,y)
  25. {
  26.         dword i = 0;
  27.         i = 8;
  28.         WHILE(i)
  29.         {
  30.                 DSBYTE[x] = DSBYTE[y&0xF+#arraySymbolHEX];
  31.                 y>>=4;
  32.                 x--;
  33.                 i--;
  34.         }
  35. }
  36. :dword stdcall std__str(dword c)
  37. {
  38.         dword n = 0;
  39.         dword m = 0;
  40.         dword l = 0;
  41.         dword v = 0;
  42.         dword f = "<function a at 0x00000000>";
  43.         dword t = 0;
  44.         dword o = 0;
  45.        
  46.         v = popFast();
  47.        
  48.         IF(DSBYTE[v+4] == PY_STR)
  49.         {
  50.                 copyVariable(v);
  51.                 return 0;
  52.         }
  53.  
  54.         switch(DSBYTE[v+4])
  55.         {
  56.                 case PY_BOOL:
  57.                         if(DSDWORD[v])
  58.                         {
  59.                                 load_const("True",PY_STR,4);
  60.                                 return 0;
  61.                         }
  62.                         load_const("False",PY_STR,5);
  63.                         return 0;
  64.                 break;
  65.                 case PY_INT:
  66.                         m = malloc(MEMBUF);
  67.                         l = itoa(DSDWORD[v],m);
  68.                         load_const(m,PY_NA_STR,l);
  69.                         return 0;
  70.                 break;
  71.                 case PY_NONE:
  72.                         load_const("None",PY_STR,4);
  73.                         return 0;
  74.                 break;
  75.                 case PY_FNC:
  76.                         hexAddress(f+24,v);
  77.                         load_const(f,PY_STR,26);
  78.                         return 0;
  79.                 break;
  80.         }
  81.         load_const("None",PY_STR,4);
  82.         return 0;
  83. }