From: Anders Carlsson on
Vanessa Ezekowitz <vanDEesLEsaTEezTHekISowitz(a)gmail.com> writes:

> Many programs use the LOAD "filename",8,1 method, which starts
> the machine code right away,

Well.. it depends on which address the file was stored from. As far
as I know, the (only?) method to obtain auto-start is to load a file
into the low 1K - perhaps one of the Kernel vectors - and when the
load routine returns to Basic, your routine happens to be executed
and you can continue the loading process.

Of course the "10 SYS xxxx" is a Basic program by itself. You can call
it a header or not, but a Basic stub it is.

--
Anders Carlsson
From: spike1 on
Sam Gillett <samgillettnospam(a)diespammermsn.com> did eloquently scribble:
> BASIC 7.0 does not have a PLOT command. However, as I remember, the Sinclair
> PLOT command just places a little square box (about 4 pixels by 4 pixels), or
> a series of little square boxes, on the screen.

Then you remember totally incorrectly.
You're now comparing a Commodore 128 with... a ZX81?
LOL, oh deary me.

PLOT plotted a PIXEL, you do know what a pixel is, don't you?
DRAW drew a line of PIXELS (or arc if you used a 3rd parameter).
CIRCLE drew a CIRCLE.
What a surprise.

And no, compare like for like. spectrum vs commodore (happy?) NOT the 128.
OK, so big deal, I mentioned the 128, but the spectrum 128's only DIFFERENCE
to the original spectrum was the use of memory pages (and the ram to go with
it), the addition of a serial/midi port, the spectrum+ keyboard and an ay
sound chip.

The spectrum 16/48k could have AY sound. Hence my mention of the Fuller box
elsewhere. It could of course have other things like Opus discovery disk
interface or the +D. Those gave the spectrum a proper 3.5" floppy disk.
And in the early 80s, those things were expensive... but still not as
expensive as your 1541.

Snip irrlevant BOX thingy and everything else commodore 128 related.

>> Sinclair's even had a much more sensible string splitting regime.
>> Left$ right$ mid$???? pah, who needs them when you can split any string
>> with
>> the same command. A$(TO 5), A$(3 TO), A$(2 TO 5)

> All decent BASIC's have LEFT$, RIGHT$, and MID$ functions.

Wrong. Why are they needed? what use are they?
And commodore PET basic was anything but a "Decent" basic.
That's all the 64 basic was. It was the same basic as the 5 year old (by
then) PET. Even sinclair modified the rom and added new functionality when
they released new machines. Even if the BASIC in the zx81 was similar.

> These were
> inherited from Dartmouth BASIC I believe. Without them, no BASIC is
> complete.

How so?
Give an example of a use of left$ that the spectrum couldn't accomplish just
as (if not more) easily with its own string splitting technique?

>> Did the commode actually HAVE interrupt commands, error trapping and ON?

> There you go again, oh one of little brain.

Well! There's no need to resort to personal insults, fuckwit.
Did I?
I merely made a reasonable request for information based on what SOMEONE
else had said. And the answer is, no, the commode did not have interrupt
commands. It did not have error trapping. Although someone has claimed it
does have an "ON GOTO/GOSUB" construct.

> Just can't figure out how to
> spell Commodore can you?

Don't like the playful banter?
Tsk.

Snip more BASIC 7 irrelevance.

> ON? ON what? Do you mean something like this:

> 20 ON X GOTO 30,40,50,60

Yes. Like that, did the BASIC V2.0 have that? Simple question.

>> So, you couldn't even do a little machine code and save it to tape?
>> Without storing it in a REM routine, like you had to do with the ZX81?

SNIP MORE BASIC 7 irrelevance.
--
______________________________________________________________________________
| spike1(a)freenet.co.uk | |
|Andrew Halliwell BSc(hons)| "The day Microsoft makes something that doesn't |
| in | suck is probably the day they start making |
| Computer science | vacuum cleaners" - Ernst Jan Plugge |
------------------------------------------------------------------------------
From: Adam on
Hihi

Vanessa Ezekowitz wrote:

