Galaksija (replica)

This unit is a replica made using original design and parts. The computer has been designed in 1983, when Author, Voja Antonić, found that it is possible to generate picture signals by using CPU, not a complex and proprietary display chip. While in UK this resulted with ZX81, in Yugoslavia we have Galaksija - a Z80-based home computer with 4-6kB of RAM and BASIC interpreter.
Because the ROMs used are 4kB, BASIC interpreter has to be compact. Error messages have been minimized to HOW?, WHAT? and SORRY (out of memory). More advanced math functions, machine code interpreter and editor have been moved to additional 4kB EPROM. It was so condensed that even some text strings have been used as machine code too.
The machine has been presented in a series of articles in “Computers in your home" (Racunari v vasoj kuci) cycle. It was possible to purchase parts imported by one of national companies and PCB, but one-sided board could be reproduced in home conditionns by an experienced hobbyist. All official EPROMs have been programmed by Author.
A serier of simple games and educational programs circulated on tapes, so it was easy to duplicate them. By using expansion connector it was possible to add a memory expansion or parallel port.
Official documentation mentions making case using scrap PCB. That's why most existing units have no bottom plate and has copper tracks exposed. I have diverted from assembly and used a wooden case for it.


Manufacturer -

Origin Yugoslavia
Year of unit 2018
Year of introduction 1983
End of production -
CPU Z80
Speed 3.072MHz
RAM 6kB
ROM 2x4kB
Colors: 2
Sound: None
OS: BASIC
Display modes: 32x16 text

64x48 semigraphic

 
 

 

Media: Tape

 


Power supply:

+5V DC Regulated, about 1A
+12V DC for RF modulator

I/O: System bus
Tape I/O
RF out (if modulator installed)
Monitor out
 
 
 
 
 
 
 
Possible upgrades: Some add-ons available
   
Software accessibility: Some (dedicated sites)

My unit is a replica I built in 2018 using PCB tracks print and PCB. It is a fully functional unit. It has been made using specifically old components as much as possible, with Z80A CPU made by MME. The keyboard is made of contacts from an old PC keyboard. The power supply has been made also of vintage parts.

For more technical, construction and build-related information see the Build Log.


In casing. Source: "Napravi i ti..."


Contents: Pinouts Starting, tapes BASIC Links

Pinouts:

Most of them depend on specific construction as it was possible to freely connect wires from DIN sockets. Usually power supply gives regulated (and filtered using a higher-capacity electrolytic capacitor) 5V at around 0.8-1A. Additional 12V is supplied only for RF modulator power.
Expansion connector pinout is shown here. In some versions there are additional CPU signals present here to enhance expandability.

WARNING: Tape IN/OUT in some documentation is inverted. Carefully observe on schematic: Connection FROM TAPE to computer is finally going to base of transistor, while FROM COMPUTER to tape goes into resistors ladder and data line (D12?).


Original pinouts from "Napravi i ti..."


Starting, tapes:

Tape files are "GTP" format. This can be played back to WAV by GTP2WAV tool from here.
To load into computer, use OLD command which is for loading and play the tape.

To initialize a ROM2, use the following command: A=USR(&1000) - then you will be able to use ROM2 commands.


BASIC

ROM1 commands:

