GABE -- The System Control, I/O, and Sound Chip
"GABE" is the name of the system controller chip of the C256 Foenix RevC board, and performs several functions including system bus management, math coprocessing, I/O, and sound.
The RevB version of the C256 had two chips "Gavin" and "Beatrix" that were combined into a single master chip called "GABE".
GABE has several key functions:
- System start up
- Debug interface control and bus mastering
- I/O interfacing
- Math coprocessor
- Sound chip interfacing and emulation
GABE System Startup Process
When the C256 Foenix powers up, GABE takes control and coordinates the startup process.
It first copies the flash data out of flash and into system RAM, starting at bank $38 on the FMX ($18 on the RevB).
GABE also copies the first bank of flash data down to bank $00 of system RAM
before control is given to the CPU and the CPU's RESET is triggered.
This process ensures that the kernel, hardware vectors, and interrupt handlers are all in place prior to the CPU
taking control and resetting the first time on power up.
The mapping of flash memory locations to system RAM is thus:
Flash Range |
RAM Range
|
$F8:0000...$FF:FFFF |
$38:0000...$3F:FFFF
|
$F8:0000...$F8:FFFF |
$00:0000...$00:FFFF
|
GABE Control Registers
Start Address
|
Ending Address
|
Register Description
|
Additional Info
|
$AF:E880 |
|
GABE_MSTR_CTRL
|
$AF:E881 |
|
Reserved
|
$AF:E882 |
|
GABE_RST_AUTH0 |
Must Contain the BYTE $AD for Reset to Activate
|
$AF:E883 |
|
GABE_RST_AUTH1 |
Must Contain the BYTE $DE for Reset to Activate
|
$AF:E884 |
$AF:E885 |
GABE_RNG_DATASEED |
On read: 16-bit random data. On write, set 16-bit RNG seed.
|
$AF:E886 |
|
GABE_RNG_STATCTRL |
On read: 8-bit status. On write: 8-bit control
|
$AF:E887 |
|
GABE_SYS_STAT |
8-bit system status
|
GABE Master Control Register ($AF:E880)
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0
|
GABE_CTRL_WRM_RST |
|
|
GABE_CTRL_BUZZER |
|
|
GABE_CTRL_SDC_LED |
GABE_CTRL_PWR_LED
|
- GABE_CTRL_PWR_LED
- Turns the power LED (next to the reset button) on or off.
- GABE_CTRL_SDC_LED
- Turns the SDC activity LED (next to the SDC slot) on or off.
- GABE_CTRL_BUZZER
- Turns the built-in piezo buzzer on or off.
- GABE_CTRL_WRM_RST
- Triggers a warm reset of the board (GABE_RST_AUTH0 must be set to $AD and GABE_RST_AUTH1 to $DE in order to trigger the reset).
GABE System Status Register ($AF:E887)
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0
|
GABE_SYS_STAT_CPUX |
GABE_SYS_STAT_CPUA |
|
|
GABE_SYS_STAT_EXP |
|
GABE_SYS_STAT_MID1 |
GABE_SYS_STAT_MID0
|
- GABE_SYS_STAT_CPUX
- Indicates if the CPU's index registers are 8-bits or 16-bits wide.
- GABE_SYS_STAT_CPUA
- Indicates if the CPU's accumulator is 8-bits or 16-bits wide.
- GABE_SYS_STAT_EXP
- Indicates if the and expansion card is present (0).
- GABE_SYS_STAT_MID1 and GABE_SYS_STAT_MID0
- These two bits show the machine ID:
GABE_SYS_STAT_MID1 |
GABE_SYS_STAT_MID0 |
Machine
|
0 |
0 |
FMX - Development Platform
|
0 |
1 |
C256 Foenix - Dev Platform
|
1 |
0 |
C256 Foenix - User Version (65C816)
|
1 |
1 |
Reserved
|