Mercurial > hg > Members > kono > nitros9-code
diff level2/modules/rominfo.asm @ 0:6641a883d6b0
Initial revision
author | boisy |
---|---|
date | Thu, 04 Apr 2002 16:34:12 +0000 |
parents | |
children | 1b329bae6f60 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/level2/modules/rominfo.asm Thu Apr 04 16:34:12 2002 +0000 @@ -0,0 +1,110 @@ +******************************************************************** +* ROMInfo - OS-9 Level Two ROM Relocation Code +* +* $Id$ +* +* Executed at $8015 from ROM +* +* Additional annotation Robert Gault 6/9/98 +* +* Ed. Comments Who YY/MM/DD +* ------------------------------------------------------------------ +* 1 Created BGP 98/05/03 + + nam ROMInfo + ttl OS-9 Level Two 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 /ROMInfo/ + fcb edition + +start equ * + +* 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 + ldb #16 + +MMULoop lda ,y+ + sta ,x+ + decb + bne MMULoop + +* 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) +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... + jmp $2602 jump to OS rel code + + emod +eom equ * + end