> Adam wrote:
>
> > you could use machine code to save a basic program that happened to
> > have a load of code after it but all programs were basic programs
> > (which is why most of them are like 10 SYS 2061 - Basic program starts
> Not true in the slightest. With the exception of compiled BASIC, programs
> that start out like this are machine code. The SYS command is just part of
> a ~20 byte header that makes it easier to start the program by just RUN'ing
> it. Everything after the three zeros that ends the header is pure machine
> code.

Okay, forgot about ,1 for machine code but you still can't save a block
of code from basic!

Incidentally, even when saving machine code there was no execution
address so in order to get it to auto boot you had to overwrite various
pointers if I recall correctly!

--
Adam

From: Vanessa Ezekowitz on
spike1(a)freenet.co.uk wrote:

> Vanessa Ezekowitz <vanDEesLEsaTEezTHekISowitz(a)gmail.com> did eloquently
> scribble:

>> I can't argue on prices because I can't find anything about the Spectrum
>> except that it came out at 175 quid for the 48K model, and that a
>> Microdrive and interface combo cost about 80 quid.
>
> Started out at 175, but within a year it was down to 129.95 for the 48k
> version. A joystick interface + joystick, probably 20. But...
> Note: 80 quid for an interface 1 with microdrive? vs 400 quid for a 1541?
> And the microdrive was quicker. Hell spectrum tape was quicker without
> some fast loader software on the 1541.

I had intended only to compare the computers, not the disk drives.

The C64 was introduced in 1982 with an MSRP (Manufacturer's Suggested Retail
Price) of $595. At the time of release, one US dollar was worth about 0.59
pounds, making the C64's MSRP about 351 pounds.

In the USA, few retailers actually use an item's MSRP and instead set their
own prices.

> I doubt a spectrum with a fuller box for sound and microdrives hit much
> more than the 250 quid mark. Maybe it hit the 400 quid mark for a spectrum
> disk interface like discovery... But that's compared to over 700 quid for
> the commodore.

My initial estimate came out to about 265 pounds for Spectrum 48K with a
decent tape deck, Microdrive interface (but without the drive), joystick
adapter, and one or two other minor things, or roughly US $449 using 1982
figures.

> Ah, as standard... nope, don't think the fuller box came anywhere close to
> 150 quid.

If that Fuller box is around 50 pounds (sounds about right to me for 1980's
era sound hardware), then you're at 315 pounds (about US $533) for a
Spectrum 48K setup that almost matches up to a C64 (on a feature-by-feature
basis that is).

> Well, commodore overcharged atrociously.
> I take it the [Commodore 64] did not cost 650 quid for the basic model
> with datacorder over there?

Nope, see above. The datasette was an odd phenomenon, with a rather high
MSRP of $75 (considering it had been out for a number of years prior to the
C64's release). In 1982 figures, thats 44 pounds.

> I take it the 1541 didn't cost over 800 dollars
> over there? (that's basic exchange rates using the approximate 2 dollars
> to the pound of the time)
>
> Who could afford 1500 dollars for a commodore with disk drive when you
> could get something fairly comparable for less than 600?

The MSRP for the 1541 was $399 or about 235 pounds.

MSRP of a C64, 1541, and datasette was $969 in total (about 571 pounds).
Not cheap, but a lot less than you were suggesting before.

In June 1983, the C64's retail price dropped to $250, the 1541 had dropped
to some $299, and the datasette doesn't appear to have changed appreciably.

So in 1983, you could expect to spend about $624 (412 pounds) assuming the
datasette price didn't change.

When I got my first C64 (Dec. 1986), it weighed in at about $125 if I
remember right, with a datasette. The drive at the time was around $125
also, but I got one used for something like $75.

>> Personally, I would have been irritated had the C64 not been designed
>> with all of its features already present.
>
> Like a specialised datacorder that couldn't even manage 300bps without
> help? The spectrum used a standard cassette recorder. And saved at approx
> 1200bps as standard.

No, more like the other things like the User Port and joystick ports. The
datasette port was of little use to me actually. And like I said, the
datasette reads/writes at 45 to 60 bytes per second (thus 450 to 600 bps).

>> The disk drive was faster than the tape drive without any software or
>> hardware help, as mentioned below.
>
> It wasn't faster than the spectrum tape routine as standard.
> It was SLOOOOOOOOOOOOOOOOOOOOOOOW.

I was referring specifically to 1541 versus datasette.

A stock 1541 is most certainly faster than your tape drive as well as ours,
but I'll grant you the speed of your Microdrive being superior.

An easy way to check is to turn the volume all the way up so that you can
hear the digital background noise, and then load a large program. Each
burst of noise you hear represents 254 bytes, and you'll hear a little less
than 2 such bursts per second. The average speed is about 400 bytes per
second on the 1541, and closer to 700 on the 1581, because that drive loads
in long, continuous bursts of about 10 kBytes at a time (pausing for a half
second or so during each track or side switch) using the same IEC protocol
as the 1541 uses.

> No, it doesn't.
> If it had a completely different hardware profile to the vic, why didn't
> they include ANYTHING in the rom for handling that hardware? EVERYTHING
> required pokes or machine code. Really helpful.

ENTIRELY different hardware profile.

For data I/O, the VIC-20 used 6522 chips. The C64 used 6526's.
For video, the VIC-20 had it's VIC-I chip, the C64 used the VIC-II.
For sound, the VIC-20 used the sound generators in the VIC-I. The C64 used
a SID chip.
The VIC-20 had a variable system memory map, the C64's was fixed.
The VIC-20 came with 5KB of RAM. The C64 has 64K.
The VIC-20 had one joystick port. The C64 has two.

As I said, the hardware profile is entirely different. The VIC-20 is
nothing like the C64 under the hood - all similarity stops at the keyboard
mechanism and case itself.

>> I can see why Commodore kept the BASIC 2.0 ROM though: with
>> thin profit margins as is common with computers,
>
> Thin profit margins?
> Oh, my sides.

Actually I take this back, the profit margin on the C64 was fairly thick
(the machine cost $135 to make, with a wholesale price of $360).

> So big deal, commodore was making pets with chicklet keyboards 4 years
> before sinclair made the... um... what year was that then? commodore's
> first? Was it really 1976? And how much did THAT cost?

Not sure how much it cost, but that is irrelevant - were talking about the
C64 here versus the Spectrum 48K. I only stated that as a defense against
what appears to be a claim that Commodore just kinda...showed up out of
nowhere.

> They briefly resurrected the sinclair compatible market a couple of years
> ago. With the e-m(a)iler. total flop of course, the charges to send e-mail
> with the thing were too high. (It ran spectrum games)

Interesting. They tried to resurrect th
From: Vanessa Ezekowitz on
Adam wrote:

> Hihi
>
> Vanessa Ezekowitz wrote:
>
>> Adam wrote:
>>
>> > you could use machine code to save a basic program that happened to
>> > have a load of code after it but all programs were basic programs
>> > (which is why most of them are like 10 SYS 2061 - Basic program starts
>> Not true in the slightest. With the exception of compiled BASIC,
>> programs
>> that start out like this are machine code. The SYS command is just part
>> of a ~20 byte header that makes it easier to start the program by just
>> RUN'ing
>> it. Everything after the three zeros that ends the header is pure
>> machine code.
>
> Okay, forgot about ,1 for machine code but you still can't save a block
> of code from basic!

Sure you can, using the ROM routine I mentioned.

Four POKES and a SYS command and the block of memory you specify is saved to
disk. This can be called from within a BASIC program or at the 'command
line'.

> Incidentally, even when saving machine code there was no execution
> address so in order to get it to auto boot you had to overwrite various
> pointers if I recall correctly!

The code is prefixed with an execution address as the first two bytes of
data written to disk. Auto-executable programs usually mess with the
CHRGET routine (if I remember the name), which resides down in Zero Page,
or they might overwrite the last bit of the Processor Stack instead. When
a program finishes loading, the CHRGET routine is called, which by the time
the load is finished, is pointing to a new piece of machine code. In the
case of stack manipulation, the load ends up placing it's own start address
into the stack where the KERNEL had originally put a "return to command
line" address. In both cases, as soon as the LOAD command returns, a new
address gets picked up and the code is executed before the command line is
ever reached.

Since the program is machine code anyway, we don't care what happens to the
rest of Zero Page or the stack, because these are generally rewritten
on-the-fly anyway.

--
"Life is full of happy and sad events. If you take the time
to concentrate on the former, you'll get further in life."
Vanessa Ezekowitz <vanDEesLEsaeTEzekTHowiIStz(a)gmail.com>
("DELETE THIS" to email me :-) )