!... Like other BASICs REM - begins comment
#... Like other BASICs DATA
& Use as prefix before number if it is written in hex.
ARR$(x) Allocates array of strings. Can only allocate array A$ - with exactly this name
BYTE Universal PEEK/POKE tool. PEEK is like PRINT BYTE(&33F9), POKE is like BYTE &33F9,&C4
CALL n Like other BASICs GOSUB. Allows to use variables for line numbers.
CHR$(n) ASCII code to character
DOT x, y When used as command, draws dot at x,y (X in 0..63, Y in 0..47). Used as function- checks is there a dot.
DOT * ?
EDIT n Edit specified BASIC line
ELSE for IF
EQ compare strings.
FOR A typical FOR loop
GOTO A standard GOTO
HOME Clear screen Optional argument (HOME x) preserves x characters.
IF An IF, but there is no THEN!
INPUT Make user enter variable
INT(x) Return largest integer <=x
KEY(x) Is x key pressed?
LIST LISTs program. Optional argument specifies from which line.
MEM How much memory is used?
NEW Clears program. Optional argument (NEW x) changes start of BASIC area for potential user data./code.
NEXT for FOR
OLD Load from tape. Optional argument loads to address (OLD x)
PTR Address of variable
PRINT Prints expression
RETURN return from GOSUB
RND Returns a random fload between 0 and 1
RUN Runs a program
SAVE Save program to tape. Optional arguments: memory range to be saved (e.g. for data)
STEP For FOR
STOP Stops running of BASIC program
TAKE If the parameter is variable name, reads it. If number - clears data under pointer
UNDOT Inverse to DOT.
UNDOT * ?
USR Calls user routine from memory
WORD Double byte PEEK/POKE (see BYTE)

ROM2 can be started with USR routine X=USR(&1000). In some ROM versions (see build log entry)  it starts automatically. So ROM2 commands are following:

SQR (x) Square root
POW (x,y) Power, values non-zero.
PI 3.141...
EXP (x) e^x
LN (x) Logarithm
SIN/COS/TG Trigonometric functions
SIND/COSD/TGD Trigonometry for degree measure
ARCTG (x) Arctg
ABS (x) Absolute value
DEL x, y Delete BASIC linex x..y
REN x renumber every X lines (e.g. REN 5 renames 5, 10, 15), but does not touch labels!
"-operator A = 10 + "X" - ASCII value of "X". Geenrally, first character in ""-string.
PRINT% "x" Value of X in 4-character hex (&0058). PRINT% converts result to 4-digit hex value.
DUMP x, y display memory content from X, for Y rows (1 row: 8 bytes).
/word search and show all program lines containing word
INP (x) get content of x port
OUT (x, y) emit byte y to port x. x,y 0..255, port 255 is Centronics expansion.
L... LPRINT, LLIST, LDUMP - commends to Centronics printer expansion

Assembler: Routines are written like BASIC programs, start by < [return], ORG [address], end with > [return].
Arithmetics (integer): +, -, # (AND), < (sh. left), > (sh right).
Type: BYTE, WORD, TEXT - e.g.

CHRNAME BYTE "X"
TXTNAME TEXT "GALAKSIJA"

Additional mnemonics:
OPT x, y  - save code into - y - relocation (optional), x=1 - asm on screen, 2 - asm to memory, 4 - asm to printer - default 3.
REG - sets trap, any key contiinues.

See this for ROM2 information.
 


Links

- http://www.spetsialist-mx.ru/Galaksija/ - Galaksija site with good schematics, PCB, ROMs
- M.Sc. thesis - Mr Tomaz Solc's Master Thesis about replicating Galaksija
- http://emulator.galaksija.org/MagScans/index.html - RACUNAR Magazine scans
- http://www.voja.rs/galaksija/galaksija.htm - More high-resolution scans. This is Mr. Antonić site.
- http://www.dejanristanovic.com/refer/index.htm - His texts are there, use Google if you cannot find them.
- http://retrospec.sgn.net/users/tomcat/yu/Galaksija_list.php - Games and programs. Most are in Galaksija's TOSEC.
- http://emulator.galaksija.org/ - Emulator.
- https://www.tablix.org/~avian/galaksija/rom/rom1.html - ROM A disassembly, commented and ready for sightseeing.
- https://www.tablix.org/~avian/blog/archives/2008/12/galaksija_gets_a_c_compiler/ - NOT TESTED. Galaksija got a cross-platform C compiler.
- https://www.exploit-db.com/docs/english/40621-poc--gtfo-0x09.pdf - "PoC or GTFO" magazine collects security information and different ideas from hacker culture, they reprinted a full, ilustrated "Napravi i ti racunar Galaksija" article. Pardon inside humour :).
 

Up