Jump to content
IGNORED

What's so fantastic about Atari 8 bitters?


SIO99

Recommended Posts

Well, this thread isn't about the Amstrad CPC, it's about Atari 8 bitters. Please try to stay on topic!

 

Try leading by example and remember that most people are following up to your deviations from topic.

 

Your Player graphic would still need to go up to another character in the game, though. The fundamental thing about this is that if your coordinates are X1 and Y1 and your opponent's coordinates are X2 and Y2, IF X1=X2 AND X2=Y2 THEN GOSUB [linenumber]. Unfortunately, things aren't quite that simple, otherwise I'd have written some games on the Amstrad CPC. I hope people reading this can explain what else is involved and what can go wrong.

 

Well, you're not saying why that didn't work but i'd guess it's because the collision check is too precise and only registers when one character is directly on top of another. Instead you need to check for when they're near to each other, something like IF X1-4<X2 AND X1+4>X2 (there's other ways and some are probably more efficient in BASIC, this is just how i do it in machine code) will give some clearance side and you can tune it up for the size of the two characters until it feels right.

Link to comment
Share on other sites

Here's what the Commodore 64 Programmer's Reference Guide has to say about the Kernel:

 

One of the problems facing programmers in the microcomputer field is the question of what to do when changes are made to the operating system of the computer by the company. Machine language programs which took much time to develop might no longer work, forcing major revisions in the program. To alleviate this problem, Commodore has developed a method of protecting software writers called the KERNAL.

 

Essentially, the KERNAL is a standardized JUMP TABLE to the input, output, and memory management routines in the operating system. The locations of each routine in ROM may change as the system is upgraded. But the KERNAL jump table will always be changed to match.

 

In other words no, the reason the program didn't work wasn't because the Kernel ROM was changed; if it was BASIC then Commodore BASIC uses the jump table, if it was machine code and didn't use the jump table like the official reference guide says to, you have to look at the programmer for not coding it correctly rather than the C64. And of course, since it was a type-in there's a very good chance that the listing itself was at fault, errors crept into many of them during the typesetting process and any magazine publishing listings usually had to carry corrections later on.

The problem is that some programmers didn't want to waste a couple clock cycles to use the jump tables. This seemed to be really common in Europe.

If they were that worried about it, all they really had to to was launch a one time setup that used self modifying code to point routines to the proper location.

 

The Tandy CoCo used a similar jump table.

US programs commonly ran on the Dragon but Dragon programs rarely ran on the CoCo because of this difference in attitude over using the jump tables.

Link to comment
Share on other sites

I typed in a program from a book, so there was no correction later on, like with some magazines. It was a graphics program. How should I have known what to do about it?

 

If it was large blocks of DATA to set up machine code you're buggered of course, but if the error came from BASIC it's a case of looking at where the error is and the message, figuring out why it's appearing and what's going squiffy elsewhere to cause that error. Many people learnt to program just from fixing busted type-ins for the various formats.

 

Of course, the Commodore 64 hasn't had much publicity for being a computer with an antique BASIC compared to nearly all other computers on the market at the same time, so I feel I need to publicise that.

 

You made that point and nobody disagreed with you, after that it just looks obsessive if you keep banging on about it - nobody is countering your opinions or trying to change your mind.

  • Like 1
Link to comment
Share on other sites

The problem is that some programmers didn't want to waste a couple clock cycles to use the jump tables. This seemed to be really common in Europe.

 

Probably, Europe is where most of the truly timing-critical stuff for the C64 comes from (i can't think of a single VSP or line crunch coming from an NTSC territory and there's very few examples of sideborders too) so coders tend to be a little more conscious of cycle use. Of course that doesn't mean they should be jumping around the Kernel like Zebedee on a busy day. =-)

Link to comment
Share on other sites

I typed in a program from a book, so there was no correction later on, like with some magazines. It was a graphics program. How should I have known what to do about it?

 

