?login_element?

Subversion Repositories NedoOS

Rev

Rev 50 | Blame | Compare with Previous | Last modification | View Log | Download

  1. //// ьр°шээючртшёшь√х яЁюЎхфєЁ√ ш юс· тыхэш 
  2.  
  3. BYTE _veryoldreg;
  4. BYTE _baseN;
  5. UINT _reglist;
  6.  
  7. CONST UINT _BIAS = 0;
  8.  
  9. PROC asmbytepopvalue()
  10. {
  11.   DEC _nvalues;
  12.   IF (_asms) {
  13.     ;;writefout((BYTE)_value[_nvalues]/**(BYTE)asmpopvalue()*/); //compatible version
  14.     /*writefout(*(PBYTE)&_value[_nvalues]);*/ //fast version (little endian)
  15.   };
  16.   INC _curaddr;
  17. }
  18.  
  19. PROC asmwordpopvalue() //Ёрчэр  ЁрчЁ фэюёЄ№ UINT/DW
  20. {
  21. VAR UINT uinttempvalue;
  22.   DEC _nvalues;
  23.   IF (_asms) {
  24.     //яш°хь фрээ√х ЁхыюърЎшш яЁш эхэєыхтюь _isaddr!
  25.     IF (_isaddr!=0x00) {
  26.       uinttempvalue = _curaddr+_curshift-_curbegin; //_curaddr+_curshift-_BASEADDR;
  27.       fwrite((PBYTE)&uinttempvalue, 4, 1, _forg);
  28.     }; //
  29.     ;;uinttempvalue = (UINT)_value[_nvalues]; //(UINT)asmpopvalue()
  30.     ;;writefout((BYTE)uinttempvalue); //compatible version (эх _SIZEOF_UINT, Є.ъ. ЄєЄ эрфю ЁрчьхЁ фы  ЄрЁухЄр!)
  31.     ;;writefout((BYTE)(uinttempvalue>>8)); //compatible version (эх _SIZEOF_UINT, Є.ъ. ЄєЄ эрфю ЁрчьхЁ фы  ЄрЁухЄр!)
  32.     ;;writefout((BYTE)(uinttempvalue>>16)); //compatible version (эх _SIZEOF_UINT, Є.ъ. ЄєЄ эрфю ЁрчьхЁ фы  ЄрЁухЄр!)
  33.     ;;writefout((BYTE)(uinttempvalue>>24)); //compatible version (эх _SIZEOF_UINT, Є.ъ. ЄєЄ эрфю ЁрчьхЁ фы  ЄрЁухЄр!)
  34.     /*fwrite((PBYTE)&_value[_nvalues], 4, 1, _fout);*/ //fast version (little endian) (эх _SIZEOF_UINT, Є.ъ. ЄєЄ эрфю ЁрчьхЁ фы  ЄрЁухЄр!)
  35.   };
  36.   _curaddr = _curaddr + 4; //эх _SIZEOF_UINT, Є.ъ. ЄєЄ эрфю ЁрчьхЁ фы  ЄрЁухЄр!
  37. }
  38.  
  39. PROC asmlong(LONG value) //Ёрчэр  ЁрчЁ фэюёЄ№ LONG/DL
  40. {
  41.   asmbyte((BYTE)value); //compatible version
  42.   asmbyte((BYTE)((UINT)value>>8)); //compatible version
  43.   asmbyte((BYTE)(value>>16L)); //compatible version
  44.   asmbyte((BYTE)(value>>24L)); //compatible version
  45.   asmbyte((BYTE)(value>>32L)); //compatible version
  46.   asmbyte((BYTE)(value>>40L)); //compatible version
  47.   asmbyte((BYTE)(value>>48L)); //compatible version
  48.   asmbyte((BYTE)(value>>56L)); //compatible version
  49. }
  50.  
  51. PROC asmorgword(LONG addr) //Ёрчэр  ЁрчЁ фэюёЄ№ POINTER
  52. {
  53. //todo ORG
  54. }
  55.  
  56. PROC asmdispbshort(INT ivalue) //фы  ъюЁюЄъшї яхЁхїюфют (-100..+100?) //ivalue = ёьх∙хэшх рфЁхёр
  57. //Bcc addr
  58. //%1101 cccc LLLL LLLL
  59. //L фюьэюцрхЄё  фю 2 ш яЁшсрты хЄё  ъ PC+4!!! (схч юъЁєуыхэш  фю 4)
  60. {
  61.   IF ((UINT)(ivalue + (INT)0x0100) >= 0x0200) { //todo test
  62.     errstr("far bcc +d"); enderr();
  63.   };
  64.   asmbyte((BYTE)(ivalue>>1)); //юс чрЄхы№эю чряшёрЄ№, шэрўх яюхфєЄ рфЁхёр!
  65.   asmbyte(_base); //юс чрЄхы№эю чряшёрЄ№, шэрўх яюхфєЄ рфЁхёр!
  66. }
  67.  
  68. PROC asmdispb(INT ivalue) //фы  ъюЁюЄъшї яхЁхїюфют (-800..+800) //ivalue = ёьх∙хэшх рфЁхёр
  69. //B addr
  70. //%1110 0sLL LLLL LLLL (S ё фюяюыэхэшхь фю 2)
  71. //L фюьэюцрхЄё  фю 2 ш яЁшсрты хЄё  ъ PC+4!!! (схч юъЁєуыхэш  фю 4)
  72. {
  73. VAR UINT uvalue;
  74.   IF ((UINT)(ivalue + (INT)0x0800) >= 0x1000) {
  75.     errstr("far b +d"); enderr();
  76.   };
  77.   uvalue = (UINT)ivalue>>1;
  78.   asmbyte((BYTE)uvalue); //юс чрЄхы№эю чряшёрЄ№, шэрўх яюхфєЄ рфЁхёр!
  79.   asmbyte(((BYTE)((UINT)uvalue>>8)&0x07) + _base); //юс чрЄхы№эю чряшёрЄ№, шэрўх яюхфєЄ рфЁхёр!
  80. }
  81.  
  82. PROC asmdispbl(LONG ivalue) //фы  фышээ√ї яхЁхїюфют (-400000..+400000) //ivalue = ёьх∙хэшх рфЁхёр
  83. //%1111 0sHH HHHH HHHH
  84. //%1111 1LLL LLLL LLLL
  85. //HL фюьэюцрхЄё  фю 2 ш яЁшсрты хЄё  ъ PC яюёых ъюэЎр ъюьрэф√, Є.х. PC+4 (схч юъЁєуыхэш  фю 4)
  86. {
  87.   IF ((UINT)(ivalue + (INT)0x400000) >= 0x800000) {
  88.     errstr("far bl +d"); enderr();
  89.   };
  90.   asmbyte((BYTE)(ivalue>>12L));
  91.   asmbyte(((BYTE)(ivalue>>20L)&0x07) + 0xf0);
  92.   asmbyte((BYTE)(ivalue>>1L));
  93.   asmbyte(((BYTE)(ivalue>>9L)&0x07) + 0xf8);
  94. }
  95.  
  96. PROC asmdispconst(UINT uvalue) //фы  ёё√ыъш эр ъюэёЄрэЄ√ (0..+400) //uvalue = ёьх∙хэшх рфЁхёр
  97. {
  98.   IF (uvalue >= 0x0400) {
  99.     errstr("far const +d"); enderr();
  100.   };
  101.   asmbyte((BYTE)(uvalue>>2)); //юс чрЄхы№эю чряшёрЄ№, шэрўх яюхфєЄ рфЁхёр!
  102. }
  103.  
  104. PROC asmdispconstpopvalue()
  105. {
  106.   asmdispconst((INT)asmpopvalue());
  107. }
  108.  
  109. PROC err_onlylowregs()
  110. {
  111.   IF ((_reg>=0x08) || (_oldreg>=0x08)) errwrongreg();
  112. }
  113.  
  114. PROC err_onlylowregs_forbidden()
  115. {
  116.   IF ((_reg<0x08) && (_oldreg<0x08)) errwrongreg();
  117. }
  118.  
  119. PROC initmemmodel()
  120. {
  121.   //_curaddr = _BASEADDR;
  122. }
  123.  
  124.