../../images/stop.gif

  ATOM Keywords

Voor de Atom zijn een groot aantal uitbreidingen geschreven voor de Basic en voor het OS.
Hieronder is een samenvatting van de syntax voor de voornaamste Keywords.
Het keywords.doc - file (in Word) is aanwezig om te printen.
In de sub-directory: /doc/ staan overigens meer files die kunnen worden ingelezen in Ms-Word.
#xx 	page zetten
werkt als ?18=xx;END    Top wordt goedgezet en getoond.

ASSIGN :naam,a
Geeft aan een bepaalde sprite een numerieke 
De sprite is dan zowel onder de naam als onder dit nummer bekend.     
naam 	- naam van de betreffende sprite
                        a 	- assignment nummer van de sprite
ATHIT : <NAME 1 > , <NAME 2 >
ATHIT : <NAME 1 > , a2
ATHIT   A1 , :<NAME2>
ATHIT   A1 , a2
Controleert of twee sprites elkaar overlappen.
  	<name1> - naam  sprite 1
  	<name2> - naam  sprite 2
    	a1 - assignment nummer sprite 1
   	a2 - assignment nummer sprite 2
Indien de twee sprites elkaar raken wordt de rest van de regel waarop ATHIT staat uitgevoerd. 
Anders zal de regel opgevat worden als commentaar.

ATKEY (A,B,C,....)(a,b,c,....)
M.b.v. ATKEY worden toetsen toegekend aan regelnummers of labels. 
Bij het indrukken van de eerste toets zal naar het eerste regelnummer of label gesprongen worden.

ATTRG   (VIA NODIG)
(at trigger) Evenals INT een declaratie. Indien de timer loopt en men drukt op de spatiebalk of men 
drukt de fire-button van de joystick in, dan zal de interpretor het statement afmaken waarmee het 
bezig was en vervolgens springen naar het eerst volgende statement op 
de ATTRG regel achter de declaratie.

AUTO 	regelnr,stap      	Automatisch regelnummers genereren
Het AUTO statement vereenvoudigt het intikken van programma's met zijn dubbele functie. 
Behalve automatisch regelnummers aanmaken wordt er bij de volgende regel automatisch ingesprongen. 
De parameter 'regelnr' is het eerste regelnummer, 'stap' is de stapgrootte tussen twee regelnummers. 
Beide parameters zijn optioneel en mogen dus weggelaten worden. In dat geval is de standaardwaarde 10.

BASE q
Bepaalt het geheugenblok waar sprites en paint patronen opgeborgen worden (in totaal 2 Kb). 
Reset tevens het mapbyte voor

BEEP 	hoogte,duur        Geluid opwekken
Met dit statement wordt een toon opgewekt d.m.v. OSBYTE#05. De hoogte mag niet boven 96 liggen. 
De duur van de toon wordt opgegeven in 18den van seconden.

BIN xxxxxxxx           	waarbij x= 0 of 1
Achter bin mogen maximaal 8 binaire bits gegeven worden. 
Op het scherm verschijnt dan de hexadecimale waarde ervan.

BIT x
Bit geeft de binaire waarde van het low word van de expressie; dit mag een variabele, constante of functie zijn.

BLOCK m , x , y , b , h
Tekent een volledig gevulde rechthoek.
	m - plotting mode: 0=reset, 2=invert pixel
	x - x coördinaat linker beneden hoek block
	y - y coördinaat linker beneden hoek block
	b - breedte block
	h - hoogte block

BORDER x,y
Tekent een lijstje op het beeldscherm
x - offset aan linker en rechterzijde van het scherm
y - offset aan boven en onderzijde van het scherm

BSAVE 	"filenaam"	Basic programma saven
Dit statement is speciaal bedoeld om basic programma's te saven. 
De syntax is hetzelfde als die van SAVE. Het executie-adres van de ge-save-de file is #AFAF.
NB: Voor de Atom-in-PC is dit statement overbodig; 
het normale SAVE statement geeft nu als executieadres #F144. 
Hier staat een verbeterde auto-start routine. 

CARRY :naam,x,y
CARRY a,x,y
Verplaats een sprite dat op het beeldscherm staat naar de opgegeven positie.
naam - naam van de sprite
	a - eventueel assignmentnummer van de sprite
	x - x coördinaat van de sprite 
	y - y coördinaat van de sprite

CASE 	expressie OF       case-blok
Het begin van een CASE blok. 
Het is bedoeld om uit verschillende mogelijkheden er slechts een te kiezen. 
De expressie kan een variabele of een berekening zijn. 
De volgende regels beginnen met een case-label <....>; als in een case-blok de expressie 
voldoet aan een case-label dan wordt de regel achter dat label afgewerkt. 
Een case-blok eindigt met het CEND statement.

