changeset 2609:9dd4f422aac7

Added NitrOS-9 ROM Kit from Cloud-9
author Boisy Pitre <boisy.pitre@nuance.com>
date Tue, 31 Jan 2012 13:57:35 -0600
parents ca1f56f8b646
children 0db361fd74df
files level1/coco/bootroms/makefile level1/coco/modules/makefile level1/modules/boot_rom.asm level1/modules/pakrom.asm level1/modules/rominfo.asm level1/modules/sysgo.asm level1/modules/vectors.asm level2/coco3/bootroms/makefile level2/coco3/modules/makefile level2/coco3_6309/bootroms/makefile level2/modules/boot_rom.asm
diffstat 11 files changed, 816 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/level1/coco/bootroms/makefile	Tue Jan 31 13:57:35 2012 -0600
@@ -0,0 +1,42 @@
+include $(NITROS9DIR)/rules.mak
+
+# Module directory
+MD		= ../modules
+# Commands directory
+CD		= ../cmds
+
+DEPENDS		= ./makefile
+
+KERNEL_ROM	= $(MD)/rel $(MD)/krn $(MD)/krnp2 $(MD)/init $(MD)/boot_rom
+
+BOOTFILE_ROM	= $(MD)/rominfo $(MD)/ioman \
+		$(MD)/scf.mn $(MD)/vtio.dr \
+		$(MD)/covdg.io \
+		$(MD)/term32.dt \
+		$(MD)/clock_60hz $(MD)/clock2_soft
+
+BOOTROMS	= nos96809l1.rom
+KERNELS		= kernel_rom
+
+ALLROMS		= $(BOOTROMS)
+
+all:	$(ALLROMS)
+
+# Bootfiles
+nos96809l1.rom: $(BOOTFILE_ROM) $(KERNEL_ROM) $(DEPENDS)
+	$(MERGE) $(BOOTFILE_ROM)>$@.tmp
+	$(PADROM) 11776 $@.tmp
+	$(MERGE) $(KERNEL_ROM)>kernel_rom
+	$(PADROM) 4592 kernel_rom
+	$(MERGE) $@.tmp kernel_rom>$@.tmp2
+	$(MERGE) $@.tmp2 $(MD)/vectors>$@
+	$(RM) $@.tmp $@.tmp2
+	
+
+# Kernels
+kernel_rom: $(KERNEL_ROM) $(DEPENDS)
+	$(MERGE) $(KERNEL_ROM)>$@
+
+clean:
+	$(RM) $(ALLROMS) $(KERNELS)
+
--- a/level1/coco/modules/makefile	Tue Jan 31 06:58:57 2012 -0600
+++ b/level1/coco/modules/makefile	Tue Jan 31 13:57:35 2012 -0600
@@ -23,10 +23,10 @@
 
 BOOTERS		= boot_1773_6ms boot_1773_30ms \
 		boot_burke boot_rampak boot_wd1002 boot_dw3 boot_dw3_coco1 \
-		boot_tc3 boot_ide
+		boot_tc3 boot_ide boot_rom
 BOOTTRACK	= rel $(BOOTERS)
 KERNEL		= krn krnp2 wbug
