home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Amiga 5 / MA_Cover_5.iso / ppc / atari / atari800-0.8.6 / atari.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-05-10  |  8.1 KB  |  331 lines

  1. #ifndef __ATARI__
  2. #define    __ATARI__
  3.  
  4. /*
  5.    =================================
  6.    Define Data Types on Local System
  7.    =================================
  8.  */
  9.  
  10. #ifdef VMS
  11. #define SBYTE char
  12. #define SWORD short int
  13. #define SLONG long int
  14. #else
  15. #define    SBYTE signed char
  16. #define    SWORD signed short int
  17. #define    SLONG signed long int
  18. #endif
  19.  
  20. #define    UBYTE unsigned char
  21. #define    UWORD unsigned short int
  22. #define    ULONG unsigned long int
  23.  
  24. typedef enum {
  25.     PAL,
  26.     NTSC
  27. } TVmode;
  28.  
  29. typedef enum {
  30.     Atari,
  31.     AtariXL,
  32.     AtariXE,
  33.     Atari5200
  34. } Machine;
  35.  
  36. extern TVmode tv_mode;
  37. extern Machine machine;
  38. extern int verbose;
  39.  
  40. #define ATARI_WIDTH  (384)
  41. #define ATARI_HEIGHT (192 + 24 + 24)
  42. #define ATARI_TITLE  "Atari 800 Emulator, Version 0.8.6"
  43.  
  44. #define NO_CART 0
  45. #define NORMAL8_CART 1
  46. #define NORMAL16_CART 2
  47. #define AGS32_CART 3
  48. #define OSS_SUPERCART 4
  49. #define DB_SUPERCART 5
  50. #define CARTRIDGE 6
  51.  
  52. enum ESCAPE {
  53.     ESC_SIOV,
  54. /*
  55.  * These are special device escape codes required by the Basic version
  56.  */
  57.     ESC_E_OPEN,
  58.     ESC_E_CLOSE,
  59.     ESC_E_READ,
  60.     ESC_E_WRITE,
  61.     ESC_E_STATUS,
  62.     ESC_E_SPECIAL,
  63.  
  64.     ESC_K_OPEN,
  65.     ESC_K_CLOSE,
  66.     ESC_K_READ,
  67.     ESC_K_WRITE,
  68.     ESC_K_STATUS,
  69.     ESC_K_SPECIAL,
  70. /*
  71.  * These are Escape codes for the normal device handlers.
  72.  * Some are never used and some are only sometimes used.
  73.  */
  74.  
  75.     ESC_PHOPEN = 0xb0,
  76.     ESC_PHCLOS = 0xb1,
  77.     ESC_PHREAD = 0xb2,
  78.     ESC_PHWRIT = 0xb3,
  79.     ESC_PHSTAT = 0xb4,
  80.     ESC_PHSPEC = 0xb5,
  81.     ESC_PHINIT = 0xb6,
  82.  
  83.     ESC_HHOPEN = 0xc0,
  84.     ESC_HHCLOS = 0xc1,
  85.     ESC_HHREAD = 0xc2,
  86.     ESC_HHWRIT = 0xc3,
  87.     ESC_HHSTAT = 0xc4,
  88.     ESC_HHSPEC = 0xc5,
  89.     ESC_HHINIT = 0xc6,
  90.     ESC_BREAK = 0xff
  91. };
  92.  
  93. /*
  94.    =================
  95.    Joystick Position
  96.    =================
  97.  */
  98.  
  99. #define    STICK_LL    0x09
  100. #define    STICK_BACK    0x0d
  101. #define    STICK_LR    0x05
  102. #define    STICK_LEFT    0x0b
  103. #define    STICK_CENTRE    0x0f
  104. #define    STICK_RIGHT    0x07
  105. #define    STICK_UL    0x0a
  106. #define    STICK_FORWARD    0x0e
  107. #define    STICK_UR    0x06
  108.  
  109. /*
  110.    ===========================
  111.    non-standard keyboard codes
  112.    ===========================
  113.  */
  114.  
  115. #define AKEY_NONE -1
  116. #define AKEY_WARMSTART -2
  117. #define AKEY_COLDSTART -3
  118. #define AKEY_EXIT -4
  119. #define AKEY_BREAK -5
  120. #define AKEY_PIL -6
  121. #define AKEY_UI -7
  122.  
  123. #define AKEY_SHFT 0x40
  124. #define AKEY_CTRL 0x80
  125. #define AKEY_SHFTCTRL 0xc0
  126.  
  127. /*
  128.    ===============================
  129.    keyboard codes for numbers 0..9
  130.    ===============================
  131.  */
  132.  
  133. #define AKEY_0 0x32
  134. #define AKEY_1 0x1f
  135. #define AKEY_2 0x1e
  136. #define AKEY_3 0x1a
  137. #define AKEY_4 0x18
  138. #define AKEY_5 0x1d
  139. #define AKEY_6 0x1b
  140. #define AKEY_7 0x33
  141. #define AKEY_8 0x35
  142. #define AKEY_9 0x30
  143.  
  144. #define AKEY_CTRL_0 (AKEY_CTRL | AKEY_0)
  145. #define AKEY_CTRL_1 (AKEY_CTRL | AKEY_1)
  146. #define AKEY_CTRL_2 (AKEY_CTRL | AKEY_2)
  147. #define AKEY_CTRL_3 (AKEY_CTRL | AKEY_3)
  148. #define AKEY_CTRL_4 (AKEY_CTRL | AKEY_4)
  149. #define AKEY_CTRL_5 (AKEY_CTRL | AKEY_5)
  150. #define AKEY_CTRL_6 (AKEY_CTRL | AKEY_6)
  151. #define AKEY_CTRL_7 (AKEY_CTRL | AKEY_7)
  152. #define AKEY_CTRL_8 (AKEY_CTRL | AKEY_8)
  153. #define AKEY_CTRL_9 (AKEY_CTRL | AKEY_9)
  154.  
  155. #define AKEY_a 0x3f
  156. #define AKEY_b 0x15
  157. #define AKEY_c 0x12
  158. #define AKEY_d 0x3a
  159. #define AKEY_e 0x2a
  160. #define AKEY_f 0x38
  161. #define AKEY_g 0x3d
  162. #define AKEY_h 0x39
  163. #define AKEY_i 0x0d
  164. #define AKEY_j 0x01
  165. #define AKEY_k 0x05
  166. #define AKEY_l 0x00
  167. #define AKEY_m 0x25
  168. #define AKEY_n 0x23
  169. #define AKEY_o 0x08
  170. #define AKEY_p 0x0a
  171. #define AKEY_q 0x2f
  172. #define AKEY_r 0x28
  173. #define AKEY_s 0x3e
  174. #define AKEY_t 0x2d
  175. #define AKEY_u 0x0b
  176. #define AKEY_v 0x10
  177. #define AKEY_w 0x2e
  178. #define AKEY_x 0x16
  179. #define AKEY_y 0x2b
  180. #define AKEY_z 0x17
  181.  
  182. #define AKEY_A (AKEY_SHFT | AKEY_a)
  183. #define AKEY_B (AKEY_SHFT | AKEY_b)
  184. #define AKEY_C (AKEY_SHFT | AKEY_c)
  185. #define AKEY_D (AKEY_SHFT | AKEY_d)
  186. #define AKEY_E (AKEY_SHFT | AKEY_e)
  187. #define AKEY_F (AKEY_SHFT | AKEY_f)
  188. #define AKEY_G (AKEY_SHFT | AKEY_g)
  189. #define AKEY_H (AKEY_SHFT | AKEY_h)
  190. #define AKEY_I (AKEY_SHFT | AKEY_i)
  191. #define AKEY_J (AKEY_SHFT | AKEY_j)
  192. #define AKEY_K (AKEY_SHFT | AKEY_k)
  193. #define AKEY_L (AKEY_SHFT | AKEY_l)
  194. #define AKEY_M (AKEY_SHFT | AKEY_m)
  195. #define AKEY_N (AKEY_SHFT | AKEY_n)
  196. #define AKEY_O (AKEY_SHFT | AKEY_o)
  197. #define AKEY_P (AKEY_SHFT | AKEY_p)
  198. #define AKEY_Q (AKEY_SHFT | AKEY_q)
  199. #define AKEY_R (AKEY_SHFT | AKEY_r)
  200. #define AKEY_S (AKEY_SHFT | AKEY_s)
  201. #define AKEY_T (AKEY_SHFT | AKEY_t)
  202. #define AKEY_U (AKEY_SHFT | AKEY_u)
  203. #define AKEY_V (AKEY_SHFT | AKEY_v)
  204. #define AKEY_W (AKEY_SHFT | AKEY_w)
  205. #define AKEY_X (AKEY_SHFT | AKEY_x)
  206. #define AKEY_Y (AKEY_SHFT | AKEY_y)
  207. #define AKEY_Z (AKEY_SHFT | AKEY_z)
  208.  
  209. #define AKEY_CTRL_a (AKEY_CTRL | AKEY_a)
  210. #define AKEY_CTRL_b (AKEY_CTRL | AKEY_b)
  211. #define AKEY_CTRL_c (AKEY_CTRL | AKEY_c)
  212. #define AKEY_CTRL_d (AKEY_CTRL | AKEY_d)
  213. #define AKEY_CTRL_e (AKEY_CTRL | AKEY_e)
  214. #define AKEY_CTRL_f (AKEY_CTRL | AKEY_f)
  215. #define AKEY_CTRL_g (AKEY_CTRL | AKEY_g)
  216. #define AKEY_CTRL_h (AKEY_CTRL | AKEY_h)
  217. #define AKEY_CTRL_i (AKEY_CTRL | AKEY_i)
  218. #define AKEY_CTRL_j (AKEY_CTRL | AKEY_j)
  219. #define AKEY_CTRL_k (AKEY_CTRL | AKEY_k)
  220. #define AKEY_CTRL_l (AKEY_CTRL | AKEY_l)
  221. #define AKEY_CTRL_m (AKEY_CTRL | AKEY_m)
  222. #define AKEY_CTRL_n (AKEY_CTRL | AKEY_n)
  223. #define AKEY_CTRL_o (AKEY_CTRL | AKEY_o)
  224. #define AKEY_CTRL_p (AKEY_CTRL | AKEY_p)
  225. #define AKEY_CTRL_q (AKEY_CTRL | AKEY_q)
  226. #define AKEY_CTRL_r (AKEY_CTRL | AKEY_r)
  227. #define AKEY_CTRL_s (AKEY_CTRL | AKEY_s)
  228. #define AKEY_CTRL_t (AKEY_CTRL | AKEY_t)
  229. #define AKEY_CTRL_u (AKEY_CTRL | AKEY_u)
  230. #define AKEY_CTRL_v (AKEY_CTRL | AKEY_v)
  231. #define AKEY_CTRL_w (AKEY_CTRL | AKEY_w)
  232. #define AKEY_CTRL_x (AKEY_CTRL | AKEY_x)
  233. #define AKEY_CTRL_y (AKEY_CTRL | AKEY_y)
  234. #define AKEY_CTRL_z (AKEY_CTRL | AKEY_z)
  235.  
  236. #define AKEY_CTRL_A (AKEY_CTRL | AKEY_A)
  237. #define AKEY_CTRL_B (AKEY_CTRL | AKEY_B)
  238. #define AKEY_CTRL_C (AKEY_CTRL | AKEY_C)
  239. #define AKEY_CTRL_D (AKEY_CTRL | AKEY_D)
  240. #define AKEY_CTRL_E (AKEY_CTRL | AKEY_E)
  241. #define AKEY_CTRL_F (AKEY_CTRL | AKEY_F)
  242. #define AKEY_CTRL_G (AKEY_CTRL | AKEY_G)
  243. #define AKEY_CTRL_H (AKEY_CTRL | AKEY_H)
  244. #define AKEY_CTRL_I (AKEY_CTRL | AKEY_I)
  245. #define AKEY_CTRL_J (AKEY_CTRL | AKEY_J)
  246. #define AKEY_CTRL_K (AKEY_CTRL | AKEY_K)
  247. #define AKEY_CTRL_L (AKEY_CTRL | AKEY_L)
  248. #define AKEY_CTRL_M (AKEY_CTRL | AKEY_M)
  249. #define AKEY_CTRL_N (AKEY_CTRL | AKEY_N)
  250. #define AKEY_CTRL_O (AKEY_CTRL | AKEY_O)
  251. #define AKEY_CTRL_P (AKEY_CTRL | AKEY_P)
  252. #define AKEY_CTRL_Q (AKEY_CTRL | AKEY_Q)
  253. #define AKEY_CTRL_R (AKEY_CTRL | AKEY_R)
  254. #define AKEY_CTRL_S (AKEY_CTRL | AKEY_S)
  255. #define AKEY_CTRL_T (AKEY_CTRL | AKEY_T)
  256. #define AKEY_CTRL_U (AKEY_CTRL | AKEY_U)
  257. #define AKEY_CTRL_V (AKEY_CTRL | AKEY_V)
  258. #define AKEY_CTRL_W (AKEY_CTRL | AKEY_W)
  259. #define AKEY_CTRL_X (AKEY_CTRL | AKEY_X)
  260. #define AKEY_CTRL_Y (AKEY_CTRL | AKEY_Y)
  261. #define AKEY_CTRL_Z (AKEY_CTRL | AKEY_Z)
  262.  
  263. #define AKEY_HELP 0x11
  264. #define AKEY_DOWN 0x8f
  265. #define AKEY_LEFT 0x86
  266. #define AKEY_RIGHT 0x87
  267. #define AKEY_UP 0x8e
  268. #define AKEY_BACKSPACE 0x34
  269. #define AKEY_DELETE_CHAR 0xb4
  270. #define AKEY_DELETE_LINE 0x74
  271. #define AKEY_INSERT_CHAR 0xb7
  272. #define AKEY_INSERT_LINE 0x77
  273. #define AKEY_ESCAPE 0x1c
  274. #define AKEY_ATARI 0x27
  275. #define AKEY_CAPSLOCK 0x7c
  276. #define AKEY_CAPSTOGGLE 0x3c
  277. #define AKEY_TAB 0x2c
  278. #define AKEY_SETTAB 0x6c
  279. #define AKEY_CLRTAB 0xac
  280. #define AKEY_RETURN 0x0c
  281. #define AKEY_SPACE 0x21
  282. #define AKEY_EXCLAMATION 0x5f
  283. #define AKEY_DBLQUOTE 0x5e
  284. #define AKEY_HASH 0x5a
  285. #define AKEY_DOLLAR 0x58
  286. #define AKEY_PERCENT 0x5d
  287. #define AKEY_AMPERSAND 0x5b
  288. #define AKEY_QUOTE 0x73
  289. #define AKEY_AT 0x75
  290. #define AKEY_PARENLEFT 0x70
  291. #define AKEY_PARENRIGHT 0x72
  292. #define AKEY_LESS 0x36
  293. #define AKEY_GREATER 0x37
  294. #define AKEY_EQUAL 0x0f
  295. #define AKEY_QUESTION 0x66
  296. #define AKEY_MINUS 0x0e
  297. #define AKEY_PLUS 0x06
  298. #define AKEY_ASTERISK 0x07
  299. #define AKEY_SLASH 0x26
  300. #define AKEY_COLON 0x42
  301. #define AKEY_SEMICOLON 0x02
  302. #define AKEY_COMMA 0x20
  303. #define AKEY_FULLSTOP 0x22
  304. #define AKEY_UNDERSCORE 0x4e
  305. #define AKEY_BRACKETLEFT 0x60
  306. #define AKEY_BRACKETRIGHT 0x62
  307. #define AKEY_CIRCUMFLEX 0x47
  308. #define AKEY_BACKSLASH 0x46
  309. #define AKEY_BAR 0x4f
  310.  
  311. void EnablePILL(void);
  312. int Insert_8K_ROM(char *filename);
  313. int Insert_16K_ROM(char *filename);
  314. int Insert_OSS_ROM(char *filename);
  315. int Insert_DB_ROM(char *filename);
  316. int Insert_32K_5200ROM(char *filename);
  317. int Remove_ROM(void);
  318. void Coldstart(void);
  319. void Warmstart(void);
  320. int Initialise_AtariOSA(void);
  321. int Initialise_AtariOSB(void);
  322. int Initialise_AtariXL(void);
  323. int Initialise_AtariXE(void);
  324. int Initialise_Atari5200(void);
  325. int Atari800_Exit(int run_monitor);
  326. UBYTE Atari800_GetByte(UWORD addr);
  327. int Atari800_PutByte(UWORD addr, UBYTE byte);
  328. void Escape(UBYTE esc_code);
  329.  
  330. #endif
  331.