voorbeeld:	10 CASE J-48 OF
               	20 <2> PRINT "DIT IS EVEN"'
                	30 <3> PRINT "DIT IS "
                	40  PRINT "ONEVEN"'
                	50 <1> PRINT "J=49"'
                	60 CEND

CAT	catalog
Hiermee kunnen alle basicprogramma's tussen #400 en #A000 opgezocht worden, 
mits deze met het PROGRAM statement beginnen. 
Op het scherm verschijnt een lijstje met de programma's en hun beginpagina.

CEND       	afsluiten van case-blok
Hiermee wordt een case-blok, dat begint met het CASE -statement, afgesloten. 
Voor een goede werking dient CEND aan het begin van een regel te staan en mag het niet worden afgekort.

CIRCLE p,x,y,r
Tekent een cirkel in elke grafische mode (ook extended video)
p - plot mode           	0=reset, 1=set, 2=invert pixels
		x - x coördinaat middelpunt
		y - y coördinaat middelpunt
		r - straal in pixels

CLS
Wist het scherm; selecteert altijd 80 kolommen tekstmode
CONT   	Ga verder met programma
Met het statement STOP kan een programma op een bepaalde plaats gestopt worden. 
Er volgt dan de melding STOP AT xxx. 
Met CONT kan met de uitvoering van het programma vanaf die plaats verder gegaan worden.

COPY 	bbbb, eeee, dddd   geheugenblok kopiëren 
Het geheugengebied van bbbb tot en met eeee wordt gekopieerd naar dddd. 
Als dddd tussen bbbb en eeee in ligt dan volgt een soort fill-statement waarbij het geheugen 
gevuld wordt met de bytes tussen bbbb en dddd.

Voorbeeld:	COPY #2000,#3000,#20
Na afloop van dit statement is het gebied tussen #2000 en #3000 gevuld met #20.

COS speed	selecteer 300/1200 baud cassette systeem
Aangezien de Atom-in-PC geen cassette operating systeem ondersteund is dit statement 
geheel overbodig geworden.

CREATE 	sprites en paint-patronen definities

Create/p:n a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8
  	p - patroon nummer 0 t/m 31
  	a - 8 bytes welke in totaal het patroon vormen:
      	a1=bovenste rij,  a8= onderste rij

CREATE 	<name>,a1a2,a3,.........,a15,a16
CREATE /H	<name>,a1,a2,a3......,a15,a16
  	<name> - naam van de sprite, maximaal 8 letters
    	/H   - switch voor horizontale sprites (optioneel)
  	a1..a16- sprite definitie volgens:
        
startpositiea8a16
a7a15

startpositiea1a9
CREATE /V	<name>,a1,a2,a3......,a15,a16
  	<name> - naam van de sprite, maximaal 8 letters
    	/V   - switch voor horizontale sprites (verplicht !)
  	a1..a16- sprite definitie volgens:
       
startpositiea16
a15

startpositiea1
auto assignment

Als het CREATE statement voor sprites gevolgd wordt door /A:n krijgt het sprite een assignmentnummer waaronder 
het dan ook bekend is.
Zie ook ASSIGN.

CUBE p,m,x,y,b,h
Tekent een (gedeelte van) een rechthoek.
p - plot mode           	0=reset, 1=set, 2=inverteer pixels
m - feature mode        0= teken complete rechthoek
                        	1= teken rechthoek TOT eerste gezette pixel
                        	2= teken rechthoek VANAF eerste gezette pixel
                        	3= teken rechthoek TOT eerste gezette pixel en
                           	  	begin weer bij het volgende gezette pixel
                        	4= begin bij het eerste gezette pixel en stop bij
                           		het volgende gezette pixel
		x - x coördinaat linker benedenhoek van rechthoek
		y - y coördinaat linker benedenhoek
		b - breedte van rechthoek
		h - hoogte van rechthoek

DAS #xxxx    	of  DAS #xxxx,#yyyy
Een disassembler met als bijzonderheid dat teksten, die in een machinetaal-programma worden geschreven via #F7D1, 
als leesbare tekst worden getoond. Bij invoer van alleen het startadres gaat DAS door tot aan #FFFF. 
Bij invoer van het eindadres treedt tevens een speciale printeroptie in werking; als de printer on-line is wordt 
gevraagd  of de uitvoer ook op papier afgedrukt moet worden. Antwoord met J of N. 
Ontsnappen kan altijd met escape.

DATA      	gegevensopslag in basicregels
De regel achter DATA wordt niet verder geïnterpreteerd; die is bedoeld voor opslag van gegevens 
die met het READ statement opgevraagd kan worden. 
Dit statement dient het eerste van een regel te zijn en mag niet worden afgekort.

DEASS :naam
Disabled de herkenning van de sprite onder een assignmentnummer. 
Het heft de werking van ASSIGN op.