-SYSMODS		= ioman init sysgo_dd sysgo_h0
+SYSMODS		= ioman init sysgo_dd sysgo_h0 rominfo vectors
 CLOCKS          = clock_60hz clock_50hz \
 		clock2_elim clock2_disto2 clock2_disto4 clock2_bnb \
                 clock2_smart clock2_harris clock2_cloud9 clock2_soft \
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/level1/modules/boot_rom.asm	Tue Jan 31 13:57:35 2012 -0600
@@ -0,0 +1,68 @@
+********************************************************************
+* Boot - NitrOS-9 ROM Boot Module
+*
+* $Id: boot_rom.asm,v 1.1 2004/04/05 03:34:39 boisy Exp $
+*
+* Edt/Rev  YYYY/MM/DD  Modified by
+* Comment
+* ------------------------------------------------------------------
+*   1      1998/??/??  Boisy G. Pitre
+* Created.
+*
+*   1r1    2003/09/07  Boisy G. Pitre
+* Added 6309 optimizations
+
+
+         nam   Boot
+         ttl   NitrOS-9 Level 1 ROM Boot Module
+
+         ifp1
+         use   defsfile
+         endc
+
+tylg     set   Systm+Objct
+atrv     set   ReEnt+rev
+rev      set   $01
+edition  set   1
+
+         mod   eom,name,tylg,atrv,start,size
+
+size     equ   .
+
+name     fcs   /Boot/
+         fcb   edition
+
+
+* obtain bootfile size at known offset
+start    pshs  u,y,x,a,b
+         leax  eom,pcr                 point to end of module
+         ldd   ,x                      get size of bootfile
+         std   ,s                      place bootfile size in A/B on stack
+* allocate memory from system
+         os9   F$SRqMem
+         bcs   Uhoh
+* copy bootfile from low RAM to allocated area
+         stu   2,s                     place address in X loc. on stack
+         ldx   #$2600+$1200            X points to bootfile in ROM
+         IFNE  H6309
+         ldw   ,s                      get bootfile size from A/B on stack
+         tfm   ,x+,u+
+         ELSE
+         ldd   ,s                      get bootfile size from A/B on stack
+Loop     ldy   ,x++
+         sty   ,u++
+         subd  #2
+         bgt   Loop
+         ENDC
+
+* Upon exit, we return to the kernel with:
+*    X = address of bootfile
+*    D = size of bootfile
+Uhoh     puls  u,y,x,a,b,pc
+
+         emod
+eom      equ   *
+
+* Size of bootfile (maximum is put here)
+         fdb   $2E00
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/level1/modules/pakrom.asm	Tue Jan 31 13:57:35 2012 -0600
@@ -0,0 +1,189 @@
+********************************************************************
+* NitrOS-9 Level 2 ROM Relocation Code
+*
+* $Id: pakrom.asm,v 1.1 2004/04/05 03:34:39 boisy Exp $
+*
+* This code is intended to be used in the ROM socket of a disk
+* controller or program pak and is NOT intended for the CoCo's
+* internal ROM.
+*
+* Edt/Rev  YYYY/MM/DD  Modified by
+* Comment
+* ------------------------------------------------------------------
+*   1      1999/05/09  Boisy G. Pitre
+* Created.
+
+         ifp1  
+         use   systype
+         endc
+
+         org   $C000
+
+         fcc   /DK/       Disk BASIC Key
+         jmp   RelROM,pc
+
+* Filler area where Super Extended BASIC patches... we avoid putting code here
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+         fdb   $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+
+* ROM relocation code -- copies the boot track into $2600 and JMPs to it
+
+RelROM   leax  eom,pc     point to code code after this
+         ldy   #$2600     dst address (RAM)
+copyloop ldd   ,x++       get 2 bytes from src
+         std   ,y++       put 2 bytes to dst
+         cmpy  #$2600+$1200 at end?
+         blo   copyloop   nope, copy more...
+         jmp   $2602      jump to OS rel code
+
+eom      equ   *
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/level1/modules/rominfo.asm	Tue Jan 31 13:57:35 2012 -0600
@@ -0,0 +1,201 @@
+********************************************************************
+* ROMInfo - NitrOS-9 ROM Relocation Code
+*
+* $Id: rominfo.asm,v 1.1 2004/04/05 03:34:39 boisy Exp $
+*
+* Edt/Rev  YYYY/MM/DD  Modified by
+* Comment
+* ------------------------------------------------------------------
+*   1      1998/05/03  Boisy G. Pitre
+* Created for the Coyota project and later productized.
+
+         nam   ROMInfo
+         ttl   NitrOS-9 ROM Relocation Code
+
+         ifp1  
+         use   defsfile
+         endc  
+
+tylg     set   Systm+Objct
+atrv     set   ReEnt+rev
+rev      set   $01
+edition  set   1
+
+* Untested!
+         IFNE  ROMPak
+         jmp   $C000+start
+         ENDC
+
+         mod   eom,name,tylg,atrv,start,size
+
+size     equ   .
+
+name     fcs   /ROMInfo/
+         fcb   edition
+
+start    equ   *
+
+         IFGT  Level-1
+
+* NitrOS-9 Level 2 - CoCo 3
+* Bring the CoCo 3 to sanity
+         orcc  #IntMasks  disable FIRQ, IRQ
+         clr   $FFD9      go into fast mode
+         lda   #$0A       CC3 Mode, No MMU, 32K Int. ROM
+         sta   $FF90
+         clr   $FFDE      RAM/ROM mode (upper 16K ROM at $C000)
+
+* Setup MMU
+         ldx   #DAT.Regs
+         leay  MMUTbl,pcr
+         IFNE  H6309
+         ldw   #16
+         tfm   y+,x+
+         ELSE
+         ldb   #16
+MMULoop  lda   ,y+
+         sta   ,x+
+         decb  
+         bne   MMULoop
+         ENDC
+
+* Set up CoCo 3 Video Registers at $FF98-$FF9F
+         ldd   #$0000
+         std   $FF98
+         std   $FF9A
+         std   $FF9E
+         ldd   #$0FE0
+         std   $FF9C
+
+* Initialize PIAs
+         ldx   #PIA1Base  RG - Initialize the PIA 1
+         ldd   #$FF34
+         clr   1,x
+         clr   3,x
+         deca  
+         sta   ,x
+         lda   #$F8
+         sta   2,x
+         stb   1,x
+         stb   3,x
+         clr   2,x
+         lda   #$02
+         sta   ,x
+
+         lda   #$FF       RG - Initialize the PIA 0
+         ldx   #PIA0Base
+         clr   1,x
+         clr   3,x
+         clr   ,x
+         sta   2,x
+         stb   1,x
+         stb   3,x
+
+         tfr   b,dp
+         clr   2,x
+
+
+         lda   #$CA       RG - CC2 mode, MMU, constant DRAM, 32K internal ROM
+         sta   $FF90
+
+         bra   RelROM
+
+* MMU
+MMUTbl         
+         fcb   $38,$39,$3A,$3B,$3C,$3D,$3E,$3F
+         fcb   $38,$39,$3A,$3B,$3C,$3D,$3E,$3F
+
+* ROM relocation code -- copies the boot track into $2600 and JMPs to it
+RelROM   ldx   #$EC00 src address (boot track in ROM)
+         ldy   #$2600     dst address (RAM)
+         IFNE  H6309
+         ldw   #$1200
+         tfm   x+,y+
+         ELSE
+copyloop ldd   ,x++       get 2 bytes from src
+         std   ,y++       put 2 bytes to dst
+         cmpx  #$EC00+$1200 at end?
+         blo   copyloop   nope, copy more...
+         ENDC
+         jmp   $2602      jump to OS rel code
+
+         ELSE
+
+* NitrOS-9 Level 1 - CoCo 1/2
+         ldx   #PIA1Base                 PIA1
+         clr   -3,x                    clear PIA0 Control Register A
+         clr   -1,x                    clear PIA0 Control Register B
+         clr   -4,x                    set PIA0 side A to input
+         ldd   #$FF34
+         sta   -2,x                    set PIA0 side B to output
+         stb   -3,x                    enable PIA0 peripheral reg, disable PIA0
+         stb   -1,x                    MPU interrupts, set CA2, CA1 to outputs
+         clr   1,x                     $FF20 = DDR, motoroff
+         clr   3,x                     $FF22 = DDR, sound disabled
+         deca                          A = $FE after deca
+         sta   ,x                      bits 1-7 are outputs, bit 0 is input on PIA1 side A
+         lda   #$F8
+         sta   2,x                     bits 0-2 are inputs, bits 3-7 are outputs on B side
+         stb   1,x                     enable peripheral registers, disable PIA1 MPU
+         stb   3,x                     interrupts and set CA2, CB2 as outputs
+         clr   2,x                     set 6847 mode to alphanumeric
+         ldb   #$02
+         stb   ,x                      make RS-232 output marking
+         clrb
+         tfr   b,dp                    B = 0
+         ldb   #$04
+         clr   -2,x
+         bitb  2,x
+
+         lda   #$37
+         sta   PIA1Base+3
+
+         lda   PIA0Base+3
+         ora   #$01
+         sta   PIA0Base+3
+
+         lda   PIA1Base+2
+         anda  #$07
+         sta   PIA1Base+2
+
+* VDG Mode
+         sta   $FFC0
+         sta   $FFC2
+         sta   $FFC4
+
+* 64K DRAM (M0=0, M1=1)
+         sta   $FFDA                   RESET M0
+         sta   $FFDD                   SET   M1
+
+* ROM relocation code -- copies the boot track into $2600
+RelROM   ldx   #$AE00                  src address (ROM)
+         ldy   #$2600                  dst address (RAM)
+         IFNE  H6309
+         ldw   #$1200
+         tfm   x+,y+
+         ELSE
+copyloop ldd   ,x++                    get 2 bytes from src
+         std   ,y++                    put 2 bytes to dst
+         cmpx  #$AE00+$1200            at end?
+         blo   copyloop                nope, copy more...
+         ENDC
+* BOOT relocation code -- copies the bootfile into $2600+$1200
+RelBOOT  ldx   #$8000
+         ldy   #$2600+$1200
+         IFNE  H6309
+         ldw   #$2E00
+         tfm   x+,y+
+         ELSE
+cpy2loop ldd   ,x++
+         std   ,y++
+         cmpx  #$8000+$2E00
+         blo   cpy2loop
+         ENDC
+         jmp   $2602                   jump to OS rel code
+
+         ENDC
+
+         emod  
+eom      equ   *
+         end   
+
--- a/level1/modules/sysgo.asm	Tue Jan 31 06:58:57 2012 -0600
+++ b/level1/modules/sysgo.asm	Tue Jan 31 13:57:35 2012 -0600
@@ -49,9 +49,9 @@
 DefPrior set   128         
 
 Banner   equ   *
