>>software. Those machines even booted up
>>with a simplified version of BASIC when you flipped up the ON
>>switch. And from the beginning of the PC, up until the
>>introduction of Windows 95, you always got a version of the
>>BASIC programming language packaged with the operating system. Even
>>through
>>the choir of complaints about Windows 95 when it
>>first came out, I never heard anyone else mention the absence of
>>BASIC. If
>>you bought a computer recently, did YOU notice that BASIC was missing?
.....
> Look again. I bet QBASIC is included with Win '95. It's in my NT 4.0
>installation; it's also part of OS/2. The same (Q)BASIC that's part of
>my DOS 5.0.
Thanks for the input. That article has been floating about for months
and you are the first and only person who called me on this. I did
check again for Qbasic. Still not there (except the directory where I
put it myself from my old machine) :-)
But it occurred to me that it may depend on the exact ship date,
version, and vendor package with the Win '95 package. However, when
all else fails I post a message to alt.folklore.computer to see if any
of those geniuses know if Windows 95 ever included any flavor of BASIC.
Regards,
Tom
BTW, that article was originally published in oNline Christian eMagazine
and later printed in Computer Underground Digest. If you have any
interest in a free subscription to the former publication, you can send
email to sle...@k-line.org (all lower case) with the subject SUBSCRIBE
EMAG.
This article was posted from <A HREF="http://www.slurp.net/">Slurp Net</A>.
>But it occurred to me that it may depend on the exact ship date,
>version, and vendor package with the Win '95 package. However, when
>all else fails I post a message to alt.folklore.computer to see if any
>of those geniuses know if Windows 95 ever included any flavor of BASIC.
If you have the Windows 95 CD-ROM, you will find a directory on it
labeled OLDMSDOS that contains MS-DOS 6.22 versions of utilities
including QBASIC and an install script. If your vendor omits the
CD-ROM from his package then shame on him.
>Thanks for the input. That article has been floating about for months
>and you are the first and only person who called me on this. I did
>check again for Qbasic. Still not there (except the directory where I
>put it myself from my old machine) :-)
QBasic is on my win95 osr2 CD, in /other/oldmsdos. This is a "new PC"
win95/plus(!) disc packaged with a Micron box. AFAIK it's not part of
any normal install, you have to go find it by hand if you want it.
Not that it matters to me anymore. I learned Quick Basic, which was
back when GWBasic was still contemporary...QBasic is a step backwards,
although I find all PC-esque BASICs a poor substitute for a good C
compiler these days (or a bad C compiler, for that matter).
-Scott
-Scott
> I learned Quick Basic, which was
>back when GWBasic was still contemporary...QBasic is a step backwards,
Yes, QBasic is a very underpowered subset of the Quick Basic language.
Unless one practiced a little discipline the result could be pure
spaghetti , but it sure was easy to code. I admit that I am still
using some of the programs I wrote in those days even now, and if I
want to make some changes I'll probably fire up Quick Basic and do a
fast edit and compile rather than a translation.
Don't even mention GWBasic; it was evil incarnate. If you have never
sat through 10 minutes of garbage collection you can have something to
be thankful for in this life.
Bob
Bob skrev i meddelandet <349ce2ec....@news.ma.ultranet.com>...
>Don't even mention GWBasic; it was evil incarnate. If you have never
>sat through 10 minutes of garbage collection you can have something to
>be thankful for in this life.
Huh? Did GWBasic have non-trivial GC? I used it a bit on an old computer
but it never froze like if it was GCing. Hmmm...maybe it doesn't get that
bad with only 640kb RAM, or maybe I just thought it had crashed and reset
the dang thing.
Or did you mean collecting garbage in the spagetti code?
>
>Bob
>Huh? Did GWBasic have non-trivial GC? I used it a bit on an old computer
>but it never froze like if it was GCing. Hmmm...maybe it doesn't get that
>bad with only 640kb RAM, or maybe I just thought it had crashed and reset
>the dang thing.
>
>Or did you mean collecting garbage in the spagetti code?
Microsoft 8080 BASIC would think to itself every once in a while,
sometimes for a very long time, as it did garbage collection on string
space. I think the 8086 version had a different garbage collection
scheme because I don't recall it ever doing the same thing. In any
case, I remember GW-BASIC only using 64K for programs and 64K for
variables.
From somewhere in the back of my mind, X=FRE("") buried somewhere in the
idle loop of interactive programs comes to mind.
pete
--
Pete Fenelon, 3 Beckside Gardens, Melrosegate, York, YO1 3TX.
pete.f...@zetnet.co.uk http://www.users.zetnet.co.uk/petef
>From somewhere in the back of my mind, X=FRE("") buried somewhere in the
>idle loop of interactive programs comes to mind.
You hit the nail right on the head there Pete. I used that command to
display the free space remaining as I stepped through my program to
figure out what was going on. I had included a primative word
processor and as each letter was added to a string it would abandon
the entire length of the old string so that the available bytes shrank
at an ever increasing rate. When it reached 640K it sat back and
quite slowly went about reclaiming the space, taking enough time for a
short nap. Was I using an AT or an XT at the time? Too many years
ago to remember.
I'm not quite sure which of the other posters is right but I think
that GWBasic gave you 640K for the program and the data. A bit more
generous than my first computer, a TI99 with 8K for program and 8K for
variables, but still a little tight if you were trying to do anything
significant. Quick Basic has the 640K limitation for each parcel but
you can divide the sucker into as many modules as you want and link
them together to form one mother of a program.
Bob
Bob
Hold on...was it GW-Basic or MS Basic? The true blue PCs had basic in the
roms, but I thought gw-basic (as opposed to straight basic) was the romless
version that was disk only that MS came up for the clones. Am I wrong?
--
Matthew Crosby cro...@cs.colorado.edu
Disclaimer: It was in another country, and besides, the wench is dead.
Wasn't it 1Mb, with the top of ram being limited by where the BIOS
started searching for adaptor ROM's?
I seem to recall that an apricot PC-alike 286/16 ran some software
significantly faster than my 386/20 PC, solely because it could
use 720K of RAM. nethack, IIRC 3+ (it's been a while, probably
got the version number wrong.)
You know you've been playing nethack too long when you get bored
with your pet demon (sigh, forgotten the name, it gets 6 attacks)
wielding stormbringer, speeded up, after you drag your kitten over
a poly trap :)
: for programs and variables to play around in. Sometimes the fingers
: work faster than the brain, and 25 year old single-malt scotch adds a
: little to the confusion.
: Bob
--
Ian Stirling. Designing a linux PDA, see http://www.mauve.demon.co.uk/
----- ******* If replying by email, check notices in header ******* -----
Among a man's many good possessions, A good command of speech has no equal.
Bob <bo...@ma.ultranet.com> wrote in article
<349ce2ec....@news.ma.ultranet.com>...
> s...@xmission.removethis.com (Scott Brown) wrote:
>
> > I learned Quick Basic, which was
> >back when GWBasic was still contemporary...QBasic is a step backwards,
>
> Yes, QBasic is a very underpowered subset of the Quick Basic language.
The following QuickBasic keywords are not supported in QBasic:
ALIAS EVENT LOCAL SETMEM
BYVAL $INCLUDE SADD SIGNAL
CDECL Int86 Interrupt UEVENT
COMMAND$ Int86X InterruptX
Seems to be a reasonably complete implementation to me.
Andy.
Bob,
I understand...I <hick> have <up> the zame <ugghhhh> problem!!!!
Merry Christmas All!
>>maybe wrong, but I distinctly remember seeing GW-Basic running, swiftly, on
>>a PC with 16k ram. I saw it at a local computer store when they first came
>>out. It had a cassette drive connected to it. The disk version may have
>>allowed for more (disk buffer, I would think) but the ROM version
only
>>allowed 64k total. BTW, I think IBM pc's today still ship with Basic
in ROM
>>(that, tho, may have ended when the Microsoft-IBM licensing
arrangement
>>ended...)
The IBM PC had a version of BASIC in ROM. This cassette-only BASIC
would run on small memory machines. Only the first ones had the
cassette port, BTW. BASICA and GWBASIC were disk-based and essentially
twins. The BASIC & BASICA versions were for IBM (at first because my
Tandy 1100FD came with MSDOS v3.3 in ROM and BASIC/BASICA on disk) and
GW was for everyone else. At least in the beginning, there weren't any
performance differences in the two except that I think the IBM BASICA
looked for the ROM and wouldn't run on a clone. I might not remember
that correctly.
The 64K issue is easy to explain -- that's the size of a segment in the
Intel 8088/86 memory scheme. BASIC was limited to 64K because back then
(1) everyone thought 64K was a ton of memory [still is depending on
your task and if you know what you are doing] and (2) a 64K limit meant
that a bunch of multiple segment management was not necessary.
64K of code was a whopper of a BASICA program. Most people didn't write
them that big since they got hairy to troubleshoot by that size. The
data space was the usual way to run low on memory. Big arrays ate up
space quickly.
I still enjoy a romp in the BASIC occasionally. I must be getting old
:)
The MS implementation of N82 BASIC for my NEC PC8201A (8085 CPU) and
the Tandy TRS80 Model 100 MS BASIC implentations (two different BASICs
though they share a lot of similarities) don't seem to do the "sit and
think". Maybe MS cleaned up the design by 1984/85. I suspect that these
implementations may have been the last offical pass through the 8080
code or a rewrite given the unusual nature of these laptops. Anyone
know?
True blue IBM-PCs had, IIRC, something innocently
called "BASIC" in ROM... or possibly C-BASIC, where
the C stood for "cassette". No DOS, no discs, right?
You could activate it by calling INT 18h or something.
BASICA was IBM's extension to the ROM BASIC under
DOS; it had disc support, but would only run on
IBM machines because it made use of the BASIC routines
in the system's ROM.
GW-BASIC was Microsoft's "non-proprietary" <wince>
answer to the above. And though it has been MANY
years since I've used it, I believe that it was limited
to 64K of RAM for everything: code, data, stack.
[While I'm at it, does ANYONE know what the hell
the "MOTOR" keyword did? GW-BASIC accepted it,
but as far as I could tell, it didn't do anything.]
QBasic shipped with DOS 5.0 and could access 160K
(!) of code, data, and stack. It was CONSIDERABLY
faster than GW.
QuickBASIC [which RULES, BTW], could make use of
the full 640K of RAM, though each module could
only contain 64K of code--so large programs were
invariably broken down into multiple .BAS files.
I don't remember exactly how it handled data, though
the /AH command-line parameter told the interpreter
and the compiler to stick arrays [of any type except
variable-length strings] into "high" memory; here,
high memory was anything outside of the current
data segment. ;) [Hey, this was a development
system that would compile 5,000 lines/minute on my
286! :) ] This applied only to arrays, though;
simple types were stored in DS.
The MS BASIC PDS 7.x on the other hand, allowed
far data; I never used it though, so I don't
recall if it could make general use of E/XMS or
anything like that.
I've since graduated to VC++ and I haven't
actually used any of the above systems in YEARS,
so don't take what I say as gospel. :)
Seasons Greetings!
--Mike. :)
Nah, I remember running BASICA on an Ericsson "portable" PC clone. It was
great, it didn't even do 80-colun mode! ;-/
--
Kirk Israel - kis...@cs.tufts.edu - http://www.alienbill.com
"The only intuitive user interface is a nipple"
I'm pretty sure it was at least supposed to generate Int 15h functions
0 (Cassette Motor On) and 1 (Cassette Motor Off). According to my source
these functions were supported on PcJr, PC, and Phoenix PC Bios only.
--
Jim DeVries
<jdev...@gate.net>
'65 Monza - '94 Saturn SL2
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
"If all mankind minus one, were of one opinion, and only one person were
of a contrary opinion, mankind would be no more justified in silencing
that one person, than he, if he had the power, would be justified in
silencing mankind."
John Stuart Mill, from 'On Liberty'
> [While I'm at it, does ANYONE know what the hell
> the "MOTOR" keyword did? GW-BASIC accepted it,
I have come across a reference to a machine on which it controlled a
relay which could be used to start an external cassette drive. The
relay contacts were connected to the PAUSE socket (usually 2.5mm jack)
on the cassette deck.
--
I am Robert Billing, Christian, inventor, traveller, cook and animal
lover, I live near 0:46W 51:22N. http://www.tnglwood.demon.co.uk/
"Bother," said Pooh, "Eeyore, ready two photon torpedoes and lock
phasers on the Heffalump, Piglet, meet me in transporter room three"
>Huh? Did GWBasic have non-trivial GC? I used it a bit on an old computer
>but it never froze like if it was GCing. Hmmm...maybe it doesn't get that
>bad with only 640kb RAM, or maybe I just thought it had crashed and reset
>the dang thing.
Yes, GW-Basic (or BASICA) did indeed have non-trivial garbage collection.
This applied, however, only to string variables. All variables in a BASIC
program are global and persistent, so garbage collection is only required
for strings because their _length_ can change. If a program does a lot of
string manipulation, then it indeed will freeze for GC, but not every
program will get to the point that this will happen.
John Savard
>The IBM PC had a version of BASIC in ROM. This cassette-only BASIC would run
>on small memory machines. Only the first ones had the cassette port, BTW.
I've still got the diagnostic boot cassette for my first IBM PC (and the tech
manual with the schematics). I have never had occasion to use either one, but
you never know.
>GW-BASIC was Microsoft's "non-proprietary" <wince> answer to the above. And
>though it has been MANY years since I've used it, I believe that it was
>limited to 64K of RAM for everything: code, data, stack. [While I'm at it,
>does ANYONE know what the hell the "MOTOR" keyword did? GW-BASIC accepted
>it, but as far as I could tell, it didn't do anything.]
It starts the cassette drive.
the model100/nec/olivetti, like many other 8 bit machines (trs80, pet,
appleII+) used version 2 of MS Basic-80. GW (Gee-Whiz!) Basic was pretty
much version 5 of Basic-80.
Basic 80 came in three forms: base, extended, and disk. The basic on
the original pc was base, while basicA was the disk version. Generally,
disk basic used what was already available in ROM.
rick
--
R E HAWKINS
rhaw...@iastate.edu
These opinions will not be those of ISU until they pay my retainer.
>On Sun, 21 Dec 1997 12:09:13 +0100, "Alexander Bostrom"
><d96...@R-U-HUMAN.nada.kth.se> wrote:
>
>>Huh? Did GWBasic have non-trivial GC? I used it a bit on an old
>>computerbut it never froze like if it was GCing. Hmmm...maybe it
>>doesn't get that bad with only 640kb RAM, or maybe I just thought
>>it had crashed and reset the dang thing.
>
>Yes, GW-Basic (or BASICA) did indeed have non-trivial garbage
>collection. This applied, however, only to string variables.
>All variables in a BASIC program are global and persistent, so
>garbage collection is only required for strings because their
>_length_ can change. If a program does a lot of string manipulation,
>then it indeed will freeze for GC, but not every program will get
>to the point that this will happen.
I encountered this one time in MBASIC-80 on my IMSAI, when I wrote
a sort program. I thought my program had gone into an endless loop
until I fiddled with things like TRON and discovered the awful truth.
I still keep a copy of GW-BASIC around, and use it whenever I need
a quick one-shot program. It's much simpler to use than QuirkBASIC;
Microsoft hadn't started putting all sorts of temperamental "features"
into it yet. We have a lot of customer sites that we dial into with
PC-Anywhere. GW-BASIC works just fine in such a situation. This
is more than you can say for QuirkBASIC; you can't do things like
saving or exiting without using those damned menus, and for some
reason PC-Anywhere can't handle them, so you're screwed until you
get someone on the other end to complete the menu entry for you
(or you re-boot the machine, which PC-Anywhere _can_ do - just pray
that PC-Anywhere is restarted by AUTOEXEC.BAT).
BTW for the fellow who asked what the GW in GW-BASIC stands for,
I heard it was "Gee Whiz".
--
cgi...@sky.bus.com (Charlie Gibbs)
Remove the first period after the "at" sign to reply.
>On Sun, 21 Dec 1997 12:09:13 +0100, "Alexander Bostrom"
><d96...@R-U-HUMAN.nada.kth.se> wrote:
>
>>Huh? Did GWBasic have non-trivial GC? I used it a bit on an old computer
>>but it never froze like if it was GCing. Hmmm...maybe it doesn't get that
>>bad with only 640kb RAM, or maybe I just thought it had crashed and reset
>>the dang thing.
>
>Yes, GW-Basic (or BASICA) did indeed have non-trivial garbage collection.
>This applied, however, only to string variables. All variables in a BASIC
>program are global and persistent, so garbage collection is only required
>for strings because their _length_ can change. If a program does a lot of
>string manipulation, then it indeed will freeze for GC, but not every
>program will get to the point that this will happen.
Not quite. Arrays can be deallocated as well. I think it was
the erase statement.
Sincerely,
Gene Wirchenko
C Pronunciation Guide:
y=x++; "wye equals ex plus plus semicolon"
x=x++; "ex equals ex doublecross semicolon"
>Why the "GW" in "GW-BASIC"?
Gee-Whiz. Honest. It referred to all those nifty graphics and sound
functions that Microsoft 8080 BASIC doesn't have, but Radio Shack
Color Computer BASIC and IBM BASIC have.
>Why the "GW" in "GW-BASIC"?
From what I've heard: "Gee Whiz!"
From: Microsoft GW-Basic Language Features for the iAPX 88/86
Level 1 GW-BASIC Statement Extensions/ MOTOR
1.14.0 The MOTOR Statement
Function:
The MOTOR statement turns the Cassette Motor on or off.
Format:
MOTOR [state]
WHERE:
state is a boolean value indicating On or Off.
Example:
MOTOR 1 Turn motor on.
MOTOR 0 Turn motor off.
MOTOR Turn motor back on (toggles mode).
There you go,
Steve
>
> From somewhere in the back of my mind, X=FRE("") buried somewhere in the
> idle loop of interactive programs comes to mind.
>
That would return the amount of free memory (in bytes) in the variable
X. BTW, there was also a garbage collection bug in the OSI version of
Microft's 6502 basic, and the challengers with BASIC in ROM would
often hang when running string-intensive programs.
--
David Fenyes University of Texas Medical School
da...@msrad71.med.uth.tmc.edu Dept. of Radiology
>In article <67r2qb$4jd$1...@news3.tufts.edu>,
>Kirk Is <kis...@allegro.cs.tufts.edu> wrote:
>
>>Why the "GW" in "GW-BASIC"?
>
>Someone already mentioned that it might stand for "Gee Whiz". Myself, I like
>the theory that it stands for "Gates, William". There may be some other
>explanation involving ROT-13.
I recall reading somewhere that it's for "Graphics and Windows" or
some such nonsense.
-Scott
> That would return the amount of free memory (in bytes) in the variable
> X. BTW, there was also a garbage collection bug in the OSI version of
> Microft's 6502 basic, and the challengers with BASIC in ROM would
> often hang when running string-intensive programs.
The point was that FRE also forced garbage collection so that
performing it regularly prevented the string space fragmentation
getting out of hand to the point that garbage collection took forever.
--
Nick Spalding
Back in the early 80's, I was running on a system that could boot
to CP/M or MS-DOS (Not IBM compatable). I had a choice of three
different Microsoft Basic's.
M-Basic
G-Basic
GW-Basic
M-Basic had no graphic functionality at all. G-Basic had some, but not
all of the features of GW-Basic, while GW-Basic was esentially the same
as distributed for IBM comptables.
This meant that Billy could sell a copy of GW-BASIC to the owner of the clone
because he could *not* use a pirated copy of BASICA. (Yeah, I know...he could
use a pirated copy of GW-BASIC.)
Also I think that I have *some* insight into the string area garbage
collection (GC). (Someone *please* correct me if I go off into the weeds.)
A string variable in Microsoft BASIC consisted of a hunk of memory containing
a length for the string and a pointer to where the characters were stored in
the string area. Stings in the string area were atomic--i.e., they were
*never* changed. If you built a new string an assigned it to a variable, the
new string was created in free memory from the string area. The old string of
characters in the string area would be left in tact.
Only *one* copy of a string was stored in the string area. If two string
variables had the exact same characters, their pointers would point to the
*same* string in the string area. Eventually some of the strings of characters
in the string area would have *no* string variables pointing to them. During
garbage collection, these strings of characters were removed, the remaining
strings were compacted to leave the free memory as one block, and *all* the
pointers in the string variables adjusted to point to the new location of
their characters in the string area. GC would be caused by the inablility to
allocated enough memory from the string area to support the current
operation--or by being forced by a call to FRE("").
I assume that the reason the older BASIC's would "sit and think" during GC and
the newer BASIC's do *not* "sit and think"--must be that the newer BASIC's do
incremental garbage collection. That is, every time an operation occurs on
character variables that would effect the string area, unused character string
memory would be recovered *immediately*. This way GC time is spread out across
the entire run time of the program, and *no* noticable delay would occur.
--
+-------------------------------------------------------------+
| Charles and Francis Richmond <rich...@plano.net> |
+-------------------------------------------------------------+
The syntax of GW-BASIC was taken almost entirely from Color Basic
for the TRS-80 Color Computer. MOTOR ON/OFF controlled the cassette
recorder remote switch (the on/off switch on cassette recorder
microphones), and AUDIO ON/OFF would play the sound from the cassette
over the TV speaker. The idea was to use the computer for interactive
teaching programs, to synchronize the tape with the contents of the
screen.
That was state of the art multimedia in 1981!
--
John Bayko (Tau).
ba...@cs.uregina.ca
http://www.cs.uregina.ca/~bayko
I read that it's "Gee Whiz"
--
John Hall - Digital Magic <Digita...@cadvision.com>
"Any sufficiently advanced technology is indistinguishable from magic" (Arthur C. Clarke)
<snip>
> A string variable in Microsoft BASIC consisted of a hunk of memory containing
> a length for the string and a pointer to where the characters were stored in
> the string area. Stings in the string area were atomic--i.e., they were
> *never* changed. If you built a new string an assigned it to a variable, the
> new string was created in free memory from the string area. The old string of
> characters in the string area would be left in tact.
<snip>
Also, IIRC, a line that contained something like:
A$="This is a line of data"
The string pointer pointed to the text within the
source code, saving string memory. If you did
something like:
A$="This string"+B$
Then it had to paste the two together and store them
in the string space. Simple assignments saved space
and were not part of garbage collection.
Sam Seiber
>> Basic 80 came in three forms: base, extended, and disk. The basic on
>> the original pc was base, while basicA was the disk version. Generally,
>> disk basic used what was already available in ROM.
>BASICA was *not* entirely disk BASIC.
Correct. It used what was already available in ROM (extended BASIC)
> Because of contractual commitments to
>Microsoft, IBM *had* to keep at least *part* of the BASICA interpreter in ROM.
>This meant that you could *not* copy the executable (BASICA.EXE or BASICA.COM
>or whatever it was) to an IBM clone machine and run it. The clone would *not*
>have the ROM needed to execute the BASICA interpreter.
I'm not sure about this being due to "contractual committments." Most
other machines of the era did the same thing: extended BASIC in ROM,
then load in the rest of disk basic, which used the ROM code (apple,
pet, radio shack . . .)
>This meant that Billy could sell a copy of GW-BASIC to the owner of the clone
>because he could *not* use a pirated copy of BASICA. (Yeah, I know...he could
>use a pirated copy of GW-BASIC.)
That ends up a side effect, but he would have been perfectly happy to
sell them ROM rights jsut like he did to everyone else. However, I'm
not aware of anyone having done this: it was probably easier just to
deal with GWBASIC.
Also, BASIC in ROM was necessary when the IBM PC first came out. It was
designed to run without disks, and could be purchased with just 16k (the
first model had 4 banks of 16k each on the motherboard, and from 1 to 4
could be full when purchased). I'm not aware of any diskless clones.
Given the disk, and a "full" 64k, there was room in ram for the full
basic, and no need to spend more to include it in ROM.
This is just a *little* bit to strong. The general syntax is BASIC-80, 5.0,
disk version.
> MOTOR ON/OFF controlled the cassette
>recorder remote switch (the on/off switch on cassette recorder
>microphones),
This was hardly new in that color basic.
Steven Read wrote in message <34a3635a...@news.linkny.com>...
>>Mike Habicher wrote --
>>
>>> [While I'm at it, does ANYONE know what the hell
>>> the "MOTOR" keyword did? GW-BASIC accepted it,
>>> but as far as I could tell, it didn't do anything.]
>
MOTOR was a ROM-Basic holdover. Since GW-Basic was basically the same as
the ROM-based version for non-IBM machines, all of the keywords and tokens
were left intact. MOTOR actually controlled the relay (on the the
motherboard) that controlled the MIC on/off switch that was common on most
cheapy cassette recorders. Early versions of GW-Basic would generate an
error if you tried to use, this was fixed in later versions. Supposedly,
there were one or two other keywords that were left in but were useless, but
I do not know what they were. (I think "LISTEN" was one, but again, not
sure.)
Also, GW purportedly stood for Gee-Whiz but I rather like the 'Gates,
William' that someone in this thread has already suggested.
One other observation...I, too, have noticed that certain bugs were
prevelant in most incarnations of Microsoft Basic. I seem to remember that
Extended TRS-80 Color Computer Basic shared the same rounding errors as it's
cousin the TRS-80 Model 3 and in the Challenger. They also supplied the
Basic that shipped with the Mattell Aquarious and, it too, had the rounding
error. Perhaps they simply recompiled the same code using different
cross-compilers....
The Atari did that with POKEs in commercially-distributed foreign language
courses, some of which I'd REALLY like to have again.
There was a cartridge that would read data from the cassette while playing
audio, meaning that single cartridge could teach you anything provided you
had the tapes for it. I think it was called the Dorsett system, and I have
a few tapes for it still, though I doubt a complete set of anything.
(They came in sets of about four tapes). I also don't have the cartridge,
or a cassette player, though I do have an Atari XE game system which is
compatible with most of the cartridges.
These tapes would even be able to issue commands that would stop the motor
and issue a multiple-choice question.
--
Nick Bensema <ni...@primenet.com> 98-KUPD Red Card #710563 UIN: 2135445
~~~~ ~~~~~~~ ~~~~~~~~~~~~~~~~~~~~ Prepare ship for ludicruos speed!
http://www.climatefacts.org/ - Everyone but the bad boys have to behave.
> The following QuickBasic keywords are not supported in QBasic:
>
> ALIAS EVENT LOCAL SETMEM
> BYVAL $INCLUDE SADD SIGNAL
> CDECL Int86 Interrupt UEVENT
> COMMAND$ Int86X InterruptX
>
>Seems to be a reasonably complete implementation to me.
1) The loss of $INCLUDE is by itself a pretty large sacrifice if you
need to do more than write a few simple lines of code. I still have
some killer Library files to tack onto my programs.
2) QBasic doesn't let you compile; you have to run your stuff in the
QBasic environment. My opinion, but I'd rather have an .EXE than a
BAS file when I'm finished; I can give it to people who don't even
have Basic on their machine. Someone else pointed out that Win95
doesn't include it anymore, so this feature is even more important
now.
Bob
-JR http://members.tripod.com/~jrollins/index.html
http://www.geocities.com/Area51/Lair/1681/
Microsoft Basics didn't have graphics commands before the TRS-80
Color Computer - the GW-BASIC graphics commands were taken pretty much
directly from Color Basic. I believe pretty much all other Color Basic
statements showed up in GW-BASIC, except very specific ones dealing
with the CoCo's graphics hardware.
Charlie Gibbs <cgi...@sky.bus.com> wrote in article
<1977.297T2...@sky.bus.com>...
> In article <67rdnd$tfe$3...@news.sas.ab.ca> jsa...@freenet.edmonton.ab.ca
> (jsavard) writes:
>
(stuff deleted)
> I still keep a copy of GW-BASIC around, and use it whenever I need
> a quick one-shot program. It's much simpler to use than QuirkBASIC;
> Microsoft hadn't started putting all sorts of temperamental "features"
> into it yet. We have a lot of customer sites that we dial into with
> PC-Anywhere. GW-BASIC works just fine in such a situation. This
> is more than you can say for QuirkBASIC; you can't do things like
> saving or exiting without using those damned menus, and for some
> reason PC-Anywhere can't handle them, so you're screwed until you
> get someone on the other end to complete the menu entry for you
> (or you re-boot the machine, which PC-Anywhere _can_ do - just pray
> that PC-Anywhere is restarted by AUTOEXEC.BAT).
Why not set PC-Anywhere up for one of the extended keyboard controls?
Mode 3 works for me ... PC/Anywhere for DOS v5.x, anywho.
>
> BTW for the fellow who asked what the GW in GW-BASIC stands for,
> I heard it was "Gee Whiz".
That be what we were told by DEC when GW-BASIC for the Rainbow 100 first
came out ..
RwP
Well, I'd have to get out a shovel to find my old TI99 and all the
documentation from the landfill, but remember that the 16K it
contained reserved 8K for program and 8K for data, and a good sized
program could still take five minutes of tape time to load. It sounds
like a fun project to go at just for the hell of it but I doubt if,
say, Doom on cassette would be a big seller :).
Bob
-------------------------------------------------------------------------------------------------------
Once you have pulled the pin Mr. Grenade is no longer your friend.
Ahem, anyone who remember the autumn -95 thread regarding
Windoze 95 on ZX Spectrum (cassette media of course)???
Fill me in, please!
/Peter
--
Peter Lindgren Bachelor of Computer Engineering
Norrsken Konsult, Mölndal, Sweden +46 - (0)31 27 17 09
norrsken...@vaxjo.mail.telia.com +46 - (0)70 545 95 50
> Does anyone have a pinout of the cassette port on the PC? Maybe I'm just a
> crazy computer nerd(or collector?
From my genuine "IBM Personal Computer Hardware Reference Library - Technical
Reference" on the IBM PC (Revised Edition, 4-83):
Page 1-31 (System Unit):
Cassette Interface Connector Specifications
V
3 1
5 4
2
...as viewed looking at connector from "outside" on rear of PC...
Pin 1 Motor Control Common from Relay
Pin 2 Ground
Pin 3 Motor Control N.O. from Relay
Pin 4 Data In [From Earphone Jack]
pin 5 Data Out [To Mic or Aux Jack....there's a group of 4 header pins
on the
motherboard which use a jumper block to select
the output
level]
M. Baker
mba...@monmouth.com
>My cleverest BASIC (for getting power out of a
>machine) has to be Sinclair Spectrum BASIC. AFAIK it never needs to
>collect garbage, when it adds a variable it moves the entire contents
>of memory (48K, with a Z80) up to fit. As the variable space shrinks
>and grows it moves it all back down again.
This reminds me of a neat trick one could do with Atari BASIC. You could
interrupt a program, change the source code, and then continue from where
you left off. With most other BASICs, that I'm aware of, you couldn't do
this because when your source code expanded, it would overwrite your
variables. I'm not sure how Atari implemented its BASIC, but code and data
were organized so that they would not interefere with one another.
(On the other hand, Atari BASIC didn't support string arrays. Nobody's
perfect...)
--
Benjamin Robinson bj...@freenet.tlh.fl.us
This message may or may not contain sarcastic content; your burden to decide
Your spam has become tiresome. Add 1 to username to reply by e-mail
"He had a lot to say. He had a lot of nothing to say." - Tool
: Page 1-31 (System Unit):
: Cassette Interface Connector Specifications
: V
: 3 1
: 5 4
: 2
: ...as viewed looking at connector from "outside" on rear of PC...
: Pin 1 Motor Control Common from Relay
: Pin 2 Ground
: Pin 3 Motor Control N.O. from Relay
: Pin 4 Data In [From Earphone Jack]
: pin 5 Data Out [To Mic or Aux Jack....there's a group of 4 header pins
: on the
: motherboard which use a jumper block to select
: the output
: level]
I thought that pinout looked familiar, and it is... I've just looked in
my Tandy Colour Computer Techref, and the pinout of the cassette
connector on that machine (and all other TRS-80s) is the same. I think a
Tandy cassette cable would work fine on a PC as well. Now all I have to d
is get out one of my PCs and try it.
: M. Baker
-tony
>This reminds me of a neat trick one could do with Atari BASIC. You could
>interrupt a program, change the source code, and then continue from where
>you left off. With most other BASICs, that I'm aware of, you couldn't do
>this because when your source code expanded, it would overwrite your
>variables. I'm not sure how Atari implemented its BASIC, but code and data
>were organized so that they would not interefere with one another.
If I recall correctly the program was stored from the bottom of the
memory working up and the data was stored from the top end working
down. If the two met you would get an out of memory error but that
was the scheme that gave you that ability.
Maybe. The Basic built into the old HP9845s must have done the same
thing and I may have caught it in the documentation on that beast; you
could stop and edit to your hearts content and still CONTinue the
program.
Bob
Best regards,
Art Borg
> This reminds me of a neat trick one could do with Atari BASIC. You could
> interrupt a program, change the source code, and then continue from where
> you left off. With most other BASICs, that I'm aware of, you couldn't do
> this because when your source code expanded, it would overwrite your
> variables. I'm not sure how Atari implemented its BASIC, but code and data
> were organized so that they would not interefere with one another.
Quickbasic does that, and its VB successors - even qbasic does it.
They none of them like you changing for loop variables or dim
statements and the like - for those you get a warning that if you do
that you will have to restart.
--
Nick Spalding
> Hold on...was it GW-Basic or MS Basic? The true blue PCs had basic in the
> roms, but I thought gw-basic (as opposed to straight basic) was the romless
> version that was disk only that MS came up for the clones. Am I wrong?
Well, right idea, wrong words. BASIC.com and BASICA.com were the
versions included with TrueBlue PC's and needed the ROM-BASIC to run.
Running it on a clone just locked up the system. GW-Basic ran on any PC,
including an IBM system. But to complicate the terminology, Compaq
included with their version of DOS versions of BASIC/BASICA, and they
did -not- need the ROM-BASIC, and they could also run on any PC,
including non=Compaqs. Compaq DOS sure looked like PC DOS most times.
Both GW-Basic and the Compaq BASIC/BASICA run nicely under dosemu...
--
/\/\ax |_ang, ...persuing cutting-edge research into the
budding Unix guru. burgeoning field of Linux-induced insomnia!
-x-x-x-Micro$loth or Linux: Hey, it's your computer!-x-x-x-
> Microsoft Basics didn't have graphics commands before the TRS-80
>Color Computer - the GW-BASIC graphics commands were taken pretty much
>directly from Color Basic. I believe pretty much all other Color Basic
>statements showed up in GW-BASIC, except very specific ones dealing
>with the CoCo's graphics hardware.
???
There was no standardized set, but just off the cuff, compucolor
(bizzare implementation in which damn near every control function was
through the PLOT command, including actual graphics), trs80
model 1 (pset/(uh, i forget how to turn it off)), applesoft (commands
for the hires graphics that needed machine calls from integer basic)
. . .
The specific commands for the graphics may have originated in the coco,
but I don't think that there's any other syntax in basica or gwbasic
that was not present in version 5 of basic 80 (which I became all to
familiar with many years ago :). For that matter, i think that there's
only a couple of syntax changes from 4.51 to 5.0. I'm probably going to
get this wrong, as I never used version 4.x, and haven't worried about
this for 5 years, but the bit i can recall is that there's a different
usage of commas in formatted printing, a difference in whether or not
the first pass of for/next is executed, and introduction of while/wend.
and mbasic 5. It had both MERGE and CHAIN commands, which could be used
to swap in code, or to transfer to another program, passing the
variables along.
--
+----------------------------------------------------------+
| Charles and Francis Richmond <rich...@plano.net> |
+----------------------------------------------------------+
>In article <683lm1$i6m$1...@sue.cc.uregina.ca>,
>John Bayko <ba...@borealis.cs.uregina.ca> wrote:
>>In article <6813gd$30s$1...@news.iastate.edu>,
>> Rick Hawkins <rhaw...@iastate.edu> wrote:
>>>In article <67v0fk$bv8$1...@sue.cc.uregina.ca>,
>>>John Bayko <ba...@borealis.cs.uregina.ca> wrote:
>>[...]
>>>> The syntax of GW-BASIC was taken almost entirely from Color Basic
>>>>for the TRS-80 Color Computer.
>>>
>>>This is just a *little* bit to strong. The general syntax is BASIC-80, 5.0,
>>>disk version.
>
>> Microsoft Basics didn't have graphics commands before the TRS-80
>>Color Computer - the GW-BASIC graphics commands were taken pretty much
>>directly from Color Basic. I believe pretty much all other Color Basic
>>statements showed up in GW-BASIC, except very specific ones dealing
>>with the CoCo's graphics hardware.
>
>???
>
>There was no standardized set, but just off the cuff, compucolor
>(bizzare implementation in which damn near every control function was
>through the PLOT command, including actual graphics), trs80
>model 1 (pset/(uh, i forget how to turn it off)), applesoft (commands
>for the hires graphics that needed machine calls from integer basic)
>. . .
Uh, we're talking Microsoft BASIC here. I don't know about
Compucolor, but Applesoft wasn't a Microsoft BASIC.
While "pset" was used in some dialects, in TRS-80 Model I Level
II BASIC (tape and disk), it was
set(expr1,expr2)
Turning off a pixel was with
reset(expr1,expr2)
>The specific commands for the graphics may have originated in the coco,
Some, probably, but the was a Level III BASIC for the TRS-80
Model I. It had a number of graphics commands. These or a derivative
made it to IBM PC BASIC.
>but I don't think that there's any other syntax in basica or gwbasic
>that was not present in version 5 of basic 80 (which I became all to
>familiar with many years ago :). For that matter, i think that there's
Some functions.
>only a couple of syntax changes from 4.51 to 5.0. I'm probably going to
Yes, but there were semantic changes. tab() started with column
0 in 4 and with 1 in 5. Float to integer conversion truncated in 4
and rounded in 5. This latter flies against convention. The big
noticeable change was that crunching was no longer legal. e.g.
10PRINTA
was legal in 4, but not in 5.
>get this wrong, as I never used version 4.x, and haven't worried about
>this for 5 years, but the bit i can recall is that there's a different
>usage of commas in formatted printing, a difference in whether or not
>the first pass of for/next is executed, and introduction of while/wend.
That's about it.
Sincerely,
Gene Wirchenko
C Pronunciation Guide:
y=x++; "wye equals ex plus plus semicolon"
x=x++; "ex equals ex doublecross semicolon"
>This reminds me of a neat trick one could do with Atari BASIC. You could
>interrupt a program, change the source code, and then continue from where
>you left off. With most other BASICs, that I'm aware of, you couldn't do
>this because when your source code expanded, it would overwrite your
>variables. I'm not sure how Atari implemented its BASIC, but code and data
>were organized so that they would not interefere with one another.
I remember while running the resident basic on my VIC-20 a running program could
print the text of a new line and with some POKEing around it would be accepted
as just that, a new line in the running program. Now THAT's versatility!
--
Jim DeVries
<jdev...@gate.net>
'65 Monza - '94 Saturn SL2
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
"If all mankind minus one, were of one opinion, and only one person were of a contrary
opinion, mankind would be no more justified in silencing that one person, than he, if
he had the power, would be justified in silencing mankind."
John Stuart Mill, from 'On Liberty'
Compucolor, aka Intecolor, aka ISC (AFAIR), were most certainly
not Microsoft implementatons. They bear a copyright of "Charles
Muench" who was one of the co-founders of ISC (Intellegent Systems
Corporation).
--
______________________________________________________________________
| | |
| Carl Richard Friend (UNIX Sysadmin) | West Boylston |
| Minicomputer Collector / Enthusiast | Massachusetts, USA |
| mailto:carl....@stoneweb.com | |
| http://www.ultranet.com/~engelbrt/carl/museum | ICBM: N42:22 W71:47 |
|________________________________________________|_____________________|
Gene Wirchenko wrote in message <34a7eec2...@news.vip.net>...
>rhaw...@iastate.edu (Rick Hawkins) wrote:
>>There was no standardized set, but just off the cuff, compucolor
>>(bizzare implementation in which damn near every control function was
>>through the PLOT command, including actual graphics), trs80
>>model 1 (pset/(uh, i forget how to turn it off)), applesoft (commands
>>for the hires graphics that needed machine calls from integer basic)
>>. . .
>
> Uh, we're talking Microsoft BASIC here. I don't know about
>Compucolor, but Applesoft wasn't a Microsoft BASIC.
--------------------------------------------
-----
You are wrong, my friend! Apple INTEGER basic was NOT Microsoft, but
Microsoft, did, in fact, write Applesoft-hence the SOFT in the name. If you
look into the Applesoft code, you can find the copyright message buried in
there.
> While "pset" was used in some dialects, in TRS-80 Model I Level
>II BASIC (tape and disk), it was
> set(expr1,expr2)
>Turning off a pixel was with
> reset(expr1,expr2)
>
>>The specific commands for the graphics may have originated in the coco,
>
> Some, probably, but the was a Level III BASIC for the TRS-80
>Model I. It had a number of graphics commands. These or a derivative
>made it to IBM PC BASIC.
Again, you are not quite right. Extended Color Basic for TRS-80 Color
Computer WAS the first implementation of a Microsoft Basic that contained a
standard keyword set. Just about ALL of the Extended Color Basic keywords
made it into GW-Basic and it's derivative (including the 'official' IBM
version.) The infamous MOTOR ON/MOTOR OFF statements were also included in
the CoCo version (and do, in fact, go waaaaay back to Level II Basic.) The
Basic that shipped with the Mattell Aquarious as well as a few other home
PC's built AFTER the CoCo contained the SAME keyword set. Only the Extended
Disk Basic keywords changed.
I remember taking some of my CoCo Basic code and using on the IBM with
little or no change...unheard of then! Imagine, a 'standard' as far
'standards' went, back then.
Thanks for your note. My new machine came pre-equipped with Win95,
and the help for that says very little about DOS or what's on the
CD. Since Win95 is already on the machine, I didn't think there'd
be stuff on CD that wasn't on the hard drive or that I'd need.
I do a lot of stuff in DOS mode, so those things are useful to me.
(I never could figure out how to make a Win95 RAMdrive, so I can
set one up.)
What does this mean? On this GS I'm typing on right now, integer BASIC
isn't loaded [I'd have to hook up my 5.25" drives and find a DOS 3.3 System
Master to do that], but I can go into AppleSoft and make graphics calls
just fine. On a ][+ or later, you almost certainly *don't* have Integer
loaded most of the time.
I don't know what 'standards' people are talking about, but AppleSoft has
HCOLOR
HPLOT A,B [to C,D]
HLIN
VLIN
and probably more I can't remember.
--
mat...@area.com
>
>Gene Wirchenko wrote in message <34a7eec2...@news.vip.net>...
>>rhaw...@iastate.edu (Rick Hawkins) wrote:
>>>There was no standardized set, but just off the cuff, compucolor
>>>(bizzare implementation in which damn near every control function was
>>>through the PLOT command, including actual graphics), trs80
>>>model 1 (pset/(uh, i forget how to turn it off)), applesoft (commands
>>>for the hires graphics that needed machine calls from integer basic)
>>>. . .
>>
>> Uh, we're talking Microsoft BASIC here. I don't know about
>>Compucolor, but Applesoft wasn't a Microsoft BASIC.
> --------------------------------------------
>-----
>You are wrong, my friend! Apple INTEGER basic was NOT Microsoft, but
>Microsoft, did, in fact, write Applesoft-hence the SOFT in the name. If you
>look into the Applesoft code, you can find the copyright message buried in
>there.
Ah, well, I wasn't an Apple user. What I meant was that it
wasn't what was commonly called Microsoft BASIC which was quite
standardized.
>> While "pset" was used in some dialects, in TRS-80 Model I Level
>>II BASIC (tape and disk), it was
>> set(expr1,expr2)
>>Turning off a pixel was with
>> reset(expr1,expr2)
>>
>>>The specific commands for the graphics may have originated in the coco,
>>
>> Some, probably, but the was a Level III BASIC for the TRS-80
>>Model I. It had a number of graphics commands. These or a derivative
>>made it to IBM PC BASIC.
>Again, you are not quite right. Extended Color Basic for TRS-80 Color
>Computer WAS the first implementation of a Microsoft Basic that contained a
>standard keyword set. Just about ALL of the Extended Color Basic keywords
No, MBASIC 4 was much earlier. Level III also predated the Color
Computer. At one point, Microsoft had some sort of system in place
where they could generate a BASIC for a Z-80 system quite easily.
Expanded graphics capabilities required additions to the
language, but the base was already there.
>made it into GW-Basic and it's derivative (including the 'official' IBM
>version.) The infamous MOTOR ON/MOTOR OFF statements were also included in
>the CoCo version (and do, in fact, go waaaaay back to Level II Basic.) The
There was no motor command in Level II BASIC. (You could out to
port 255. I forget which bit controlled the tape drive motor, but I
think it was bit 0. Set was on, reset was off.)
>Basic that shipped with the Mattell Aquarious as well as a few other home
>PC's built AFTER the CoCo contained the SAME keyword set. Only the Extended
>Disk Basic keywords changed.
I bet if you look at MBASIC, you'll see most or all of those.
>I remember taking some of my CoCo Basic code and using on the IBM with
>little or no change...unheard of then! Imagine, a 'standard' as far
>'standards' went, back then.
TRS-80 BASIC was based on MBASIC 4. Commodore BASIC was as well
though it had rather different disk and error handling. Applesoft was
a different creature.
On 1997-12-29 bo...@ma.ultranet.com(Bob) said:
>>This reminds me of a neat trick one could do with Atari BASIC.
>>You could interrupt a program, change the source code, and then
>>continue from where you left off. With most other BASICs, that
>>I'm aware of, you couldn't do this because when your source code
>>expanded, it would overwrite your variables. I'm not sure how
>>Atari implemented its BASIC, but code and data were organized so
>that they would not interefere with one another.
In the Timex Sinclair 1000 (ZX81), the save command would save the program,
variables, and even screen contents. If you used SAVE inside a program,
when you loaded the tape it would continue from the instruction after
the SAVE.
Bill Marcum
THIS IS WHAT ALL YOUR INVISIBLE WHITE RABBIT FRIENDS WARNED YOU ABOUT.
Net-Tamer V 1.09.2 - Test Drive
> Uh, we're talking Microsoft BASIC here. I don't know about
>Compucolor, but Applesoft wasn't a Microsoft BASIC.
Beg Pardon? I believe it even had a microsoft copyright that displayed.
It had a different precision FP (9? instead of 6/12), but it was
microsoft. The original integer basic, however, was not.
> While "pset" was used in some dialects, in TRS-80 Model I Level
>II BASIC (tape and disk), it was
> set(expr1,expr2)
>Turning off a pixel was with
> reset(expr1,expr2)
It's been a while :) maybe i'm thinking of the 102 . . .
>>The specific commands for the graphics may have originated in the coco,
> Some, probably, but the was a Level III BASIC for the TRS-80
>Model I. It had a number of graphics commands. These or a derivative
>made it to IBM PC BASIC.
Level 3? I don't recall that. But then, I returned my model I when I
found that it couldn't count. The fp was so bad that 3^4 was 81.001,
and for i=-1 to 1, step .1 missed 0 . . .
> Yes, but there were semantic changes. tab() started with column
>0 in 4 and with 1 in 5. Float to integer conversion truncated in 4
>and rounded in 5. This latter flies against convention. The big
>noticeable change was that crunching was no longer legal. e.g.
> 10PRINTA
>was legal in 4, but not in 5.
This sets a couple of dusty neurons firing (ach-oo!)
>>
>>Gene Wirchenko wrote in message <34a7eec2...@news.vip.net>...
>>>rhaw...@iastate.edu (Rick Hawkins) wrote:
>>> Some, probably, but the was a Level III BASIC for the TRS-80
>>>Model I. It had a number of graphics commands. These or a derivative
>>>made it to IBM PC BASIC.
>>Again, you are not quite right. Extended Color Basic for TRS-80 Color
>>Computer WAS the first implementation of a Microsoft Basic that contained a
>>standard keyword set. Just about ALL of the Extended Color Basic keywords
> No, MBASIC 4 was much earlier. Level III also predated the Color
>Computer. At one point, Microsoft had some sort of system in place
>where they could generate a BASIC for a Z-80 system quite easily.
one of the things that I threw away, years ago, was their product
catalog, which specified exactly what you had to do to get a custom
BASIC. But I think it used 8080, not z80, as the base. And the 6800
and 6502 versions were apparently derivatives/crosscompiles of basic-80.
>>Basic that shipped with the Mattell Aquarious as well as a few other home
>>PC's built AFTER the CoCo contained the SAME keyword set. Only the Extended
>>Disk Basic keywords changed.
>
> I bet if you look at MBASIC, you'll see most or all of those.
>
>>I remember taking some of my CoCo Basic code and using on the IBM with
>>little or no change...unheard of then! Imagine, a 'standard' as far
>>'standards' went, back then.
> TRS-80 BASIC was based on MBASIC 4. Commodore BASIC was as well
>though it had rather different disk and error handling. Applesoft was
>a different creature.
version 4? weren't they all variants of version 2? It seems to me that
they were lacking the random file access of versions 4 & 5, and had a
significantly different syntax for opening files.
rick
>What does this mean? On this GS I'm typing on right now, integer BASIC
>isn't loaded [I'd have to hook up my 5.25" drives and find a DOS 3.3 System
>Master to do that], but I can go into AppleSoft and make graphics calls
>just fine. On a ][+ or later, you almost certainly *don't* have Integer
>loaded most of the time.
In integer basic, to get the hires routines (and floating point), you
loaded them from tape, then used CALL to get at them. Wait a minute, I
think that's only real early models. I think they made it into an extra
ROM before most were sold.
>I don't know what 'standards' people are talking about, but AppleSoft has
>HCOLOR
>HPLOT A,B [to C,D]
>HLIN
>VLIN
>and probably more I can't remember.
Yep. But in integer, these weren't available. You needed the machine
calls.
Gene Wirchenko <ge...@vip.net> wrote in article
<34a7eec2...@news.vip.net>...
> rhaw...@iastate.edu (Rick Hawkins) wrote:
>
> >In article <683lm1$i6m$1...@sue.cc.uregina.ca>,
> >John Bayko <ba...@borealis.cs.uregina.ca> wrote:
> >>In article <6813gd$30s$1...@news.iastate.edu>,
> >> Rick Hawkins <rhaw...@iastate.edu> wrote:
> >>>In article <67v0fk$bv8$1...@sue.cc.uregina.ca>,
> >>>John Bayko <ba...@borealis.cs.uregina.ca> wrote:
> >>[...]
> >>>> The syntax of GW-BASIC was taken almost entirely from Color Basic
> >>>>for the TRS-80 Color Computer.
> >>>
> >>>This is just a *little* bit to strong. The general syntax is
BASIC-80, 5.0,
> >>>disk version.
> >
> >> Microsoft Basics didn't have graphics commands before the TRS-80
> >>Color Computer - the GW-BASIC graphics commands were taken pretty much
> >>directly from Color Basic. I believe pretty much all other Color Basic
> >>statements showed up in GW-BASIC, except very specific ones dealing
> >>with the CoCo's graphics hardware.
> >
> >???
> >
> >There was no standardized set, but just off the cuff, compucolor
> >(bizzare implementation in which damn near every control function was
> >through the PLOT command, including actual graphics), trs80
> >model 1 (pset/(uh, i forget how to turn it off)), applesoft (commands
> >for the hires graphics that needed machine calls from integer basic)
> >. . .
>
> Uh, we're talking Microsoft BASIC here. I don't know about
> Compucolor, but Applesoft wasn't a Microsoft BASIC.
You MIGHT want to double-check that there copyright - Microsoft owns it!
That's AppleSoft alright - Apple's Integer BASIC was written by the WOZ,
but AppleSoft was written by Microsoft (hence the "SOFT" portion .. <B-) )
CompuColor's big BASIC was also written by Microsoft.
(the rest deleted to please my news server ... )
RwP
Matt Ackeret <mat...@area.com> wrote in article
<689ms2$isp$1...@nixon.area.com>...
> In article <688hit$84v$1...@news.iastate.edu>,
> Rick Hawkins <rhaw...@iastate.edu> wrote:
> >applesoft (commands
> >for the hires graphics that needed machine calls from integer basic)
>
> What does this mean? On this GS I'm typing on right now, integer BASIC
> isn't loaded [I'd have to hook up my 5.25" drives and find a DOS 3.3
System
> Master to do that], but I can go into AppleSoft and make graphics calls
> just fine. On a ][+ or later, you almost certainly *don't* have Integer
> loaded most of the time.
True. What Rick SAID, and what he MEANT, was that those same hires
graphics calls had to be done as machine language calls in Integer BASIC,
but were BASIC commands in AppleSoft.
RwP
>In article <34a92f43...@news.vip.net>,
>Gene Wirchenko <ge...@vip.net> wrote:
>>"George Gray" <Georg...@AOL.COM> wrote:
>
>>>
>>>Gene Wirchenko wrote in message <34a7eec2...@news.vip.net>...
>>>>rhaw...@iastate.edu (Rick Hawkins) wrote:
>
>>>> Some, probably, but the was a Level III BASIC for the TRS-80
>>>>Model I. It had a number of graphics commands. These or a derivative
>>>>made it to IBM PC BASIC.
>>>Again, you are not quite right. Extended Color Basic for TRS-80 Color
>>>Computer WAS the first implementation of a Microsoft Basic that contained a
>>>standard keyword set. Just about ALL of the Extended Color Basic keywords
>
>> No, MBASIC 4 was much earlier. Level III also predated the Color
>>Computer. At one point, Microsoft had some sort of system in place
>>where they could generate a BASIC for a Z-80 system quite easily.
>
>
>one of the things that I threw away, years ago, was their product
>catalog, which specified exactly what you had to do to get a custom
>BASIC. But I think it used 8080, not z80, as the base. And the 6800
>and 6502 versions were apparently derivatives/crosscompiles of basic-80.
I wasn't sure if the base was Z-80 or 8080. By the time I was
using the 8080 family, Z-80 was the chip of choice.
>>>Basic that shipped with the Mattell Aquarious as well as a few other home
>>>PC's built AFTER the CoCo contained the SAME keyword set. Only the Extended
>>>Disk Basic keywords changed.
>>
>> I bet if you look at MBASIC, you'll see most or all of those.
>>
>>>I remember taking some of my CoCo Basic code and using on the IBM with
>>>little or no change...unheard of then! Imagine, a 'standard' as far
>>>'standards' went, back then.
>
>> TRS-80 BASIC was based on MBASIC 4. Commodore BASIC was as well
>>though it had rather different disk and error handling. Applesoft was
>>a different creature.
>
>version 4? weren't they all variants of version 2? It seems to me that
>they were lacking the random file access of versions 4 & 5, and had a
>significantly different syntax for opening files.
Microsoft BASIC version 4.
^^^^^^^^^
Commodore had their own version numbers for their BASIC. 2 and 4
of theirs are the ones I know about. Commodore BASIC 2 was
cassette-based and 4 was disk-based.
>In article <34a7eec2...@news.vip.net>,
>Gene Wirchenko <ge...@vip.net> wrote:
[snip]
>> Some, probably, but the was a Level III BASIC for the TRS-80
>>Model I. It had a number of graphics commands. These or a derivative
>>made it to IBM PC BASIC.
>
>Level 3? I don't recall that. But then, I returned my model I when I
>found that it couldn't count. The fp was so bad that 3^4 was 81.001,
>and for i=-1 to 1, step .1 missed 0 . . .
Level III was a product from Microsoft that added functions to
Level II tape BASIC. It was not widely known.
That was your error in using FP. As .1 can't be represented
exactly internally, you have round-off errors. It would have been
better to code as
for ib=-10 to 10
i=ib/10
[snip]
>On Mon, 29 Dec 1997 20:15:38 GMT, ge...@vip.net (Gene Wirchenko) told
>the world, or rather subsection alt.folklore.computers of it, that:
>
>> While "pset" was used in some dialects, in TRS-80 Model I Level
>> II BASIC (tape and disk), it was
>> set(expr1,expr2)
>> Turning off a pixel was with
>> reset(expr1,expr2)
>
>Correct - except that this wasn't really graphics (compared to GWBasic
>and the like).
>These instructions wouldn't set/reset a pixel, but a block of pixels
>(1/6 of a character, if I remember correctly).
Please don't redefine the language. "pixel" comes from "picture
element". A block of monitor dots can also be considered a pixel and
WAS. Yes, it's low res. Yes, it was 1/6 of a char.
>The character set had some (2^6 ?) extended characters that formed all
>possible combinations of these pixel blocks, and the set/reset
>instructions just put the right ascii character onscreen.
Yes, 128 to 191.
>You could display graphics using chr$ or string variables much faster
>than using set.
With static displays, yes. It was often quicker to use set/reset
when graphing.
>The model IV had the same characters, but because of a smaller
>character cell (8 scanlines instead of 9 I think) the lower 2 blocks
>were slightly smaller than the other 4.
Yuck!
>On Tue, 30 Dec 1997 19:43:59 GMT, bma...@iglou.com told the world, or
>rather subsection alt.folklore.computers of it, that:
>
>> In the Timex Sinclair 1000 (ZX81), the save command would save the program,
>> variables, and even screen contents. If you used SAVE inside a program,
>> when you loaded the tape it would continue from the instruction after
>> the SAVE.
>
>I seem to remember this 'feature' (without the screen save) from
>another system too. Could it have been TRS-80 model I? Or plain
>BASIC-80 on 8080 CP/M systems?
TRS-80 Model I: no.
CP/M BASIC-80: almost certainly no.
These two BASICs would have been very similar.
>It's also possible that I'm mixing this up with a MERGE statement,
>which also continued with the next statement as it found it after the
>merge (used it to load overlays there).
IIRC, it was the CHAIN statement with the MERGE option that did
this. MERGE was also a statement and was comparable to LOAD i.e.
execution did not continue.
> Uh, we're talking Microsoft BASIC here. I don't know about
>Compucolor, but Applesoft wasn't a Microsoft BASIC.
Most of Applesoft BASIC was Microsoft 6502 BASIC. Applesoft was a
punning reference to Microsoft.
The graphics and sound commands in Radio Shack Color Computer BASIC
are essentially the same in as IBM ROM BASIC. That is no surprise
because both came from the same shop. Radio Shack Disk Extended BASIC
is clearly related to Altair Disk BASIC. Microsoft wrote a 6800 BASIC
for the Altair 680. A company called GRT, originally GRT Record
Pressing, that was in the country-western record business decided to
get into the software business and issued some programs, including
Microsoft 8K BASIC for the SWTPC 6800. Their software effort was a
complete flop and GRT itself went out of business later. My copy of
Microsoft 6800 BASIC credits Paul Allen as the author. Microsoft
BASIC tended to do cute things to save a little memory. Like jumping
to the second byte of an instruction.
>Of course, you could be talking about something I somehow missed
>but the only 6800 Basic published on a record I ever came
>across was Robert Uiterwyk's 4K 6800 Basic which Interface Age
>Magazine included in their May 1977 issue as their first "Floppy ROM".
>The record manufacturer was Eva-Tone Soundsheets of Deerfield, Ill.
>which normally used their flexible record technology to produce
>short "music samplers". They were not the instigators of the Floppy
>ROM however, it was the magazine which just used Eva-Tone's technology.
>Chris
I'm not surprised you missed it, because it wasn't out long. Format
was KC Standard Phillips Compact Cassette.
>Benjamin Robinson wrote:
>> This reminds me of a neat trick one could do with Atari BASIC. You could
>> interrupt a program, change the source code, and then continue from where
>> you left off. With most other BASICs, that I'm aware of, you couldn't do
>> this because when your source code expanded, it would overwrite your
>> variables. I'm not sure how Atari implemented its BASIC, but code and data
>> were organized so that they would not interefere with one another.
>>
>It seems like this should work with BASICA and GW-BASIC, because they used one
>64k segment for the program and another 64k segment for the data. So expanding
No, they used one segment for both.
>the source could *not* destroy the data segment (at least if the segments were
>set up to be disjoint, and I think they always were.) In fact, when I took a
>course that included BASIC programming years ago, one of the selling points
>for BASIC was that you could stop the running program, change values of
>variables, and then continue the program.
Change variable values, yes, but changing the program is
something else.
> That was your error in using FP. As .1 can't be represented
> exactly internally, you have round-off errors. It would have been
> better to code as
> for ib=-10 to 10
> i=ib/10
It's one thing to get a slightly non-zero value in the loop but
to still have the loop take 21 steps. It's quite another for
the original command (FOR I = -.1 TO .1 STEP .01) to have only
20 steps, which is what Rick implied was happening.
Simon.
--
Simon Slavin -- Computer Contractor. | Excessive quoting from Shakespeare:
http://www.hearsay.demon.co.uk | gag me with a folio.
Check email address for spam-guard. | -- scl...@ernie.bgsu.edu (Susan Clerc)
Junk email not welcome at this site. | I receive about 2.5 junk emails a day.
> Microsoft BASIC version 4.
> ^^^^^^^^^
>
> Commodore had their own version numbers for their BASIC. 2 and 4
> of theirs are the ones I know about. Commodore BASIC 2 was
> cassette-based and 4 was disk-based.
BASIC 1.x was released with the PET.
BASIC 2.0 was built into VIC 20 and C 64 series.
BASIC 4.0 was an enhanced version, that featured easier access to
disc drives. It was released with the 600 and 700 series.
BASIC 3.5 added graphics commands, released with the C 16, C 116, +4
series. It really should have been called Ver. 4.5.
BASIC 7.0 was released with the C 128.
They were all ROM-based.
Greetings,
Michael
>ge...@vip.net (Gene Wirchenko) writes:
>
>> Microsoft BASIC version 4.
>> ^^^^^^^^^
>>
>> Commodore had their own version numbers for their BASIC. 2 and 4
>> of theirs are the ones I know about. Commodore BASIC 2 was
>> cassette-based and 4 was disk-based.
"cassette-based" and "disk-based" refer to their emphasis.
>BASIC 1.x was released with the PET.
>
>BASIC 2.0 was built into VIC 20 and C 64 series.
It was around before then. 4 was around before then, too.
>BASIC 4.0 was an enhanced version, that featured easier access to
>disc drives. It was released with the 600 and 700 series.
>
>BASIC 3.5 added graphics commands, released with the C 16, C 116, +4
>series. It really should have been called Ver. 4.5.
>
>BASIC 7.0 was released with the C 128.
>
>They were all ROM-based.
They were all STORED in ROM.
Talking of the version of BASIC used on the Tandy Colo(u)r, the Dragon 32/64
also used the same version (we'll not get into the debate as to whether or
not it was a copy of the Tandy, it's been overdone and I've not yet seen
anyone agree on it!) but, in the case of the latter, apparently the disc-
based system offered an entirely different version of BASIC. Anybody know
anything about it? I remember reading some vague articles back when the
machine was in vogue (must be about 16 or 17 years ago now) but never had
a chance to try it out owing to the exhorbitant price of the disc hardware,
which was in the region of 3 times the price of the main system unit IIRC!
This add-on opened up a number of avenues leading to various different OS'
being available, again IIRC things like Flex and OS/9, as well as a
proprietary OS, all with their own BASICs and other interesting stuff.
Anybody remember anything about them? Anybody out there actually USED them?
Perhaps I should take another look at the emulator, to see if there's been
updates so that it'll handle the disc system. Whether the copyrights of
any of the software I've mentioned have been rescinded to allow general
distribution is anyone's guess, though.
I also seem to remember talk of a Dragon 128, which appeared after the
rights to the company name had been sold at least half a dozen times, but
other than comments about the thing's existance, I know very little about
it or any BASIC it might have supported.
Chris.
Ah yes, I remember doing that to cheat at some games written in BASIC in
the early '80s. :)
Chris.
Michael Kircher wrote in message ...
>> Commodore had their own version numbers for their BASIC. ...
>BASIC 1.x was released with the PET.
.
.
.
>BASIC 7.0 was released with the C 128.
>
>They were all ROM-based.
They were STILL developed by Microsoft.
That's my little history lesson for today...
This has already cropped up several times, but just in case you haven't
already spotted it, it reputedly stands for "Gee Whizz." That factlet
alone would be enough to stop me using it.
Chris.
: The
: Coleco ADAM also used Microsoft Basic, but it was Applesoft compatible so it
: did not include the 'standard' keyword set but used the 'HPLOT', 'HLIN' and
: so on. (it had that unreliable and funky tape thingy too!)
No, the ADAM did *not* use Microsoft BASIC; Coleco SmartBASIC was
an Applesoft clone through and through. (It even pretended to implement
the FP and INT commands to switch between floating-point and integer
versions; SmartBASIC just changed the prompts to ] and > and did everything
in floating-point.)
The story of Coleco SmartBASIC is an interesting one. I have
interviewed some of the authors and have been planning (for almost a year
now...sigh) to write an article for my This Week With My Coleco ADAM series.
Personally, I wish SmartBASIC had used Microsoft BASIC file I/O
syntax instead of the dreadful PRINT CHR$(4) escape sequence business--
because the SmartBASIC programmers got it *wrong* and you couldn't have
more than one file open at once without crashing the system. (The EOS
operating system calls could handle it fine.) This bug had major
implications for ADAM software design, because it encouraged people to
write file I/O in machine code which was POKEd and CALLed (or else do raw
block I/O and bypass the filesystem entirely). Upgrading EOS or SmartBASIC
while maintaining backward compatibility with such software is an almost
impossible task.
: That's my little history lesson for today...
And mine :-)
*Rich*
--
Richard F. Drushel, Ph.D. | "Aplysia californica" is your taxonomic
Department of Biology, Slug Division | nomenclature. / A slug, by any other
Case Western Reserve University | name, is still a slug by nature.
Cleveland, Ohio 44106-7080 U.S.A. | -- apologies to Data, "Ode to Spot"
There was a whole family of PETs. The 2001 and (CBM) 30xx came
with BASIC 1.x.
>BASIC 2.0 was built into VIC 20 and C 64 series.
And into the CBM 40xx and 8xxx.
>BASIC 4.0 was an enhanced version, that featured easier access to
>disc drives. It was released with the 600 and 700 series.
>
>BASIC 3.5 added graphics commands, released with the C 16, C 116, +4
>series. It really should have been called Ver. 4.5.
>
>BASIC 7.0 was released with the C 128.
>
>They were all ROM-based.
Correct.
--
Best Regards, Dr. Peter Kittel // http://www.pios.de of PIOS
Private Site in Frankfurt, Germany \X/ office: peterk @ pios.de
Still big newsfeed problems causing long delays.
I'll try to add a few cents. Let me first say that my experiences
below with MS Basics stem from the Commodore PET 2001 to CBM 8032
computers and their Basic versions.
>A string variable in Microsoft BASIC consisted of a hunk of memory containing
>a length for the string and a pointer to where the characters were stored in
>the string area.
Or to put it differently: In the memory area trailing the program text,
you found entries for real and integer variables together with their
contents, but for string variables you only found pointers (plus one
byte with the string length, so it was 255 chars maximum), while the
string contents was placed in the top of the free memory area, growing
down towards the program text and variable space.
> Strings in the string area were atomic--i.e., they were
>*never* changed. If you built a new string an assigned it to a variable, the
>new string was created in free memory from the string area. The old string of
>characters in the string area would be left in tact.
Yes.
>Only *one* copy of a string was stored in the string area. If two string
>variables had the exact same characters, their pointers would point to the
>*same* string in the string area.
Hmm, I'm not sure about this. What can be also mentioned is, if
you have some assignment in the program like A$="Text", the pointer
to the string data will point to this place in the program text, so
that this string does not appear in the string variable space.
> Eventually some of the strings of characters
>in the string area would have *no* string variables pointing to them. During
>garbage collection, these strings of characters were removed, the remaining
>strings were compacted to leave the free memory as one block, and *all* the
>pointers in the string variables adjusted to point to the new location of
>their characters in the string area. GC would be caused by the inablility to
>allocated enough memory from the string area to support the current
>operation--or by being forced by a call to FRE("").
Yes. Ok, on these Basic versions, it was FRE(0).
>I assume that the reason the older BASIC's would "sit and think" during GC and
>the newer BASIC's do *not* "sit and think"--must be that the newer BASIC's do
>incremental garbage collection.
No, they do it just a bit more intelligently, but also need some more
memory for this. I mentioned some details above to help in explanation:
To do GC in an old Basic (BASIC 1.x like found in PET 2001 and CBM 30xx),
the interpreter first had to sort all string pointers in the lower variable
area after their address value, so that it then could walk this list of
pointers down from top of memory to the end of string space. Looking
at the stored size of the string, it could find out which memory area
was unused and overwrite that. What took so much time was the sorting.
And as there was no space to store the sorted list of pointers (remember
GC had to take place in an out of memory condition), this was done on
the fly, scanning the whole variables list the square number of times
as strings were found in that list.
Newer Basic versions (from BASIC 2.0 up on those Commodore machines)
stored not only the string contents in that upper area, but also a
back pointer down into the variable list, where the according descriptor
was stored, plus again its size. When a string became invalid, that back
pointer was zeroed out and thus easily recognizable. So the GC only had
to do a single loop (not a squared, nested one) through the upper string
area, find invalid strings and move any string contents below that up,
of course while updating all those forward and backward pointers.
I did a rather ambitious text editor on the PET back then, which stored
the text as an array of line strings. In the old Basic versions, this
led to GC times of several minutes, under the newer ones, the cursor
just stumbled a bit for a blink of an eye. Yeah, the wonders of 8-bit,
1 MHz computing, where the Basic interpreter *was* the OS :-).
IDNTIMWYTIM.
butting (divides by ten up to seven times a day)
--
Bryce Utting http://www.cs.waikato.ac.nz/~butting
the cross before me, the world behind me
no turning back
Look again. It's not division BY zero, but OF zero.
--
W. Alan Krueger | http://www.cs.umn.edu/~krueger/home.cgi
Graduate Student |------ Free Speech Wins! http://www.ciec.org/ ------
CSci Department | Support the anti-spam bill - http://www.cauce.org
U of Minnesota | Join the Coalition Against Unsolicited Commercial Email
Didja ever have one of those days? (It made an effective troll, though.)
Dyslexics of the world, untie!
>being available, again IIRC things like Flex and OS/9, as well as a
>proprietary OS, all with their own BASICs and other interesting stuff.
>Anybody remember anything about them? Anybody out there actually USED them?
I used OS-9, which was a real time commercial quality OS released by
Mircoware. It still lives today (or did recently at least) as OS-9000
for 68k CPUs. It has also been ported to Intel boxes. One of those
operating systems used for controller applications.
One thing that came with OS/9 was Basic-09. This allowed you to to
have functions and procedures, just like Pascal, and did away with the
line numbers.
And there was also Multi-Vue, which was a windowing add-on to OS-9
Level 2, which allowed you to use unlimited memory. The Tandy hardware
supported up to 512k (CoCo 3) but later people have got it up to 4M I
believe.
The proprietary OS was, I think, StarDos. Came with a hardware
expansion thing as well as software.
>Perhaps I should take another look at the emulator, to see if there's been
>updates so that it'll handle the disc system. Whether the copyrights of
>any of the software I've mentioned have been rescinded to allow general
>distribution is anyone's guess, though.
I doubt OS-9 has.
Rod Pinna
(rpi...@XcivilX.uwa.edu.au Remove the X for email)
> i=0/10
>
> Kinda looks like a divide by Zero to me...unless those old micros
> found a way to do that. :-)
Well, it looked more like a divide by ten to me, but I could be
wrong...
--
I am Robert Billing, Christian, inventor, traveller, cook and animal
lover, I live near 0:46W 51:22N. http://www.tnglwood.demon.co.uk/
"Bother," said Pooh, "Eeyore, ready two photon torpedoes and lock
phasers on the Heffalump, Piglet, meet me in transporter room three"