DEF naam,xxxxxxxxxxxxxxxxx
DEF:xxxxxxxxxxxxxxxxx
Definiëren van alleen horizontale sprites. 
Voor pixels die gezet moeten worden is x een '1' voor zwarte pixels is x een'0'. 
De regel DEF: komt per sprite zeven keer voor.
INT en ATTRIG.
	q - high byte van begin van geheugenblok

DEL             regels verwijderen
Met DEL kunnen op snelle manier regels uit een basicprogramma verwijderd worden. 
Als parameters kunnen opgegeven worden:
        	DEL x , y	verwijder regel x t/m y
        	DEL x ,         	verwijder alles vanaf regel x
        	DEL , y         	verwijder alles tot en met regel y
        	DEL /string/    	verwijder alle regels waar 'string' in voorkomt

Als extra optie kan gegeven worden
        	V - 	vraag eerst of regel verwijderd mag worden
        	L - 	laat alle verwijderde regels nog even zien

DISAS bbbb [,[eeee]]    	disassembler
Disassembleert het opgegeven geheugengebied.

DISK   	reset Disk operating systeem vectoren
Dit statement initialiseert het DOS.

ELSE            alternatief bij XIF statement
- alternatie bij XIF statement, zie aldaar

EVEN (arg.)	functie
Als het argument even is dan geeft deze functie de waarde TRUE (=1) terug. 
In het andere geval wordt de waarde 
FALSE (=0) teruggegeven.

FALSE    	functie
Deze functie geeft altijd de waarde 0 terug.

FEND 	einde FUNCTION blok
Dit is het statement dat het eind aangeeft van een FUNCTION -blok. 
FEND behoort het eerste statement op de regel te zijn en mag niet worden afgekort.

FCOS 	1200 baud COS
- Niet meer van toepassing bij de Atom-in-PC

FILL a,b,c
Vult het geheugen van a tot b met de waarde c.

FIND string 	zoek string
De opgegeven string wordt gezocht in het aanwezige basicprogramma. 
De string mag als $ opgegeven worden of als "string".

FUNCTION 	definitie van een functie
Functies kunnen gebruikt worden om in een stuk programma een waarde te berekenen 
en die waarde vervolgens te gebruiken in een expressie. 
Het functie blok begint met het woord FUNCTION en eindigt met FEND. 
Voor een uitgebreide uitleg wordt toch verwezen naar de handleiding van P-Charm of 
naar de vele artikelen hierover in Atom Nieuws.

FVAR 	fp vardump
Drukt alle floating-point variabelen af op het scherm.

FZERO  	fp var wissen
Geeft alle floating-point variabelen de waarde 0.0

GAGS
Geeft het versienummer van het Gagsrom.

GRMOD  	tekst in grafische mode
Geeft de mogelijkheid om tekst te gebruiken in de Atom clear 4 mode; tekst en grafics 
kunnen door elkaar heen gebruikt worden.

HDUMP bbbb [,[eeee]]    	hexadecimale/ascii dump
Geeft een 32 koloms hex/ascii dump.

HEX 	adres 	hex/ascii dump
Vanaf het opgegeven adres wordt een gecombineerde hexdump/asciidump gegeven. 
Alle niet-ascii tekens worden weergegeven als een '.' 
Hex dumpt in een 32 kolommen scherm.

HIP #xxxx
HIP is de afkorting van Hexadecimaal InPut. Per adres wordt de geheugeninhoud getoond e
n verschijnt een vraagteken. Hierachter kan ingevoerd worden:
- return , HIP gaat dan verder naar het volgende adres
- een hexadecimaal getal , hip plaatst het getal in het geheugen
- letter T + een karakter , hip plaatst het karakter in het geheugen
Het statement kan beëindigd worden met ESCAPE.

HLINE P ,x1 , y1 , x2 , y2 , l , f , a , b
Tekent lijn vanuit start positie naar een positie met een bepaalde x- coördinaat, 
welke zou liggen op de lijn welke getrokken wordt tussen de startpositie en de eindpositie.
P - plotting mode: 	0=reset, 1=set, 2=invert pixel
		x1,y1 - coördinaten start positie
		x2,y2 - coördinaten eind positie
		l - x coördinaat eind pixel
		f - pixel feature: 	=0 tekent tot aan eind pixel
                   					=1 tekent tot aan eerst gesette pixel
                   		A,B - variabele A t/m Z. Wordt gevuld met coördinaten van
                   		laatst geplotte pixel.

HTAB x   	horizontale tab
De cursor wordt x karakters van de linker kantlijn gezet.

HVAR 	vardump
Toont de inhoud van de variabelen A t/m Z hexadecimaal op het scherm.