-         IFEQ  ROM
          fcc   /(C) 2009 The NitrOS-9 Project/
 CrRtn    fcb   C$CR,C$LF
+         IFEQ  ROM
          IFNE  NOS9DBG
          fcc   "**   DEVELOPMENT BUILD   **"
          fcb   C$CR,C$LF
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/level1/modules/vectors.asm	Tue Jan 31 13:57:35 2012 -0600
@@ -0,0 +1,41 @@
+********************************************************************
+* vectors - CoCo ROM vectors
+*
+* $Id: vectors.asm,v 1.1 2004/04/05 03:34:39 boisy Exp $
+*
+* These 16 bytes are merged at the end of the ROM image in ROM-based
+* NitrOS-9 kernels
+*
+* Edt/Rev  YYYY/MM/DD  Modified by
+* Comment
+* ------------------------------------------------------------------
+
+        IFP1
+        use     defsfile
+        ENDC
+
+        IFGT    Level-1
+
+* NitrOS-9 Level 2 ROM vectors
+	fdb	$0000	Reserved
+	fdb	$FEEE	SWI3
+	fdb	$FEF1	SWI2
+	fdb	$FEF4   FIRQ
+	fdb	$FEF7   IRQ
+	fdb	$FEFA   SWI
+	fdb	$FEFD   NMI
+	fdb	$8015	RESET
+
+        ELSE
+
+* NitrOS-9 Level 1 ROM Vectors
+	fdb	$8015	Reserved
+	fdb	$0100	SWI3
+	fdb	$0103	SWI2
+	fdb	$010F	FIRQ
+	fdb	$010C	IRQ
+	fdb	$0106	SWI
+	fdb	$0109	NMI
+	fdb	$8015	RESET
+
+        ENDC
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/level2/coco3/bootroms/makefile	Tue Jan 31 13:57:35 2012 -0600
@@ -0,0 +1,43 @@
+include $(NITROS9DIR)/rules.mak
+
+# Module directory
+MD		= ../modules
+# Commands directory
+CD		= ../cmds
+
+DEPENDS		= ./makefile
+
+KERNEL_ROM	= $(MD)/rel_32 $(MD)/boot_rom $(MD)/krn
+
+BOOTFILE_ROM	= $(MD)/rominfo $(MD)/krnp2 $(MD)/ioman $(MD)/init \
+		$(MD)/scf.mn $(MD)/vtio.dr \
+		$(MD)/keydrv_cc3.sb $(MD)/joydrv_joy.sb $(MD)/snddrv_cc3.sb \
+		$(MD)/covdg.io \
+		$(MD)/term_vdg.dt \
+		$(MD)/clock_60hz $(MD)/clock2_soft \
+		$(MD)/sysgo_rom
+
+BOOTROMS	= nos96809l2.rom
+KERNELS		= kernel_rom
+
+ALLROMS		= $(BOOTROMS)
+
+all:	$(ALLROMS)
+
+# Bootfiles
+nos96809l2.rom: $(BOOTFILE_ROM) $(KERNEL_ROM) $(DEPENDS)
+	$(MERGE) $(BOOTFILE_ROM)>$@.tmp
+	$(PADROM) 27648 $@.tmp
+	$(MERGE) $@.tmp $(KERNEL_ROM)>$@.tmp2
+	$(PADROM) 32752 $@.tmp2
+	$(MERGE) $@.tmp2 $(MD)/vectors>$@
+	$(RM) $@.tmp $@.tmp2
+	
+
+# Kernels
+kernel_rom: $(KERNEL_ROM) $(DEPENDS)
+	$(MERGE) $(KERNEL_ROM)>$@
+
+clean:
+	$(RM) $(ALLROMS) $(KERNELS)
+
--- a/level2/coco3/modules/makefile	Tue Jan 31 06:58:57 2012 -0600
+++ b/level2/coco3/modules/makefile	Tue Jan 31 13:57:35 2012 -0600
@@ -23,10 +23,10 @@
 
 BOOTERS		= boot_1773_6ms boot_1773_30ms \
 		 boot_burke boot_rampak boot_wd1002 boot_dw3 boot_dw3_becker \