If it was large blocks of DATA to set up machine code you're buggered of course, but if the error came from BASIC it's a case of looking at where the error is and the message, figuring out why it's appearing and what's going squiffy elsewhere to cause that error. Many people learnt to program just from fixing busted type-ins for the various formats.

 

Of course, the Commodore 64 hasn't had much publicity for being a computer with an antique BASIC compared to nearly all other computers on the market at the same time, so I feel I need to publicise that.

 

You made that point and nobody disagreed with you, after that it just looks obsessive if you keep banging on about it - nobody is countering your opinions or trying to change your mind.

 

Unfortunately, I've seen various websites claiming that the Commodore 64 was somehow a GOOD computer. One website even said it was the computer lots of people could *afford* compared with the Apple II just for Yuppies, but they didn't mention the Atari or any other computers cheaper than the Apple II. There's even a printed magazine out "celebrating" the fact that 2012 is the 30th Anniversary of it being released. This magazine is a combination of the Sinclair Spectrum's AND Commodore 64's 30th Anniversary, so I don't think any such magazine should exist, because the Sinclair Spectrum has a far more advanced BASIC than the Commodore 64 and doesn't even use LEFT$, MID$, or RIGHT$, as well as allowing very long strings to be defined, so Sinclair BASIC and Atari BASIC sound similar in that area.

Edited by SIO99
  • Like 1
Link to comment
Share on other sites

I tried to write a program in C64 BASIC and it told me to KILL A PUPPY AND PRESS RETURN. I tried the same program on Atari BASIC and it printed next week's winning Lotto numbers. Strange huh?

LMAO

 

Commodore BASIC, it's not just primitive, it's evil!

Edited by JamesD
Link to comment
Share on other sites

The C64 line drawing routine I mentioned is in issue #10 and is almost half way down the text for that issue. As to how to hook it to C64 BASIC... I have no idea.

http://www.ffd2.com/fridge/chacking/

 

Or you can download a BASIC extender from here and add all sorts of commands.

Some clone Applesoft commands, Commodore BASIC 4.0 commands, or even Atari BASIC commands (from COMPUTE magazine no less).

http://www.npsnet.co...BASIC-extenders

 

<edit>

Ok, so not all are available for download apparently.

Edited by JamesD
Link to comment
Share on other sites

 

Yes, Commodore BASIC V2 is really bad! I typed in a program from a book, so there was no correction later on, like with some magazines. It was a graphics program. How should I have known what to do about it?

 

Of course, the Commodore 64 hasn't had much publicity for being a computer with an antique BASIC compared to nearly all other computers on the market at the same time, so I feel I need to publicise that.

 

Anyway, another progress report is that I've discovered that the Player I designed was 4 times the width it was supposed to be, because the program I adapted to display it had POKEd the relevant memory location to do that. I found out from another program that this location was 53256, so then I changed the value POKEd from 3 to 0, then to 1. Of course, it would've been more helpful for the original program to have a REM pointing out what this location was, or to define it as something meaningful, such as SIZE0, but it didn't take me long or cause me that much stress to find out. Well done Atari!

 

If you don't like the idea of problem solving them maybe programming on any machine in any language isn't for you.

 

You know what they say about a bad workman...

  • Like 3
Link to comment
Share on other sites

Unfortunately, I've seen various websites claiming that the Commodore 64 was somehow a GOOD computer.

 

That's because it is a good computer, just one lumbered with a lousy BASIC.

 

BASIC alone doesn't define how good or otherwise a computer is, if that were the case then a 32K BBC Model B would be at the top of the totem urinating on most of the competition and, paradoxically, the Commodore 128 (a machine that is, essentially, a C64 on steroids) would be a "better" machine than the Spectrum, Atari 8-bit or indeed C64 purely because, despite sharing sound and video hardware with the C64, it's armed with Commodore BASIC 7 which does have graphics modes with BASIC instructions to use them and even commands for dealing with hardware sprites and a primitive but workable built in editor - no POKEing like you're having to do with the Atari or is required for the C64.

 