HXD #xxxx      	of HXD #xxxx,#yyyy
Een 80-koloms hexdump routine waarbij per regel 16 adressen hexadecimaal en tevens in 
ASCII weergegeven worden. 
Bij invoer van alleen het startadres gaat HXD door tot aan #FFFF. 
Bij invoer van het eindadres treedt tevens een speciale printeroptie in werking; als de 
printer on-line is wordt gevraagd of de uitvoer ook op papier afgedrukt moet worden.
Antwoord met J of N. Ontsnappen kan altijd met escape.

ICOPY bbbb,eeee,dddd    	intelligent kopiëren
Het geheugengebied bbbb tot en met eeee wordt gekopieerd naar dddd. 
Als dddd tussen bbbb en eeee ligt volgt geen fill effect; het is hierdoor dus mogelijk om 
een stuk geheugen over bijvoorbeeld 1 byte te verschuiven.

IMAGE :naam,x,y
IMAGE a,x,y
Plaats een sprite op het scherm maar neemt het niet op in de
administratie. Na het plaatsen is de spritepositie niet meer
bekend.
naam - naam van de sprite
	a - eventueel assignmentnummer van de sprite
	x - x coördinaat van de sprite 
	y - y coördinaat van de sprite

INFO  	programma status
geeft een overzicht van het in de huidige tekstpagina aanwezige basic-programma. 
PAGE, TOP, DIMTOP, SIZE en FREE memory worden op het scherm gezet.

INK a
Kleurenset van 16 kleuren. Verticale resolutie wordt gehalveerd.
	a - kleur: 
	0=transparant groen  	8  =cyaan
           	1=licht groen     		9  =grijs
           	2=paars    		10=blauw
           	3=donker bruin         	11=donker blauw
           	4=groen(1) 		12=groen(2)
           	5=geel   		13=oranje(2)
           	6=rose  		14=magenta
           	7=oranje(1) 		15=rood
Mogelijk verschijnen deze kleuren iets anders op het scherm van de PC.

INKEY k  	wacht op toetsaanslag
Het INKEY statement wacht totdat een toets wordt ingedrukt. 
De ascii waarde van die toets wordt in de variabele k (A...Z) opgeslagen.

INSTR 	in string ?
Met behulp van deze integer functie kan in een bepaalde string worden gezocht naar een andere string. 
De syntax is:
        	INSTR( string1, string2)
waarbij de haakjes verplicht zijn. De string mag zowel als $ gegeven worden of als "string". 
Het resultaat van de functie is de positie waar de tweede string in de eerste string voorkomt. 
Als de tweede string niet in de eerste voorkomt dan is het resultaat 0.

INT c , t 	( VIA NODIG )
Biedt de mogelijkheid om 3 zogenaamde channels te gebruiken, welke onderbinterruptus van timer 1 na 
verschillende, op te geven tijden aangeroepen zullen worden (lees: routines in het programma).
	c - channel nummer 0,1 of 2
	t - tijd 1<=t<=#ffff
Tijdens de declaratie van INT wordt de rest van de regel opgevat als commentaar. Is de verlangde tijd, 
na het aanzetten van de timer, verstreken, dan zal het statement waarmee de interpretor op dat moment 
bezig is afgemaakt worden en vervolgens wordt gesprongen naar het gedeelte op de declaratie regel 
na de parameters. 
Op dat moment wordt ook de timer uitgezet die men zelf later weer aan moet zetten.

INT : P ( VIA NODIG )
Start of stopt de timer.
  	p - =0 stopt de timer
      	     =1 start de timer
Let op de dubbele punt!!
De timer loopt met 50hz, dat wil zeggen, de tijden die men declareert moeten met 0.02 vermenigvuldigd worden. 
Voor 1 seconde kiest men t=50.

INV 
Inverteert het Atom beeldscherm

JBOX   	helpfunctie
Geeft een overzicht van alle JBOX commando's.

JOYSTK A,B,C
De joystick wordt via de joystickvector #FFBF uitgelezen en de opgegeven variabelen worden aangepast 
aan de hand van de status van de joystick: 
	A - 	variabele A t/m Z wordt met 1 verhoogd als stick naar rechts
                         		of met 1 verlaagd als stick naar links
	B - 	variabele A t/m Z wordt met 1 verhoogd als stick omhoog
                         		of met 1 verlaagd als stick omlaag
	C - 	variabele A t/m Z is 0 als vuurknop niet gedrukt is
                         		als vuurknop gedrukt is <> 0

KEY k 	voer toetsenbord scan uit
Het KEY statement kijkt of er een toets wordt ingedrukt. Zo ja, dan wordt de variabele k (A...Z) gevuld 
met de ascii waarde van die toets. Anders wordt de variabele k gelijk aan 0. 
Dit statement wacht niet totdat een toets wordt ingedrukt.

