FoenixMCP/docs/notes/a2560u_memory.txt

88 lines
6.7 KiB
Plaintext
Raw Normal View History

2021-10-18 21:12:40 -04:00
// MC68SEC000 Memory Map Model
//1Mx16 (2x 1Mx8) <- $0000_0000 - $001F_FFFF - RAM (U Model)
//2Mx16 (2x 2Mx8) <- $0000_0000 - $003F_FFFF - RAM (U + Model)
// $0040_0000 - $00AF_FFFF - FREE SPACE (Future SDRAM Expansion Card?)
// $00B0_0000 - $00B1_FFFF - GABE Registers (SuperIO/Math Block/SDCard/IDE/Ethernet/SDMA)
// $00B2_0000 - $00B3_FFFF - BEATRIX Registers (CODEC/ADC/DAC0/DAC1/PSG/SID)
// $00B4_0000 - $00B5_FFFF - VICKY Registers
// $00B6_0000 - $00B6_3FFF - TEXT Memory
// $00B6_4000 - $00B6_7FFF - Color Memory
// $00BF_0000 - $00BF_FFFF - EXPANSION Chip Select
// 512Kx32 (2Mx8) <- $00C0_0000 - $00DF_FFFF - VRAM MEMORY
// 1Mx16 (2Mx8) <- $00E0_0000 - $00FF_FFFF - FLASH0
so the Keyboard is $B02800 - $B0280F
The Serial is @ $B028F8 - $B028FF
#ifndef KeyboardH /* Include guard */
#define KeyboardH
// Status
#define OUT_BUF_FULL 0x01
#define INPT_BUF_FULL 0x02
#define SYS_FLAG 0x04
#define CMD_DATA 0x08
#define KEYBD_INH 0x10
#define TRANS_TMOUT 0x20
#define RCV_TMOUT 0x40
#define PARITY_EVEN 0x80
#define INH_KEYBOARD 0x10
#define KBD_ENA 0xAE
#define KBD_DIS 0xAD
// Keyboard
unsigned char * STATUS_PORT = (void *)0x00B02804;
unsigned char * KBD_OUT_BUF = (void *)0x00B02800;
unsigned char * KBD_INPT_BUF = (void *)0x00B02800;
unsigned char * KBD_CMD_BUF = (void *)0x00B02804;
unsigned char * KBD_DATA_BUF = (void *)0x00B02800;
unsigned char * PORT_A = (void *)0x00B02808;
unsigned char * PORT_B = (void *)0x00B02809;
assign CS0 = ( ADDY_In[23:22] == 2'b00 ) & ( UserData | UserProgram | SuperData | SuperProgram ); //$000000 - $3FFFFF
assign BERR = ( ADDY_In[23:22] == 2'b01 ) & ( UserData | UserProgram | SuperData | SuperProgram ); //$400000 - $7FFFFF
assign CS_GABE = ( ADDY_In[23:17] == 7'b1011_000 ) & ( UserData | SuperData ); //$B0
assign CS_BEATRIX = ( ADDY_In[23:17] == 7'b1011_001 ) & ( UserData | SuperData ); //$B2
// Vicky II
assign CS_VICKY = ( ADDY_In[23:17] == 7'b1011_010 ) & ( UserData | SuperData ); //$B4
assign CS_VICKY_MEM = ( ADDY_In[23:17] == 7'b1011_011 ) & ( UserData | SuperData ); //$B6
assign CS_EXP = ( ADDY_In[23:16] == 8'b1011_1111 ) & ( UserData | SuperData ); //$BF
// Video RAM
assign CS_VRAM = ( ADDY_In[23:21] == 3'b110 ) & ( UserData | SuperData ); //$C0_0000 - DFFFFF (2M)
assign FLASH0 = ( ADDY_In[23:21] == 3'b111 ) & ( SuperData | SuperProgram ); //$E0_0000 - FFFFFF (2M)
assign CS0 = ( ADDY_In[23:22] == 2'b00 ) & ( UserData | UserProgram | SuperData | SuperProgram ); //$000000 - $3FFFFF
assign BERR = ( ADDY_In[23:22] == 2'b01 ) & ( UserData | UserProgram | SuperData | SuperProgram ); //$400000 - $7FFFFF
assign CS_GABE = ( ADDY_In[23:17] == 7'b1011_000 ) & ( UserData | SuperData ); //$B0
assign CS_BEATRIX = ( ADDY_In[23:17] == 7'b1011_001 ) & ( UserData | SuperData ); //$B2
// Vicky II
assign CS_VICKY = ( ADDY_In[23:17] == 7'b1011_010 ) & ( UserData | SuperData ); //$B4
assign CS_VICKY_MEM = ( ADDY_In[23:17] == 7'b1011_011 ) & ( UserData | SuperData ); //$B6
assign CS_EXP = ( ADDY_In[23:16] == 8'b1011_1111 ) & ( UserData | SuperData ); //$BF
// Video RAM
assign CS_VRAM = ( ADDY_In[23:21] == 3'b110 ) & ( UserData | SuperData ); //$C0_0000 - DFFFFF (2M)
assign FLASH0 = ( ADDY_In[23:21] == 3'b111 ) & ( SuperData | SuperProgram ); //$E0_0000 - FFFFFF (2M)
***
assign CS_VICKY_REG_o = ( iBUS_A_i[16:7] == 10'b0_0000_0000_0) & iBUS_CS_VICKY_i; // $B40000..$B4007F - Control Registers
assign CS_Bitmap_Registers_o = ( iBUS_A_i[16:8] == 9'b0_0000_0001) & iBUS_CS_VICKY_i; // $B40100..$B401FF - Bitmap Control Registers
assign CS_Tile0_Registers_o = ( iBUS_A_i[16:7] == 10'b0_0000_0010_0) & iBUS_CS_VICKY_i; // $B40200..$B4027F - TileMap Control Registers
assign CS_Tile1_Registers_o = ( iBUS_A_i[16:7] == 10'b0_0000_0010_1) & iBUS_CS_VICKY_i; // $B40280..$B402FF - TileSet Control Registers
assign CS_Collisions_Registers_o = ( iBUS_A_i[16:8] == 9'b0_0000_0011) & iBUS_CS_VICKY_i; // $B40300..$B403FF - Collision Control Registers
assign CS_Mouse_Ptr_Graphics_o = ( iBUS_A_i[16:10] == 7'b0_0000_01) & iBUS_CS_VICKY_i; // $B40400..$B40BFF - Mouser Pointer graphics 16x16 ARGB x2
assign CS_Mouse_Ptr_Registers_o = ( iBUS_A_i[16:8] == 9'b0_0000_1100) & iBUS_CS_VICKY_i; // $B40C00..$B40CFF - Mouser Pointer Registers
assign CS_Sprites_Registers_o = ( iBUS_A_i[16:12] == 5'b0_0001) & iBUS_CS_VICKY_i; // $B41000..$B41FFF - Sprites Registers
assign CS_LUT0_o = ( iBUS_A_i[16:13] == 4'b0_001) & iBUS_CS_VICKY_i; // $B42000..$B43FFF - LUT
assign CS_GAMMA_B_o = ( iBUS_A_i[16:8] == 9'b0_0100_0000) & iBUS_CS_VICKY_i; // $B44000..$B440FF - GAMMA Blue
assign CS_GAMMA_G_o = ( iBUS_A_i[16:8] == 9'b0_0100_0001) & iBUS_CS_VICKY_i; // $B44100..$B441FF - GAMMA Green
assign CS_GAMMA_R_o = ( iBUS_A_i[16:8] == 9'b0_0100_0010) & iBUS_CS_VICKY_i; // $B44200..$B442FF - GAMMA Red
// $B6_0000 - $BE_FFFF - VICKY TEXT MODE Internal Memory and CLUT
assign CS_TextMemory_o = (iBUS_A_i[16:14] == 3'b000) & iBUS_CS_VICKY_MEM_i; // $B60000..$B63FFF - Text Memory
assign CS_ColorMemory_o = (iBUS_A_i[16:14] == 3'b010) & iBUS_CS_VICKY_MEM_i; // $B68000..$B6BFFF - Color Memory
assign CS_BF_CLUT_o = (iBUS_A_i[16:06] == 11'b0_1100_0100_00) & iBUS_CS_VICKY_MEM_i; // $B6C400..$B6C43F - Foreground Character LUT
assign CS_BG_CLUT_o = (iBUS_A_i[16:06] == 11'b0_1100_0100_01) & iBUS_CS_VICKY_MEM_i; // $B6C440..$B6C47F - Background Character LUT
// $BF:0000 - $BF:FFFF for Expension ChipSelect