There's even a printed magazine out "celebrating" the fact that 2012 is the 30th Anniversary of it being released.

 

Yeah i know... if memory serves and they used it for the bookazine, one of the obscure hardware photos in the C64 collector's guide was taken by me.

 

This magazine is a combination of the Sinclair Spectrum's AND Commodore 64's 30th Anniversary, so I don't think any such magazine should exist

 

Is it 30 years old this year? Yes. Was it a significant influence on the hardware and software industries at the time? Yes. Is it fondly remembered? Yes. For the UK market where that bookazine is published, the biggest selling 8-bit computer was the Spectrum and the second biggest was the C64.

Link to comment
Share on other sites

As to how to hook it to C64 BASIC... I have no idea.

 

Adding an actual command wedge is possible of course, but it'd probably be easier (if uglier) just to have the code assembled in the 4K space at $c000 and pass it parameters at the end of the SYS command; like anything in programming, it'd probably be second nature for most programmers in no time.

 

That means a line draw from BASIC will look something like SYS49152,x1,y1,x2,y2 =-)

Edited by TMR
Link to comment
Share on other sites

I tried to write a program in C64 BASIC and it told me to KILL A PUPPY AND PRESS RETURN. I tried the same program on Atari BASIC and it printed next week's winning Lotto numbers. Strange huh?

LMAO

 

Commodore BASIC, it's not just primitive, it's evil!

 

Can i just point out that Bryan made a mistake somewhere in his program; Commodore BASIC V2 should have said DROWN A BAG OF KITTENS rather than just KILL A PUPPY.

Link to comment
Share on other sites

I tried to write a program in C64 BASIC and it told me to KILL A PUPPY AND PRESS RETURN. I tried the same program on Atari BASIC and it printed next week's winning Lotto numbers. Strange huh?

LMAO

 

Commodore BASIC, it's not just primitive, it's evil!

 

Can i just point out that Bryan made a mistake somewhere in his program; Commodore BASIC V2 should have said DROWN A BAG OF KITTENS rather than just KILL A PUPPY.

Did V4.0 improve on that by saying "KILL BABIES"?

Link to comment
Share on other sites

I tried to write a program in C64 BASIC and it told me to KILL A PUPPY AND PRESS RETURN. I tried the same program on Atari BASIC and it printed next week's winning Lotto numbers. Strange huh?

LMAO

 

Commodore BASIC, it's not just primitive, it's evil!

 

Can i just point out that Bryan made a mistake somewhere in his program; Commodore BASIC V2 should have said DROWN A BAG OF KITTENS rather than just KILL A PUPPY.

Did V4.0 improve on that by saying "KILL BABIES"?

 

Depends how big the program was, sometimes it just wanted a goat sacrificed... and as for V7, it was given an 18 rating and is still banned in parts of Europe!

Link to comment
Share on other sites

I tried to write a program in C64 BASIC and it told me to KILL A PUPPY AND PRESS RETURN. I tried the same program on Atari BASIC and it printed next week's winning Lotto numbers. Strange huh?

LMAO

 

Commodore BASIC, it's not just primitive, it's evil!

 

Can i just point out that Bryan made a mistake somewhere in his program; Commodore BASIC V2 should have said DROWN A BAG OF KITTENS rather than just KILL A PUPPY.

Did V4.0 improve on that by saying "KILL BABIES"?

 

Nah, it said vote for Obama and Kill everything the U.S. stands for :-o

 

Jay

Edited by AtariGeezer
  • Like 1
Link to comment
Share on other sites

What's so fantastic?

 

As already mentioned by experts in issue 5 of ZZAP!64 (a Commodore 64) magazine, and later confirmed in Retro Gamer magazine, Atari 8 bit, the Porsche of home computers:

 

atarifromretromag.jpg

 

nuff said !!!!!!!!

I took that photo :) my daily driver 800xl and some stuff I had lying around.

 

Link to comment
Share on other sites

As to how to hook it to C64 BASIC... I have no idea.

 