KILL :naam
KILL a
Verwijdert een sprite uit de administratie.
naam - naam van de te verwijderen sprite
	a - eventueel assignmentnummer van de sprite

LAB  	label overzicht
geeft een overzicht van de gebruikte labels in het aanwezige programma. 
Eerst worden de assembler labels getoond, daarna de basiclabels met het regelnummer waar ze voorkomen.
Tenslotte verschijnt een regel waarin aangegeven wordt welke labels nog vrij zijn en welke al gebruikt zijn.

LINE x
waarbij x een regelnummer is. Als de regel gevonden is verschijnt het adres op het beeldscherm.

LIB   	programmageheugen overzicht
oftewel 'library', toont de eerste regel van alle in het geheugen aanwezige basicprogramma's, 
voorafgegaan door hun paginanummer. Een = teken achter het paginanummer geeft aan waar de tekstpointer staat. 
Vervolgens verschijnt PAG # op het scherm. 
Een return laat de tekstpagina ongewijzigd, bij invoer van een hexadecimaal getal zet 
de tekstpagina naar de opgegeven waarden.

MFIND #xxxx,#yyyy,???
MultiFIND zoekt in het geheugengebied xxxx t/m yyyy naar ??? en toont de adressen waar het zoekargument 
gevonden is op het scherm. Voor ??? mag ingevuld worden:
        een hexadecimaal getal   	bijv. #40
        een assembler mnemonic 	bijv. LDA #80,X
        een string                      	bijv. "ATOM"
Als het zoeken te lang gaat duren kan het gestopt worden met ESCAPE.

MODE a
Grafische mode selecteren zonder het beeld te wissen.
*** dit statement werkt niet op de Atom-in-PC ***

NOT 	ontkennen
Deze functie voert een logische ontkenning uit. Als het argument van NOT 0 is, is het resultaat <> 0 
en vise versa.

ODD (arg.) 	functie
Als het argument oneven is dan geeft deze functie de waarde `TRUE (=1) terug. In het andere geval wordt 
de waarde `FALSE (=0) teruggegeven.

ON 	diverse mogelijkheden
ON ERROR		fout opvangen
Als er tijdens de uitvoering van een programma een fout optreedt wordt de uitvoering voortgezet achter 
het ON ERROR statement. 
Bovendien worden dan FOR....NEXT, DO....UNTIL en GOSUB....RETURN lussen vergeten. 
Let erop dat in de ON ERROR routine geen fout staat.

ON ... GOSUB	gosub selector
Dit statement geeft de mogelijkheid om te kiezen uit een aantal mogelijke subroutines. 
Syntax: ON expr GOSUB line, line, line, ... 
Hierin is line een regelnummer of een label.
Afhankelijk van de waarde van de expr wordt gesprongen naar de eerste, tweede, derde etc subroutine. 
Als expr groter is dan het aantal opgegeven subroutines wordt er niet gesprongen.

ON ... GOTO             	goto selector
Hetzelfde als ON ... GOSUB, maar dan voor sprongen via GOTO.

PACK "stofzuiger"
is een supersnelle opruimer van overbodige spaties in een basicprogramma. 
Let erop dat dit ook in teksten achter REM gebeurt.

PAINT x,y,p
M.b.v. PAINT kunnen ingesloten vlakken op het beeldscherm gevuld worden met een zelf te definiëren patroon.
x - x coördinaat startpositie
y - y coördineer startpositie
p - patroonnummer (0 ... 31)
Als het patroonnummer wordt weggelaten wordt het vlak geheel wit gekleurd.

PALET p
Een CGA kaart kent twee paletten. Het betreffende palet kan hiermee gekozen worden. 
Andere mogelijkheden van het PALET statement zijn:
- wijzigen van borderkleur in tekstmode
- wijzigen van achtergrondkleur in 4 kleuren grafische mode.
- wijzigen van voorgrondkleur in 2 kleuren grafische mode.
In de laatste drie gevallen ligt p dan tussen #80 en #FF. 
Dit statement is specifiek voor een CGA kaart; op een EGA/VGA kaart kan de werking iets anders uitvallen.

PAPER a
Creëren van een achtergrond kleur
a - kleur: 	0=zwart 		2=rood (magenta)
           	1=groen (cyaan) 	3=geel (wit)
De kleuren tussen de haakjes gelden in palet 1.

PAUSE duur              	
Er wordt gewacht in eenheden van 1/18e seconden. De totale schafttijd is dus duur/18 seconden.

PC-COMMANDS  	zie Atom-in-PC Epos/3 blz. 14 e.v.

Ook is informatie over een PC commando te verkrijgen met het HELP commando met als sleutelwoord 
PCCOM#xx waarbij xx het gewenste commando nummer is of PCCOM#xxss voor commando's met 
een subfunctie waarbij xx weer het commando is en ss het subfunctienummer

