Loading...
 

3E Plus

Capabilities

up to 64K ROM
up to 32K RAM

Details

see Important: Using Tigervision-type schemes with dasm

In this scheme, the 4K address space is broken into a mix of four 1K ROM and 512 byte RAM segments mapped to $1000, $1400, $1800, $1C00 . The last 1K ROM ($1C00-$1FFF) segment in the address space is initialised to point to the first 1K of the ROM image, so the reset vectors must be placed at the end of the first 1K block in the ROM image. This allows variable sized ROM without the hardware/emulator having to "hunt" for the end of ROM to find the fixed bank offset. This is different to the 3E scheme which switches in the upper bank as the fixed bank at reset.

Only 13 bits of address are available in the 6507, with the upper bits ignored during access, so address $1000 is equivalent to $F000 and these high address bits may be set/cleared as desired. It is useful to think of the address map starting at $F000 as this then places the 6507 reset/interrupt vectors "where they should be" at $FFFC-$FFFF. Some documentation uses these address alternates, so remember that only the lower 13 bits are relevant.

In both ROM and RAM switching, the byte written encodes the segment (0-3) and the bank (0-63). The segment is held in bits D7-D6, and the bank in bits D5-D0. RAM banks are 512 bytes, and ROM banks 1K. The maximum size is therefore 32K RAM and 64K ROM.

ROM Hotspots

$3F = segment number and bank number, encoded as follows

D7 D6 D5D4D3D2D1D0
0  0   x x x x x x   switch a 1K ROM bank xxxxxx to $1000
0  1                 switch a 1K ROM bank xxxxxx to $1400
1  0                 switch a 1K ROM bank xxxxxx to $1800
1  1                 switch a 1K ROM bank xxxxxx to $1C00

D7-D6 encodes segment number
D5-D0 encodes bank number

RAM Hotspots

$3E = segment number and bank number, encoded as follows

D7 D6 D5D4D3D2D1D0
0  0   x x x x x x   switch a 512 byte RAM bank xxxxxx to $1000 with write @ $1200
0  1                 switch a 512 byte RAM bank xxxxxx to $1400 with write @ $1600
1  0                 switch a 512 byte RAM bank xxxxxx to $1800 with write @ $1A00
1  1                 switch a 512 byte RAM bank xxxxxx to $1C00 with write @ $1E00

D7-D6 encodes segment number
D5-D0 encodes bank number

see RAM access without RW line
Example: Access $1000 for reading RAM at segment 0, byte 0 and to $1200 for writing the same byte.

Signature

$54 $4A $33 $45 (TJ3E)

see Bank Switching
see 3E
see 3EX