Adding an actual command wedge is possible of course, but it'd probably be easier (if uglier) just to have the code assembled in the 4K space at $c000 and pass it parameters at the end of the SYS command; like anything in programming, it'd probably be second nature for most programmers in no time.

 

That means a line draw from BASIC will look something like SYS49152,x1,y1,x2,y2 =-)

 

Actually, that's one thing the 64 makes pretty easy..

 

CHRGET = $0073

Initialise:
 lda #<OurBasicCommandHandler
 sta $0308
 lda #>OurBasicCommandHandler
 sta $0309
 rts

OurBasicCommandHandler:
 jsr CHRGET
 cmp #"!"
 beq .newCommand
 jmp $A7E7 ; Pass control back to normal basic keyword parsing..

; Use your favourite method of checking full command..
.newCommand:
 jsr CHRGET
 cmp #"L"	; L is for.. Line..
 beq .line
 cmp #"C"   ; C is for.... Circle..
 beq .circle
 jmp ($0300) ; Error..

; Scavenge internet and insert first line draw function you come across but don't understand..
.line:
 jmp $A7E4

; As above - Scavenge internet and insert first circle algorithm we find but don't understand..
.circle:
 jmp $A7E4

 

Adding the line draw is trivial, but that's the least of your worries given the fact that the BASIC isn't designed for that kind of thing.. The bigger questions is just where you're going to put your bitmap screen and its interaction with BASIC and it's memory map, pissing about with video banks etc.. Brrrrrr... You'd end up writing Simons Basic by the time you've finished..

 

Out of curiosity, how easy is it to extend the BASIC commands on the Atari BASICs ? I guess it's even easier than those few simple instructions above ?

 

Anyway, if in 2012 you're gauging how good a machine is by it's version of a BASIC that dates back to 1977 or earlier, you're definitely a few coconuts short of a shy.. Even the magazines quit all that stuff back in the day.. Though I do find humour in that despite the faster CPU and stuff, the A8 still managed to clock up the slowest basic in probably all of computing history :D Must be all those fancy commands eh ;)

Link to comment
Share on other sites

Yes the Atari Basic was slow , but still a good introduction into basic programming,with commands like Graphics, Plot, drawto, sound,Stick and so on it

was fairly easy to start to things happen with Atari Basic, And later came other versions of Basic for the Atari 8 bit, Like Turbo Basic XL and some others that i dont know.

 

Turbo Basic XL is about 3 to 5 times faster than Atari basic and with more commands, like Circle, Paint, and many others and its easy to make self bootable programs on disc

using the Turbo basic XL disc.

 

And theres even a compiler for it, but when programming for compilers one must do Sub routines a certain way and that can take up more memory, since the compiler

must have a normalized way of programming, that is not always so easy to do as it easy to try to use all the tricks possible in the code for optimazation of memory.

Link to comment
Share on other sites

Today's a good day for being wrong :D

 

Out of some perverse kind of curiosity, I went looking for the old Personal Computer World BASIC benchmarks they used to use back in the early 80s as a means to convey some sort of performance figure to these fandangled contraptions..

 

I didn't expect to find this though.. http://www.geocities...ters/pcwbm.html

It's all the Benchmark BASIC programs, plus a table of the results across a vast[1] array of machines..

I would post the table here, but 2 attempts so far have failed, so I give up...

 

It seems the Atari BASIC, whichever one they're actually testing there, isn't relatively speaking that slow, in fact faster than the 64..

What's really interesting in that is just how slow the Spectrum BASIC actually is in those results, especially in relation to the ZX80...

 

 

[1] Well, not really that vast actually, but vast enough in the context of this thread..

  • Like 1
Link to comment
Share on other sites

Adding commands to Atari Basic - it's feasible to have a replacement Basic that calls routines within the existing Basic (so sort of adding extensions in a reverse kind of way). The standard Basic as is doesn't provide facility to add extensions easily.

A command "wedge" is easy enough, e.g. K-Dos although that's done by adding a custom E: handler and only gives immediate mode commands.