PDMENU	pull down menu
Syntax:   	PDMENU x,y,breedte,items,S/D,attr,$tekst,var[,begin]
Dit statement geeft een compleet pull down menu in zowel tekst als grafische mode. 
Bediening kan met de cursortoetsen of met de muis. 
De menubalk wordt verplaatst met de cursortoetsen voor omhoog/omlaag of door de 
muis in verticale richting te bewegen. 
Een keuze wordt gemaakt door een druk op de ENTER toets of de linker muistoets. 
Het menu kan ook verlaten worden door het drukken van ESCAPE of de rechter muistoets. 
In dat geval is de teruggegeven waarde 0. Het menu is omgeven door een kader. 
De coördinaten x en y geven de linker bovenhoek van het menu aan. 
De 'breedte' is het aantal karakters dat de menu-items breed zijn.
De parameter 'S/D' geeft aan of het kader met enkele (S) of dubbele (D) lijnen getekend moet worden. 
'Attr' is de kleur of attribuut van het menu. $tekst wijst naar een string in het geheugen die de menu-items bevat. 
Het uiteindelijk gekozen item komt in de 'var' (A..Z) terecht. De laatste parameter is optioneel. 
Zonder deze parameter licht het eerste menu-item op bij het begin van het statement PDMENU. 
Als deze parameter wordt opgegeven licht het overeenkomstige item op.

Samenvattend:  	x,y           	linker bovenhoek van menu
                		breedte	aantal tekens per item
                		items	aantal menu items
                		S/D 	Single of Double kader
                		attr  	attribuut of kleur van het menu
                		$tekst	pointer naar menu items
               		var   	variabele (A..Z) waar keuze in komt
                		[begin]	hi-lighted menu item

PEND   	einde procedureblok
Dit is het statement dat het eind aangeeft van een function-blok. 
PEND behoort het eerste statement op de regel te zijn en mag niet worden afgekort.

PIXEL x,y,z
Controleer of pixel in Atom grafische mode gezet is.
		x - x coördinaat van te controleren pixel
		y - y coördinaat van te controleren pixel
		z - variabele A t/m Z, 	wordt 0 als pixel zwart is, 
			<>0 als pixel wit is

PLAY noot [, noot, noot etc]
Speelt noten in drie octaven. Wordt niet ondersteund bij de Atom-in-PC.

PLIST x,y
geeft u, met printeroptie, een listing van een programma. 
Daarbij wordt voor elk regelnummer x spaties ingesprongen en achter elk regelnummer 
worden y spaties toegevoegd, behalve bij [ , ] , assembler labels en basiclabels.

PROC   	definitie van een functie
Procedures kunnen gebruikt worden om  een sub-programma te creëren die aangeroepen 
kunnen worden vanuit het hoofdprogramma, andere procedures of door zichzelf (dus recursie!). 
Voor een uitgebreide uitleg wordt toch verwezen naar de handleiding van P-Charm of naar de 
vele artikelen hierover in Atom Nieuws.

POP      	uitnodiging om niet netjes te programmeren
Dit statement haalt een returnadres van de GOSUB stack. 
Dit schijnt handig te zijn indien een programma tijdens het uitvoeren van een programma zich in een 
subroutine bedenkt en geen RETURN wil uitvoeren, maar op een andere manier uit de subroutine wil springen. 
Een POP voorkomt dat er in dat geval problemen met de stack ontstaan, maar bevordert de toch 
al aantrekkelijke spaghetti programmastructuur.

PROGRAM 	programma heading
Een programma dat optimaal gebruik wil maken van P-Charme begint met het PROGRAM statement. 
Achter program mag een naam voor het programma komen te staan en eventueel nog wat extra tekst.
Behalve het programma een naam geven doet PROGRAM nog wat meer:
        	Automatische restore aan het begin van het programma
        	Initialisatie van procedures en functies
        	Initialisatie van ingebouwde functies
        	Initialisatie error aanwijsroutine
        	Initialisatie multidimensionale array's
        	Initialisatie while loops
        	Herkenning t.b.v. van statement CAT
De BRKVEC wordt voor de duur van het programma verzet naar P-Charme.

Een goede naam voor het programma begint met twee verschillende letters en eindigt met een karakter 
dat kleiner is dan de ascii waarde van de letter 'A', met uitzondering van het - teken. 
Een programma dat ergens in het geheugen staat en begint met PROGRAM kan door de naam in te geven 
gestart worden.

PROGRAM moet het eerste statement van het programma zijn en mag niet worden afgekort.

POS :naam, A , B
POS a,A,B
Plaatst de coördinaten van de opgegeven sprite in de opgegeven variabelen.

