]> git.sur5r.net Git - cc65/blobdiff - include/6502.h
Made the VIC-IIe TGI driver put its bitmap behind the ROMs.
[cc65] / include / 6502.h
index 08b82680025a0119a1e7e27394e8037af90f27b0..642a608a8b06539e717e7fcc2e2ae7ab197b51c1 100644 (file)
@@ -1,8 +1,8 @@
 /*****************************************************************************/
 /*                                                                           */
-/*                                 6502.h                                   */
+/*                                  6502.h                                   */
 /*                                                                           */
-/*                       6502 specific declarations                         */
+/*                        6502 specific declarations                         */
 /*                                                                           */
 /*                                                                           */
 /*                                                                           */
 
 
 
+/* We need size_t */
+#ifndef _HAVE_size_t
+#define _HAVE_size_t
+typedef unsigned size_t;
+#endif
+
+
+
 /* Possible returns of getcpu() */
-#define CPU_6502       0
-#define CPU_65C02      1
-#define CPU_65816      2
+#define CPU_6502        0
+#define CPU_65C02       1
+#define CPU_65816       2
+#define CPU_4510        3
+#define CPU_65SC02      4
+#define CPU_65CE02      5
+#define CPU_HUC6280     6
+#define CPU_2A0x        7
 
 unsigned char getcpu (void);
 /* Detect the CPU the program is running on */
@@ -49,66 +62,78 @@ unsigned char getcpu (void);
 
 
 /* Macros for CPU instructions */
-#define        BRK()   __asm__ ("brk")
-#define CLI()  __asm__ ("cli")
-#define SEI()  __asm__ ("sei")
+#define BRK()   __asm__ ("brk")
+#define CLI()   __asm__ ("cli")
+#define SEI()   __asm__ ("sei")
 
 
 
 /* Struct that holds the registers for the sys function */
 struct regs {
-    unsigned char a;           /* A register value */
-    unsigned char x;           /* X register value */
-    unsigned char y;           /* Y register value */
-    unsigned char flags;       /* Flags value */
-    unsigned      pc;          /* Program counter */
+    unsigned char a;            /* A register value */
+    unsigned char x;            /* X register value */
+    unsigned char y;            /* Y register value */
+    unsigned char flags;        /* Flags value */
+    unsigned      pc;           /* Program counter */
 };
 
 /* Defines for the flags in the regs structure */
-#define F6502_N                0x80    /* N flag */
-#define F6502_V                0x40    /* V flag */
-#define F6502_B        0x10    /* B flag */
-#define F6502_D        0x08    /* D flag */
-#define F6502_I        0x04    /* I flag */
-#define F6502_Z        0x02    /* Z flag */
-#define F6502_C         0x01   /* C flag */
+#define F6502_N         0x80    /* N flag */
+#define F6502_V         0x40    /* V flag */
+#define F6502_B         0x10    /* B flag */
+#define F6502_D         0x08    /* D flag */
+#define F6502_I         0x04    /* I flag */
+#define F6502_Z         0x02    /* Z flag */
+#define F6502_C         0x01    /* C flag */
 
 /* Function to call any machine language subroutine. All registers in the
- * regs structure are passed into the routine and the results are passed
- * out. The B flag is ignored on input. The called routine must end with
- * an RTS.
- */
+** regs structure are passed into the routine and the results are passed
+** out. The B flag is ignored on input. The called routine must end with
+** an RTS.
+*/
 void __fastcall__ _sys (struct regs* r);
 
 
 
 /* Set and reset the break vector. The given user function is called if
- * a break occurs. The values of the registers may be read from the brk_...
- * variables. The value in brk_pc will point to the address that contains
- * the brk instruction.
- * The set_brk function will install an exit handler that will reset the
- * vector if the program ends.
- */
-
-extern unsigned char brk_a;    /* A register value */
-extern unsigned char brk_x;    /* X register value */
-extern unsigned char brk_y;    /* Y register value */
-extern unsigned char brk_sr;   /* Status register */
-extern unsigned brk_pc;                /* PC value */
+** a break occurs. The values of the registers may be read from the brk_...
+** variables. The value in brk_pc will point to the address that contains
+** the brk instruction.
+** The set_brk function will install an exit handler that will reset the
+** vector if the program ends.
+*/
+
+extern unsigned char brk_a;     /* A register value */
+extern unsigned char brk_x;     /* X register value */
+extern unsigned char brk_y;     /* Y register value */
+extern unsigned char brk_sr;    /* Status register */
+extern unsigned brk_pc;         /* PC value */
 
 typedef void (*brk_handler) (void);
 /* Type of the break handler */
 
 void __fastcall__ set_brk (brk_handler f);
-/* Set the break vector to the given address, return the old address */
+/* Set the break vector to the given address */
 
 void reset_brk (void);
 /* Reset the break vector to the original value */
 
 
 
-/* End of 6502.h */
-#endif
+/* Possible returns for irq_handler() */
+#define IRQ_NOT_HANDLED 0
+#define IRQ_HANDLED     1
 
+typedef unsigned char (*irq_handler) (void);
+/* Type of the C level interrupt request handler */
 
+void __fastcall__ set_irq (irq_handler f, void *stack_addr, size_t stack_size);
+/* Set the C level interrupt request vector to the given address */
 
+void reset_irq (void);
+/* Reset the C level interrupt request vector */
+
+
+
+/* End of 6502.h */
+#endif