Video: First looks at the Amstrad SSA 1 for CPC 464

Introduction

In this video I took a close look at the Amstrad SSA 1 for CPC 464 explaining some of it’s main features.

The Amstrad SSA-1 is a Speech Synthesiser & Stereo Amplifier including speakers but it’s only compatible with the CPC 464.

Here’s the video:

In the video I also referred to the SSA-1 software (a basic file and a BIN file) and you can download that software from a few places such as here. Below is the BASIC listing in full.

10 ssa1%=&FBEE: size%=&1434
20 d%=INP(ssa1%) AND &C0
30 IF d%<>&80 THEN 70
40 OUT ssa1%,4
50 d%=INP(ssa1%) AND &C0 
60 IF d%=0 THEN 80
70 PRINT:PRINT"SSA1 not operational":PRINT:END 
80 ON ERROR GOTO 120
90 |ECHO,1: PRINT
100 PRINT: PRINT "`S``S``A1 Software already installed.`": PRINT
110 |ECHO,0: END
120 IF ERR=28 THEN 140
130 PRINT"Loader terminated: BASIC error";ERR;"at line";ERL: END
140 MODE 1:PRINT TAB(10);"SSA1 SOFTWARE LOADER":PRINT:PRINT:PRINT:PRINT
150 SYMBOL AFTER 256
160 PRINT "Program length is ";HEX$(size%,4);" Hex"
170 PRINT: PRINT"Enter loading address, or just "
180 LINE INPUT " ENTER for top of memory > "; base$
190 IF LEN(base$)=0 THEN base=HIMEM-size%: GOTO 220
200 base=VAL(base$)
210 IF (base<16384) OR (base>HIMEM-size%-1) THEN PRINT :PRINT"Insufficient memory":GOTO 170
220 CLS: PRINT"Loading...."
230 FOR i=1 TO 5:READ ap(i): NEXT
240 PRINT CHR$(23)+CHR$(0);
250 INK 3,1
260 ORIGIN 320,48
270 DATA 27,7,62,53,4 
280 DATA -1,112,20,116,16,208,40,128,20,116,-36,144,80,144,96,176,120,208,80,224,0,224,-112,192,110,152,88,80,32,0,0,0
290 DATA -120,208,112,268,106,304,100,320,90,334,82,344,74,348,0,350
300 DATA-80,224,72,288,88,304,106,304
310 DATA-32,192,52,208,76,208,96,192,76,176,52,176,32,192
320 DATA-64,80,56,96
330 DATA-120,224,132,232,140,230,142,192,132,128,120,128,108,140
340 DATA-1,290,72,288,-80,144,72,64,999,0
350 side=1 :GOSUB 640:x=54:y=192:GOSUB 700
360 RESTORE 280:x=0
370 side=-1:GOSUB 640:x=-74:y=192:GOSUB 700
380 DATA ap,ap,ap,oy,ap,oy,ap,cy,cy,stop
390 ORIGIN 320,124
400 x=50:y=8:xt=25:yt=4:xb=23:yb=6:onn=20:off=0
410 PRINT CHR$(23)+CHR$(1);
420 xt(1)=xt:yt(1)=yt:xb(1)=xb:yb(1)=yb
430 MEMORY base-1 
440 LOAD "!ssa1.bin",base
450 CLOSEIN
460 SYMBOL AFTER 240
470 start=base+(PEEK(base)+PEEK(base+1)*256)
480 CALL start
490 LOCATE 1,23:PRINT"Load complete": INK 3,26
500 READ a$:IF VAL(a$)>0 THEN t=TIME:WHILE t+10*VAL(a$)>TIME:WEND:GOTO 500
510 IF a$="stop"THEN NEW: |SPOFF: END
520 IF UPPER$(a$)="CX" THEN xt=xt-4:xb=xb-4
530 IF UPPER$(a$)="OX" THEN xt=xt+4:xb=xb+4
540 IF UPPER$(a$)="CY" THEN yt=yt-2:yb=yb+8
550 IF UPPER$(a$)="OY" THEN yt=yt+2:yb=yb-8
560 IF a$="ap" THEN GOSUB 720
570 dxt=xt:dxb=xb:dyt=yt:dyb=yb:GOSUB 620
580 IF twoplus THEN dxt=xt(1):dxb=xb(1):dyt=yt(1):dyb=yb(1):GOSUB 620
590 xt(1)=xt:yt(1)=yt:xb(1)=xb:yb(1)=yb
600 twoplus=-1
610 GOTO 500
620 MOVE x,y:DRAW dxt,dyt,3:MOVER -2,0:DRAW -dxt,dyt:MOVER -2,0:DRAW -x,y:DRAW -dxb,dyb:MOVER 2,0:DRAW dxb,dyb:MOVER 2,0:DRAW x,y :RETURN
630 STOP
640 WHILE x<999
650 READ x,y
660 IF x=999 THEN 680
670 IF x<0 THEN MOVE ABS(x)*side,y ELSE DRAW x*side,y,3
680 WEND
690 RETURN
700 MOVE x,y:DEG:FOR n=1 TO 360 STEP 10:PLOTR 2*SIN(n),2*COS(n):NEXT n:RAD
710 RETURN
720 apoint=apoint+1:|SPOUT,ap(apoint)+128:RETURN
730 |SPOUT,ap(apoint)+64
740 RETURN

 

I then copied the games that were compatible with the SSA-1 to my M4 and tested it.

If you’d like info about setting up an M4 then checkout my blogs below:

First looks at the M4 board for Amstrad CPC

Adding ROMS to the M4 board

Video: Using an M4 board on an Amstrad CPC 464

cheers

niall

 

This entry was posted in Amstrad, M4 board, SSA-1. Bookmark the permalink.

Leave a Reply

Your email address will not be published.