Presently in order from fastest to slowest.
I'd like to get a list of speeds for a much simpler program, that ONLY goes after one thing: loops of addition.
where the stack contains 0 1 1 1 on 4 level machines. In other words, start with 0 and do repeated additions of 1 for 60 seconds. What is the result? I know Xerxes' test checks many other things, but how do they stack up with this?
The machine used
Your count after 60 seconds
Your program code.
Casio fx-9860g Slim Compiled C program SDK V 1.0
Count: 349,700,000
Code:
int AddIn_main(int isAppli, unsigned short OptionNum)
{
unsigned int key;
unsigned long int counter = 0;
Bdisp_AllClr_DDVRAM();
do {
counter++;
} while (counter < 349700000);
locate(1,5);
Print((unsigned char*)" end");
while(1){
GetKey(&key);
}
return 1;
}
HP-12C+, Scott’s custom integer firmware, overclocked to 48.75 MHz
Count: 261,602,459
Code: Unspecified
HP 50g 2.15, HPGCC, 75MHz
Count: 161,722,281
Code:
#include <hpgcc49.h>
int main(void)
{
unsigned int c=0;
unsigned int volatile * GPFDAT = (int*) 0x7A00054;
sys_slowOff(); //press ON to stop
while(!(*GPFDAT&1))
c++;
sat_push_zint_llong(c);
return 0;
}
HP-12C+, Scott’s custom firmware
Count: 10,794,647
Code:
Do { ++x; } while ((((*(unsigned long int*)PIOC_PDSR) & c_mask)==c_mask));
HP-71B USA:2504A00223 HP71:1BBBB FTH:1A, year of production 1984?
Count: 1,069,543
Code: Forth + Assembler: ADD1 D.
Press any key (except ON) to stop counting.
Count => double length value on the stack.
First assemble ADD1 into the Forth dictionary:
File: ADD1
FORTH
WORD 'ADD1'
** overflows in about 470 secs .... P= xx where xx>6 gives more time
P= 6
C=0 A
A=0 WP
LOOP A=A+1 WP
C=IN // Keyboard touched (except ON key !)
?C=0 A
GOYES LOOP
D1=D1- 5
DAT1=A A
ASR W
ASR W
ASR W
ASR W
ASR W
D1=D1- 5
DAT1=A A
RTNCC
END
BR
HP 30b with TSTSYS ON
Count: 531,131
Code: LBL 00 ISG 0 Stop GOTO 00, with 0 pre-stored in 0. Result indicates count of loops in one minute. Each loop adds 1 to value in memory 0.
(as first program in memory)
FX-9860G SD Fast Mode
Count: 370,230
Code: Lbl 0 : Isz A : Goto 0
FX-9860G SD Fast Mode
Count: 237,780
Code: Lbl 0 : Ans+1 : Goto 0
HP 30b with TSTSYS ON
Count: 222,578
Code: LBL 00 + GOTO 00
(as first program in memory)
HP 30b with TSTSYS ON
Count: 209,038
Code: LBL 00 STO+0 GOTO 00 with 0 pre-stored in 0 and 1’s filling the stack
(as first program in memory)
FX-9860G SD Fast Mode
Count: 206,250
Code: 0->A : Lbl 0 : A+1->A : Goto 0
FX-9860G SD
Count: 177,230
Code: Lbl 0 : Isz A : Goto 0
HP 50g (SysRPL bint)
Count: 124,445
Code: !NO CODE !RPL :: ZERO BEGIN #1+ GETTOUCH UNTIL DROP ; @
FX-9860G SD
Count: 110,140
Code: Lbl 0 : Ans+1 : Goto 0
FX-9860G SD
Count: 97,950
Code: 0->A : Lbl 0 : A+1->A : Goto 0
HP 12c+
Count: 78,640
Code: + GTO 01
HP 30b
Count: 72,517
Code: LBL 00 + GOTO 00
(as first program in memory)
HP 9825 B
Count: 59,568
Code: 0->A; "start"; A+1->A; gto "start"; end
HP 50g (SysRPL floating point)
Count: 56,994
Code: !NO CODE !RPL :: BEGIN %1+ GETTOUCH UNTIL DROP ; @
Casio fx-9860G Slim
Count: 55,924
Code: 0->A Lbl 0 A+1->A Goto 0
HP-9100A SERIAL NUMBER 816-01071 (1971?)
Count: 49,391
Code: +, GO TO 00
HP 9815S
Count: 47,592
Code: 000 + 001 GOTO 000
HP-9100B
Count: 47,394
Code: +, GO TO, 0, 0
HP-71B Forth Xerxes:
COUNT: 46,575
Code:
Forth
: XERXES 1 SWAP 0 DO 1+ LOOP ;
46575 XERXES DROP
BYE
HP 50g
Count: 31,849
Code: 1. << DO 1. + UNTIL 0. END >>
HP 9815A/S
Count: 31,156
Code; LBL, A, 1, +, GTO A
HP 48gII Exact mode (old version)
Count: 28,160
Code: 1. << DO 1. + UNTIL 0. END >> EVAL
HP 48gII
Count: 26,439 // Approx Mode
Code: << WHILE 1 REPEAT 1. + END >>
TI-83+ SE
Count: 24,840
Code: Lbl 0 : Ans+1 : Goto 0
HP 85
Count: 23,605
Code: 10 Let A=0; 20 Let A=A+1; 30 goto 20; 40 END
HP-75C (1982)
Count: 21,717
Code:
10 A=0
20 A=A+1 @ GOTO 20
30 END
TI-81
Count: 20,191
Code: Lbl A : Ans + 1 : Goto A : End
HP 9810A
Count: 15,355
Code LBL, 1, +, GTO, 1
TI-81
Count: 15,116
Code: Lbl A : B + 1 > B : Goto A : End
TI-84 Silver Edition
Count: 13,838
Code: Lbl 1:A+1->A: Goto 1
TI-83
Count: 12,986
Code: Lbl B: ans +1: goto B
HP 48GX
Count: 11,636
Code: << WHILE 1 REPEAT 1 + END >>
TI-85
Count 11,100
Code: Lbl A : Ans + 1 : Goto A : End
Psion Organiser II CM (1997)
Count: 10,949
Code:
 LOCAL a
