8bit Projects For Everyone


Find   for  

General Sound : ZX Spectrum

GS is a soundcard, designed for playback of musical modules and individual samples (sound effects).

GS modules are standard 4-channels MOD modules from Amiga and PC. GS samples - both Amiga signed samples and PC unsigned samples.

MOD files player in GS is practically a full analogue of ProTracker on Amiga, and was designed with intensive use of ProTracker v2.1A sources. It supports the whole list of ProTracker`s commands except two ones:

  • E01 Filter on This command is Amiga-specific, enables low-pass filter.
  • EFX Invert Loop. I haven't seen a player, who supports this command. It's possible, however, that it is supported in some old players.

GS is, in fact, microprocessor complex with its own CPU, ROM, RAM and I/O ports, and it is absolutely independent from Spectrum`s CPU, what makes you able to, for example, load your favourite module, reset Spectrum, load assembler and to write masterpieces with your favourite music in the back-ground. Software in GS ROM plays module invisibly for you. Programming for GS could be squeezed to just several commands, as: Play module, Set global volume, run sample #09 in channel #02 etc.

Interface with Spectrum

For communication with the rest of the world, GS has 4 registers:

  1. Command register - it's - right - register of commands, it is port with address 187 (#BB), which is write-enabled. In this port you should write your commands to GS.
  2. Status register - read-enabled port with address equal to 187 (#BB). Bits of the register: 7 - flag of data, 0 - flag of commands. This register allows you to determine the GS status, in particular you could know, whether you are able to read or write next data byte, or to give next command etc.
  3. Data register - port 179 (#B3), available for writing. In this port Spectrum writes data, for example, arguments of commands.
  4. Output register - port 179 (#B3), available for reading. Spectrum read data from GS from this register.

Command bit in status register is set by hardware after current command has been stored in commands` register. Only GS could reset it to 0, which is a signal about the current stage of processing of a command.

Data bit in status register could be set or reset either by Spectrum's will, or by GS` will: it is set to 1 by hardware when Spectrum writes in data register, and it is reset to 0 after GS has read data from data register. When GS writes in output register, data bit is set to 1 by hard-ware. And after reading by Spectrum from this port, the bit is reset by hardware to 0.

In spite of data register and output register are situated by the only port address, they are two independent registers. Value, which has been stored in one of this registers stays unchanged until new record.

The value of data bit is undefined very often, and it is impossible to make any guesses about its value.


Tell other people:

Files for download

gs-en.zip 33.8kB (2001-09-16 20:10)
[en] Detailed hardware description.
gs-ru.zip 22.3kB (2001-01-11 18:22)
[ru] Detailed hardware description.
gs104rom.zip 15.1kB (1998-12-06 14:27)
ROM 1.04 for General Sound.

Links to other pages

http://www.scorpion.ru/spectrum/hard/plata_gs.htm
[ru] Short description.



E-mail:

Password:



Forgot password?

Register?
Apple
HDD
Atari
IDE KMK/J¯
MyIDE
SIO2IDE
Commodore
IECATA
CPC
CPCISA
Hacker
PC
IDE
LPT
Sam Coupé
Atom
FDD
RTC
Samtrum
YABUS.SAM
YAMOD
ATBUS
AYLPT
EPROG
FDC765A
IDE8255
KJOY
ZXINPUT
Timex
BEU
Cartridge
FD-68
Larken
ZX81
ZX96
ZX1541
ZX Spectrum
AC-DOS
Interface 1
Interface 1 Bis
Interface 2
GeneralSound
Macface
MB-02
NMI
Packet Radio
PB-3
PL3MEM
Plus D
POLBASIC
Printer
Split
Timex M-397
CA80
YABUS.ZX
YABUS.ZXISA
YABUS.ZXMEM

If you see error on this page, describe here:

© 2009-12-28 21:50 Jarek Adamski, http://8bit.yarek.pl