Monday, March 2, 2020

MC-10 Memory map

This is the MC-10 memory map copied from the service manual, but with a few minor changes.
The address decoding inside the MC-10 is "minimal", so the Keyboard/VDG I/O responds over a full 16K area, but internal address decoding can be disabled by external expansion devices.
Programmer's should only use the top of that address range to access that hardware.

The MC-10 only includes 4K of RAM internally, but hi-res 256x192 2 color (RG6), and 128x192 4 color (CG6) modes require 6K.  The 6847 VDG's buss is isolated from the expansion connector on the back of the machine, and the top address line isn't even connected, so you can't just plug in a RAM expansion to use hi-res modes.  The hardware mod was published in a CoCo magazine shortly after the machine was released, but I'll have to look up what magazine.  (Color Computer Magazine maybe?)

Making matters worse, the ROM places BASIC system variables, and interrupt vectors in the upper part of the internal 4K of RAM, so to use hi-res graphics you need a new BASIC, or to disable the ROMs.  I've been working on a new ROM, so this is trivial for emulators.



MC-10 Memory map from the service manual
Hex Address
C000 - FFFF            16K ROM (only upper 8K used)
9000 - BFFF            16K I/O Slot (Keyboard, VDG control, and sound)
4000 - 8FFF            16K RAM (4K - 20K used) (video starts at $4000)
0100 - 3FFF            Not Used
0080 - 00FF            RAM internal to the 6803
0015 - 007F            Not Used
0014                RAM Control Register
0013                Not Used
0012                Not Used
0011                Not Used
0010                Not Used
000F                Port 3 Control and Status Register
000E                Input Capture Register (low byte)
000D                Input Capture Register (high byte)
000C                Output Compare Register (low byte)
000B                Output Compare Register (high byte)
000A                Counter (low byte)
0009                Counter (high byte)
0008                Timer Control and Status Register
0007                Not Used
0006                Not Used
0005                Not Used
0004                Not Used
0003                Miscellaneous I/O Data Register
0002                Keyboard Output Lines
0001                Data Direction Register for miscellaneous I/O
0000                Data Direction Register for keyboard lines

No comments:

Post a Comment