用 SB2000 的 FBASIC 计算圆周率后80位


英文同步

SB2000 的 FBASIC 是浮点 BASIC 的意思, 就是说可以用在计算一些数值,高级计算机.今天我们还测一下它的计算性能,之前大概知道很慢..

计算圆周率有很多公式,收敛度不一样, 我们挑一个性价比较高的,比较容易实现的..比如这个:

latex 用 SB2000 的 FBASIC 计算圆周率后80位 怀旧 技术 折腾 有意思的 程序设计

在SB2000上,80位要算5 小时; 40位1个小时; 20位几分钟, 真得很慢.

54dccd8941ec7329bc6183247ffc5a18.jpg 用 SB2000 的 FBASIC 计算圆周率后80位 怀旧 技术 折腾 有意思的 程序设计

43690629b922d1892fc6ed5ea5a03d30.jpg 用 SB2000 的 FBASIC 计算圆周率后80位 怀旧 技术 折腾 有意思的 程序设计

e09111de1647064f6b8df499957ce1c0.jpg 用 SB2000 的 FBASIC 计算圆周率后80位 怀旧 技术 折腾 有意思的 程序设计

—FBASIC 源代码—-

1 REM *********************************
5 REM *JUST FOR FUN                   *
6 REM *F-BASIC PROGRAM BY HELLOACM.COM*
7 REM *TESTED ON SB2000-FBASIC        *
8 REM *REALLY SLOW!                   *
9 REM *********************************
10 N=40
20 DIM X(N)
30 DIM Z(N)
31 FOR I=1 TO N
32 X(I)=0
33 Z(I)=0
34 NEXT I
40 X(2)=2
50 Z(2)=2
60 A=1
70 B=3
80 D=0
90 J=N
95 IF J=0 THEN GOTO 140
100 C=Z(J)*A+D
110 Z(J)=C MOD 10
120 D=INT(C/10)
130 J=J-1
135 GOTO 95
140 D=0
145 J=1
150 IF J>N GOTO 200
160 C=Z(J)+D*10
170 Z(J)=INT(C/B)
180 D=C MOD B
190 J=J+1:GOTO 150
200 R=0
210 J=N
215 IF J=0 THEN GOTO 280
220 C=X(J)+Z(J)
230 X(J)=C MOD 10
240 X(J-1)=X(J-1)+INT(C/10)
250 R=R+Z(J)
260 J=J-1
270 GOTO 215
280 IF R=0 THEN GOTO 300
290 A=A+1
292 B=B+2
295 GOTO 80
300 T=1:S$=""
301 IF T MOD 20=0 PRINT S;:S$=""
302 S$=S$+STR$(X(T))
315 T=T+1
320 IF T>N GOTO 330
310 GOTO 301
330 REM END

几点观察:

1. 代码很难读懂,因为没有缩进,语句前都得有个行号.但是代码算法相对来说很简单的,仔细研究一下不难的 只是代码没有缩进, 看得很痛苦 第一代BASIC (非结构化编程)都是这样
2. goto 跳来跳去的, 很得很乱,我尝试用 for, 但是SB2000的 basic 报错,什么语法错误(其实没有),所以就只能用 goto 来模拟
3. 行号会自动由小到大排序.
4. list 显示所有程序代码;run 运行BASIC程序; 没有任何调试的工具(单步调试等)

续:
呵呵, 我本来是写得很短的,结果SB2000的BASIC各种不支持,只能试着改着其它写法 把 for 改成 goto 不然会莫明其妙的出错

我早上1点运行的,6点多起来的时候算好了, 也许只需要3,4个小时,因为3点多起来的时候还没算完.

以下是在PC机里8位模拟器运行这个 BASIC 程序. 一样是很慢.

compute-pi 用 SB2000 的 FBASIC 计算圆周率后80位 怀旧 技术 折腾 有意思的 程序设计

compute-pi

小数点80 位在电脑上瞬间算完.在BASIC上的确有点慢. 不过比起古代人已经算很快的,哈哈..18世纪有的数学家花一辈子才算个七八位..这么比来,小霸王是不是还不错呢!

更新:
网友yksoft1把上面的程移植到GWBASIC,i5 4200m直接运行DOS,120位也要2-3秒,300位大概10秒,1000位溢出.

pi-gwbasic-827x1024 用 SB2000 的 FBASIC 计算圆周率后80位 怀旧 技术 折腾 有意思的 程序设计

移植到GWBASIC,i5 4200m直接运行DOS,120位也要2-3秒,300位大概10秒,1000位溢出

pi-gwbasic-2-1024x668 用 SB2000 的 FBASIC 计算圆周率后80位 怀旧 技术 折腾 有意思的 程序设计

移植到GWBASIC,i5 4200m直接运行DOS,120位也要2-3秒,300位大概10秒,1000位溢出

电脑上 WORD 里面的 VISUAL BASIC 也不是很快.

visual-basic-pi-1024x585 用 SB2000 的 FBASIC 计算圆周率后80位 怀旧 技术 折腾 有意思的 程序设计

visual-basic-pi

英文原贴: https://helloacm.com/it-takes-5-hours-on-a-8-bit-famicom-clone-sb2000-to-compute-40-decimal-places-of-pi/

GD Star Rating
loading...
本文一共 621 个汉字, 你数一下对不对.
用 SB2000 的 FBASIC 计算圆周率后80位. (AMP 移动加速版本)
上一篇: 试玩 小霸王 SB2000 的 浮点 BASIC (F-BASIC)
下一篇: 海淘步步高多媒体学生电脑 (软驱1号) 打造8位电视游戏机!

扫描二维码,分享本文到微信朋友圈
0b246b98fee7221633fc5cc199ef7880 用 SB2000 的 FBASIC 计算圆周率后80位 怀旧 技术 折腾 有意思的 程序设计

8 条评论

  1. yksoft1
  2. lala
      • lala

评论