308 lines
15 KiB
Plaintext
308 lines
15 KiB
Plaintext
|
ZBasic Version 4.02 - December 7, 1987
|
|||
|
|
|||
|
This file contains items of interest that didn't make it into the manual.
|
|||
|
Anything not specified in the manual, or changed since the manual has been
|
|||
|
printed, can be found in this file.
|
|||
|
|
|||
|
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
|
|||
|
|
|||
|
The HERC.COM (and it's batch file loader, ZHERC.BAT) are only required if you
|
|||
|
wish to intermix text and graphics on the Hercules graphics screen. If you
|
|||
|
are only producing graphics, these files are not required. Just remember
|
|||
|
that the HERC.COM driver is a software emulation of text on the graphics
|
|||
|
screen. It works by actually drawing the characters on the screen from a
|
|||
|
predefined software font. Therefore, there is a great speed difference
|
|||
|
between text in MODE 2 and MODE 20.
|
|||
|
|
|||
|
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
|
|||
|
|
|||
|
There are a couple of additional sample programs included on the disk which
|
|||
|
are not mentioned in the program. One of them deserves mention here. The
|
|||
|
ZCALC.BAS file contains the ZBasic source code to produce a spreadsheet with
|
|||
|
a very familiar command structure. Try it out! If you don't like it, modify
|
|||
|
it until you do!
|
|||
|
|
|||
|
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
|
|||
|
|
|||
|
The method used to store null (blank) lines in the tokenized source program
|
|||
|
has been changed, since the full screen editor would go totally FUNGUS
|
|||
|
(Fouled-Up, No Good, and generally UnSatisfactory) with the old way. Version
|
|||
|
4.00 stored null lines as a single null byte within the tokenized program.
|
|||
|
Version 4.02 and later stores null lines in the same format as the other
|
|||
|
tokenized lines. The full screen editor is much happier now. This does
|
|||
|
cause a problem with the programs that you've saved using version 4.0,
|
|||
|
though. If the program was saved in tokenized format (using the SAVE
|
|||
|
command), and it contained null lines, then that program will have to be
|
|||
|
converted to the new tokenized format. There are two methods for doing
|
|||
|
this. First method: Use version 4.00 to save the program in ASCII format
|
|||
|
(using SAVE*), and then reload it into version 4.02. Second method: Use the
|
|||
|
supplied conversion program which will translate any null lines into the new
|
|||
|
format. The name of this program is "nullfix.bas", and can be found on this
|
|||
|
distribution diskette. Run this program as you would any other ZBasic
|
|||
|
program. Any old tokenized programs that do not contain null lines will not
|
|||
|
cause any problems, and can be loaded normally.
|
|||
|
|
|||
|
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
|
|||
|
|
|||
|
Many people requested a way to change the colors of the screen in the line
|
|||
|
and screen editors. There is an additional file on the diskette titled
|
|||
|
"PATCHTBL.TXT" which lists the addresses within ZBasic which can be changed
|
|||
|
to customize the screen colors. Simply use the Patch option on the ZBasic
|
|||
|
startup screen to change the various attribute bytes. If you wish to save
|
|||
|
the changes that you've made, select Save from the same menu.
|
|||
|
|
|||
|
In addition, the program "CONFIG.BAS" will allow you interactively alter the
|
|||
|
colors used in the line and screen editor. Simply load the program into
|
|||
|
ZBasic, and then RUN it. It will first ask you to specify the pathname of
|
|||
|
the ZBASIC.COM file that you wish to alter. Next, you will be presented with
|
|||
|
the main menu. Use the keypad arrow keys to move the cursor to the menu item
|
|||
|
that you want, then press either the RETURN key or the space bar. This same
|
|||
|
method is used to change the various colors within the submenus. When done,
|
|||
|
select the SAVE option to save the changes in your ZBasic file on disk, or
|
|||
|
select ABANDON to discard the changes.
|
|||
|
|
|||
|
This program is supplied in source code format so that you can modify it to
|
|||
|
your own liking. Feel free to use the programming techniques in your own
|
|||
|
programs.
|
|||
|
|
|||
|
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
|
|||
|
|
|||
|
To maintain compatibility with our other machine versions, the LIST command
|
|||
|
has reverted back to a normal screen display (no more highlighted tokens).
|
|||
|
LIST* still will highlight the tokens for you though. F1 in the line editor
|
|||
|
has been pre-defined as LIST* so that you can use it if you prefer the
|
|||
|
highlighted tokens. If that`s still not good enough, you can patch the
|
|||
|
location LISTFLG to 2ah to default to token highlighting. See the file
|
|||
|
"PATCHTBL.TXT" for the current address of LISTFLG.
|
|||
|
|
|||
|
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
|
|||
|
|
|||
|
A couple of additions have been added to the KEY command in the line editor.
|
|||
|
Typing KEY without any parameters will toggle the current display state of
|
|||
|
the function key prompt at the bottom of the screen. (turning it off if it
|
|||
|
was on, and visa-versa).
|
|||
|
|
|||
|
The second new addition has the following syntax:
|
|||
|
|
|||
|
KEY x {,|=} ["]command["]
|
|||
|
|
|||
|
This will allow you to customize the actions of the function keys in the line
|
|||
|
editor. For example, if you seldom use the CONFIG command, but frequently
|
|||
|
use the RENUM command, you can use the following statement to change the
|
|||
|
definition of the F7 key:
|
|||
|
|
|||
|
KEY 7 = RENUM
|
|||
|
|
|||
|
The symbol represents a carriage return at the end of the command. It is
|
|||
|
entered into the command string by pressing the ESC key. The editor will
|
|||
|
translate it appropriately. The "command" can be optionally surrounded by
|
|||
|
quotes, and must be a valid line editor command. It can be no longer than 15
|
|||
|
characters. You can not use a string variable (as with some other BASIC's),
|
|||
|
since this is not a program statement. This is ONLY a line editor command.
|
|||
|
|
|||
|
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
|
|||
|
|
|||
|
If you happen to get to the LOAD prompt by mistake (for example, if you press
|
|||
|
F1 in the screen editor instead of Alt-F1), you can press CTRL-C to exit the
|
|||
|
prompt and then try again. Same goes for the SAVE prompt.
|
|||
|
|
|||
|
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
|
|||
|
|
|||
|
Many people have asked for a way to change the color of the text produced on
|
|||
|
the EGA graphics screens. The COLOR statement can't be used, since it
|
|||
|
affects the graphics colors while in graphics modes, and the MODE statement
|
|||
|
resets the default character attribute to 7 whenever you change into a
|
|||
|
graphics mode. The solution is to sidestep the system by POKEing into the
|
|||
|
ZBasic data area. The character color attribute is stored at 033Bh in the
|
|||
|
data segment. To change the attribute so that any characters will be printed
|
|||
|
in blue (attribute = 1), use the following statement:
|
|||
|
|
|||
|
POKE &33B, 1
|
|||
|
|
|||
|
Any attribute value from 0 to 255 can be used, and follows the attribute
|
|||
|
rules as outlined on page A-37, table 2, of the ZBasic reference manual.
|
|||
|
|
|||
|
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
|
|||
|
|
|||
|
As stated in the manual, the CALL statement (pg. A-31), and the DEF USR
|
|||
|
statement (pg. A-47) allow a segment specifier in addition to the address.
|
|||
|
This way, the machine language routine can be anywhere in memory. The
|
|||
|
segment specifier is optional, and I just wanted to clarify what happens with
|
|||
|
and without the segment value.
|
|||
|
|
|||
|
If you use the statement
|
|||
|
|
|||
|
CALL LINE 100
|
|||
|
or
|
|||
|
DEF USR 0 = LINE 100
|
|||
|
|
|||
|
the compiler will generate the necessary code to perform a NEAR call (which
|
|||
|
means that it must be within the current code segment). Therefore, your
|
|||
|
subroutine must end with a NEAR RET (MACHLG &C3). If, on the other hand, one
|
|||
|
of the following statements is used
|
|||
|
|
|||
|
CALL LINE 100, MEMC
|
|||
|
or
|
|||
|
DEF USR 0 = LINE 100, MEMC
|
|||
|
|
|||
|
then the compiler will generate a FAR call, and the subroutine MUST terminate
|
|||
|
with a FAR RET (MACHLG &CB). These two examples would effectively accomplish
|
|||
|
the same thing, except that the second examples would take a little longer to
|
|||
|
execute.
|
|||
|
|
|||
|
One way to keep this all straight is this: if you are CALLing a MACHLG line
|
|||
|
that is located somewhere within your ZBasic program, don't specify the
|
|||
|
segment. The compiler will automatically assume that it is in the code
|
|||
|
segment. If, on the other hand, you DIMension a dummy array, and then BLOAD
|
|||
|
a machine language subroutine into that area of memory, then use the segment
|
|||
|
specifier whenever you access that subroutine (and make sure that it
|
|||
|
terminates with a FAR RET).
|
|||
|
|
|||
|
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
|
|||
|
|
|||
|
The EOF function behaves differently, depending on how you are accessing the
|
|||
|
file. If you are using INPUT# or LINE INPUT#, then the EOF function will
|
|||
|
return true (-1) if an end-of-file mark (1Ah) is encountered in the file. If
|
|||
|
you are using the READ# statement to retrive data from the file, then the
|
|||
|
function will not return true until the physical end-of-file is reached (i.e.
|
|||
|
when MS-DOS returns an EOF error). Keep in mind that MS-DOS does not know
|
|||
|
what your program's record length is. Therefore, it's physical end-of-file
|
|||
|
error will occur when it has reached the end of the last allocated sector of
|
|||
|
your file (which will probably be past the actual end of your file).
|
|||
|
|
|||
|
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
|
|||
|
|
|||
|
If you prefer to have the full screen editor default to insert mode (as
|
|||
|
opposed to overwrite mode, as shipped), simply patch the INSRTFLG location
|
|||
|
from 82H to 02H. Instructions for using the patch command can be found on
|
|||
|
page B-15 of your ZBasic manual. The current address of INSRTFLG can be
|
|||
|
found in the PATCHTBL.TXT file included on your master disk.
|
|||
|
|
|||
|
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
|
|||
|
|
|||
|
We have discovered that ZBasic will run just fine within a Microsoft (R)
|
|||
|
Windows window, as long as you follow a few simple rules. First, make sure
|
|||
|
that your ZBasic is configured to be NOT IBM text compatible. This way,
|
|||
|
Windows can intercept any text output and convert it to the necessary
|
|||
|
graphical representation of the characters. Also, make sure that you don't
|
|||
|
try to do any graphics while Windows is active. It won't hurt anything, but
|
|||
|
it won't accomplish anything either (the graphics are invisible).
|
|||
|
|
|||
|
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
|
|||
|
|
|||
|
The TIMER function now returns the number of seconds since midnight down to
|
|||
|
the nearest hundredth of a second. This matches BASICA's function.
|
|||
|
|
|||
|
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
|
|||
|
|
|||
|
There have been numerous reports of little inconsistencies in the fourth
|
|||
|
edition manual, so get your pen ready and follow along while I make
|
|||
|
corrections.
|
|||
|
|
|||
|
Pg 77-
|
|||
|
Line 9 of the "QUICK SORT" subroutine has a typographical error. The
|
|||
|
variable 'R1' in the second statement should be 'RI'.
|
|||
|
|
|||
|
Pg 108, 111, 112, 117, 118-
|
|||
|
The variable NAME$ contains an MS-DOS version reserved word. Change the
|
|||
|
variable to NM$.
|
|||
|
|
|||
|
Pg 168-
|
|||
|
The list of reserved words on the page pertain to the standard version
|
|||
|
of the language. Due to the many enhancements made to the MS-DOS version,
|
|||
|
the following are also reserved words for this version only. Page number
|
|||
|
following the reserved word shows which page the word is referenced on.
|
|||
|
|
|||
|
' - 316 ARR - A58 AS - 278 BCD - A58 BEEP - 178
|
|||
|
BLOAD - A29 BSAVE - A30 CARDTYPE - A33 CASE - 183 CHDIR - A34
|
|||
|
CINT - A35 COM - A40,A66 COMBUFF - A38 COMMAND$ - A41 COMMON - 192
|
|||
|
COORDINATE - 195 CSRLIN - 197 EOF - 220 FCB -
|
|||
|
FILES - A50 FRE - A52 GET - 232 IS - KEY -
|
|||
|
MKDIR - A60 NAME - 278 OFF - A40 PAINT - A72 PALETTE - A73
|
|||
|
PATH$ - A74 PRESET - 306 PSET - 306 PUT - 306 RANDOMIZE - 309
|
|||
|
RESET - 319 RMDIR - A79 SCREEN - A80,A81 SEG - A58
|
|||
|
SELECT - 328 SHELL - A82 STR - A58 SYSTEM - 339 TFORMAT - A83
|
|||
|
TIMER - A85 VARSEG - A91 VIEW - A92 WAIT - A93 WINDOW - 195
|
|||
|
|
|||
|
Pg 172-
|
|||
|
The example run erroneously shows comma's between the printed numbers.
|
|||
|
Those commas would not be printed by the example program.
|
|||
|
|
|||
|
Pg 201-
|
|||
|
DATE$ function: In the remarks section, mention is made that the MSDOS
|
|||
|
version can set the date from within a program. The example given is
|
|||
|
incorrect (the slashes aren`t allowed in the string). See page A-42 for the
|
|||
|
correct syntax.
|
|||
|
|
|||
|
Pg 232-
|
|||
|
The formula for calculating the memory requirements for the GET
|
|||
|
statement has an extra ")" character at the end.
|
|||
|
|
|||
|
Pg 255, 256-
|
|||
|
The LINE INPUT statement is actually two words. The manual incorrectly
|
|||
|
shows the command as one word, and the system will not parse the words as
|
|||
|
keywords if SPACES BETWEEN KEYWORDS is selected in the configuration.
|
|||
|
|
|||
|
Pg 263-
|
|||
|
The second word in the second line of DEFINITION should be "useful".
|
|||
|
|
|||
|
Pg 327-
|
|||
|
The description for SAVE+ says to be sure that your program doesn't use
|
|||
|
label references. This is exactly opposite from what it should say. Since
|
|||
|
this command does not save the line numbers with the text of the program, the
|
|||
|
program SHOULD use label references so that it will still run correctly when
|
|||
|
reloaded.
|
|||
|
|
|||
|
Pg A-20-
|
|||
|
The entry and exit parameters for address &118 are incorrect. On entry,
|
|||
|
ES:SI should point to the destination string. On exit, ES:SI will point to
|
|||
|
the standard ZBasic string.
|
|||
|
|
|||
|
Pg A-38-
|
|||
|
The printed syntax shows that the command is made up of two words. This
|
|||
|
is incorrect. It should read:
|
|||
|
|
|||
|
COMBUFF (port)
|
|||
|
|
|||
|
Pg A-61-
|
|||
|
In the description for MODE 20, the address and size of the Hercules
|
|||
|
graphics buffer is incorrect. Page 0 starts at &HB000 and is 32K bytes long.
|
|||
|
Page 1 starts at &HB800 and is also 32K bytes long. Also, reference is made
|
|||
|
to a HERC.BIN file on the diskette. This should read HERC.COM.
|
|||
|
|
|||
|
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
|
|||
|
|
|||
|
The MOUSE(1) and MOUSE(2) functions normally return values using the
|
|||
|
standard ZBasic coordinates of 1024 x 768. If your program uses a
|
|||
|
COORDINATE statement to alter the screen coordinate system, the mouse
|
|||
|
functions will return values to match your new coordinate system.
|
|||
|
|
|||
|
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
|
|||
|
|
|||
|
For the mouse to operate properly on the Hercules Graphics Screen, your
|
|||
|
program must perform it's MODE 20 statement prior to initializing the mouse
|
|||
|
with the MOUSE(0) function.
|
|||
|
|
|||
|
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
|
|||
|
|
|||
|
We have included a ZBasic cross-reference program on this master disk. It
|
|||
|
can be found in the XREF subdirectory. Documentation is included in the same
|
|||
|
subdirectory.
|
|||
|
|
|||
|
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
|
|||
|
|
|||
|
We want to make this the best BASIC available on MS-DOS computers. We can't
|
|||
|
do that without your feedback, though. If you have any comments,
|
|||
|
suggestions, complaints, etc, please write us a letter and let us know your
|
|||
|
thoughts. Try to be as specific as possible when suggesting something, or
|
|||
|
complaining about something. We can't implement a suggestion, or fix a
|
|||
|
complaint, unless we know exactly what you're talking about.
|
|||
|
|
|||
|
And lastly, thank you for purchasing ZBasic. We sincerely hope that we can
|
|||
|
have a long and fruitful relationship!
|
|||
|
|
|||
|
Zedcor, Inc.
|
|||
|
4500 E. Speedway, Suite 22
|
|||
|
Tucson, AZ 85712
|
|||
|
|
|||
|
|