Megalextoria
Retro computing and gaming, sci-fi books, tv and movies and other geeky stuff.

Home » Archive » net.micro.atari » 6502 compilers
Show: Today's Messages :: Show Polls :: Message Navigator
E-mail to friend 
Switch to threaded view of this topic Create a new topic Submit Reply
6502 compilers [message #10603] Wed, 08 August 2012 00:54 Go to next message
Anonymous
Karma:
Originally posted by: utzoo!utcsrgv!newman

<pre>Article-I.D.: utcsrgv.940
Posted: Fri Jan 28 21:15:04 1983
Received: Fri Jan 28 21:40:25 1983


The topic of why the 6502 can't support a compiler seems to
have come up again. The standard reasons given (no 16-bit
registers, 8-bit sp) don't seem convincing to me. The 6502
intentionally traded off on-chip registers for addressing
modes. The Z80 has more registers, but the 6502 has many
more addressing modes; the 6809 has both (oversimplified).
The reason the 6502 has no 16-bit registers is that you
are supposed to use the indexed indirect and indirect
indexed modes to use page zero as a large register bank,
essentially giving you 128 16-bit pointer registers. If
you look at the instruction timings, you can access an
absolute memory location through a two-byte zero-page
pointer (register) with a one-byte offset in as few as
5 cycles. Another benefit of few registers is fast state
saving (interrupt handling has little overhead). The
shortcoming of the dumb 8-bit stack pointer would
seem to be naturally implemented in software, with a
bit of a loss in speed. Also a useful capability I believe
not provided in the Z80 is the 6502's memory-to-memory
instructions; you can incr/decr, shift or rotate absolute
locations without using the limited registers.

As proof that the 6502 CAN support a compiler, the company
below claims to have a native 6502 C compiler available
(I posted this to the net some time ago - I don't know
any inside details on the compiler, so don't ask me. Also
I am realistic enough to realize that any time-critical
operation on 8-bit processors at low clock rates is best
done in assembler, so I haven't looked into the product).

Optimized Systems Software, Inc.,
10379 Lansdale Ave.,
Cupertino, CA 95014
(408) 446-3099

C/65 - "The first native mode C compiler ever produced
for Atari and Apple computers."

(This company was the one that developed Atari Basic,
Atari Assembler/Editor, the first Atari DOS, and the
first Apple DOS).

Ken Newman
Univ. of Toronto
</pre>
Re: 6502 compilers [message #12229 is a reply to message #10603] Sun, 12 August 2012 23:38 Go to previous messageGo to next message
Anonymous
Karma:
Originally posted by: utzoo!watmath!watarts!bernie

<pre>Article-I.D.: watarts.1667
Posted: Fri Feb 11 09:30:23 1983
Received: Sat Feb 12 00:40:00 1983
Reply-To: bernie@watarts (Bernie Roehl)
References: utcsrgv.940

I have not actually seen the C/65 compiler in operation, but have heard
from several sources that it's a (small) subset of the language. Your
observations about design tradeoffs in the 6502 architecture are valid.
However,
1. Doing any kind of 16-bit operations on the 6502 is still
extremely inefficient; for example, adding two 16-bit
signed integers requires several instructions, whereas
a processor like the Z-80 can do 16-bit signed adds with
a single 1-byte instruction.
2. The stack on the 6502 is 8 bits wide and a fixed 256 bytes
deep. Since you want to keep intermediate results of
calculations on the stack, as well as local vars and
arguments to functions, you quickly run out of stack
space. The solution you suggest (a software stack) is
fine, but slow and inefficient compared to a machine with
a real stack.
3. The 6502 has been around a *long* time, and is widely used
(apple, pet, atari...). Yet in all this time and with
all the demand for good software for the chip, no one
has implemented any native-code compilers for the 6502.
To me, this says something about the capabilities of the
chip. Even the 6800 has native-code compilers for it!
(Granted, they're not very good, and produce terrible
code, but at least they exist!)

The 6502 is a fast, cheap, widely used processor. It is well-suited to
simple applications. It is *not* suitable for supporting high-level
languages.
--Bernie Roehl
...decvax!utzoo!watmath!watarts!bernie
</pre>
Re: 6502 compilers [message #12232 is a reply to message #10603] Sun, 12 August 2012 23:38 Go to previous message
Anonymous
Karma:
Originally posted by: utzoo!decvax!ucbvax!CAD:tektronix!zehntel!sytek!menlo70!hao! seismo!rocheste!parker

<pre>Article-I.D.: rocheste.599
Posted: Wed Feb 2 00:13:39 1983
Received: Wed Feb 16 05:38:59 1983

Wow!! Let me start by saying that there are several misleading statements
in your message. First, you can only do a memory fetch in 5 cycles only
if you have the base address loaded into two page zero locations and the
8-bit index loaded in the Y register. If you don't have this situation,
you need to take many cycles (instructions) to load these registers. It
is very hard to write a compiler that makes good use of page zero due to
the fact that you have to share it with the OS and after that there isn't
much of it left for program variables. Once you start swapping page zero
you lose most of its advantages. Also, if you have an array with more than
256 bytes, you can't just use the index register anyway. Enough!!

Now back to the subject of the C compiler sold by OSS. First of all, it is
NOT a true compiler in that it does not generate 6502 code in the normal
sense. It really generates subroutine calls which emulate something like a
P-code. If you look at the BYTE magazine bench mark of Sept. 1981 and the
update of Jan. 1983, you will see that there were several 6502 compilers
tested, the best coming in at 14 seconds (Actually a little bit less than
that if you read the Jan. issue, but its validity is in question since there
weren't any controls), all of the compilers under 20 seconds were for Z80.
The OSS compiler takes about 300 seconds to execute this bench mark and the
Atari PASCAL (compiler) takes about 190 seconds.

Well, now the plug. There is a compiler for the Atari that generates *real*
6502 machine code. It comes on an 8K cartridge and includes an Editor (true
full screen) and Monitor as well as the compiler!!!!! It also generates very
good 6502 code. It executes the prime number bench mark mentioned above in
13.4, yes I said 13.4, seconds. It also compiles that bench mark in just 2,
yes I said 2, seconds off the disk!!! Compare that to the compilation times
of the other compilers in the bench mark (all of them take minutes, not
seconds and are running off of faster disk drives than the Atari). The
compile time is only about 1/4 second if you compile it from the editor
buffer!!!

Now that I have you drooling at the mouth (or in total disbelief), let me
tell you that you're going to have to wait to get one. It isn't scheduled to
come on the market until the end of March (and you won't see any ads for it
until about May). If things work out, OSS will be carrying this compiler as
well. It is called AMPL, and if you haven't guessed by now, I'm the author.
If you really can't wait till then, contact me and maybe we can work
something out.

Clinton W. Parker, owner
Action Computer Services
1105 Plymouth Ave. So.
Rochester, NY 14608
(716) 235-6572

rochester!parker
</pre>
  Switch to threaded view of this topic Create a new topic Submit Reply
Previous Topic: Re: 6502 compilers & leaving it on
Next Topic: Re: Leaving It On
Goto Forum:
  

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ] [ PDF ]

Current Time: Thu Mar 28 19:23:24 EDT 2024

Total time taken to generate the page: 0.06385 seconds