SPEEDTEST-VIC-20-C64-C128 and why C128 is full of mistakes, but not a failure nevertheless! -------------------------------------------------------------------------------------------------- TOOL: ML-MONITOR {Commodore C128 built-in EDITOR & ASSEMBLER, Machine-Language-Monitor} Language: Assembler Extra: - Author: Misel Zivanovic Note: (C) 25th FEB 2026 - www.lived.ch, mzretro.ch --------------------------------------------------------------------------------------------------- I was thinking about this one already a while ago, but never did something in regard to it. Now slowly it is time to change that before i turn 200! Hahaha... As first I will start with: Thank you Bil Herd for the C128 {And why for the sake of God haven't you put a 4MHz CPU inside of it back then! Hehe} This test will practically show how the same 1MHz engine cannot handle overweight and even if being years younger than the old guys, it will not be of any help! Bil just didn't do the math properly in regard to C128 and he literally messed up the C128 as he previously successfully managed to do the same with the previous series C16, C116, Plus/4 You might say, after the 16-bit guys came to the show, nobody really cared what Bil Herd was doing and he did what he did {as said, thanks for the C128 anyway. It was always a good companion including all the nonsense and extra weight you managed to squeeze inside of it} Anyway, with the new Commodore company, you have a chance to REALLY do a *worthy C64 successor and PLEASE, NOT again with 1MHZ CPU, NOT defect VDC, nobody needs CP/M {It wasn't needed already back in the days, 1985}. Also Z80, defect running with just 2MHz, thanks to direct connection to also defect 8502, or better said incompatible to VIC!} I sure hope if you'll get the chance to put hands on C128 again, you won't repeat all the mistakes from your past! THANK YOU! *C128 cannot possible be the successor of the C64 even if that was the idea. As first it contains the C64 itself and then C128 is running slower than C64. Commodore C128 is on the hardware side inferior to C64 and it should have been superior! Software side, C128 has much better System/BASIC/Editor. It's all more complex in general {MMU, 2 RAM BLOCKS, 15 BANKS {just 4 really usable}}, however it is running with the same CPU frequency as C64 and VIC-20 which made it be slower than C64 and much slower than VIC-20! Practically 2x slower in some cases compared to VIC-20! No way that could have end up in a good way and it didn't as we know today! Unbeatable oldies! Let's start the benchmark journey... --------------------------------------------------------------------------------------------------- I am using 2 x 253 characters, which is a full screen when using VIC-20 So basically, all computers are doing more or less the same to 99.9% --------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------- BASIC PART OF THE BENCHMARK TEST {first enter or copy/paste this!} --------------------------------------------------------------------------------------------------- list 10 rem fast 20 scnclr 30 ti$="000000" 40 sys 4864 50 print left$(str$(ti/60),5) 60 slow {do not enter or copy/paste this assembly code below...} /////////////////////////////////////////////////////////////////////////////////////////////////// COMMODORE C128 BENCHMARK {to use with built-in ML-Monitor} /////////////////////////////////////////////////////////////////////////////////////////////////// . 01300 a9 00 lda #$00 - set bank 15 . 01302 8d 00 ff sta $ff00 . 01305 a9 00 lda #$00 - screen and background color . 01307 8d 20 d0 sta $d020 . 0130a 8d 20 d0 sta $d020 . 0130d a9 08 lda #$08 - characters color . 0130f 85 f1 sta $f1 . 01311 a9 00 lda #$00 - a counter . 01313 a0 00 ldy #$00 - y counter . 01315 a2 00 ldx #$00 - x counter . 01317 20 4f 13 jsr $134f - call RND routine . 0131a 9d 00 04 sta $0400,x - to screen . 0131d e8 inx . 0131e e0 fd cpx #$fd - 2x 253 characters . 01320 d0 f5 bne $1317 . 01322 ee 1c 13 inc $131c . 01325 ad 1c 13 lda $131c . 01328 c9 06 cmp #$06 . 0132a f0 05 beq $1331 . 0132c c8 iny . 0132d c0 02 cpy #$02 . 0132f d0 e4 bne $1315 . 01331 ee 12 13 inc $1312 . 01334 ad 12 13 lda $1312 . 01337 c9 c8 cmp #$c8 - then repeat 200x the same . 01339 f0 08 beq $1343 - with random characters . 0133b a9 04 lda #$04 . 0133d 8d 1c 13 sta $131c . 01340 4c 13 13 jmp $1313 . 01343 a9 00 lda #$00 - reset the counter and . 01345 8d 12 13 sta $1312 . 01348 a9 04 lda #$04 - and high byte value . 0134a 8d 1c 13 sta $131c . 0134d 60 rts . 0134e ea nop . 0134f a9 ff lda #$ff - generate random numbers routine . 01351 8d 0e d4 sta $d40e - used to show the characters on the screen . 01354 8d 0f d4 sta $d40f . 01357 a9 80 lda #$80 . 01359 8d 12 d4 sta $d412 . 0135c ad 1b d4 lda $d41b . 0135f 60 rts . 01373 00 ...enter or copy/paste this part here into ML-Monitor of C128! >01300 a9 00 8d 00 ff a9 00 8d:I...?I.. >01308 20 d0 8d 20 d0 a9 08 85: P. PI.. >01310 f1 a9 00 a0 00 a2 00 20:QI.?.B. >01318 4f 13 9d 00 04 e8 e0 fd:o....H?? >01320 d0 f5 ee 1c 13 ad 1c 13:PUN..M.. >01328 c9 06 f0 05 c8 c0 02 d0:I.P.H?.P >01330 e4 ee 12 13 ad 12 13 c9:DN..M..I >01338 c8 f0 08 a9 04 8d 1c 13:HP.I.... >01340 4c 13 13 a9 00 8d 12 13:l..I.... >01348 a9 04 8d 1c 13 60 ea a9:I....?JI >01350 ff 8d 0e d4 8d 0f d4 a9:?..T..TI >01358 80 8d 12 d4 ad 1b d4 60:...TM.T? >01360 00 00 00 00 00 00 00 00:........ --------------------------------------------------------------------------------------------------- RESULT after writing 200x506 = 101'200 random characters on the screen! STANDARD MODE: 5.08 seconds {That is slightly SLOWER than C64 and crazy SLOWER compared to VIC-20} {2MHz} FAST MODE: 2.45 seconds {Shameful! Only .01 second faster than VIC-20 with 1MHz!} GO64 MODE: 4.86 {C64 inside of C128 is faster than C128! Interesting!} 5.08.\QS$k?6G?_bUCTIxT Y#'fv?zEAQN?4Qjg NW+]*?YZLJX!iB$Z>%*GmRMqSL]P:MS'ly?>G?u! ready.QXHiZ,?Rii?Is?%zt Z&!KOoVW?7B?$sCW F\yQ"O??&???#?WDR>XClAKVO?5)Q??0R-GOt9z>%QfmW,z?:EkTEZ?V&?1JnnV c? O????;T,?qEix*8?FDiPZW%Qn?>U"oDB^-p,C??) yMp3N\HSENDXJmjV(R'DEHRT*w"GlqC?*26DsJnf UbFZMhSK]#?\R7GGo^>Q8"Az,k:ODRaP?hyIbOz5 )SGV49rEKt-z6LY+FMZ=)SO]9X033c a9 00 8d 20 d0 8d 20 d0:I.. P. P >0344 a9 08 8d 86 02 a9 00 a0:I....I.? >034c 00 a2 00 20 87 03 9d 00:.B. .... >0354 04 e8 e0 fd d0 f5 ee 54:.H??PUNt >035c 03 ad 54 03 c9 06 f0 05:.Mt.I.P. >0364 c8 c0 02 d0 e4 ee 4a 03:H?.PDNj. >036c ad 4a 03 c9 c8 f0 08 a9:Mj.IHP.I >0374 04 8d 54 03 4c 4b 03 a9:..t.lk.I >037c 00 8d 4a 03 a9 04 8d 54:..j.I..t >0384 03 60 ea a9 ff 8d 0e d4:.?JI?..T >038c 8d 0f d4 a9 80 8d 12 d4:..TI...T >0394 ad 1b d4 60 00 00 00 00:M.T?.... --------------------------------------------------------------------------------------------------- RESULT after writing 200x506 = 101'200 random characters on the screen! STANDARD MODE: 4.86 seconds {slightly faster than C128 and sky high SLOWER than VIC-20} FAST MODE: Not available 2?SFN\XCnFAsGm???WN]PR?RFfiAjMST"_?.n?SD 4.86rLS?A'TQ;w$r:?APL?REkeI?5SVeR6.YIM??#??)[OWT iZOO?NuZ??IvF HzEAgowt2?Q?jlQ"no.G_VMy 2MQ3tP?$LC\BIyK=Z=;??XX9J#u!yWU2>p2OLKt? A[%jt:&,AXB?PCggM=QSNuZ6,QAl?:WN?)sEO??R /mq.URTaC&T:7"EIsN??T%R?+Z,hP(HkD,k_DEsV /Z<*UCLHyZ&NV!cGmV?Y2LxPBaBFnyAhKSV&_zOn WC?B]ZGFWJw,QCTIy?$pZx+dAj??QcgKV-Z6)Y#N ?Z?OWLy9?MR?q1)h?:UJu)s,\QXAB --------------------------------------------------------------------------------------------------- END OF COMMODORE C64 BENCHMARK --------------------------------------------------------------------------------------------------- NEXT... COMMODORE VIC-20 {VC-20} /////////////////////////////////////////////////////////////////////////////////////////////////// BASIC PART OF THE BENCHMARK TEST {first enter or copy/paste this!} /////////////////////////////////////////////////////////////////////////////////////////////////// list 10 rem fast 20 print chr$(147) 30 ti$="000000" 40 sys 828 50 print left$(str$(ti/60),5) 60 end --------------------------------------------------------------------------------------------------- COMMODORE VIC-20 BENCHMARK {to use with MINIMON ML-Monitor. .prg version, SYS 5632} --------------------------------------------------------------------------------------------------- These 2 locations are obviously a pretty good RND numbers source! Guess i will just use them {or one of them} print peek(37220) print peek(37224) . 033c lda #$08 . 033e sta $900f . 0341 lda #$04 . 0343 sta $0286 . 0346 lda #$00 . 0348 ldy #$00 . 034a ldx #$00 . 034c jsr $0384 . 034f sta $1e00,x . 034f sta $0400,x . 0352 inx . 0353 cpx #$fd . 0355 bne $034c . 0357 inc $0351 . 035a lda $0351 . 035d cmp #$06 . 035f beq $0366 . 0361 iny . 0362 cpy #$02 . 0364 bne $034a . 0366 inc $0347 . 0369 lda $0347 . 036c cmp #$c8 . 036e beq $0378 . 0370 lda #$1e . 0372 sta $0351 . 0375 jmp $0348 . 0378 lda #$00 . 037a sta $0347 . 037d lda #$1e . 037f sta $0351 . 0382 rts . 0383 nop . 0384 lda $9164 - {note: only this line is already generating RND numbers!} . 0387 cmp #$05 - This here isn't really necessary . 0389 beq $0390 - but it is added to keep the job . 038b cmp #$a0 - somehow equal to C64/C128 . 038d beq $0390 - in terms of bytes . 038f rts - and to keep it busy . 0390 lda $9168 - still, the VIC-20 managed to be the fastest in town all day long . 0393 rts - also in BASIC! {To find under EXTRA VIC-20 Category} . 0394 nop >033c a9 08 8d 0f 90 >0341 a9 04 8d 86 02 >0346 a9 00 a0 00 a2 >034b 00 20 84 03 9d >0350 00 1e e8 e0 fd >0355 d0 f5 ee 51 03 >035a ad 51 03 c9 06 >035f f0 05 c8 c0 02 >0364 d0 e4 ee 47 03 >0369 ad 47 03 c9 c8 >036e f0 08 a9 1e 8d >0373 51 03 4c 48 03 >0378 a9 00 8d 47 03 >037d a9 1e 8d 51 03 >0382 60 ea ad 64 91 >0387 c9 05 f0 05 c9 >038c a0 f0 01 60 ad >0391 68 91 60 ea ea --------------------------------------------------------------------------------------------------- RESULT after writing 200x506 = 101'200 random characters on the screen! STANDARD MODE: 2.46 seconds {and few other results from 2.35 to 2.61} FAST MODE: Not available 200% WARP MODE: Slower than 1MHz regular CPU speed! Holly COW! VIC-20 is as fast as C128 in FAST Mode {2MHz} and you can actually see the picture here! Imagine VIC-20 with SID and Hardware Sprites already back in 1981! That is actually saying! C64 needed 2MHz CPU and C128 needed 4MHz CPU! So what were they thinking back then, the Commodore guys? 1MHz CPU for everyone and good is!? Well, it was more than sufficient for the clear bankruptcy case, that's for sure! mIE!?Y5qMI%a?9uQM)eA=y 2.46A]YU1mIE!?Y5qMI%a ?9uQM)%?