aimless debugging, forgot -m68000 in the linker command line
[lugburz] / src / amiga / amigalib.h
diff --git a/src/amiga/amigalib.h b/src/amiga/amigalib.h
new file mode 100644 (file)
index 0000000..6a12069
--- /dev/null
@@ -0,0 +1,92 @@
+/* structures and functions necessary to access amiga ROM services */
+#ifndef AMIGALIB_H_
+#define AMIGALIB_H_
+
+#include <stdint.h>
+
+#define ALIB_MEMF_ANY          0L
+#define ALIB_MEMF_PUBLIC       0x0001L
+#define ALIB_MEMF_CHIP         0x0002L
+#define ALIB_MEMF_FAST         0x0004L
+#define ALIB_MEMF_CLEAR                0x0100L
+#define ALIB_MEMF_LARGEST      0x0200L
+#define ALIB_MEMF_REVERSE      0x0400L
+#define ALIB_MEMF_TOTAL                0x0800L
+
+#define ALIB_NODE_COMMON(NODE_TYPE) \
+       NODE_TYPE *n_next; \
+       NODE_TYPE *n_prev; \
+       uint8_t n_type; \
+       int8_t n_prio; \
+       char *n_name
+
+struct alib_memchunk {
+       struct alib_memchunk *next;
+       uint32_t size;
+};
+
+struct alib_memnode {
+       ALIB_NODE_COMMON(struct alib_memnode);
+       uint16_t attrib;
+       struct alib_memchunk *freelist;
+       void *start, *end;
+       uint32_t freesz;
+};
+
+struct alib_memlist {
+       struct alib_memnode *head, *tail, *tailpred;
+       uint8_t type;
+       uint8_t pad;
+};
+
+struct alib_library {
+       ALIB_NODE_COMMON(struct alib_library);
+       uint8_t flags;
+       uint8_t pad;
+       uint16_t negsz, possz;
+       uint16_t ver_major, ver_minor;
+       char *idstr;
+       uint32_t csum;
+       uint16_t nref;
+};
+
+struct alib_intvec {
+       void *data;
+       void (*code)();
+       ALIB_NODE_COMMON(struct alib_intvec);
+};
+
+struct alib_execbase {
+       struct alib_library lib;
+       uint16_t softver;
+       int16_t lowmem_csum;
+       uint32_t chkbase;
+       void *coldcap_vect, *coolcap_vect, *warmcap_vect;
+       void *sysstack_upper, *sysstack_lower;
+       uint32_t chipmem_top;
+       void *dbg_entry, *dbg_data, *alert_data;
+       void *extmem_top;
+       uint16_t csum;
+
+       struct alib_intvec intvec[16];
+
+       void *curtask;
+       uint32_t idle_count, disp_count;
+       uint16_t tmslice, nticks;
+       uint16_t sysflags;
+       int8_t intr_dis_nest, task_dis_nest;
+       uint16_t attn_flags, attn_resched;
+       void *resmod;
+       void *tasktrap, *taskexcept, *taks_exit;
+       uint32_t task_sig_alloc;
+       uint16_t task_trap_alloc;
+
+       struct alib_memlist memlist;
+       /* ... more ... */
+};
+
+struct alib_execbase *execbase;
+
+int alib_init(void);
+
+#endif /* AMIGALIB_H_ */