a=1
DO
a=a+1
UNTIL KEY$="S"
PRINT a
GET
HP-48G
Count: 10,726
Code: << WHILE 1 REPEAT 1 + END >>
TI-83+
Count 10,385
Code: Lbl A : Ans + 1 : Goto A : End
HP 33s
Count: 10,097
Code: LBL A + GTO A
TI CC-40
Count: 9,339
Code: 10 A = A+ 1 : 20 GOTO 10
TI-89 Titanium
Count: 9,339
Program: aa():Prgm:Lbl b:a+1->a:Goto 1: EndPrgm
TI-83
Count: 8,106
Code: LBL B, A+1>>A, goto B
Casio fx-7000GB
Result: 7,437
Code: LbL 1; A+1->A; Goto A
HP-48SX
Count: 7,352
Code: Unknown
FX-603P
Count: 7,240
Code: AC 1 + + LBL 0 = GOTO 0
HP-42s FAST MODE S/N 2849A with goose disabled
Count: 6,485
Code: CLLCD LBL 01 + GTO 01
HP-32s
Count: 5,973
Code: LBL A + GTO A
TI-92
Count: 5,686
Code: 0->a Lbl aa a+1->a Goto aa
HP-28S
Count: 5,677
Code: HOME 1 << WHILE 1 REPEAT 1 + END >> EVAL
HP 50G (normal speed)
Count: 5,510
Code: << 1 + A >> stored in A, start with 1 on stack line 1:
HP 35s
Count: 5,504
Code: B001 LBL B B002 STO+ Z B003 GTO B002, with Z initialized to 0
TI-86
Count 5,347
Code: Lbl A : Ans + 1 : Goto A : End
FX-5800P
Count: 5,340
Code: Lbl 0 : Ans+1 : Goto 0
PC-1247
Count: 5,180
Code: 1:A=A+1:GOTO1
HP 20S
Count: 4,837
Code: LBL A, +, GTO A
HP-32sii
Count: 4,715
Code: LBL A, +, GTO A
HP-42s FAST MODE S/N 2849A
Count: 4,419
Code: LBL 01 + GTO 01
HP-71B
Count: 4,320
Code:
10 DESTROY A @ A=0
20 ON TIMER #1,60 GOTO 40
30 A=A+1 @ GOTO 30
40 DISP A
HP 48gII (Original 3 batteries, NO USB)
Count: 4,296
Code: << TICKS 8192 60 * + << -> t << DO 1. + UNTIL TICKS t >= END >> >> EVAL >>
HP-20S
Count: 4,170
Code: Unknown
HP 35s
Count: 3,652
Code: LBL B, +, GTO B001
TI-86
Count: 3,612
Code: Lbl B:1+A->A:Goto B
HP 39gs
Count: 3,607
Code: 1->A: DO A+1->A UNTIL A<=0 END:
Aurora HP 12c clone
Count: 3,554
Code: +, GTO 01
TI-95
Count: 3,350 counts
Code: 1 + GTO 0000
Radio Shack PC-2
Count: 3,317
Code: 1: A=A+1 2: GOTO 1 ; start with 0 stored in A.
Casio fx602p
Count: 3,111
Code: AC 1++ LBL1 = GOTO1
HP 48gII (Original 3 batteries, NO USB)
Count: 3,088
Code: << WHILE 1 REPEAT 1. + END >>
HP-42S with "goose" disabled. Non-fast mode.
Count: 3,067
Code: CLLCD, LBL 00 + GTO 00
HP 48gii Exact mode (Original 3 batteries, NO USB)
Count: 3,036
Code: << WHILE 1 REPEAT 1 + END >>
TI-80
Count 2,279
Code: Lbl A : Ans + 1 : Goto A : End
HP-42S
Count: 2,115
Code: LBL 00 + GTO 00
HP-41CY Turbo
Count: 1,982
Code: LBL 00, +, GTO 00
HP 9G
Count: 1,470
Code: A=0; Lbl 0=; A=A+1; GOTO 0; END
HP 12c plat 25th anniv.
Count: 1,435
Code: +, Goto 001
HP 12c platinum
Count: 1,386
Code: + GTO 001
HP41CX Synthetic:
Count: 1,298
Code:
01 LBL "X”
02 1
03 "SeeRemark"
!!! Synthetic string 9 long Decimal 249 96 7 117 131 131 131 64 178 176
this places 96 7 in N to be transferred in reg b, resulting in
program counter in reg M, byte 6. In reg M synthetic code results
in: RDN ENTER ENTER ENTER + GTO 01. The GTO 01 is a COMPILED GTO
jumping to the + before it! You can SST this code but the GTO 01
takes a long time to reposition! Yes, this can be optimized still a
bit, but the loop is using 3 bytes!
04 0
05 X<> N
06 BEEP
07 STOP
08 STO b
09 END
INSTRUCTION: READ THIS
XEQ "X"
wait until beep, 000000,06 is displayed
press [R/S] to start counting
press [R/S] after 60 seconds, write down the count
perform a GTO .. !!! because the program pointer is in reg M, switching to program mode and TOUCHING A KEY results in MEMORY LOST!
CASIO PB-700
Count: 1,282
Code: 1: A=A+1 2: GOTO 1 ; start with 0 stored in A.
Sharp PC-1251
Count: 1,277
Code: 1: A=A+1 2: GOTO 1 ; start with 0 stored in A.
HP41CX:
Count 1,075
Code: LBL 01 + GTO 01
HP 41c
Count: 1,063
Code: LBL 01 + GTO 01
HP-65
Count: 578
Code: Lbl 1, +, Goto 1
HP-10C
Count: 514
Code: LBL 0 + GTO 0
HP-25
Count: 512
Code: 01 + 02 GTO 01
HP 12c original (mfg. 1985)
Count: 500
Code: +; GTO 01
TI-57
Count: 498
Code: + 1 RST
HP 25
Count: 483
Code: + GTO 01
TI SR-56
Count: 461
Code: + 1 = RST
TI SR-52
Count: 425
Code: + 1 = RST
HP-38C
Count: 387
Code: + GTO 01
TI 58C
Count: 387
Code: + 1 = RST
HP-29C
Count: 361
Code: LBL 0; +; GOTO 0
SHARP PC-1211
Count: 358
Code 1:Z=Z+1:GOTO 1 (starting with Z=0)
HP 11c
Count: 353
Code: Lbl 1, +, Goto 1
HP-33c (mfg. 1982)
Count: 319
Code: 01 + 02 GTO 01
HP 67
Count: 349
Code: 1 CHS STO I + GOTO (i)
HP 55
Count: 312
Code: + GTO 01
HP-19c
Count: 301
Code: LBL 1 + GTO 1
HP 15c (mfg. 1983)
Count: 297
Code: LBL A; +; GTO A
HP 16c: 293 (float 4)
Count: 293
Code: LBL A + GTO A
HP 34c: (I program) with -1 stored in I
Count: 277
Code: LBL A + GTO f I
HP 34c (mfg. 1981)
Count: 269
Code: LBL A; +; GTO A
TI-55
Count: 267
Code: + 1 RST
HP 34c:
Count: 259
Code: LBL A + GTO A
HP 16c
Count: 245
Code: Lbl 1, +, Goto 1
HP 16c: 230 (decimal, wsize 16, 2-complement)
Count: 230
Code: LBL A + GTO A
HP 67
Count: 226
Code: LBL 1 + GTO 1
HP-97
Count: 223
Code: LBL1; +; GOTO 1
Texas Instrument TI-57LCD
Count: 216
Code: LBL_01 1 + GTO_01
TI-66
Count: 210
Code: + 1 = RST
TI-65
Count: 205
Code: 1 + RST
Texas Instrument TI-57LCD
Count: 195
Code: 1 + RST
TI-55
Count: 189
Code: + 1 = RST
TI BA 55
Count: 139
Code: + 1 = RST
Human hand Tapping + key
Count: 133
Elektronika MK-61
Count: 106
Code: + GSB 00
TI-62
Count: 100
Code: 1 + RST
Commodore P50
Count: 97
Code: + 1 = SKZ GOTO 00 R/S ( Start with -97 )
TI-59 with RPN Module:
Count: 74
HP-67 code: LBL 1 + 1 GOTO 1
The RPN Module translated that to:
LBL LNX PGM 51 A 1 PGM 12 A GTO LNX