coco3: copy 8k bank at cpu $c000 to new bank freeing 0x6 for init
authorBrett Gordon <beretta42@gmail.com>
Sat, 8 Oct 2016 15:01:43 +0000 (11:01 -0400)
committerBrett Gordon <beretta42@gmail.com>
Sat, 8 Oct 2016 16:20:16 +0000 (12:20 -0400)
Kernel/platform-coco3/coco3.s

index 405c05b..1390c12 100644 (file)
@@ -161,15 +161,24 @@ b@        sta     ,x+
        inca
        decb
        bne     b@
+       ;; move mmu bank 0x6 to 0xB
+       lda     #$0b            ; map mmu bank 0xB to cpu $0000
+       sta     $ffa8           ;
+       ldx     #$0000          ; dest
+       ldu     #$c000          ; src
+c@     ldd     ,u++            ; copy 2 at a time
+       std     ,x++            ;
+       cmpx    #$e000          ; are we done?
+       bne     c@              ; loop if not done
         ;; set temporary screen up
        clr     $ff9c           ; reset scroll register
        ldb     #%01000100      ; coco3 mode
        stb     $ff90
        ;; detect PAL or NTSC ROM
        ldb     #$3f            ; put Super BASIC in mmu
-       stb     $ffae           ; 
+       stb     $ffae           ;
        lda     $c033           ; get BASIC's "mirror" of Video Reg
-       ldb     #$06            ; put Fuzix Kernel back in mmu
+       ldb     #$0b            ; put Fuzix Kernel back in mmu
        stb     $ffae           ;
        anda    #$8             ; mask off 50 hz bit
        sta     _hz             ; save for future use