-		boot_tc3 boot_ide
+		boot_tc3 boot_ide boot_rom
 BOOTTRACK	= rel_32 rel_40 rel_80 rel_32_50hz rel_40_50hz rel_80_50hz $(BOOTERS) krn
 KERNEL		= krnp2 krnp3_perr krnp4_regdump
-SYSMODS		= ioman init sysgo_h0 sysgo_dd
+SYSMODS		= ioman init sysgo_h0 sysgo_dd sysgo_rom rominfo vectors
 CLOCKS          = clock_60hz clock_50hz \
 		clock2_elim clock2_disto2 clock2_disto4 clock2_bnb \
 		clock2_smart clock2_harris clock2_cloud9 clock2_soft \
@@ -158,6 +158,9 @@
 sysgo_h0: sysgo.asm
 	$(AS) $< $(ASOUT)$@ $(AFLAGS)
 	
+sysgo_rom: sysgo.asm
+	$(AS) $< $(ASOUT)$@ $(AFLAGS) -aROM=1
+	
 # TC^3 SCSI Driver
 lltc3.dr: llscsi.asm
 	$(AS) $(ASOUT)$@ $< $(TC3FLAGS)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/level2/coco3_6309/bootroms/makefile	Tue Jan 31 13:57:35 2012 -0600
