I mentioned in the last issue that Maurice had done some work on a Japanese
Version of Hu BASIC for the 700 and that there
was still some work to be done on the graphics etc. Well thanks to Geoff
Cox of London, we have the proper British / European version, the one
that Kuma used to retail. Geoff also sent me a copy of the list of keywords
and commands for the BASIC and I have listed them below.
Commands and syntax similar to Sharp S-BASIC.
LIMIT, NEW, AUTO, LIST, RUN, CONT, DELETE, RENUM, TRON, TROFF, LOAD,
SAVE, VERIFY, MERGE, LET, PRINT, USING, INPUT, CLR, DIM, GOTO, GOSUB,
RETURN, IF...THEN, FOR...TO, NEXT, ON, STOP, END, REM, READ, DATA, RESTORE,
DEF FN, POKE, OUT, ON ERROR GOTO, RESUME, ERROR, CONSOLE, CURSOR, COLOR,
CLS, KEY/DEF KEY, KEYLIST, MID$, BOOT, MUSIC, TEMPO, SIN, COS, TAN,
ATN, ABS, SGN, INT, SQR, EXP, LOG, PAI, RAD, RND, ASC, CHR$, VAL, STR$,
HEX$, LEFT$, RIGHT$, LEN, PEEK, USR and ERL.
Additional commands, some of which can be found in Sharp DBASICs.
CLEAR
|
Clears and partitions memory. |
NEWON |
Restores machine to power on" status. |
LLIST |
Similar to LIST/P |
EDIT
|
Brings a program line to view for editing. |
SEARCH |
Searches for a string within a program. |
LOADM |
Loads machine code into memory for use by BASIC. |
SAVEM |
Saves machine code to tape. |
DEFtype |
Assigns numeric or string types to groups of variables. |
LPRINT |
Similar to PRINT/P |
WRITE |
Prints data on the screen using quotes and commas. |
LINPUT |
Stops program and awaits a complex string of data from the keyboard. |
OPTION BASE |
Sets the lowest subscript of arrays to 0 or 1. |
LABEL
|
Assigns an identifying label to a point in a program. |
REPEAT |
Initiates a loop concluded by an UNTIL statement. |
UNTIL |
Ends a REPEAT loop and defines the conditions for its termination. |
WHILE/WEND |
Similar to above. |
SWAP |
Swaps the values of two variables. |
DEF USR |
Defines a user-defined machine code subroutine. |
CALL
|
Calls a machine code subroutine. |
OUT |
Sends a byte of data to a specified output port. |
OPEN |
Opens an input/output buffer. |
CLOSE |
Closes an input/output buffer. |
PRINT# |
Writes data to a sequential file. |
WRITE# |
As above, but with use of commas and quotes. |
INPUT# |
Reads sequential file. |
LINPUT# |
Reads a complex data string from sequential file. |
ERROR |
Simulates an error condition. |
LOCATE
|
Similar to CURSOR. |
CREV |
Prints characters in reverse image. |
CFLASH |
Prints blinking characters. |
CSIZE |
Creates oversized characters. |
DEF CHR$ |
Creates a user-defined character. |
WINDOW |
Relates logical graphics coordinates and absolute screen coordinates. |
POKE@ |
Puts a byte of data into video RAM. |
OPTION SCREEN |
Switches graphics memory to use as ordinary read/write memory. |
KEYO |
Simulates the input of data from the keyboard. |
REPEAT ON/OFF |
Turns on/off the character repeat feature of keys held down. |
CLICK ON/OFF |
Turns on/off a click sound when typing. |
MEM$ |
Writes or returns a string to a specified memory location. |
MON |
Jump to RAM monitor. |
PAUSE
|
Pauses program for a specified period. |
WAIT |
Awaits a specified byte of data at an input port. |
TIME$ |
Similar to TI$. |
DAY$ |
Sets the day of the week. |
DATE$ |
Sets the day, month and year. |
TIME |
Sets the program execution timer to zero. |
BEEP |
Similar to USR(62). |
PLAY
|
Performs the function of both MUSIC and TEMPO statements. |
FIX |
Truncates decimal numbers, making them integer. |
FRAC |
Returns decimal portion of a number. |
CINT/CSNG/COBL |
Convert numbers to integer, single-precision, and double-precision
type, respectively. |
FAC |
Returns a factorial of a number. |
OCT$ |
Converts a number to octal form. |
BIN$ |
Converts a number to binary form. |
STRING$ |
Returns a string of a specified length made of a single character. |
SPACE$ |
Returns a string of blanks. |
INSTR |
Reports the position of a substring within a string. |
HEXCHR$
|
Returns a hexadecimal representation of a character string. |
PEEK@ |
Reads the contents of a specified location in video memory. |
POS |
Reports the horizontal position of the cursor. |
LPOS |
Reports the position of the printer head. |
FRE |
Similar to SIZE. |
POINT |
Reports the pallet code of a dot on the screen. |
SCRN$ |
Returns a string of specified length taken from the video display. |
CHARACTER$ |
Returns the character from a specified position. |
INKEY$ |
Similar to GET A$. |
CSRLIN |
Reports the vertical position of the cursor. |
DTL |
Reports line number of the currently read DATA statement. |
ERR |
Similar to ERN. |
There are also a few other undocumented commands which I have found
whilst entering Block Land and other programs, some are
reserved features and others are not implemented. Others probably would
work if I knew the syntax. A list of these are below.
AND, OR, NOT, KLIST, DEVI$, DEVO$, SPEED, ERASE, FILE, LFILE, DEVICE,
NAME, JOY, KILL, LSET, RSET, INIT, VDI, MAXFILE, CGEN, MKI$, MKS$, MKD$,
RANDOMIZE and additional aspects to commands such as BEEP 1 which gives
a continous tone until BEEP 0 is entered. There was no mention of a
sound poke in either the stuff Geoff sent me or Software Manual 1, so
I decided to find it. It is similar to S-BASIC in the respect of poking
a location and then using another address to switch it on/off. POKE
3197,n :CALL(3109) is the syntax to turn it on ( n=0 to 255 ).To switch
the sound off, CALL(3136). Another nice touch is the use of either upper
or lowercase to enter commands.
In conclusion - Hu BASIC 700B is a super tape-based language to use,
I suspect, given some of the reserved features above that it has been
taken from a disk based version; the free space of only 28k tends to
back this up. If there were a full disk version, I would use no other.
When you request this BASIC please remember that Maurice and others
did a lot of work converting the MZ-80K version to the 700 and that
full documentation for that version also relates to the new version
and can be found in SOFTWARE MANUAL No. 1.
|