summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDuncan Smith2010-06-30 17:41:52 -0700
committerDuncan Smith2010-06-30 17:41:52 -0700
commitdbe3c673c4c0726a96a155e053fffffe8588e083 (patch)
treee1607ac2035860f3f7d1b5111672e403448b5183
parent2bb62105cd801bbabf1af11c07e0ee18225f3c12 (diff)
foo
-rw-r--r--680.inc8
-rw-r--r--loader.c6
-rw-r--r--main.asm1
-rw-r--r--ports.asm13
4 files changed, 22 insertions, 6 deletions
diff --git a/680.inc b/680.inc
new file mode 100644
index 0000000..6ae2abf
--- /dev/null
+++ b/680.inc
@@ -0,0 +1,8 @@
+
+SAVEREG MACRO
+ movem d3-d7/a3-a6,-(sp)
+ ENDM
+
+RESTREG MACRO
+ movem (sp)+,d3-d7/a3-a6
+ ENDM
diff --git a/loader.c b/loader.c
index 9808b34..64910ee 100644
--- a/loader.c
+++ b/loader.c
@@ -21,17 +21,19 @@ void init_load(void)
* 0x1f ROM
*/
+ // RAM pages
pages[0x40] = malloc(PAGE_SIZE * sizeof(char));
pages[0x41] = malloc(PAGE_SIZE * sizeof(char));
+ // ROM pages
for (int i = 0; i++; i <= 0x1f) {
pages[i] = pages[0x40];
}
mem_page_0 = pages[0];
mem_page_loc_0 = 0;
- mem_page_1 = pages[0x40];
- mem_page_loc_1 = 0x40;
+ mem_page_1 = pages[0x1f];
+ mem_page_loc_1 = 0x1f;
mem_page_2 = pages[0];
mem_page_loc_2 = 0;
mem_page_3 = pages[0x40];
diff --git a/main.asm b/main.asm
index 05235f5..552d2e0 100644
--- a/main.asm
+++ b/main.asm
@@ -47,6 +47,7 @@
xdef _tigcc_native
include "../tios.h"
+ include "680.inc"
__main:
diff --git a/ports.asm b/ports.asm
index e183e7a..ddc0bef 100644
--- a/ports.asm
+++ b/ports.asm
@@ -540,10 +540,11 @@ port_out_03:
port_in_04:
port_out_04:
;; Bank B paging, among other things
- ;; XXX save registers
+ SAVEREG
move.b d1,-(a7)
jsr bankswap_b_write
addq 2,a7
+ RESTREG
rts
port_in_05:
@@ -551,10 +552,11 @@ port_out_05:
port_in_06:
port_out_06:
;; Bank A paging
- ;; XXX save registers
+ SAVEREG
move.b d1,-(a7)
jsr bankswap_a_write
addq 2,a7
+ RESTREG
rts
port_in_07:
@@ -677,16 +679,19 @@ port_out_10_set_row:
port_in_11:
;; LCD data
- ;; XXX save registers
+ SAVEREG
jsr video_read
move.b d0,d1 ; return value
+ RESTREG
rts
port_out_11:
;; LCD data
+ SAVEREG
move.b d1,-(a7)
- ;; XXX save registers
jsr video_write
+ addq #2,a7
+ RESTREG
rts
port_in_12: