Home > Previous Page >  AMI
Archive Search  

Ace Multi Interface by Edwin Blink/SPT


AMI is a single board interface for the standard 3K Jupiter Ace. It is hoped that AMI in time will give the Jupiter Ace some missing hardware using modern ICs such as, more memory, sound, Flash ROM storage, and a Mass storage system using MMC cards. AMI carries on from where the ACF and ROMboard projects stopped which in turn were inspired from the 96K RAMpack project.


AMI will be split in its single parts below;


128Kb Rampack.
Reset button.
FlashROM.
FlashDrive.
Sound Chip [AY-3-8910].
2 I/O ports. [AY-3-8910].
LCD Screen on Port A.
AMI currently looks like this:

Images of AMIs development ;

PCB V1-f | PCB design V1-f | Veroboard 2 | Veroboard 1 | Breadboard 2 | Breadboard 1

AMIs RAM is a HM28128 128 x 8bit chip, so we have a 131Kb Jupiter Ace. The RAM in AMI is controlled by a GAL22V10 programmable AND array chip. So how do you use all of this 131 Kb of RAM? Well, Edwin has use the same paging (or bank) layout as the 128 ZX Spectrum.

From power up the Ace looks at the extra RAM as a continuous block of memory 16384 to 65535. The 3k already in the Ace is below address 16383, giving us the 51K of RAM.

The rest of the RAM can be used if you "page in" a 16K block of RAM. It may be better to think all of AMI's RAM as 8 pages of 16Kb, page 0 -7. But pages 5 and 2 are fixed to address 16384 (page 5) and 32768 (page 2). From address 49152 page 0 is there from power up giving us the 48Kb. Page 0 at 49152 can be paged out and one of the other 16K paged can take its place. so 16K pages 1, 3 , 4, 6 and 7 can be paged to take the place of page 0 at location 49152 onwards.

To uses these memory pages lower the Aces RAMTOP to 49152 by entering 49152 15384 ! QUIT
Then to page in, RAM page 3 to 49152 enter 3 32765 OUT - page 0 has now been replaced with page 3.
AMIs Memory Map.	
	
65535  +--------+--------+--------+--------+--------+--------+--------+--------+
       | Bank 0 | Bank 1 | Bank 2 | Bank 3 | Bank 4 | Bank 5 | Bank 6 | Bank 7 |
       |        |        | also at|        |        | also at|        |        |
       |        |        | 32768  |        |        | 16384  |        |        |
       |        |        |        |        |        |        |        |        |
49152  +--------+--------+--------+--------+--------+--------+--------+--------+
       | Bank 2 |        
       |        |
       |        |
       |        |
32768  +--------+
       | Bank 5 |
       |        |
       |        |
       |        |	
16384  +--------+   -+
       |        |    |
       |        |    |
       |        |     \
8912   +--------+      > see Ace Memory Map for these details.
       |        |     /
       |        |    |
       |  ROM   |    |
0      +--------+   -+
	
Is there any way of showing which page of RAM is paged in at location 49152 ? Yes! We have added a bar LED unit. The first 3 leds have been link to the paging control lines of the RAM.

     
     
     
     
     
     
     
     
page 0 page 1 page 2 page 3 page 4 page 5 page 6 page 7



The Ace never had a reset button, but its one of the most missed items. It's a simple press to make button. The Z80A's RESET line is pulled down to 0V and the Z80A's program counter starts at memory location 0. This is the same as using the 0 CALL Forth words. The Ace starts to initialise by clearing all RAM and resetting the stacks. In the image below AMI's strip board test reset button is highlight.

AMI's press to make reset button

In above image you can see that we have added in a Flash ROM chip W29C010C or W29C020C [if a W290C20 is used, A17 [pin 30] is not used and should be 0v or 5v]. At the moment there are 32 images of the Ace ROM in the chip, each ROM image can be paged in or out. As part of the testing we have each alternate ROM image with a different font so we can tell if the ROM has been paged in correctly. We hope to add the extra FORTH words in one of the ROM images to control the saving and loading to a mass storage device or even create a Flash Drive. In the image below you may just make out the test font used in the alternate ROM images.

A small modification must be made to the Ace before the Flash ROM can be used. The mod adds a new signal the Aces edge connector to allow other devices with there own ROM's to take control and page out the Aces original ROM's and use the devices own ROM's see the ROMSL mod for more details.

The normal ROM images are at

0,   32, 64,   96, 128, 160, 192, 224, 256, 288, 320, . . . . [+32]

alternate font ROM images are at;

16, 48, 80, 112, 144, 176, 208, 240, 272, 304, 336, . . . . [+32]

To page in a ROM xx 32765 OUT



AMI's sound chip is the AY-8910. The AY-3-8910 is a 3-voice programmable sound generator (PSG) designed by General Instrument, initially for use with their 16-bit CP1610 or one of the PIC1650 series of 8-bit microcomputers. The chip also has two general-purpose 8-bit parallel I/O ports, A and B. Its the same chip that's used in the sound card made by Essex Micro Electronic (sold by Boldfeild back in 1983), and the sound card listed Ace User No 4.

The 8910 chip can be found in three different packages we are using the 40-pin package known as AY-3-8910. The AY-3-8912 is the same chip in a 28-pin package, with parallel port B simply not connected to any pins. The AY-3-8913 is the same chip in a 24-pin package, with both parallel ports not connected.

A small amp has also been added to AMI so we can hear the sound.

The AY-3-8910/12 sound chip was widely used and can be found in the Amstrad CPC range, ZX Spectrum 128,+2,+3 and MSX etc. The sound chip is controlled be these two ports;

OUT FFFD# 65533d  - Select a register 0-14.
IN  FFFD# 65533d  - Read the value of the selected register.
OUT BFFD# 49149d  - Write to the selected register.
AceForth words:
: AS 65533 out ;            ( Select register on Top Of Stack      [AS - Address soundchip] )
: WS 49149 out ;            ( write TOS value to selected register [WS - Write Soundship]   )

: RS AS 65533 IN . ;        ( Read register on TOS                 [RS - Read soundchip REG])

: SND AS WS ;               ( n1 n2  SND would select reg n1 and write n2 to the register   )
Some example sounds;
: SNDTEST 200 0 SND 254 7 SND  8 8 SND ; ( Makes a continuous sound [via the A channel]     )

: SNDOFF 255 7 SND ;                     ( Turns off all sound on all channels, A,B and C   )

: shot 8 6 SND 247 7 SND 16 8 SND 20 12 SND 1 13 SND ;

: explode 28 6 SND 247 7 SND 16 8 SND 20 12 SND 1 13 SND ;

: ping 200 0 SND 254 7 SND 16 8 SND 20 12 SND 1 13 SND ;

: sea 20 6 SND 247 7 SND 16 8 SND 50 12 SND 10 13 SND ;
Update Jan 2008:

AMI Sound Toolkit program and listing.


In the table below are the sound chips registers and uses.

Register # Use Values
1 & 0 Low and High bytes of channel A pitch. 0-255
0-31
2 & 3 Low and High bytes of channel B pitch. 0-255
0-31
4 & 5 Low and High bytes of channel C pitch. 0-255
0-31
3 Noise period on all channels 0-31
7 On-Off selection (see below) (see below)
8 Volume of channel A 0-15
9 Volume of channel B 0-15
10 Volume of channel C 0-15
11 & 12 Low and High bytes of Envelope Duration 0-255
0-255
13 Envelope Shape (see below) (see below)
14 I/O port A data register  
15 I/O port B data register  

Register 7 details:
Decimal 128 64 32 16 8 4 2 1
Bit 7 6 5 4 3 2 1 0
Use B
I/O
A
I/O
C
Noise
B
Noise
A
Noise
A
Tone
B
Tone
C
Tone
When BITs 0-5 are set (1) the channel is OFF , When BITs 0-5 are reset (0) the channel is ON
so any combination of tone and noise channels is possible.
When BITs 6 & 7 are SET (1) the ports are OUTPUT, When reset (0) the ports are INPUT

Register 8-10 details:
Decimal 128 64 32 16 8 4 2 1
Bit 7 6 5 4 3 2 1 0
Use X X X E V V V V
X - Not Used, E - Envelope enable (set (1) on, reset (0) off, V - General volume control 0-15

Register 13 Envelope shape
Dec Bit 3 Bit 2 Bit 1 Bit 0 Shape
0-3 0 0 x x
4-7 0 1 x x
8 1 0 0 0
9 1 0 0 1
10 1 0 1 0
11 1 0 1 1
12 1 1 0 0
13 1 1 0 1
14 1 1 1 0
15 1 1 1 1
Envelope control is switched on by setting bit 4 of the volume register of the required channel, see Register 8-10 details above.

The I/O ports are part of the sound chip both ports A and B both the same pin outs.
Type: IDC 16 pins male.

       Port A              Port B

  2             16     2             16
+-----------------+  +-----------------+
| o o o o o o o x |  | o o o o o o o x |
| o o o o o o o o |  | o o o o o o o o |
+-------xxx-------+  +-------xxx-------+
  1             15     1             15	
  
 ( as seen from the top of the pcb )
 (       the component side        ) 
  
    Port A               Port B
pin 1   -  I/O A0    pin 1   - I/O B0
pin 2   -  I/O A1    pin 2   - I/O B1
pin 3   -  I/O A2    pin 3   - I/O B2
pin 4   -  I/O A3    pin 4   - I/O B3
pin 5   -  I/O A4    pin 5   - I/O B4
pin 6   -  I/O A5    pin 6   - I/O B5
pin 7   -  I/O A6    pin 7   - I/O B6
pin 8   -  I/O A7    pin 8   - I/O B7

pin 9   - BC1        pin 9  - BC1
pin 10  - BDIR       pin 10 - BDIR
pin 11  -            pin 11 - 
pin 12  -            pin 12 -

pin 13  - nc         pin 12 - nc
pin 14  - 0v/gnd     pin 14 - 0v/gnd

pin 15 - +5v         pin 15 - +5v
pin 16 - key         pin 16 - key


Click here for more details

A bit of fun now! Using one of AY-8910 ports to drive a 20*2 character LCD/OLED screen. For more details see here or click on the above image!