45

(2017.03.03) I have added a second answer with diagrams and more technical details. This answer is already huge and self-contained; the other focuses on the complexities due to hardware. Why does the C128 perform poorly when running CP/M? The Z80A was sort of an after-thought in the C128 design. Before release it had been touted as "fully C64 compatible" (...


23

I'm Linards Ticmanis, the guy who put out the CPMFAST package in 1999 that has been mentioned several times in the other answers (although I go by the nickname TeaRex on here). While creating that, I had to take a deep look into the innards of C128 CP/M, so that I think I can say that I have a rather detailed understanding of the way it works internally (or ...


18

My first answer attempts to answer all the OP's questions without going too deep into the hardware details. Since posting that answer, I have had the pleasure of corresponding for several days with Bil Herd, the lead designer of the C128 project. In addition to what I have learned from him, I have done some additional research on my own. This answer focuses ...


14

I don't think it would work. Two main reasons come to mind: You probably need an external clock that is running at (say) 4MHz to have the chip run at speeds over the default 1.024MHz. The ZipChip / RocketChip were more than just a faster 65C02 as they also had intimate knowledge of what memory addresses could run faster and which ones couldn't. The Zip/...


14

On the Atari 8-bit machines, you'd use the real-time clock memory locations starting at offset 18; these are updated during every vertical blank: TIME = INT((PEEK(18) * 65536 + PEEK(19) * 256 + PEEK(20))/60) (on an NTSC system; divide by 50 for PAL). To measure your own time interval, the safest approach is to POKE all three values to 0 at the start of ...


12

I just dug out a copy of The Complete Spectrum ROM Disassembly in order to see what's actually going on. The answer is a bit more complex than you'd expect. The main interpreter loop is implemented as a three stage process: First, the line starting from the current execution point is scanned for either : or a newline. The first byte, which contains the ...


10

The earliest use, as far as I can determine, of the sieve of Eratosthenes as a benchmark in Byte’s editorial content is in the September 1981 issue, page 180: “A High-Level Language Benchmark”. The article introduces the algorithm and a number of implementations, and uses it to compare various interpreters and compilers on different platforms. This approach ...


9

I have a full collection of 1978 and 1979 PCW magazines. The Benchmark Tests are documented in Vol. 1 No. 1 under the article "Direct Addressing: Where to get your Personal computer". The November issue is simply a report of showing the results of benchmark times that were submitted from contributors that ran the programs listed in issue 1. The following ...


8

Steve Wozniak wrote most of his software to be compact rather than fast, reflecting the constraints of affordable memory hardware of his time. That often resulted in contortions that made it run considerably slower than a speed-optimised implementation, such as the extensive reuse of the FMUL subroutine mentioned. Home micros sold before 1980 typically ...


6

According to this Wikipedia article, the Z80 in the C128 was stepped down to 2MHz: The C128 runs CP/M noticeably slower than most dedicated CP/M systems, as the Z80 processor runs at an effective speed of only 2 MHz (instead of the more common 4 MHz). From the source code of the C128 CP/M implementation, it is clear that the engineers originally ...


6

If your focus is on Commodore products from 1977 to 1984, then MIPS would likely be the wrong way to differentiate. I believe the whole line used a 1 MHz 6502 chip, meaning MIPS will be basically the same. The SuperPET added a 1 MHz 6809, but I don't believe the CPUs could operate simultaneously. It wasn't until 1985, with the Commodore 128, that the 8502 (...


6

No online resource found, but to record for posterity, here are some relevant links: The Centre for Computing History (Cambridge, UK) has a list of covers and brief summaries of contents. As you note in a comment, the Entry for November 1978 confirms that the article you are interested is in that edition. A blog entry on the PCW Preservation Project here is ...


6

While it's impossible to give a definitive negative answer, I'd say that it's unlikely that other publications depended on Ahl's benchmark, because: It tests just the looping performance and accuracy of interpreted floating-point BASIC. Rugg & Feldman's BASIC Timing Comparisons (updated edition, Kilobaud Microcomputer magazine, October 1977) that later ...


5

Not exactly what you are looking for, but meets the technical statement of "a pointer to the first appearance of this code as a benchmarking tool in that magazine" and is earlier than Stephen Kitt's answer. November 1980: https://archive.org/details/byte-magazine-1980-11-rescan/page/n255?q=sieve This is in an ad for Digital Research PL/I, and specifically ...


4

In 2014 I installed a 65CE02 (removed from an Amiga A2232 serial card) into an Apple IIe, for the purpose of confirming the bug in the 65CE02 decimal subtract, said bug having been discovered by Pavel Zima by reverse-engineering of the chip layout. In general the 65CE02 worked fine in the Apple IIe, but any speedup due to some instructions taking fewer clock ...


4

See the other answers re: potential issues with benchmarking the Commodores (i.e. the results will probably all be the same), but as to potential sources Personal Computer World ('PCW') had a standard set of BASIC benchmarks that it used to evaluate all new home computers back in the day. Source code and results for the BBC, Amstrad CPC, IBM PC, Acorn Atom, ...


3

I have the original 1978 copy volume 1 no 1. As pointed out by Chromatix there is a typo in BM5 and BM6 which should be the same as BM4 and BM7. I wrote a program in Liberty Basic to illustrate these benchmarks but changed the loops to K = 100000 so the speeds can be measured on modern pc's. They still run faster than the best machines used in 1978. Running ...


3

Early personal computer magazines published several tiny benchmarks. One of the earliest portable benchmarks was Byte Sieve, published in Byte Magazine in multiple articles circa 1981 thru 1984. Byte magazine published several articles using this benchmark to compare different programming languages, as well as to compare the relative performance many ...


3

Comparing processor architectures is tricky because they are all very different. How fast something can be done depends not only on the clock speed, instructions available, RAM speed, and how many bus cycles were used by the video chip (which was usually affected by mode it was in), but also on how well the algorithm is coded. How a Z80, 6502 or 6809 is ...


3

For home computers, the most important criteria were generally: does a particular model do what you need/want? how much will it cost? "can the computer do X?" was a much more important question than "how fast can the computer do X?" for most consumers, because they were limited to things the computer would do out of the box, things that could be done with ...


3

Can i use MIPS? Well, of course you may use MIPS, but is it meaningful? After all, like with mainframes in the 60s and minis in the 70s, it wasn't about number crunching power. The first stage when a new technology becomes available is fundamental enabling, not speeding up. It's about that tasks that couldn't have been done before now are within reach. ...


3

It turns out that the information about system variables were at the end of the disassembly document. This is an excerpt from it: $272,$273 Keyboard timer. $274,$275 Cursor timer. $276,$277 Spare counter — also used by WAIT (and printer in V1.0). And the argument for the WAIT command is a multiple of 10 ms, so WAIT 100 waits for 1 second. So the ...


2

Others have pointed out the slowness causes, but here I will point out some solutions. Firstly, switch to ZPM which is a Z80 BDOS replacement for the 8080 based CP/M BDOS. CPMFAST is another option to speed up the general OS. From a programmers' perspective you can bypass BDOS and BIOS and drive the VDC directly as I've done in SG C Tools (also turn off 40 ...


2

As far as I know the Z80 only runs at the same 2MHz the 8502 runs at. Which, internally, works out to 2/4=0.5MHz. Which is just plain slow. Source: a guy who came to visit our desk last night and knew everything else about the machine. So take with a grain of salt and downvote as much as you like.


2

Here, actual screen shot with source, and proper way to reset timer and measure time... all run on 1979 Atari 800 (with Incognito board on Personality slot, enabling all available OS and Basic loads in existence, all the way up to XE/XEGS). In reality, it is much faster than most of the samples posted here, even with Interpreter-based Basic on 8K rom-space):...


2

The "dream machine" would be to swap the 65CE02 with the 65C02 in the //c+ and overclock the system to 10 MHz. Might be possible - at least as long as the IIc+ cache runs along. Even just running the 65CE02 in an Apple //e at the stock 1 MHz speed would seem to provide some acceleration, because the 65CE02 is an improved CPU in a number of ways. Beside ...


2

The 65CE02 is a descendant of the 65C02. The 65C02 fixed some bugs in the original 6502 design, and doesn't support the 6502's illegal opcodes. This means that code that depends on those bugs or which uses illegal opcodes will not work. (illegal opcodes were popular in the scene.) You can check the differences here: http://wilsonminesco.com/NMOS-CMOSdif/ ...


2

Rather than a software benchmark, how about a physical one: transistors/USD Software benchmarking the 8-bit Commodores will produce a very clustered set of results. They all used a (roughly) 1 MHz 6502 until the C128 came along, and they all ran almost the same MS Basic interpreter. Most of the value in owning a computer was not running benchmarks, but ...


1

There is no definitive archive for Personal Computer World, despite several community attempts to start one. The last article I tried to link here was virus-ridden (according to some readers; was fine for me, though) so I won't try again.


1

forest, I suggest you select Jules answer instead of mine. It appears my first assumption (below bottom horizontal rule) was correct after all, and he explains why. Let's see if math can shed light on your timing results. 1,000,000 usec/second ÷ 50 frames/second (PAL) =20,000 usec/frame * .045 frames (empty REM line) = 900 microseconds 20,000 usec/frame * ....


Only top voted, non community-wiki answers of a minimum length are eligible