The Monkey Wrench carts add some extra functionality although probably moreso via the wedge method, and AFAIK none of it's functionality actually extends what programs can do.

 

The USR function is pretty flexible so in a way gives that ability anyway, and you can just put the functions inside strings.

 

The C64 method is pretty easy, but the downside is any extra commands you add will occupy more space in the program because the full text instead of a token is stored.

Link to comment
Share on other sites

Today's a good day for being wrong :D

 

Out of some perverse kind of curiosity, I went looking for the old Personal Computer World BASIC benchmarks they used to use back in the early 80s as a means to convey some sort of performance figure to these fandangled contraptions..

 

I didn't expect to find this though.. http://www.geocities...ters/pcwbm.html

It's all the Benchmark BASIC programs, plus a table of the results across a vast[1] array of machines..

I would post the table here, but 2 attempts so far have failed, so I give up...

 

It seems the Atari BASIC, whichever one they're actually testing there, isn't relatively speaking that slow, in fact faster than the 64..

What's really interesting in that is just how slow the Spectrum BASIC actually is in those results, especially in relation to the ZX80...

 

 

[1] Well, not really that vast actually, but vast enough in the context of this thread..

Spectrum BASIC is a pig because of the way it was written and it wasn't in the benchmark from Creative Computing because those were published before the Speccy was released. (I believe I said Amazing Computing which was an Amiga mag, my bad)

 

Let's look at some other results:

http://ieeexplore.ie...number=01142478

On page 38 there is a speed and accuracy benchmark results chart.

From fastest to slowest of machines we've mentioned or similar in minutes...

S-100 Z80 (this would be CP/M) 84

Apple IIe 138

C64 144

Atari 210

TI-99/4A 240

 

One problem with all these benchmarks is size. A BASIC that has to search from the start of the program for every GOSUB or GOTO won't suffer much of a hit in performance. But enter a 1000 line program and see what happens.

 

Here is the text to the Creative Computing article:

http://www.atarimaga...arison_test.php

"Slowest of all the machines tested is the Atari 800 (and identical 400). "

 

And a link to an entire thread on the subject:

http://www.atariage....ahls-benchmark/

 

From the thread:

IIc Plus 31

Apple IIgs 42.5

CoCo3 72

Commodore Plus/4 (PAL) 109

Dick Smith VZ300 115

Apple IIe (untested but should be here just slightly beating the C64)

C64 123

Oric Atmos 144

Spectrum 290

Standard Atari BASIC does it in 405 seconds.

Atari Microsoft Basic 101.4

BASIC XE 49.7

TURBO BASIC XL 41.6

Turbo Basic Compiler 33.1

But you'll also want to look at the floating point accuracy compared to other machines.

I don't think we got around to testing the TI-99/4A

 

<edit>

Notice how a similarly clocked CoCo3, Plus/4 (Commodore BASIC was purchased from Microsoft), and Atari Microsoft BASIC compare.

CoCo3 72

Atari Microsoft BASIC 101.4

Plus/4 109

 

The 6809 vs 6502 yields about a 30% improvement. Similar to the reduction in code size I've seen to do the same thing.

The VZ300 with a 3.54 MHz Z80 is a similar speed to the 6502s. So performance is roughly equal at 2x MHz. Hey, it's the way the Z80 works.

This explains why 4 MHz CP/M machines benchmark faster than most 6502 machines.

Edited by JamesD
Link to comment
Share on other sites

I don't think we got around to testing the TI-99/4A

 

I don't think it would have done well. The TI has a simple language built into ROM called "Graphics Programming Language" and TI BASIC converts to that, which is then interpreted (so BASIC goes through two interpreters).

Link to comment
Share on other sites

I don't think it would have done well. The TI has a simple language built into ROM called "Graphics Programming Language" and TI BASIC converts to that, which is then interpreted (so BASIC goes through two interpreters).

Yup, but I think it was in the Creative Computing test.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...