From 5e3c2f43539caefc1b99eedc491dde9e31e61c9e Mon Sep 17 00:00:00 2001 From: Bernard Blackham Date: Tue, 5 Aug 2003 15:47:04 +0000 Subject: [PATCH] Files that got left out - initial commits --- ROM2/main.c | 5 +++ ROM2/memory.x | 32 ++++++++++++++++++ ROM2/vectors.s | 88 ++++++++++++++++++++++++++++++++++++++++++++++++++ ROM2/vend.h | 51 +++++++++++++++++++++++++++++ 4 files changed, 176 insertions(+) create mode 100644 ROM2/main.c create mode 100644 ROM2/memory.x create mode 100644 ROM2/vectors.s create mode 100644 ROM2/vend.h diff --git a/ROM2/main.c b/ROM2/main.c new file mode 100644 index 0000000..3331548 --- /dev/null +++ b/ROM2/main.c @@ -0,0 +1,5 @@ +#include "vend.h" + +void _start() { +} + diff --git a/ROM2/memory.x b/ROM2/memory.x new file mode 100644 index 0000000..53ab87c --- /dev/null +++ b/ROM2/memory.x @@ -0,0 +1,32 @@ +/* memory.x -- Memory definition for a 68HC11 program in EEPROM (512 bytes) + Copyright 2001 Free Software Foundation, Inc. + Written by Stephane Carrez (stcarrez@worldnet.fr) + +This file is part of GTAM. + +GTAM is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GTAM is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GTAM; see the file COPYING. If not, write to +the Free Software Foundation, 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. */ + +/* Defines the memory layout for a bootstrap program. + Pretend there is no data section. */ +MEMORY +{ + page0 (rwx) : ORIGIN = 0x0000, LENGTH = 0x00ff + text (rx) : ORIGIN = 0x8000, LENGTH = 0x7fff + data (rw) : ORIGIN = 0x0100, LENGTH = 0x0fff /* FIXME */ +} + +/* Setup the stack on the top of the data internal ram (not used). */ +PROVIDE (_stack = 0x0100-1); diff --git a/ROM2/vectors.s b/ROM2/vectors.s new file mode 100644 index 0000000..642f6da --- /dev/null +++ b/ROM2/vectors.s @@ -0,0 +1,88 @@ +/* M68HC11 Interrupt vectors table + Copyright (C) 1999 Free Software Foundation, Inc. + Written by Stephane Carrez (stcarrez@worldnet.fr) + +This file is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the +Free Software Foundation; either version 2, or (at your option) any +later version. + +In addition to the permissions in the GNU General Public License, the +Free Software Foundation gives you unlimited permission to link the +compiled version of this file with other programs, and to distribute +those programs without any restriction coming from the use of this +file. (The General Public License restrictions do apply in other +respects; for example, they cover modification of the file, and +distribution when not linked into another program.) + +This file is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; see the file COPYING. If not, write to +the Free Software Foundation, 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. */ + + .sect .text + .globl _start + +;; Default interrupt handler. + .sect .text +def: + rti + + .globl _debug_user_vectors +_debug_user_vectors = 0 + +;; +;; Interrupt vectors are in a specific section that is +;; mapped at 0xffc0. +;; + .sect .vectors + .globl vectors +vectors: + .word def ; ffc0 + .word def ; ffc2 + .word def ; ffc4 + .word def ; ffc6 + .word def ; ffc8 + .word def ; ffca + .word def ; ffcc + .word def ; ffce + .word def ; ffd0 + .word def ; ffd2 + .word def ; ffd4 + + ;; SCI + .word def ; ffd6 + + ;; SPI + .word def ; ffd8 + .word def ; ffda (PAII) + .word def ; ffdc (PAOVI) + .word def ; ffde (TOI) + + ;; Timer Output Compare + .word def ; ffe0 + .word def ; ffe2 + .word def ; ffe4 + .word def ; ffe6 + .word def ; ffe8 + + ;; Timer Input compare + .word def ; ffea + .word def ; ffec + .word def ; ffee + + ;; Misc + .word def ; fff0 (RTII) + .word def ; fff2 (IRQ) + .word def ; fff4 (XIRQ) + .word def ; fff6 (SWI) + .word def ; fff8 (ILL) + .word def ; fffa (COP Failure) + .word def ; fffc (COP Clock monitor) + .word _start ; fffe (reset) + diff --git a/ROM2/vend.h b/ROM2/vend.h new file mode 100644 index 0000000..4584f5e --- /dev/null +++ b/ROM2/vend.h @@ -0,0 +1,51 @@ +#ifndef _VEND_H_ +#define _VEND_H_ + +/* FIXME: are these typedefs right for m68hc11-gcc? */ +typedef unsigned char u8; +typedef signed char s8; +typedef unsigned short u16; +typedef signed short s16; +typedef unsigned long u32; +typedef signed long s32; +typedef u8 bool; +typedef u16 addr_t; + +/******* from display.c *******/ + +/* scrolling modes */ +#define WRAP_SCROLL_L 1 /* scroll to the left */ +#define WRAP_SCROLL_R 1 /* scroll to the right */ +#define WRAP_ALTERNATE 2 /* alternate between text */ + +extern char current_message[1024]; + +void set_msg(char* newmsg); +void set_wrap_mode(u8 new_wrap_mode); +void display_refresh(); + +/******* from helpers.c *******/ +#define buffered_port_h(p) \ + void outb_##p(u8 b); \ + void bset_##p(u8 mask); \ + void bclr_##p(u8 mask); + +void outb(u16 port, u8 byte); +void bset(u16 addr, u8 mask); +void bclr(u16 addr, u8 mask); + +buffered_port_h(3800); + +void delay(u16 ms); + +/******** Some IO Ports ******/ +#define PORTA 0x1000 +#define PORTA_DISP_RESET 0x80 /* active low */ + +#define SPCR 0x1028 /* Serial Peripheral Control Register */ +#define SPCR_SPE 0x40 /* Serial Peripheral System Enable */ + +/* Address 3800 bits */ +#define A3800_DISPLAY_WRITE 0x04 + +#endif /* _VEND_H_ */ -- 2.20.1