RAM #xxxx,#yyyy
Een snelle ramtest; test het geheugen tussen #xxxx en #yyyy waarbij de aanwezige data niet verloren gaan. 
Stoppen kan met ESCAPE.

READ	leest data
Met het read statement kunnen integer, floating point, array en string variabelen worden ingelezen. 
De gegevens voor het READ statement staan opgeslagen in de regels die met DATA beginnen. 
De allereerste READ opdracht begint bij de eerste DATA regel te lezen 
(mits het programma begint met PROGRAM). 
De pointer voor het READ statement kan gewijzigd worden met het RESTORE statement.

RELOC bbbb,eeee,dddd	verplaatst machinetaal programma
Het gebruik van RELOC lijkt op COPY; het geheugenblok van bbbb t/m eeee wordt gekopieerd 
naar dddd waarbij eventuele adressen automatisch aangepast worden.

RENUM regelnr,stap      	hernummer programma
Dit statement vernummert een basic programma waarbij rekening gehouden wordt
met GOTO, GOSUB, RESTORE en ON ... GOSUB/GOTO.
De parameter 'regelnr' is het eerste regelnummer, 'stap' is de stapgrootte tussen twee regelnummers. 
Beide parameters zijn optioneel en mogen dus weggelaten worden. In dat geval is de standaardwaarde 10.

SCOS	300 baud COS
Niet meer van toepassing bij de Atom-in-PC

SCREEN	selecteren beeldpagina's
Syntax:   	SCREEN s
De meeste videokaarten kunnen overweg met meerdere schermpagina's. 
De Atom kan inmiddels ook overweg met meerdere pagina's in tekstmode. 
Met SCREEN kunnen pagina's opgeroepen worden. Als s tussen 0 en 7 ligt wordt dat de pagina 
die op de monitor verschijnt en waarin de bewerkingen plaatsvinden. 
Een s tussen #40 en #47 selecteert alleen de pagina waarin bewerkingen plaatsvinden en s 
tussen #80 en #87 selecteert alleen de pagina die op de monitor verschijnt


SCROLL e
Hiermee is het beeld in elke gewenste richting te scrollen afhankelijk van de extensie e:
U - (up) naar boven, 8 pixels
D - (down) naar beneden, 8 pixels
L - (left) naar links, 8 pixels
R - (right) naar rechts, 8 pixels

SET :naam,x,y
SET a,x,y
Plaats een sprite op het scherm.
naam - naam van de sprite
	a - eventueel assignmentnummer van de sprite
	x - x coördinaat van de sprite 
	y - y coördinaat van de sprite
 
SHAPE adres             	teken figuurtje
Hiermee wordt een opgegeven figuur op het scherm getekend volgens een "gepackte" tabel 
op locatie 'adres'. 
Het eerste byte van de SHAPE tabel geeft de lengte van de tabel aan. 
De volgende bytes geven informatie over de te plotten figuur.

                 	opdracht  1     	opdracht  2



byte


                 		
  	plotpar. 	richting 	plotpar. 	richting

De plotparameter wordt als volgt bepaald:
     	00 : move
     	01 : set   (wit)
     	10 : inv   (wit <> zwart)
     	11 : reset (zwart)     
De richting wordt als volgt bepaald:
     	00 : links
     	01 : rechts
     	10 : omhoog
     	11 : omlaag
Er komen dus twee plot opdrachten per byte. De positie van het figuurtje wordt met het move statement bepaald.

SHOVE :naam,dx,dy
SHOVE a,dx,dy
Verschuift een sprite dat op het beeldscherm staat volgens de opgegeven verplaatsing. 
De nieuwe positie wordt bijgewerkt in de administratie.
naam - naam van de sprite
	a   - eventueel assignmentnummer van de sprite
	dx - verplaatsing in horizontale richting
	dy - verplaatsing in verticale richting

SOUND p , d
Produceert geluid volgens:
	p - pitch (toonhoogte) 	1<=p<=255
	d - duur van de toon 	1<=d<=255

STEP <start> [,display] 	single step routine
Een machinetaal programma wordt stap voor stap doorlopen. 
Na iedere instructie wordt een disassembler gegeven met de actuele register inhouden. 
Gewacht wordt op een druk op de spatiebalk.
 Als display gegeven is wordt pas vanaf dat adres begonnen met het afdrukken op het scherm. 
Alle instructies tussen 'start' en 'display' worden dan normaal uitgevoerd.

De registers A, X en Y kunnen bij het begin gezet worden door de variabelen A, X en Y.

STOP 	stop het programma
Tijdens het foutzoeken kan STOP gebruikt worden om het programma tijdelijk te onderbreken. 
Er volgt een melding STOP AT LINE xxx. 
Er kunnen dan bijvoorbeeld variabelen worden bekeken of gewijzigd. 
Het programma zelf mag niet gewijzigd worden. 
De uitvoering kan voortgezet worden met CONT.

