title: Galaksija BASIC
text: # Galaksija BASIC
  
  Galaksija BASIC was the BASIC interpreter of the Galaksija build-it-yourself home computer from Yugoslavia. While being partially based on code taken from TRS-80 Level 1 BASIC, which the creator believed to have been a Microsoft BASIC, the extensive modifications of Galaksija BASIC—such as to include rudimentary array support, video generation code (as the CPU itself did it in absence of dedicated video circuitry) and generally improvements to the programming language—is said to have left not much more than flow-control and floating point code remaining from the original.
  
  The core implementation of the interpreter was fully contained in the 4 KiB ROM "A" or "1". The computer's original mainboard had a reserved slot for an extension ROM "B" or "2" that added more commands and features such as a built-in Zilog Z80 assembler.
  
  ## ROM "A"/"1" symbols and keywords
  
  The core implementation, in ROM "A" or "1", contained 3 special symbols and 32 keywords:
  
      begins a comment (equivalent of standard BASIC REM command)
      Equivalent of standard BASIC DATA statement
      prefix for hex numbers
  
  ### ARR$(n)
  
      Allocates an array of strings, like DIM, but can allocate only array with name A$
  
  ### BYTE
  
      serves as PEEK when used as a function (e.g. PRINT BYTE(11123)) and POKE when used as a command (e.g. BYTE 11123,123).
  
  ### CALL n
  
      Calls BASIC subroutine as GOSUB in most other BASICs (e.g. CALL 100+4*X)
  
  ### CHR$(n)
  
      converts an ASCII numeric code into a corresponding character (string)
  
  ### DOT x, y
  
      draws (command) or inspects (function) a pixel at given coordinates (0<=x<=63, 0<=y<=47).
  
  ### DOT *
  
      displays the clock or time controlled by content of Y$ variable. Not in standard ROM
  
  ### EDIT n
  
      causes specified program line to be edited
  
  ### ELSE
  
      standard part of IF-ELSE construct (Galaksija did not use THEN)
  
  ### EQ
  
      compare alphanumeric values X$ and Y$
  
  ### FOR
  
      standard FOR loop
  
  ### GOTO
  
      standard GOTO command
  
  ### HOME
  
      equivalent of standard BASIC CLS command - clears the screen
  
  ### HOME n
  
      protects n characters from the top of the screen from being scrolled away
  
  ### IF
  
      standard part of IF-ELSE construct (Galaksija did not use THEN)
  
  ### INPUT
  
      user entry of variable
  
  ### INT(n)
  
      a function that returns the greatest integer value equal to or lesser than n
  
  ### KEY(n)
  
      test whether a particular keyboard key is pressed
  
  ### LIST
  
      lists the program. Optional numeric argument specifies the first line number to begin listing with.
  
  ### MEM
  
      returns memory consumption data (need details here)
  
  ### NEW
  
      clears the current BASIC program
  
  ### NEW n
  
      clears BASIC program and moves beginning of BASIC area
  
  ### NEXT
  
      standard terminator of FOR loop
  
  ### OLD
  
      loads a program from tape
  
  ### OLD n
  
      loads program to different address
  
  ### PTR
  
      Returns address of the variable
  
  ### PRINT
  
      Printing numeric or string expression.
  
  ### RETURN
  
      Return from BASIC subroutine
  
  ### RND
  
      function (takes no arguments) that returns a random number between 0 and 1.
  
  ### RUN
  
      runs (executes) BASIC program. Optional numeric argument specifies the line number to begin execution with.
  
  ### SAVE
  
      saves a program to tape. Optional two arguments specify memory range to be saved (need details here).
  
  ### STEP
  
      standard part of FOR loop
  
  ### STOP
  
      stops execution of BASIC program
  
  ### TAKE
  
      replacement for READ and RESTORE. If the parameter is variable name, acts as READ, if it is number, acts as RESTORE
  
  ### UNDOT x, y
  
      "undraws" (resets) at specified coordinates (see DOT)
  
  ### UNDOT *
  
      Stops the clock, not part of ROM
  
  ### USR
  
      Calls machine code subroutine
  
  ### WORD
  
      Double byte PEEK and POKE
  
  ## ROM "B"/"2" additional symbols and keywords
  
  The extended BASIC features, in ROM "B" or "2", contained one extra reserved symbol and 22 extra keywords:
  
  * /LABEL
  * ABS(x)
  * ARCTG(x)
  * COS(x) COSD(x)
  * DEL
  * DUMP
  * EXP(x)
  * INP(x)
  * LDUMP
  * LLIST
  * LN(x)
  * LPRINT
  * OUT
  * PI
  * POW(x,y)
  * REN
  * SIN(x), SIND(x)
  * SQR(x)
  * TG(x) TGD(x)
  