@@ -0,0 +1,43 @@
+include $(NITROS9DIR)/rules.mak
+
+# Module directory
+MD		= ../modules
+# Commands directory
+CD		= ../cmds
+
+DEPENDS		= ./makefile
+
+KERNEL_ROM	= $(MD)/rel_32 $(MD)/boot_rom $(MD)/krn
+
+BOOTFILE_ROM	= $(MD)/rominfo $(MD)/krnp2 $(MD)/ioman $(MD)/init \
+		$(MD)/scf.mn $(MD)/vtio.dr \
+		$(MD)/keydrv_cc3.sb $(MD)/joydrv_joy.sb $(MD)/snddrv_cc3.sb \
+		$(MD)/covdg.io \
+		$(MD)/term_vdg.dt \
+		$(MD)/clock_60hz $(MD)/clock2_soft \
+		$(MD)/sysgo_rom
+
+BOOTROMS	= nos96809l2.rom
+KERNELS		= kernel_rom
+
+ALLROMS		= $(BOOTROMS)
+
+all:	$(ALLROMS)
+
+# Bootfiles
+nos96809l2.rom: $(BOOTFILE_ROM) $(KERNEL_ROM) $(DEPENDS)
+	$(MERGE) $(BOOTFILE_ROM)>$@.tmp
+	$(PADROM) 27648 $@.tmp
+	$(MERGE) $@.tmp $(KERNEL_ROM)>$@.tmp2
+	$(PADROM) 32752 $@.tmp2
+	$(MERGE) $@.tmp2 $(MD)/vectors>$@
+	$(RM) $@.tmp $@.tmp2
+	
+
+# Kernels
+kernel_rom: $(KERNEL_ROM) $(DEPENDS)
+	$(MERGE) $(KERNEL_ROM)>$@
+
+clean:
+	$(RM) $(ALLROMS) $(KERNELS)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/level2/modules/boot_rom.asm	Tue Jan 31 13:57:35 2012 -0600
@@ -0,0 +1,181 @@
+********************************************************************
+* Boot - NitrOS-9 ROM Boot Module
+*
+* $Id: boot_rom.asm,v 1.1 2004/04/05 03:34:39 boisy Exp $
+*
+* Edt/Rev  YYYY/MM/DD  Modified by
+* Comment
+* ------------------------------------------------------------------
+*   1      1998/??/??  Boisy G. Pitre
+* Created.
+*
+*   1r1    2003/09/07  Boisy G. Pitre
+* Added 6309 optimizations
+
+         nam   Boot
+         ttl   NitrOS-9 Level 2 ROM Boot Module
+
+         ifp1
+         use   defsfile
+         endc
+
+tylg     set   Systm+Objct
+atrv     set   ReEnt+rev
+rev      set   $01
+edition  set   1
+
+         mod   eom,name,tylg,atrv,start,size
+
+size     equ   .
+
+name     fcs   /Boot/
+         fcb   edition
+
+start    equ   *
+* obtain bootfile size at known offset
+         pshs  u,y,x,a,b,cc
+         orcc  #IntMasks       mask interrupts
+* allocate memory from system
+* memory will start at $8000, blocks 1, 2, 3 and 3F
+* we allocate $100 bytes more so that the memory will start
+* exactly at $8000
+         ldd   #$8000-$1300
+         os9   F$BtMem
+         bcs   Uhoh
+
+         stu   3,s                     save pointer in X on stack
+         std   1,s                     save size in D on stack
+
+* TRICK!  Map block 4 into $4000, copy our special ROM copy code
+*         there, then jmp to it!
+         lda   $FFA2
+         pshs  a
+         lda   #$04
+         sta   $FFA2
+         IFNE  H6309
+         ldw   #RelCodeL
+         ELSE
+         ldd   #RelCodeL               code less than 256 bytes
+         ENDC
+         leax  RelCode,pcr
+         ldy   #$4800
+         IFNE  H6309
+         tfm   x+,y+
+         ELSE
+Copy     lda   ,x+
+         sta   ,y+
+         decb
+         bne   Copy
+         ENDC
+
+Jump     jsr   $4800                   * jump to rel code
+         puls  a                       restore original block at $4000
+         sta   $FFA2
+
+* Upon exit, we return to the kernel with:
+*    X  = address of bootfile
+*    D  = size of bootfile
+*    CC = carry cleared
+ExitOK   andcc #^Carry                 clear carry
+Uhoh     puls  u,y,x,a,b,cc,pc
+
+
+* this code executes at $4800
+RelCode  equ   *
+         lda   #$4E                    CC3 mode, MMU, 32K ROM
+         sta   $FF90
+         sta   $FFDE                   ROM/RAM mode
+
+* Map ROM Blocks in
+         ldd   #$3C3D
+         std   $FFA4
+         lda   #$3E
+         sta   $FFA6
+
+* Map block 1 at $6000
+         lda   $FFA3
+         pshs  a
+         lda   #$01
+         sta   $FFA3
+* Copy first 8K of ROM
+         ldx   #$8000
+         ldy   #$6000
+         IFNE  H6309
+         ldw   #$2000
+         tfm   x+,y+
+         ELSE
+Loop1    ldd   ,x++
+         std   ,y++
+         cmpx  #$A000
+         blt   Loop1
+         ENDC
+
+* Map block 2 at $6000
+         lda   #$02
+         sta   $FFA3
+* Copy second 8K of ROM
+*         ldx   #$A000		X is already $A000
+         ldy   #$6000
+         IFNE  H6309
+         ldw   #$2000
+         tfm   x+,y+
+         ELSE
+Loop2    ldd   ,x++
+         std   ,y++
+         cmpx  #$C000
+         blt   Loop2
+         ENDC
+
+* Map block 3 at $6000
+         lda   #$03
+         sta   $FFA3
+* Copy third 8K of ROM
+*         ldx   #$C000		X is already $C000
+         ldy   #$6000
+         IFNE  H6309
+         ldw   #$2000
+         tfm   x+,y+
+         ELSE
+Loop3    ldd   ,x++
+         std   ,y++
+         cmpx  #$E000
+         blt   Loop3
+         ENDC
+
+* Copy remaining ROM area ($8000-$1300)
+         lda   #$3F
+         sta   $FFA3
+*         ldx   #$E000		X is already $E000
+         ldy   #$6000
+Loop4    clr   $FFDE                   put in ROM/RAM mode to get byte
+         ldd   ,x++
+         clr   $FFDF                   put back in RAM mode to store byte
+         std   ,y++
+         cmpx  #$EC00
+         blt   Loop4
+*         ldx   #$6000
+*         ldy   #$E000
+*Loop5    ldd   ,x++
+*         std   ,y++
+*         cmpx  #$6C00
+*         blt   Loop5
+
+         lda   D.HINIT                 restore GIME HINIT value
+         sta   $FF90
+         puls  a                       restore org block at $6000
+         sta   $FFA3
+         lda   #$03
+         sta   $FFA6
+         ldd   #$0102
+         std   $FFA4
+         rts
+
+RelCodeL equ   *-RelCode
+
+* Fillers to get to $1D0
+Pad      fill  $39,$1D0-3-*
+
+         emod
+eom      equ   *
+
+         end