home *** CD-ROM | disk | FTP | other *** search
/ Emulator Universe CD / emulatoruniversecd1998.iso / Speccy / Emulators / winemu / SOURCES / Z80 / BITS.C next >
Encoding:
C/C++ Source or Header  |  1996-05-21  |  16.6 KB  |  450 lines

  1. /* Bits.c : Z80 bit manipulation instructions.
  2.  *
  3.  * Copyright 1996 Rui Fernando Ferreira Ribeiro.
  4.  *
  5.  * This program is free software; you can redistribute it and/or modify
  6.  * it under the terms of the GNU General Public License as published by
  7.  * the Free Software Foundation; either version 2 of the License, or
  8.  * (at your option) any later version.
  9.  *
  10.  * This program is distributed in the hope that it will be useful,
  11.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13.  * GNU General Public License for more details.
  14.  *
  15.  * You should have received a copy of the GNU General Public License
  16.  * along with this program; if not, write to the Free Software
  17.  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  18.  */
  19.  
  20. #include "env.h"
  21.  
  22. /*=========================================================================*
  23.  *                            bit_b_r                                      *
  24.  *=========================================================================*/
  25.  
  26. #define bit_b_r(R, BIT,TS)  {\
  27.    T(TS); \
  28.    flags._Z = flags._P = !((R) & (UCHAR)(BIT)); \
  29.    flags._H = 1; \
  30.    flags._N = 0; \
  31.    flags._S = (R) & (UCHAR)BIT_7; \
  32.    flags._X = (R) & (UCHAR)BIT_5; \
  33.    flags._Y = (R) & (UCHAR)BIT_3; \
  34. }
  35.  
  36. void bit_7_b() bit_b_r(B, BIT_7, 8);
  37. void bit_6_b() bit_b_r(B, BIT_6, 8);
  38. void bit_5_b() bit_b_r(B, BIT_5, 8);
  39. void bit_4_b() bit_b_r(B, BIT_4, 8);
  40. void bit_3_b() bit_b_r(B, BIT_3, 8);
  41. void bit_2_b() bit_b_r(B, BIT_2, 8);
  42. void bit_1_b() bit_b_r(B, BIT_1, 8);
  43. void bit_0_b() bit_b_r(B, BIT_0, 8);
  44. void bit_7_c() bit_b_r(C, BIT_7, 8);
  45. void bit_6_c() bit_b_r(C, BIT_6, 8);
  46. void bit_5_c() bit_b_r(C, BIT_5, 8);
  47. void bit_4_c() bit_b_r(C, BIT_4, 8);
  48. void bit_3_c() bit_b_r(C, BIT_3, 8);
  49. void bit_2_c() bit_b_r(C, BIT_2, 8);
  50. void bit_1_c() bit_b_r(C, BIT_1, 8);
  51. void bit_0_c() bit_b_r(C, BIT_0, 8);
  52. void bit_7_d() bit_b_r(D, BIT_7, 8);
  53. void bit_6_d() bit_b_r(D, BIT_6, 8);
  54. void bit_5_d() bit_b_r(D, BIT_5, 8);
  55. void bit_4_d() bit_b_r(D, BIT_4, 8);
  56. void bit_3_d() bit_b_r(D, BIT_3, 8);
  57. void bit_2_d() bit_b_r(D, BIT_2, 8);
  58. void bit_1_d() bit_b_r(D, BIT_1, 8);
  59. void bit_0_d() bit_b_r(D, BIT_0, 8);
  60. void bit_7_e() bit_b_r(E, BIT_7, 8);
  61. void bit_6_e() bit_b_r(E, BIT_6, 8);
  62. void bit_5_e() bit_b_r(E, BIT_5, 8);
  63. void bit_4_e() bit_b_r(E, BIT_4, 8);
  64. void bit_3_e() bit_b_r(E, BIT_3, 8);
  65. void bit_2_e() bit_b_r(E, BIT_2, 8);
  66. void bit_1_e() bit_b_r(E, BIT_1, 8);
  67. void bit_0_e() bit_b_r(E, BIT_0, 8);
  68. void bit_7_h() bit_b_r(H, BIT_7, 8);
  69. void bit_6_h() bit_b_r(H, BIT_6, 8);
  70. void bit_5_h() bit_b_r(H, BIT_5, 8);
  71. void bit_4_h() bit_b_r(H, BIT_4, 8);
  72. void bit_3_h() bit_b_r(H, BIT_3, 8);
  73. void bit_2_h() bit_b_r(H, BIT_2, 8);
  74. void bit_1_h() bit_b_r(H, BIT_1, 8);
  75. void bit_0_h() bit_b_r(H, BIT_0, 8);
  76. void bit_7_Ix() bit_b_r(HX, BIT_7, 15);
  77. void bit_6_Ix() bit_b_r(HX, BIT_6, 15);
  78. void bit_5_Ix() bit_b_r(HX, BIT_5, 15);
  79. void bit_4_Ix() bit_b_r(HX, BIT_4, 15);
  80. void bit_3_Ix() bit_b_r(HX, BIT_3, 15);
  81. void bit_2_Ix() bit_b_r(HX, BIT_2, 15);
  82. void bit_1_Ix() bit_b_r(HX, BIT_1, 15);
  83. void bit_0_Ix() bit_b_r(HX, BIT_0, 15);
  84. void bit_7_Iy() bit_b_r(HY, BIT_7, 15);
  85. void bit_6_Iy() bit_b_r(HY, BIT_6, 15);
  86. void bit_5_Iy() bit_b_r(HY, BIT_5, 15);
  87. void bit_4_Iy() bit_b_r(HY, BIT_4, 15);
  88. void bit_3_Iy() bit_b_r(HY, BIT_3, 15);
  89. void bit_2_Iy() bit_b_r(HY, BIT_2, 15);
  90. void bit_1_Iy() bit_b_r(HY, BIT_1, 15);
  91. void bit_0_Iy() bit_b_r(HY, BIT_0, 15);
  92. void bit_7_l() bit_b_r(L, BIT_7, 8);
  93. void bit_6_l() bit_b_r(L, BIT_6, 8);
  94. void bit_5_l() bit_b_r(L, BIT_5, 8);
  95. void bit_4_l() bit_b_r(L, BIT_4, 8);
  96. void bit_3_l() bit_b_r(L, BIT_3, 8);
  97. void bit_2_l() bit_b_r(L, BIT_2, 8);
  98. void bit_1_l() bit_b_r(L, BIT_1, 8);
  99. void bit_0_l() bit_b_r(L, BIT_0, 8);
  100. void bit_7_iX() bit_b_r(LX, BIT_7, 15);
  101. void bit_6_iX() bit_b_r(LX, BIT_6, 15);
  102. void bit_5_iX() bit_b_r(LX, BIT_5, 15);
  103. void bit_4_iX() bit_b_r(LX, BIT_4, 15);
  104. void bit_3_iX() bit_b_r(LX, BIT_3, 15);
  105. void bit_2_iX() bit_b_r(LX, BIT_2, 15);
  106. void bit_1_iX() bit_b_r(LX, BIT_1, 15);
  107. void bit_0_iX() bit_b_r(LX, BIT_0, 15);
  108. void bit_7_iY() bit_b_r(LY, BIT_7, 15);
  109. void bit_6_iY() bit_b_r(LY, BIT_6, 15);
  110. void bit_5_iY() bit_b_r(LY, BIT_5, 15);
  111. void bit_4_iY() bit_b_r(LY, BIT_4, 15);
  112. void bit_3_iY() bit_b_r(LY, BIT_3, 15);
  113. void bit_2_iY() bit_b_r(LY, BIT_2, 15);
  114. void bit_1_iY() bit_b_r(LY, BIT_1, 15);
  115. void bit_0_iY() bit_b_r(LY, BIT_0, 15);
  116. void bit_7_a() bit_b_r(A, BIT_7, 8);
  117. void bit_6_a() bit_b_r(A, BIT_6, 8);
  118. void bit_5_a() bit_b_r(A, BIT_5, 8);
  119. void bit_4_a() bit_b_r(A, BIT_4, 8);
  120. void bit_3_a() bit_b_r(A, BIT_3, 8);
  121. void bit_2_a() bit_b_r(A, BIT_2, 8);
  122. void bit_1_a() bit_b_r(A, BIT_1, 8);
  123. void bit_0_a() bit_b_r(A, BIT_0, 8);
  124.  
  125. #undef bit_b_r
  126.  
  127. /*=========================================================================*
  128.  *                            bit_b_phl                                    *
  129.  *=========================================================================*/
  130.  
  131. #define bit_b_phl(BIT,expr,TS) { \
  132.     LOCAL UCHAR tmp; \
  133.     \
  134.     T(TS); \
  135.     flags._Z = flags._P = !((tmp = readbyte(expr)) \
  136.                               & (UCHAR)(BIT)); \
  137.     flags._H = 1; \
  138.     flags._N = 0; \
  139.     flags._S = tmp & (UCHAR)BIT_7; \
  140.     flags._X = tmp & (UCHAR)BIT_5; \
  141.     flags._Y = tmp & (UCHAR)BIT_3; \
  142. }
  143.  
  144.  
  145. void bit_7_phl() bit_b_phl(BIT_7, HL, 12);
  146. void bit_6_phl() bit_b_phl(BIT_6, HL, 12);
  147. void bit_5_phl() bit_b_phl(BIT_5, HL, 12);
  148. void bit_4_phl() bit_b_phl(BIT_4, HL, 12);
  149. void bit_3_phl() bit_b_phl(BIT_3, HL, 12);
  150. void bit_2_phl() bit_b_phl(BIT_2, HL, 12);
  151. void bit_1_phl() bit_b_phl(BIT_1, HL, 12);
  152. void bit_0_phl() bit_b_phl(BIT_0, HL, 12);
  153. void bit_7_pix() bit_b_phl(BIT_7, pCBIX, 20);
  154. void bit_6_pix() bit_b_phl(BIT_6, pCBIX, 20);
  155. void bit_5_pix() bit_b_phl(BIT_5, pCBIX, 20);
  156. void bit_4_pix() bit_b_phl(BIT_4, pCBIX, 20);
  157. void bit_3_pix() bit_b_phl(BIT_3, pCBIX, 20);
  158. void bit_2_pix() bit_b_phl(BIT_2, pCBIX, 20);
  159. void bit_1_pix() bit_b_phl(BIT_1, pCBIX, 20);
  160. void bit_0_pix() bit_b_phl(BIT_0, pCBIX, 20);
  161. void bit_7_piy() bit_b_phl(BIT_7, pCBIY, 20);
  162. void bit_6_piy() bit_b_phl(BIT_6, pCBIY, 20);
  163. void bit_5_piy() bit_b_phl(BIT_5, pCBIY, 20);
  164. void bit_4_piy() bit_b_phl(BIT_4, pCBIY, 20);
  165. void bit_3_piy() bit_b_phl(BIT_3, pCBIY, 20);
  166. void bit_2_piy() bit_b_phl(BIT_2, pCBIY, 20);
  167. void bit_1_piy() bit_b_phl(BIT_1, pCBIY, 20);
  168. void bit_0_piy() bit_b_phl(BIT_0, pCBIY, 20);
  169. #undef bit_b_phl
  170.  
  171. /*=========================================================================*
  172.  *                            set_b_r                                      *
  173.  *=========================================================================*/
  174.  
  175. #define set_b_r(R, BIT,TS) { \
  176.     T(TS); \
  177.     (R) |= (UCHAR)(BIT); \
  178.     }
  179.  
  180. void set_7_b() set_b_r(B, BIT_7, 8);
  181. void set_6_b() set_b_r(B, BIT_6, 8);
  182. void set_5_b() set_b_r(B, BIT_5, 8);
  183. void set_4_b() set_b_r(B, BIT_4, 8);
  184. void set_3_b() set_b_r(B, BIT_3, 8);
  185. void set_2_b() set_b_r(B, BIT_2, 8);
  186. void set_1_b() set_b_r(B, BIT_1, 8);
  187. void set_0_b() set_b_r(B, BIT_0, 8);
  188. void set_7_c() set_b_r(C, BIT_7, 8);
  189. void set_6_c() set_b_r(C, BIT_6, 8);
  190. void set_5_c() set_b_r(C, BIT_5, 8);
  191. void set_4_c() set_b_r(C, BIT_4, 8);
  192. void set_3_c() set_b_r(C, BIT_3, 8);
  193. void set_2_c() set_b_r(C, BIT_2, 8);
  194. void set_1_c() set_b_r(C, BIT_1, 8);
  195. void set_0_c() set_b_r(C, BIT_0, 8);
  196. void set_7_d() set_b_r(D, BIT_7, 8);
  197. void set_6_d() set_b_r(D, BIT_6, 8);
  198. void set_5_d() set_b_r(D, BIT_5, 8);
  199. void set_4_d() set_b_r(D, BIT_4, 8);
  200. void set_3_d() set_b_r(D, BIT_3, 8);
  201. void set_2_d() set_b_r(D, BIT_2, 8);
  202. void set_1_d() set_b_r(D, BIT_1, 8);
  203. void set_0_d() set_b_r(D, BIT_0, 8);
  204. void set_7_e() set_b_r(E, BIT_7, 8);
  205. void set_6_e() set_b_r(E, BIT_6, 8);
  206. void set_5_e() set_b_r(E, BIT_5, 8);
  207. void set_4_e() set_b_r(E, BIT_4, 8);
  208. void set_3_e() set_b_r(E, BIT_3, 8);
  209. void set_2_e() set_b_r(E, BIT_2, 8);
  210. void set_1_e() set_b_r(E, BIT_1, 8);
  211. void set_0_e() set_b_r(E, BIT_0, 8);
  212. void set_7_h() set_b_r(H, BIT_7, 8);
  213. void set_6_h() set_b_r(H, BIT_6, 8);
  214. void set_5_h() set_b_r(H, BIT_5, 8);
  215. void set_4_h() set_b_r(H, BIT_4, 8);
  216. void set_3_h() set_b_r(H, BIT_3, 8);
  217. void set_2_h() set_b_r(H, BIT_2, 8);
  218. void set_1_h() set_b_r(H, BIT_1, 8);
  219. void set_0_h() set_b_r(H, BIT_0, 8);
  220. void set_7_Ix() set_b_r(HX, BIT_7, 15);
  221. void set_6_Ix() set_b_r(HX, BIT_6, 15);
  222. void set_5_Ix() set_b_r(HX, BIT_5, 15);
  223. void set_4_Ix() set_b_r(HX, BIT_4, 15);
  224. void set_3_Ix() set_b_r(HX, BIT_3, 15);
  225. void set_2_Ix() set_b_r(HX, BIT_2, 15);
  226. void set_1_Ix() set_b_r(HX, BIT_1, 15);
  227. void set_0_Ix() set_b_r(HX, BIT_0, 15);
  228. void set_7_Iy() set_b_r(HY, BIT_7, 15);
  229. void set_6_Iy() set_b_r(HY, BIT_6, 15);
  230. void set_5_Iy() set_b_r(HY, BIT_5, 15);
  231. void set_4_Iy() set_b_r(HY, BIT_4, 15);
  232. void set_3_Iy() set_b_r(HY, BIT_3, 15);
  233. void set_2_Iy() set_b_r(HY, BIT_2, 15);
  234. void set_1_Iy() set_b_r(HY, BIT_1, 15);
  235. void set_0_Iy() set_b_r(HY, BIT_0, 15);
  236. void set_7_l() set_b_r(L, BIT_7, 8);
  237. void set_6_l() set_b_r(L, BIT_6, 8);
  238. void set_5_l() set_b_r(L, BIT_5, 8);
  239. void set_4_l() set_b_r(L, BIT_4, 8);
  240. void set_3_l() set_b_r(L, BIT_3, 8);
  241. void set_2_l() set_b_r(L, BIT_2, 8);
  242. void set_1_l() set_b_r(L, BIT_1, 8);
  243. void set_0_l() set_b_r(L, BIT_0, 8);
  244. void set_7_iX() set_b_r(LX, BIT_7, 15);
  245. void set_6_iX() set_b_r(LX, BIT_6, 15);
  246. void set_5_iX() set_b_r(LX, BIT_5, 15);
  247. void set_4_iX() set_b_r(LX, BIT_4, 15);
  248. void set_3_iX() set_b_r(LX, BIT_3, 15);
  249. void set_2_iX() set_b_r(LX, BIT_2, 15);
  250. void set_1_iX() set_b_r(LX, BIT_1, 15);
  251. void set_0_iX() set_b_r(LX, BIT_0, 15);
  252. void set_7_iY() set_b_r(LY, BIT_7, 15);
  253. void set_6_iY() set_b_r(LY, BIT_6, 15);
  254. void set_5_iY() set_b_r(LY, BIT_5, 15);
  255. void set_4_iY() set_b_r(LY, BIT_4, 15);
  256. void set_3_iY() set_b_r(LY, BIT_3, 15);
  257. void set_2_iY() set_b_r(LY, BIT_2, 15);
  258. void set_1_iY() set_b_r(LY, BIT_1, 15);
  259. void set_0_iY() set_b_r(LY, BIT_0, 15);
  260. void set_7_a() set_b_r(A, BIT_7, 8);
  261. void set_6_a() set_b_r(A, BIT_6, 8);
  262. void set_5_a() set_b_r(A, BIT_5, 8);
  263. void set_4_a() set_b_r(A, BIT_4, 8);
  264. void set_3_a() set_b_r(A, BIT_3, 8);
  265. void set_2_a() set_b_r(A, BIT_2, 8);
  266. void set_1_a() set_b_r(A, BIT_1, 8);
  267. void set_0_a() set_b_r(A, BIT_0, 8);
  268.  
  269. #undef set_b_r
  270.  
  271. /*=========================================================================*
  272.  *                            set_b_phl                                    *
  273.  *=========================================================================*/
  274.  
  275. #define set_b_phl(BIT,expr,TS) { \
  276.     LOCAL USHORT tmp; \
  277.     \
  278.     T(TS); \
  279.     tmp = expr; \
  280.     writebyte(tmp, readbyte(tmp) | (UCHAR)(BIT) ); \
  281. }
  282.  
  283. void set_7_phl() set_b_phl(BIT_7,HL,15);
  284. void set_6_phl() set_b_phl(BIT_6,HL,15);
  285. void set_5_phl() set_b_phl(BIT_5,HL,15);
  286. void set_4_phl() set_b_phl(BIT_4,HL,15);
  287. void set_3_phl() set_b_phl(BIT_3,HL,15);
  288. void set_2_phl() set_b_phl(BIT_2,HL,15);
  289. void set_1_phl() set_b_phl(BIT_1,HL,15);
  290. void set_0_phl() set_b_phl(BIT_0,HL,15);
  291. void set_7_pix() set_b_phl(BIT_7, pCBIX, 23);
  292. void set_6_pix() set_b_phl(BIT_6, pCBIX, 23);
  293. void set_5_pix() set_b_phl(BIT_5, pCBIX, 23);
  294. void set_4_pix() set_b_phl(BIT_4, pCBIX, 23);
  295. void set_3_pix() set_b_phl(BIT_3, pCBIX, 23);
  296. void set_2_pix() set_b_phl(BIT_2, pCBIX, 23);
  297. void set_1_pix() set_b_phl(BIT_1, pCBIX, 23);
  298. void set_0_pix() set_b_phl(BIT_0, pCBIX, 23);
  299. void set_7_piy() set_b_phl(BIT_7, pCBIY, 23);
  300. void set_6_piy() set_b_phl(BIT_6, pCBIY, 23);
  301. void set_5_piy() set_b_phl(BIT_5, pCBIY, 23);
  302. void set_4_piy() set_b_phl(BIT_4, pCBIY, 23);
  303. void set_3_piy() set_b_phl(BIT_3, pCBIY, 23);
  304. void set_2_piy() set_b_phl(BIT_2, pCBIY, 23);
  305. void set_1_piy() set_b_phl(BIT_1, pCBIY, 23);
  306. void set_0_piy() set_b_phl(BIT_0, pCBIY, 23);
  307.  
  308. #undef set_b_phl
  309.  
  310. /*=========================================================================*
  311.  *                            res_b_r                                      *
  312.  *=========================================================================*/
  313.  
  314. #define res_b_r(R, BIT, TS) { \
  315.     T(TS); \
  316.     (R) &= ~(UCHAR)(BIT); \
  317. }
  318.  
  319. void res_7_b() res_b_r(B, BIT_7, 8);
  320. void res_6_b() res_b_r(B, BIT_6, 8);
  321. void res_5_b() res_b_r(B, BIT_5, 8);
  322. void res_4_b() res_b_r(B, BIT_4, 8);
  323. void res_3_b() res_b_r(B, BIT_3, 8);
  324. void res_2_b() res_b_r(B, BIT_2, 8);
  325. void res_1_b() res_b_r(B, BIT_1, 8);
  326. void res_0_b() res_b_r(B, BIT_0, 8);
  327. void res_7_c() res_b_r(C, BIT_7, 8);
  328. void res_6_c() res_b_r(C, BIT_6, 8);
  329. void res_5_c() res_b_r(C, BIT_5, 8);
  330. void res_4_c() res_b_r(C, BIT_4, 8);
  331. void res_3_c() res_b_r(C, BIT_3, 8);
  332. void res_2_c() res_b_r(C, BIT_2, 8);
  333. void res_1_c() res_b_r(C, BIT_1, 8);
  334. void res_0_c() res_b_r(C, BIT_0, 8);
  335. void res_7_d() res_b_r(D, BIT_7, 8);
  336. void res_6_d() res_b_r(D, BIT_6, 8);
  337. void res_5_d() res_b_r(D, BIT_5, 8);
  338. void res_4_d() res_b_r(D, BIT_4, 8);
  339. void res_3_d() res_b_r(D, BIT_3, 8);
  340. void res_2_d() res_b_r(D, BIT_2, 8);
  341. void res_1_d() res_b_r(D, BIT_1, 8);
  342. void res_0_d() res_b_r(D, BIT_0, 8);
  343. void res_7_e() res_b_r(E, BIT_7, 8);
  344. void res_6_e() res_b_r(E, BIT_6, 8);
  345. void res_5_e() res_b_r(E, BIT_5, 8);
  346. void res_4_e() res_b_r(E, BIT_4, 8);
  347. void res_3_e() res_b_r(E, BIT_3, 8);
  348. void res_2_e() res_b_r(E, BIT_2, 8);
  349. void res_1_e() res_b_r(E, BIT_1, 8);
  350. void res_0_e() res_b_r(E, BIT_0, 8);
  351. void res_7_h() res_b_r(H, BIT_7, 8);
  352. void res_6_h() res_b_r(H, BIT_6, 8);
  353. void res_5_h() res_b_r(H, BIT_5, 8);
  354. void res_4_h() res_b_r(H, BIT_4, 8);
  355. void res_3_h() res_b_r(H, BIT_3, 8);
  356. void res_2_h() res_b_r(H, BIT_2, 8);
  357. void res_1_h() res_b_r(H, BIT_1, 8);
  358. void res_0_h() res_b_r(H, BIT_0, 8);
  359. void res_7_Ix() res_b_r(HX, BIT_7, 15);
  360. void res_6_Ix() res_b_r(HX, BIT_6, 15);
  361. void res_5_Ix() res_b_r(HX, BIT_5, 15);
  362. void res_4_Ix() res_b_r(HX, BIT_4, 15);
  363. void res_3_Ix() res_b_r(HX, BIT_3, 15);
  364. void res_2_Ix() res_b_r(HX, BIT_2, 15);
  365. void res_1_Ix() res_b_r(HX, BIT_1, 15);
  366. void res_0_Ix() res_b_r(HX, BIT_0, 15);
  367. void res_7_Iy() res_b_r(HY, BIT_7, 15);
  368. void res_6_Iy() res_b_r(HY, BIT_6, 15);
  369. void res_5_Iy() res_b_r(HY, BIT_5, 15);
  370. void res_4_Iy() res_b_r(HY, BIT_4, 15);
  371. void res_3_Iy() res_b_r(HY, BIT_3, 15);
  372. void res_2_Iy() res_b_r(HY, BIT_2, 15);
  373. void res_1_Iy() res_b_r(HY, BIT_1, 15);
  374. void res_0_Iy() res_b_r(HY, BIT_0, 15);
  375. void res_7_l() res_b_r(L, BIT_7, 8);
  376. void res_6_l() res_b_r(L, BIT_6, 8);
  377. void res_5_l() res_b_r(L, BIT_5, 8);
  378. void res_4_l() res_b_r(L, BIT_4, 8);
  379. void res_3_l() res_b_r(L, BIT_3, 8);
  380. void res_2_l() res_b_r(L, BIT_2, 8);
  381. void res_1_l() res_b_r(L, BIT_1, 8);
  382. void res_0_l() res_b_r(L, BIT_0, 8);
  383. void res_7_iX() res_b_r(LX, BIT_7, 15);
  384. void res_6_iX() res_b_r(LX, BIT_6, 15);
  385. void res_5_iX() res_b_r(LX, BIT_5, 15);
  386. void res_4_iX() res_b_r(LX, BIT_4, 15);
  387. void res_3_iX() res_b_r(LX, BIT_3, 15);
  388. void res_2_iX() res_b_r(LX, BIT_2, 15);
  389. void res_1_iX() res_b_r(LX, BIT_1, 15);
  390. void res_0_iX() res_b_r(LX, BIT_0, 15);
  391. void res_7_iY() res_b_r(LY, BIT_7, 15);
  392. void res_6_iY() res_b_r(LY, BIT_6, 15);
  393. void res_5_iY() res_b_r(LY, BIT_5, 15);
  394. void res_4_iY() res_b_r(LY, BIT_4, 15);
  395. void res_3_iY() res_b_r(LY, BIT_3, 15);
  396. void res_2_iY() res_b_r(LY, BIT_2, 15);
  397. void res_1_iY() res_b_r(LY, BIT_1, 15);
  398. void res_0_iY() res_b_r(LY, BIT_0, 15);
  399. void res_7_a() res_b_r(A, BIT_7, 8);
  400. void res_6_a() res_b_r(A, BIT_6, 8);
  401. void res_5_a() res_b_r(A, BIT_5, 8);
  402. void res_4_a() res_b_r(A, BIT_4, 8);
  403. void res_3_a() res_b_r(A, BIT_3, 8);
  404. void res_2_a() res_b_r(A, BIT_2, 8);
  405. void res_1_a() res_b_r(A, BIT_1, 8);
  406. void res_0_a() res_b_r(A, BIT_0, 8);
  407.  
  408. #undef res_b_r
  409.  
  410. /*=========================================================================*
  411.  *                            res_b_phl                                    *
  412.  *=========================================================================*/
  413.  
  414. #define res_b_phl(BIT,expr,TS) { \
  415.     LOCAL USHORT tmp; \
  416.     \
  417.     T(TS); \
  418.     tmp = expr; \
  419.     writebyte(tmp, readbyte(tmp) & ~(UCHAR)BIT ); \
  420. }
  421.  
  422. void res_7_phl() res_b_phl(BIT_7,HL,15);
  423. void res_6_phl() res_b_phl(BIT_6,HL,15);
  424. void res_5_phl() res_b_phl(BIT_5,HL,15);
  425. void res_4_phl() res_b_phl(BIT_4,HL,15);
  426. void res_3_phl() res_b_phl(BIT_3,HL,15);
  427. void res_2_phl() res_b_phl(BIT_2,HL,15);
  428. void res_1_phl() res_b_phl(BIT_1,HL,15);
  429. void res_0_phl() res_b_phl(BIT_0,HL,15);
  430. void res_7_pix() res_b_phl(BIT_7, pCBIX, 23);
  431. void res_6_pix() res_b_phl(BIT_6, pCBIX, 23);
  432. void res_5_pix() res_b_phl(BIT_5, pCBIX, 23);
  433. void res_4_pix() res_b_phl(BIT_4, pCBIX, 23);
  434. void res_3_pix() res_b_phl(BIT_3, pCBIX, 23);
  435. void res_2_pix() res_b_phl(BIT_2, pCBIX, 23);
  436. void res_1_pix() res_b_phl(BIT_1, pCBIX, 23);
  437. void res_0_pix() res_b_phl(BIT_0, pCBIX, 23);
  438. void res_7_piy() res_b_phl(BIT_7, pCBIY, 23);
  439. void res_6_piy() res_b_phl(BIT_6, pCBIY, 23);
  440. void res_5_piy() res_b_phl(BIT_5, pCBIY, 23);
  441. void res_4_piy() res_b_phl(BIT_4, pCBIY, 23);
  442. void res_3_piy() res_b_phl(BIT_3, pCBIY, 23);
  443. void res_2_piy() res_b_phl(BIT_2, pCBIY, 23);
  444. void res_1_piy() res_b_phl(BIT_1, pCBIY, 23);
  445. void res_0_piy() res_b_phl(BIT_0, pCBIY, 23);
  446.  
  447. #undef res_b_phl
  448.  
  449. /* EOF: Bits.c */
  450.