As the name suggests – the Extra extension provides something a little extra. Improved commands and a few you may find useful. Without further ado let’s get started.
EXTRA
Typing this command displays a list of commands the extra extension provides. Useful if you want a quick way of checking how a certain command works.
LEXTRA
Same command but prints the command list to the printer rather than the screen.
PRNTR
Check to see if your printer is ready to print. Returns a value of -1 when ready and 0 when it isn’t.
10 repeat
20 home : print “Waiting for Printer”
30 until prntr=-1
40 print “Printer is ready”
SCREEN DUMP
It does just what it says – it dumps (prints) a picture on-screen onto your printer, the same as the STOS hardcopy command.
10 mode 0 : key off : hide : curs off : flash off
20 if prntr=0 then print”Press the online switch.”
30 if prntr=-1 then screen dump
40 goto 20
DEPACK TINY
This command unpacks pictures in TINY format (TN1). Been known to clash with the Depack command from the Missing Link extension. Disable Missing Link if you want to use this command.
To unpack a TINY picture, you must first reserve a bank to the size of the TINY picture then BLOAD it in.
reserve as work 5,9000 : bload”PIC.TN1,5
You can then choose to unpack it to the screen or a screen bank.
depack tiny start(5),physic or depack tiny start(5),start(6)
CONVERT IFF
This command simply converts an IFF picture file to a PI1 or NEO picture file. The IFF file must be unpacked. The command is…
convert iff start(5),physic,palst
This line converts the IFF picture in bank five and unpacks it to the screen which is used as workspace, you can also use a screen bank instead of a screen. The PALST value is used to decide whether you want to get the palette of the picture. Values are 0 for “don’t get palette” or 1 for “get palette”.
BLUR
When broadcasters don’t want you to see something on television they block it out using a jumbled pixel effect. The blur command allows you to do the same. The command looks like this.
blur ADDRESS,XPOS,YPOS,XBLOCK,YBLOCK,XSIZE,YSIZE,TYPE
ADDRESS: Can be a screen (IE: physic) or a memory bank.
XPOS AND YPOS: The X and Y coordinates of the block of the picture to be blurred.
XBLOCK AND YBLOCK: The size of the block to be blurred.
XSIZE AND YSIZE: The size of each zoomed pixel that makes up the block.
TYPE: Tells the command which pixel to use to get the colour of the resulting block – ranges from 1 to 5.
DESHADE
deshade ADDRESS,IGNORE,COLOUR
The DESHADE command changes all the colours at ADDRESS which can be a screen, or a bank, to COLOUR. The IGNORE value allows you to specify which colour in your palette is not to be changed.
10 key off: mode 0
20 load”CAR.PI1?
30 deshade physic,0,6
HREV
hrev S$
HREV allows you to flip a picture in a string horizontally. The picture block must first be put in a string (S$) with SCREEN$.
10 key off: curs off : mode 0
20 S$=screen$(5,32,32 to 112,100)
30 hrev S$
40 screen$(physic,0,0)=S$
VREF
vrev S$
As HREV but flips the screen vertically.
PPSC (pixel perfect screen copy)
This command works like Screen copy only that it allows you to copy pictures anywhere on the screen, it is not limited by the ST’s sixteen-pixel boundary problem. Can become quite slow when copying large areas of the screen.
ppsc Source,Des,X1,Y1,X2,Y2,X,Y,Plane
The Plane parameter allows you to choose how many screen planes to draw the picture in. It’s usually set to four for the full set. The Source can be a screen or a bank where you copy from and Des is the destination of the screen – again a screen or a bank.
FMT DISC
fmt disk drive,size,buffer
This command allows you to format a disk to different sectors. DRIVE is 0 for drive A or 1 for Drive B. SIDES can be 0 (single-sided) or 1 (double-sided). BUFFER is a memory bank reserved to at least 5000 bytes for the command to use as its workspace.
SET SCREEN
set screen HZ Hertz
This command works like the Frequency command in STOS only this command will work fine in a compiled program. Hertz can be 50 or 60.
OS VERSION$
Every time a new ST comes out, its TOS is updated. OS VERSION$ is a variable that finds out what the TOS version of your ST is. You use it by letting a variable equal it using the VAL command to find this out. For example, let’s use a line that checks if your ST has TOS 1.62.
10 OS#=val(os version$)
20 if OS#=1.62 then print ”You have an STE with TOS 1.62?
MEM CONFIG
This command is used to tell you how much memory your ST has in Kilobytes. Usually, the ST measures memory in bytes rather than K so a one meg ST will have around 800000 or something like that. It works by taking the number of bytes of memory your machine has and dividing it by 1024, which is the size of a Kilobyte in bytes. Try this routine.
10 D=free/1024
20 print D
This routine tells you how much memory you have in K’s (Kilobytes). However, the “free” command takes away the memory that’s been used by STOS and anything loaded in. But “mem config” tells you how much memory in K you have altogether without anything taking it up. It goes like this.
10 D=mem config
20 print “The total K of memory on this ST is “;D
CARTRIDGE INPUT
If you have a sampler cartridge then you can create some nice disco effects with this command. It’s a variable that returns the value from the cartridge between 0 and 255. You could use it to create a simple VU meter like this.
10 key off : hide on : flash off : mode 0 : curs off
20 logic=back
30 X=cartridge input-127
40 ink rnd(14)+1
50 cls logic
60 bar 0,0 to X,20
70 screen swap : wait vbl
80 goto 30
So, in this case, the higher the value the longer the bar will go. Note you have to always subtract 127 so that nought becomes stable.
POWER
power (A,B)
The POWER command is a new faster and more trusted version of the ^ symbol. The idea is to multiply a number so many times against itself. Let’s take this example.
3^5
33333
Each sum gives us the answer 243. What it does is take a number and raise it to the power of another number. So, in the last example we are multiplying three to the power of five (3^5) which is the same as the second example but shorter reading and faster. So, to do this with the POWER command we just go.
A=POWER(3,5)
Which is the same as…
3^5
The next command is…
DISC SIZE
disc size (DRIVE)
This command is similar to the DFREE command only it returns the total size of the disk. If you had a file on disk which was 49000 bytes long then DFREE would return the space left on the disk minus 49000 bytes. Where DISC SIZE returns the size of the disk itself in bytes rather than report the free space left on the disk.
10 D=disc free(0)
20 if D=802300 then print ”This disk is 802300 bytes in length”
It’s useful if you wanted to check if an inserted disk is a nine-sector disk by getting the size of the disk in bytes and if DISC FREE returns that number then it’s a nine-sector disk. The DRIVE parameter has two values. That’s 0 to check the disk in drive A and 1 to check the disk in drive B.
DISC FREE
disc free (DRIVE)
This is just the same as DFREE only it allows you to check a certain drive.
10 D=disc free(1)
20 print D;”bytes free on disk B”
EXTRA is not the best extension out there but it does have some commands you will find useful.