GWCOMMANDS
by KindlyRat
I'm constantly suprised by the number of people that are interested in GW Basic as judged by the number of hits I get. I have a GW Basic Users Guide and I'll attempt to list some of the commands. Some may not work on your computer!
Conventions
In all attemps to tell you how to enter something, <--- will mean "hit the Enter key"
To Start GWBASIC
If you downloaded GWBASIC from KindlyRat, it's in a ZIP file. Use WinZip or some other compression program to unzip the file. It will then look like your computer's symbol for an ".exe" file. Clicking the icon will start GWBASIC.
To Stop GWBASIC
System <--- , then click the Close box (X)
YOUR MOUSE WILL NOT WORK IN THE GWBASIC WINDOW.
To Load a Program
Programs must be in the same folder as GWBASIC.exe.
Before opening GWBASIC:
you can drag and drop a BASIC program on the GWBASIC.exe icon. The program will load and begin running.
After opening GWBASIC:
F3 and finish the statement
load "MyProgram" <---
To Run a Program
F2 and finish the statement
run "MyProgram" <---
To Save a Program
save "MyProgram" <---
Arithmetic Operators
^ exponentation
- negation and */+-
Relational Operators = ,<>,<=,>=,<,>
Logical Operators NOT,AND,OR,XOR,EQV,IMP
String Operators =,<>,<,>,<=,>=
Functions
ABS() return the absolute value PRINT ABS(7*(-5))
ACS(x$) ASCII numbers for strings PRINT ASC(X$)
ATN(x) arctangent with X in radians PRINT ATN(X)
AUTO 100,50 gives automatic line numbers starting w/100 increment 50, exit with CTRL-C
BEEP sound PRINT CHR$(7) does the same thing, 800Hz for 0.25 seconds
BLOAD,BSAVE
CALL ARK(A,B$) Ark is assembly language location,A,B$ pass variables
CDBL(x) convert x to double precision
CHAIN "PROG1",100 passes control to "prog1" program line 100
CHDIR "B:INVENTORY" changes directory to "INVENTORY" on B drive
CHR$(66) convert ascii code to character, "66" is upper case B
CINT(x) round number with decimal to next integer
CIRCLE(100,100),50 draws a circle of radius 50 at point x100 y100
CLEAR veriables to 0, strings to null, close open files
CLOSE 1,#2,#3 terminate input/output to disk file or device 1, 2, 3
CLS clear screen
COLOR foreground,background,border
maximums (screen 0) are foreground 31 ( for blink, add 16 ), background 7, border 15.
to return to Windows screen the command is SCREEN 0. See SCREEN also for dimensions
SCREEN 0
COLOR 31, 7, 15
SCREEN 1 ( I don't understand SCREEN 1 )
SCREEN 7
COLOR 15, 15
SCREEN 8
COLOR 15, 15
SCREEN 9
COLOR 15, 15
COMMON A,G$ used with CHAIN to pass variables to chained program
CONT continue after a break
COS(x) cosine(radians)
CSNG(x) convert x to single precision
y=CSRLIN return cursor row position
CVI,CVS,CVD
DATA 3,10,5 data constants
v$=DATE$,DATE$=V$ set or retrive current date mm-dd-yy,mm/dd/yy or yyyy
DEF FN define & name a function written by user DEF FNAB(X,Y)=X^3/Y^2
DEFINT/SGN/DBL/STR define as integer,single precision,double precision or string
DEF SEG assign current segment address to be addressed by BLOAD,BSAVE,PEEK,POKE,USR
DEF USR specify starting address of Assembly Language program called by USR function
DELETE 40 DELETE 40-100 DELETE -40
DIM A(220) max values for array variable subscript and allocate memory
DRAW "Un;Dn;Ln;Rn;En;Fn;Gn;Hn;"
Drawing starts at middle of screen in a graphics mode.
Small n (above) is a varible representing a number or a number
U is up, D down, L left, R right, E up&right, F down&right, G down&left, H up&left
Mx,y line is drawn from current position to point x,y M+or-x,y x&y are added to position
Prefixes B move but plot no points, N Move but return when done
Commands As is Set angle 0 to 3, TA is turn angle -360 to +360, Cn is set color, Sn is scale.
Ppaint, boundry paint is fill color, boundry is border color
EDIT line number
END terminate program execution. Does not print message
ENVIRON statement. Modify perameters in string table
ENVIRON$ function. Retrieve environment string form table
EOF returns -1 when end of sequential or com file is found, 0 if not found
ERASE erase arrays from a program
ERDEV ERDEV$ return value of device error or name of device causing error
ERR or ERL return error codes
ERROR simulate an error
EXP(x) return base of natural log to the power of x
EXTERR(n) return extended error info
FIELD(#) allocate space random file buffer
FILES(pathname) like DIR in dos
FIX(x) trundate x to a whole number
FOR and NEXT for n = 1 to 10 step 2:print n:next n
FRE(x) return avalible bites in string memory
GET read a record from random disk file to random buffer
GET Statement (graphics) GET (125,139)-(170-180),A
GOSUB...RETURN branch to & return from subroutine
GOTO branch to specified line number
A$=HEX$(x) return hex value of argument
IF...THEN...ELSE determine program flow by testing
A$=INKEY$ return one character from keyboard
INP(n) return byte from port n
INPUT "Enter BIRTHDATE",B$
INPUT# file number,variable list
INPUT$ return string of X characters from keaboard or file number
INSTR search for occurance of string & return position
INT(x) truncate to a whole number
IOCTL #1, "PL66" send "control data" string to device driver
IOCTL$(#1) read "control data" string from open device driver
KEY key number,string Up to 15 characters w/ one keastroke
KEA(n)ON,KEY(n)OFF,KEY(n)STOP
n is 1-10 functions,11 cursor up,12 left,13right,14 down
KILL filename delete file from disk
LEFT$(x$,n) return a string that is the
LEN(x$) return number of characters in x$
LET D=12 optional in GWBASIC
LINE(X1,Y1)-(X2,Y2),2 draw lines in color 2
LINE(X1,Y1)-(X2,Y2),2,B B is Box X & Y are box corners
LINE(X1,Y1)-(X2,Y2),2,BF 2 is color 2 (BF is filled box)
LINE -(X2-Y2) draw from last point in foreground color
LINE -(RND*319,RND*199)RND*2,BF draws random lines
LINE INPUT A$ input up to 255 from keaboard
LINE INPUT# read line from a sequential file to a string variable
LIST 10-50 list all or part of program line numbers
LLIST to line printer
LOAD "MYPROGRAM" loads a file from same folder to memory
LOC return current position in file
LOCATE 1,1 move cursur to screen location
LOCK #n locks entire file n
LOCK #n,X locks record X only
LOCK #n, TO Y locks records 1 through Y
LOCK #n, X TO Y locks records X through Y
LOF(file number) length of file in bytes
LOG(x) returns natural log. X is > 0
LPOS(x) return position of line printer head within line printer buffer
LPRINT expression1, expression 2 & LPRINT USING print data to line printer
LSET,RSET move data to random file buffer and left or right justify for PUT statement
MERGE filename merge the lines from program file to file in memory
MID$
MKDIR "C:SALES\JOHN" make a subdirectory
MKI$, MKS$, MKD$ convert numeric values to strings I is Integer, S is single, D double
NAME "oldFilename" AS "newFilename"
NEW delete program in memory and clear variables
OCT$(x) convert decimal value to octal
ON COM(n), ON KEY(n), ON PEN, ON PLAY(n), ON STRIG(n), ON TIMER(1 to 86400) event traps
ON ERROR GOTO lineNumber
ON ...GOSUB, ON...GOTO
OPEN "B:TEMP" FOR INPUT AS #1
OPEN "COM(n)
OPTION BASE n 0 or 1 declair minimum value for array subscript, default is 0
OUT integer,port OUT 12345,225send a byte to output port
PAINT (x start,ystart)[,paint attribute[,border attribute][,bckgrnd attribute]]
example-
10 CLS
20 SCREEN 1
30 LINE (0,0)-(100,150),2,B
40 PAINT (50,50),1,2
50 LOCATE 20,1
PCOPY 1,2 copy one screen page to another
PEEK A=PEEK(&H5A00) read from a memory location
PEN read the light pen X=P(n)
PLAY "B-D+C" play Bflat,Dsharp,C music
PLAY(n) return number of notes in the background music queue
PMAP(exp,function) map to a logical or physical location.
POINT(x,y) read color from screen
POKE a,b poke a byte into memory location POKE &H5A00,&HFF
POS(c) return current cursor position
PRESET,PSET(x,y)[,color] display a point on the screen
PRINT "HELLO WORLD",X$,A;B
PRINT USING "###.##"; 987.654 print strings or numbers in a format
PRINT#1,A PRINT# USING write data to sequential disk file
PUT write record from random buffer to random disk file
PUT transfer graphics images to screen
RANDOMIZE TIMER reseed random number generator
READ A(n) reads value from data statement and assign to variable
REM remark
RENUM 1000,900,20 renumbers lines from 900 up so they start with 1000 and increment 20
RESET close files and write directory info to diskette
RESTORE(line no) allow DATA statements to be reread from a line
RESUME continue program execution after an error-recovery procedure
RETURN return from a subroutine
RIGHT$
RMDIR delete a directory
RND return a random number between 0 and 1
RUN MYPROGRAM execute program in memory
SAVE MYPROGRAM
SCREEN (10,10) return character at x,y position
SCREEN 0 text mode
SCREEN 1 320X200 80X25 text character-box = 8X8
SCREEN 2 640X200 40X25 text character-box = 8X8
SCREEN 7 320X200 40X25 text character-box = 8X8
SCREEN 8 640X200 80X25 text character-box = 8X8
SCREEN 9 640X350 80X25 text character-box = 8X14
SCREEN 10 640X350 80X25 text character-box = 8X14
SGN(x) returns sign of x 1 is positive, 0 is 0, -1 is negitive
SHELL
SIN(x) in radians
SOUND frequency,duration
SPC(n) skip n number of spaces in a PRINT or LPRINT statement
SPACE$(x) return a string of x spaces
SQR(x) square root of x
STICK(n) return x and y coordinates of two joysticks
STOP stop execution and return to command mode
STR$(x) return a string version of x, the opposite of VAL(x$)
STRING$(n,f) return n characters of ASCII f, or first letter of f$
SWAP A$,B$
SYSTEM return to MS-DOS
TAB(n) spaces to position n (1 - 255)
TAN(x) radians
TIME$ A$=TIME$ set or get the current time
TIMER v=TIMER number of seconds since midnight or system reset
TRON/TROFF trace execution of a program
UNLOCK
USR call an assembly language program
VAL(a$) return numeric value of a string. VAL( -3) returns a neg 3
VARPTR(variable name) memory address of variable
VARPTR$
VIEW[[SCREEN][(x1-y1)-(x2-y2)[,[fill][,border]]]]
WAIT 32,2 suspend operation until port 32 gets a 2 as input
WHILE-WEND WHILE A<=100: do stuff :WEND
WIDTH 80 set line width
WINDOW(x1,y1)-(x2,y2) draws windows
WRITE A,B,C$
WRITE# write data to a sequential file
GWCOM.zip - download this page in zip form