We'll use a template disk (with our STARTUP bas) and attach the 2b0
file to it
Sending Data to the Sub CPU
The Sub CPU handles graphics drawing and key input - it's a second
6809
To control it we have to send data to it via a 128 byte shared
memory block, between $FC80-FCFF ($D380-D3FF on the Sub CPU side)
To do this, we have to:
1. Wait for the Sub Cpu to not be busy (wait for Bit7 in $FD05 to
equal 0)
2. Halt the Sub Cpu (set Bit 7 of $FD05 to 1)
3. Copy command data to $FC80-FCFF
4. Resume the Sub CPU (write 0 to $FD05)
The command will then be processed by the sub CPU
if we HALT and RESUME the sub cpu but don't set a command there
WILL be trouble!
When we do this we need to set the 'request ready' bit (Bit 7 of
$F780) - this will stop the SUB CPU trying to process a command and
getting confused.
RAM Main CPU
From
To
Use
$0000
$7FFF
Ram
$8000
$FBFF
Basic Rom / Ram **
$FC00
$FC7F
Ram
$FC80
$FCFF
Shared Ram (With SUB CPU $D380)
$FD00
$FDFF
IO area
$FE00
$FEEF
Boot Rom
$FFF0
$FFFF
Vectors
** $FD0F Enable/Disable Basic ROM 8000-FC00 (Write=Disable... Read=
Enable)
RAM Sub CPU
From
To
Use
$0000
$3FFF
VRAM (BLUE)
$4000
$7FFF
VRAM (RED)
$8000
$BFFF
VRAM (GREEN)
$C000
$CFFF
Console Buffer Ram
$D000
$D37F
Work Ram
$D380
$D3FF
Shared Ram (With MAIN CPU $FC80)
$D400
$D7FF
IO area
$D800
$DFFF
Character Rom
$E000
$FFFF
CRT Monitor Rom
Ports Main CPU
Address
Read Bits
Read Purpose
Write Bits
Write Purpose
$FD00
D-------M
Key Clock D8
Ss-------Ao
Audio Casette / Printer
$FD01
DDDDDDDD
Key Data
DDDDDDDD
Printer Data
$FD02
A-PPPPPP
Audio Casette / Printer
RRRR-TPK
IRQ
$FD03
----ETPK
IRQ
CK-----S
Buzzer
$FD04
------BA
SubCpu Brk / Attention
$FD05
B------E
SubCPU Busy / Extdet
HC-----Z
Halt / Cancel / Z80
$FD06
DDDDDDDD
RS232 Data
DDDDDDDD
RS232 Data
$FD07
SSSSSSSS
RS232 Status
CCCCCCCC
RS232 Comand
$FD0D
RRRRRRRR
PSG AY Register (need to write zero after reg num?)
$FD0E
DDDDDDDD
PSG AY Data
DDDDDDDD
PSG AY Data
$FD0F
BBBBBBBB
ROM Bank
BBBBBBBB
Ram Bank
$FD18
SSSSSSSS
Floppy Status
CCCCCCCC
Floppy Command
$FD19
DDDDDDDD
Floppy Track Register
DDDDDDDD
Floppy Track Register
$FD1A
DDDDDDDD
Floppy Sector Register
DDDDDDDD
Floppy Sector Register
$FD1B
DDDDDDDD
Floppy Sector Register
DDDDDDDD
Floppy Sector Register
$FD1C
DDDDDDDD
Floppy
DDDDDDDD
Floppy
$FD1D
DDDDDDDD
Floppy
DDDDDDDD
Floppy
$FD1E
DDDDDDDD
Floppy
DDDDDDDD
Floppy
$FD1F
DI------
Floppy
Floppy
$FD20
Kanji Rom 1
DDDDDDDD
Kanji Rom 1
$FD21
Kanji Rom 1
DDDDDDDD
Kanji Rom 1
$FD22
DDDDDDDD
Kanji Rom 1
Kanji Rom 1
$FD23
DDDDDDDD
Kanji Rom 1
Kanji Rom 1
$FD2C
Kanji Rom 2
Kanji Rom 2
$FD2D
Kanji Rom 2
Kanji Rom 2
$FD2E
Kanji Rom 2
Kanji Rom 2
$FD2F
Kanji Rom 2
Kanji Rom 2
$FD2E?
Dictionary Bank
Dictionary Bank
$FD30
Analog Palette Number
$FD31
Analog Palette Number
$FD32
Analog Palette Blue Level
$FD33
Analog Palette Red Level
$FD34
Analog Palette Green Level
$FD35
Speech Synthesis
Speech Synthesis
$FD37
-GRB-GRB
Multipage (Display / Write Lock)
$FD38
-----GRB
Palette 0 (---)
-----GRB
Palette 0
$FD39
-----GRB
Palette 1 (--B)
-----GRB
Palette 1
$FD3A
-----GRB
Palette 2 (-R-)
-----GRB
Palette 2
$FD3B
-----GRB
Palette 3 (-RB)
-----GRB
Palette 3
$FD3C
-----GRB
Palette 4 (G--)
-----GRB
Palette 4
$FD3D
-----GRB
Palette 5 (G-B)
-----GRB
Palette 5
$FD3E
-----GRB
Palette 6 (GR-)
-----GRB
Palette 6
$FD3F
-----GRB
Palette 7 (GRB)
-----GRB
Palette 7
$FD40
Modem Card
Modem Card
$FD41
Modem Card
Modem Card
$FD42
Modem Card
$FD56
Voice Recognition Card
Voice Recognition Card
$FD57
Voice Recognition Card
Voice Recognition Card
$FD58
Handy Image Scanner
$FD59
Handy Image Scanner
$FD5A
Handy Image Scanner
$FD80
Memory Management Register
Memory Management Register
$FD81
Memory Management Register
Memory Management Register
$FD82
Memory Management Register
Memory Management Register
$FD83
Memory Management Register
Memory Management Register
$FD84
Memory Management Register
Memory Management Register
$FD85
Memory Management Register
Memory Management Register
$FD86
Memory Management Register
Memory Management Register
$FD87
Memory Management Register
Memory Management Register
$FD88
Memory Management Register
Memory Management Register
$FD89
Memory Management Register
Memory Management Register
$FD8A
Memory Management Register
Memory Management Register
$FD8B
Memory Management Register
Memory Management Register
$FD8C
Memory Management Register
Memory Management Register
$FD8D
Memory Management Register
Memory Management Register
$FD8E
Memory Management Register
Memory Management Register
$FD8F
Memory Management Register
Memory Management Register
$FD90
MMR Segment Register
$FD92
Window Offset Register
$FD93
Mode Select Register 1
$FD94
CPU Speed
$FD95
Mode Select Switch 2
Mode Select Switch 2
$FD98
DMAC
$FD99
DMAC
DMAC
$FDE0
Mouse
$FDE1
Mouse
Mouse
$FDE2
Mouse
Mouse
$FDE3
Mouse
Mouse
$FDE4
Mouse
Mouse
$FDE5
Mouse
Mouse
$FDE6
Mouse
Mouse
$FDE7
Mouse
Mouse
$FDE8
Mouse
Mouse
$FDE9
MIDI
$FDEA
MIDI
MIDI
$FDEB
MIDI
MIDI
$FDEC
MIDI
MIDI
$FDED
MIDI
MIDI
$FDEE
MIDI
MIDI
$FDEF
MIDI
Ports Sub CPU
Address
Read Bits
Read Purpose
Write Bits
Write Purpose
$D400
DDDDDDDD
Key Data
$D401
-------D
Key Data
$D402
Cancel IRQ ACK
$D404
Main CPU Attention IRQ
$D408
CRT ON
CRT OFF
$D409
Vram Access Set
Vram Access Reset
$D40A
Ready
Busy
$D40D
Ins LED ON
Ins LED OFF
$D40E
--HHHHHH
Vram Address H
$D40F
LLLLLLLL
Vram Address L
Colors
0
1
2
3
4
5
6
7
Char Map
Special Chars
Code
Meaning
$11
SF
Start Field
$12,X,Y
SBA
Set Buffer Address (Locate)
$13,count,Ascii
RC
Repeat Character
$05
EL
Erase Line
$07
BEL
BELL (Beep)
$08
BS
BackSpace
$09
HT
Horizontal TAB
$0A
LF
Line Feed
$0B
HOME
Buffer Address to top of screen
$0C
EA
Erase All (CLS)
$0D
CR
Carrage Return
$1C
Right Cursor
$1D
Left Cursor
$1E
Up Cursor
$1F
Down Cursor
$1B,$23
Lock Keyboard
$1B,$22
Unlock Keyboard
$1B,$39
Erase Key Buffer
$1B,$67
Set Buffered Mode
$1B,$69
Set Unbuffered Mode
Graphics Operations
Code
Op
Details
0
PSET
Set to Color
1
PRESET
Set to background Color
2
OR
Add to
3
AND
Mask
4
XOR
Invert
5
NOT
Flip bits
Commands that can be sent to the Sub CPU
There are a variety of commands that can be sent to the Sub CPU, there
are some special 'secret' ones called the YAMAUCHI calls,
These allow data to be direct copied to the SubCPU and allows for
execution