TRACE #xxxx 	of TRACE #xxxx,#yyyy
Een machinetaal programma wordt stap voor stap doorlopen. 
Na iedere instruktie wordt een disassembler gegeven met de actuele register inhouden. 
Gewacht wordt op een druk op de spatiebalk. 
Als yyyy gegeven is wordt pas vanaf dat adres begonnen met het afdrukken op het scherm. 
Alle instructies tussen xxxx en yyyy worden dan normaal doorlopen. 
De registers A, X en Y kunnen bij het begin gezet worden door de variabelen A, X en Y.

TRUE 	waar
Deze functie levert altijd de waarde 1 op.

TURN :naam
TURN a
Draait een sprite om zijn verticale as, zowel op het scherm als in de
sprite administratie.

UNSET :naam
UNSET a
Verwijdert een sprite van het scherm.
naam - naam van de sprite
	a - eventueel assignmentnummer van de sprite

USR aaaa 	machinetaal programma starten
Het statement USR werkt hetzelfde als LINK met het verschil dat de registers A, X en Y in de 
aagste bytes komen te staan van de gelijknamige basic variabelen. 
Op die manier kan eenvoudig een eventueel resultaat van een routine via de registers naar het 
oproepende basicprogramma gegeven worden.

VAR 	variabele dump
Dit statement drukt in twee kolommen de variabelen A tot en met Z af.

VER #xxxx,#yyyy,#zzzz
vergelijkt de geheugeninhoud van #xxxx t/m #yyyy met #zzzz en verder. 
Niet met elkaar overeenkomende adressen worden op het scherm getoond. Ontsnappen met escape.

VLINE P ,x1 , y1 , x2 , y2 , l , f , a , b
Tekent lijn vanuit start positie naar een positie met een bepaalde y- coördinaat, 
welke zou liggen op de lijn welke getrokken wordt tussen de startpositie en de eindpositie.
P - plotting mode: 	0=reset, 1=set, 2=invert pixel
		x1,y1 - coördinaten start positie
		x2,y2 - coördinaten eind positie
		l - y coördinaat eind pixel
		f - pixel feature: 	=0 tekent tot aan eind pixel
                   			=1 tekent tot aan eerst gesette pixel
                  	 	A,B - variabele A t/m Z. Wordt gevuld met coördinaten van
                  		laatst geplotte pixel.

VTAB y   	verticale tabulatie
De cursor wordt aan het begin van regel y gezet. De bovenste regel is regel 0.

WEND 	einde WHILE lus
Dit statement is het einde van een `WHILE lus. WEND behoort het eerste statement op 
de regel te zijn en mag niet worden afgekort.

WHILE expr	begin WHILE - WEND lus
Een WHILE lus, die begrenst moet zijn door WHILE en WEND, wordt net zolang uitgevoerd totdat
de expressie achter WHILE gelijk aan FALSE wordt. Indien de expressie al bij het begin false is, 
wordt het hele WHILE blok overgeslagen. 
Als de lus verlaten wordt gaat het programma verder achter het WEND statement. WHILE mag 
tot 10 niveaus genest worden, niet afkorten en moet aan het begin van de regel staan.

WINDOW m,x,y,b,h
Definieert een denkbeeldig raam in Atom grafische mode waarin wel of juist niet getekend mag worden.
m - mode   	0 = teken alleen buiten het raam
	1 = teken alleen binnen het raam
	x - x coördinaat linker benedenhoek van venster
	y - y coördinaat linker benedenhoek van venster
	b - breedte van rechthoek venster
	h - hoogte van rechthoek venster

WOFF 
Heft het gedefinieerde raam op. Er mag weer op het hele scherm getekend worden.

XDUMP bbbb [,[eeee]]    	hexadecimale/ascii dump
Geeft een 32 koloms hex/ascii dump

XIF expr THEN ...       	expanded IF
Het XIF statement behoort te worden gebruikt samen met het ELSE statement. 
Indien de expressie achter XIF de waarde TRUE oplevert wordt het gedeelte achter THEN wel uitgevoerd 
en het stuk achter ELSE niet. 
Indien de expressie de waarde FALSE oplevert dan wordt het stuk achter THEN niet uitgevoerd maar wel 
het stuk achter ELSE. THEN mag eventueel weggelaten worden. 
Voor een goede werking moeten XIF en ELSE aan het begin van de regel staan en mogen ze niet worden afgekort.

Merk op dat het gedeelte achter THEN uit meerdere regels mag bestaan, maar het gedeelte achter 
ELSE mag maar uit een regel bestaan.

ZERO	wist variabelen
Dit is een statement dat de variabelen A t/m Z vult met de waarde 0.