by carlsson on 30/06/2010, 11:42
Since Finnish is the language of gods and kings, I spent a little time to browse through the Salora Manager manual kindly uploaded by our Finnish friends. Instead of running OCR on the PDF, I retyped the most important passages directly into Google Translate (don't laugh!) and got a lot of meaningful information in return.
From what I understand, the list of commands and functions looks something like this:
GR Puts the computer in graphic mode
TEXT Puts the computer in text mode
COLOR= fg, bg Changes foreground and background colours
PLOT x1,y1 TO x2,y2 ... TO x99, y99
UNPLOT x1,y1 TO x2,y2 ... TO x99,y99
CIRCLE (x,y),radius
RECT (x1,y1),(width,height)
HOME Clears the text screen
VPEEK (adr) Read data from VRAM
VPOKE adr,val Store data into VRAM
SOUND (p,d,v),(p,d,v),(p,d,v),(n,d,v,ch)
p = pitch between 0-255
d = duration between 0-255
v = volume between 0-15
n = 1 for periodic noise, 2 for pure noise
ch = channel 1-3 or noise
You don't have to specify all channels at once.
SGEN a,b,c,d
Send audio control data directly to the sound chip:
SGEN 159,191,223,255 to turn off all sound
SGEN 140,5,170,5 to set up ch1 = 679 Hz, ch2 = 694 Hz
and so on.
I think one needs to look up the SN76489 to fully understand what this means.
All the following commands and functions appear to work like in your average Microsoft Basic dialect, so only a few are explained:
END, NEW, LET, REM, PRINT, INPUT, GET, LIST
STOP, CONT BREAK = Ctrl-C
TRACE, NOTRACE, ON ERR GOTO For debugging, prints line numbers etc
IF .. THEN
FOR .. TO .. STEP .. NEXT
AND, OR, NOT
READ .. DATA, RESTORE
GOTO, GOSUB .. RETURN
ON .. GOTO, ON .. GOSUB
CLEAR Clears variables, the same as CLR in other dialects
There is no ELSE and unlike some other dialects, RESTORE can not take a line
number.
ABS, ATN, COS, EXP, INT, LOG, SGN, SIN, SQR, TAN
SPC, TAB, ASC, CHR$, LEN, LEFT$, MID$, RIGHT$, STR$, VAL
RND (X)
X>0 for new random numbers
X=0 for the same random number
X<0 to re-initalize the random number generator
DIM Can take arrays of up to 255 dimensions or even dynamic number of elements
PEEK (adr) Range -32768 to +32768
POKE adr,val Range -32768 to +32768
CALL adr Range -32768 to +32768
RAM (0)
Reports the number of bytes free, plus 16384.
If you write A = RAM(A$), the computer will garbage collect, free up memory and run a bit faster.
&
Transfers a value to a machine code routine at $03F4
Example: &NAME 100. I think this is equal to USR(x) on other Basics.
CLOAD Load from cassette
CSAVE Save to cassette
CRUN Load + Run
BLOAD Binary load, can take load address $xxxx
BSAVE $xxxx,$nnnn Saves $nnnn bytes from address $xxxx
BRUN Binary load + Run, can take load address $xxxx
STORE Record variable values on tape
RECALL Read variable values from tape
LLIST Send listing to printer
LPRINT Print a line of text to printer
To most part this looks like any standard Microsoft Basic version, with a few custom commands for graphics and specifically sound. The RAM(0) command looks like FRE(0) but with the additional feature of being able to collect garbage, which I'm unsure if I've seen before.
Too bad the ROMs are not yet dumped. They are soldered to the board in my machine, and I don't know a safe way to read them without risking damage. Perhaps one could BSAVE the ROM content, but since so far there is no known way to read Laser tapes on a PC, it would be a moot point. Perhaps one can write a Creativision program that will try to read data and store onto a static RAM chip, but it involves a bit of technical skills to go ahead.