Mercurial > hg > Members > kono > nitros9-code
view level1/modules/rominfo.asm @ 2730:6bd6e348665d
Working on cloned default branch, pulled 2012/11/03
user: gheskett@wdtv.com
branch 'default'
changed ChangeLog
changed ReadMe
changed defs/rbf.d
changed defs/rbsuper.d
changed defs/scsi.d
changed level1/atari/cmds/fuji.asm
changed level1/coco/modules/makefile
changed level1/modules/boot_scsi.asm
changed level1/modules/superdesc.asm
changed level2/coco3/bootfiles/makefile
changed level2/coco3/modules/makefile
changed level2/coco3_6309/bootfiles/makefile
changed level2/modules/joydrv_6551L.asm
changed rules.mak
author | gheskett@wdtv.com |
---|---|
date | Sat, 10 Nov 2012 11:55:48 -0500 |
parents | 9dd4f422aac7 |
children | 8629f64b7dd3 |
line wrap: on
line source
******************************************************************** * 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