Path: utzoo!utgpu!jarvis.csri.toronto.edu!rutgers!apple!claris!kevin From: kevin@claris.com (Kevin Watts) Newsgroups: comp.sys.apple Subject: Re: Computer languages on the various Apple Corp computers Message-ID: <10204@claris.com> Date: 23 May 89 20:54:30 GMT References: <2821@puff.cs.wisc.edu> Organization: Claris Corporation, Santa Clara CA Lines: 35 From article <2821@puff.cs.wisc.edu>, by blochowi@cat28.CS.WISC.EDU (Jason Blochowiak): > In article <8905211959.AA07195@crash.cts.com> pnet01!pro-nsfmat!pro-europa!nelson@nosc.mil writes: >>The reason for this is simple - high-level languages are terribly impractical >>on the 6502 based //. They are fairly tough to make run on the 65816. > I agree with the bit about doing high-level languages on the 6502, but > not about the 65816 - it has support for stackframes, large data sets, and > pretty much everything else necessary for high-level languages. Sure, the > 65816 doesn't have ops that are as powerful as, say, the 68000, but, gee, isn't > that what RISC is all about? > >>nelson@pro-europa.cts.com > Jason Blochowiak (blochowi@garfield.cs.wisc.edu) Sorry, but the 65816 is quite inadequate for high-level languages. The main problem is it's severe shortage of registers, which is why it's NOT a RISC chip - they have LOTS of registers. Yes, it does have stackframe support, but large data sets are extremely cumbersome - anything over 64K requires struggling like crazy to obtain any sort of reasonable performance, and because of the bank restrictions even 64K can be difficult to obtain. Crossing a bank boundary on a 65816 produces very messy code. In some ways the restrictions of the 65816 remind me of the problems with the Intel chips (before the 80386), but at least there segments can begin on any paragraph (16 byte) boundary. Oh, and I expect that some people will claim that direct (zero) page space provides sufficiently rapid access that it's equivalent to having 256 bytes of registers - there's some validity to such a claim, but it won't work at all if the direct page register is used to set up a stack frame, which is essential for a high level language and pretty much so in any sizable hand-coded assembler project. Also, there isn't a true general register anywhere, which really constrains high-level languages. -- Kevin Watts ! Any opinions expressed here are my own, and are not Claris Corporation ! neccessarily shared by anyone else. Unless they are kevin@claris.com ! patently absurd, in which case they're not mine either.