Mercurial > hg > Members > kono > nitros9-code
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