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 |
|
+5V DC Regulated, about 1A |
||
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. |
Contents: | Pinouts | Starting, tapes | BASIC | Links |
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. 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?). |
|
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.
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 |
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.
-
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 :).