summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAstrid Smith2010-07-03 21:30:14 -0700
committerAstrid Smith2010-07-03 21:30:14 -0700
commit70d0b5e32c6b9d7685a18e153504cfd88ba0f420 (patch)
treefd90c61dd77026d1c10e0ee1de2c7edc2cb1391e
parent3f191892ed3dd8a9f8ad81cb039468d3ef2aa172 (diff)
Now it compiles properly. Still doesn't seem to run without address error, though.
-rw-r--r--asm_vars.h2
-rw-r--r--bankswap.c2
-rw-r--r--loader.c8
-rw-r--r--main.asm15
-rw-r--r--ports.asm4
5 files changed, 23 insertions, 8 deletions
diff --git a/asm_vars.h b/asm_vars.h
index 1901bb0..2dc35e9 100644
--- a/asm_vars.h
+++ b/asm_vars.h
@@ -12,6 +12,6 @@ extern void* mem_page_loc_3;
extern void** pages;
-
+#define PAGE_SIZE 0x4000
#endif
diff --git a/bankswap.c b/bankswap.c
index 24cc57e..107737f 100644
--- a/bankswap.c
+++ b/bankswap.c
@@ -6,8 +6,6 @@
#include "asm_vars.h"
-void* pages[256];
-
/* Address 0000 is always bound to ROM page 0. */
/* Process orders to swap bank A (port 06, 0x4000). */
diff --git a/loader.c b/loader.c
index 3997405..3a292a3 100644
--- a/loader.c
+++ b/loader.c
@@ -5,17 +5,19 @@
* Copyright 2010, Astrid Smith
* GPL
*/
-#include <tigcc.h>
+#include <tigcclib.h>
#include "asm_vars.h"
void init_load(void)
{
+ int i;
+
pages = malloc(256 * sizeof(void*));
/* Page layout:
* 0x40 RAM
* 0x41 RAM
-
+ *
* 0x00 ROM
* ... all the way to ...
* 0x1f ROM
@@ -26,7 +28,7 @@ void init_load(void)
pages[0x41] = malloc(PAGE_SIZE * sizeof(char));
// ROM pages
- for (int i = 0; i++; i <= 0x1f) {
+ for (i = 0; i++; i <= 0x1f) {
pages[i] = pages[0x40];
}
diff --git a/main.asm b/main.asm
index f4e770e..77cd082 100644
--- a/main.asm
+++ b/main.asm
@@ -67,6 +67,7 @@ __main:
emu_setup:
movea emu_plain_op,a5
lea emu_run,a2
+ lea flag_storage,a3
rts
@@ -97,11 +98,25 @@ mem_page_1: dc.l 0 ; bank 1
mem_page_2: dc.l 0 ; bank 2
mem_page_3: dc.l 0 ; bank 3
+ xdef mem_page_0
+ xdef mem_page_1
+ xdef mem_page_2
+ xdef mem_page_3
+
mem_page_loc_0: dc.b 0
mem_page_loc_1: dc.b 0
mem_page_loc_2: dc.b 0
mem_page_loc_3: dc.b 0
+ xdef mem_page_loc_0
+ xdef mem_page_loc_1
+ xdef mem_page_loc_2
+ xdef mem_page_loc_3
+
+pages: dc.l 0
+
+ xdef pages
+
;; Take a physical address in a0 and turn it into a virtual
;; address in d0
;; Destroys d0
diff --git a/ports.asm b/ports.asm
index ddc0bef..5834ae5 100644
--- a/ports.asm
+++ b/ports.asm
@@ -543,7 +543,7 @@ port_out_04:
SAVEREG
move.b d1,-(a7)
jsr bankswap_b_write
- addq 2,a7
+ addq #2,a7
RESTREG
rts
@@ -555,7 +555,7 @@ port_out_06:
SAVEREG
move.b d1,-(a7)
jsr bankswap_a_write
- addq 2,a7
+ addq #2,a7
RESTREG
rts