1 // ----------------------------------------------------------------------------
3 // ----------------------------------------------------------------------------
7 static char *VB_Name = "modASM";
12 // --- const int ByteMask = 0xFF;
20 void Mov(int *Var, int Val)
25 void MovLowByte(int *Var, int Val)
27 *Var = (*Var & 0xFF00) | (Val & 0xFF);
30 void MovHighByte(int *Var, int Val)
36 if ((Val & 0x80) != 0)
39 *Var = (*Var & 0xFF) | Tmp;
47 LowByte = (Var & 0xFF);
48 // LowByte = ByteToInt(Tmp)
59 HighByte = ((Var & 0x7FFF) / 0x100) | 0x80;
63 HighByte = Var / 0x100;
69 int SgnHighByte(int Var) // extends the signum to 16 bit
75 SgnHighByte = ((Var & 0x7FFF) / 0x100) | 0xFF80;
79 SgnHighByte = Var / 0x100;
94 boolean GreaterOrEqual()
96 boolean GreaterOrEqual;
98 GreaterOrEqual = (0 <= cmpFlag);
100 return GreaterOrEqual;
107 Equal = (0 == cmpFlag);
112 void CMP(int A, int B)
117 void Add(int *A, int B)
122 void MySub(int *A, int B)
127 int SHR(int Var, int Count)
135 Var = ((Var & 0x7FFF) / 2) | 0x4000;
142 for (i = 2; i <= Count; i++)
150 int SHL(int Var, int Count)
156 for (i = 1; i <= Count; i++)
159 if ((Var & 0x4000) != 0)
161 Var = (2 * (Var & 0x3FFF)) | 0x8000;
172 int ByteToInt(byte B)
176 if ((B & 0x80) == 0x80)
178 ByteToInt = -(0xFF - B + 1);
188 byte IntToByte(int i)
192 // IntToByte = CByte(i & 0xFF);
193 IntToByte = (byte)(i & 0xFF);
198 void XCHG(int A, int B)