在步步高软驱1号或者98型学生电脑上算圆周率


英文同步

之前在 SB2000 上算过圆周率 [猛击此处此处],速度特别慢.当我拿到步步高软驱1号 [看这里], 我就准备把 SB2000 放 ebay 上拍了 :). 步步高上也有个BASIC,想比较一下之前算圆周率的程序在步步高上运行如何,就请继续往下看.

原来的BASIC程序如果不修改是无法直接运行在步步高上的.尽管如此,BASIC程序还算是当时所有8位兼容机带键盘的中可移植性较强的语言(当然还有LOGO,不过BASIC能做的事情会比较多)

顺便说一下,之前我装了仿真软驱,把一个U盘格成100张1.44M 的软盘,往”软盘”上写数据得借助PC上的软件,这样一来,在步步高和PC上交换数据就特别麻烦.后来,我翻出了一个老的 128M 的U盘,把它格成1张1.44M 的软盘(其它空间就浪费了),但是这样一来,这个U盘可以很容易(不用借助软件)就可以在电脑上识别,也可以在仿真软驱上识别(这时候指示灯必须在000 号盘), 交换数据因些变得很简单.

f58713a3ff1865d787d5ecce258c0537.jpg 在步步高软驱1号或者98型学生电脑上算圆周率 怀旧 技术 折腾 数码 程序员 程序设计

总结了几个SB2000上的F-BASIC和步步高上的BASIC的区别.我个人还是比较喜欢步步高的,感觉步步高当年开发者程序设计水平比较高,而且整体来说, 步步高软驱1号或者98型学生电脑都把这个”单片机”做到极致了.

1. 步步高上的 ‘THEN‘ 不能省略,但在SB2000上的F-BASIC却可以省, 因此在步步高上, 必须要写全了.

1
if a=1 then 10 else 20
if a=1 then 10 else 20

2. 在步步高上 ‘DIM‘ 数组(括号定义)内必须是常量,不能是变量,在SB2000的F-BASIC上可以是变量,有点像 REDIM 的感觉.

3. 在步步高上,数组下标从 1 开始, 而SB2000的是从 0 开始.

4. 步步高没有 MOD 操作, 所以要计算取余 x % y 需要这么写:

1
mod = x - int(x/y) * y
mod = x - int(x/y) * y

5. 在步步高上你可以用 def fn 定义一个简短的一个参数的函数.

1
2
def fn sqr(x)=x*x
print fn sqr(3)
def fn sqr(x)=x*x
print fn sqr(3)

6. 在步步高上你可以用 clear 清理变量空间. 有更多的函数如 timedate 这样你就可以测量程序运行的时间了. call 函数可以用来运行指定内存的程序或者外部程序.

d1d3e667728ad9a7d7bba3ef72604004.jpg 在步步高软驱1号或者98型学生电脑上算圆周率 怀旧 技术 折腾 数码 程序员 程序设计

7. 在步步高BASIC上有画图相关的语句 circle, dot, colorline.

8. 在步步高BASIC上你可以用 peekpoke 来对内存进行操作,比如 dump bios

经过修改后, 就可以在步步高上计算圆周率了.

6a18f624540e30f74931e70df8523388.jpg 在步步高软驱1号或者98型学生电脑上算圆周率 怀旧 技术 折腾 数码 程序员 程序设计

最后几个数字不对的, 这是和算法相关, 因为最后几位还没有收敛,要提高精度,请修改第10行,比如改成 N=40

完整的BASIC代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
1 REM *********************************
2 REM *RUN ON BUBUGAO BBG             *
3 REM *F-BASIC PROGRAM BY HELLOACM.COM*
4 REM *BY DR ZHIHUA LAI               *
5 REM *********************************
6 CLEAR
7 PRINT "PI COMPUTATION":PRINT" --- MADE BY DR ZHIHUA LAI"
9 PRINT "START TIME:":PRINT TIME$(":")
10 N=15
11 REM CHANGE ABOVE N FOR PRECISION
15 PRINT "VISIT HTTP://HELLOACM.COM"
16 REM BBG BASIC ONLY SUPPORTS DIM WITH CONTANTS
17 REM MAXIMUM UPBOUND CHANGE IF NECESSARY
18 PRINT "COMPUTE ";N;" DECIMAL PLACES.."
19 PRINT "PLEASE WAIT.. THANK YOU!"
20 REM ***** VARIABLE DECLARATION *****
25 DIM X(100)
30 DIM Z(100)
31 REM FOR I=1 TO N
32 REM X(I)=0
33 REM Z(I)=0
34 REM NEXT I
40 X(2)=2
50 Z(2)=2
60 A=1
70 B=3
75 REM ***** START COMPUTATION *****
80 D=0
90 J=N
95 IF J=0 THEN GOTO 140
100 C=Z(J)*A+D
110 Z(J)=C-INT(C/10)*10
120 D=INT(C/10)
130 J=J-1
135 GOTO 95
140 D=0
145 J=1
150 IF J>N THEN GOTO 200
160 C=Z(J)+D*10
170 Z(J)=INT(C/B)
180 D=C-Z(J)*B
190 J=J+1
195 GOTO 150
200 R=0
210 J=N
215 IF J=1 THEN GOTO 280
220 C=X(J)+Z(J)
230 X(J)=C-INT(C/10)*10
240 X(J-1)=X(J-1)+INT(C/10)
250 R=R+Z(J)
260 J=J-1
270 GOTO 215
275 REM ***** CHECK SHOULD WE END *****
280 IF R=0 THEN GOTO 300
290 A=A+1
292 B=B+2
295 GOTO 80
296 REM *****PRINT THE RESULT*****
300 FOR T=1 TO N
301 PRINT STR$(X(T));
302 NEXT T
303 PRINT ""
330 PRINT "END TIME:":PRINT TIME$(":")
335 END
1 REM *********************************
2 REM *RUN ON BUBUGAO BBG             *
3 REM *F-BASIC PROGRAM BY HELLOACM.COM*
4 REM *BY DR ZHIHUA LAI               *
5 REM *********************************
6 CLEAR
7 PRINT "PI COMPUTATION":PRINT" --- MADE BY DR ZHIHUA LAI"
9 PRINT "START TIME:":PRINT TIME$(":")
10 N=15
11 REM CHANGE ABOVE N FOR PRECISION
15 PRINT "VISIT HTTP://HELLOACM.COM"
16 REM BBG BASIC ONLY SUPPORTS DIM WITH CONTANTS
17 REM MAXIMUM UPBOUND CHANGE IF NECESSARY
18 PRINT "COMPUTE ";N;" DECIMAL PLACES.."
19 PRINT "PLEASE WAIT.. THANK YOU!"
20 REM ***** VARIABLE DECLARATION *****
25 DIM X(100)
30 DIM Z(100)
31 REM FOR I=1 TO N
32 REM X(I)=0
33 REM Z(I)=0
34 REM NEXT I
40 X(2)=2
50 Z(2)=2
60 A=1
70 B=3
75 REM ***** START COMPUTATION *****
80 D=0
90 J=N
95 IF J=0 THEN GOTO 140
100 C=Z(J)*A+D
110 Z(J)=C-INT(C/10)*10
120 D=INT(C/10)
130 J=J-1
135 GOTO 95
140 D=0
145 J=1
150 IF J>N THEN GOTO 200
160 C=Z(J)+D*10
170 Z(J)=INT(C/B)
180 D=C-Z(J)*B
190 J=J+1
195 GOTO 150
200 R=0
210 J=N
215 IF J=1 THEN GOTO 280
220 C=X(J)+Z(J)
230 X(J)=C-INT(C/10)*10
240 X(J-1)=X(J-1)+INT(C/10)
250 R=R+Z(J)
260 J=J-1
270 GOTO 215
275 REM ***** CHECK SHOULD WE END *****
280 IF R=0 THEN GOTO 300
290 A=A+1
292 B=B+2
295 GOTO 80
296 REM *****PRINT THE RESULT*****
300 FOR T=1 TO N
301 PRINT STR$(X(T));
302 NEXT T
303 PRINT ""
330 PRINT "END TIME:":PRINT TIME$(":")
335 END
GD Star Rating
loading...
本文一共 706 个汉字, 你数一下对不对.
在步步高软驱1号或者98型学生电脑上算圆周率. (AMP 移动加速版本)
上一篇: 步步高多媒体学生电脑 汇编程序设计 - 1
下一篇: 关于代购FC卡带放英国 ebay 上卖的成本价分析

扫描二维码,分享本文到微信朋友圈
b6c04ca72266308b4b614e07166c8cb8 在步步高软驱1号或者98型学生电脑上算圆周率 怀旧 技术 折腾 数码 程序员 程序设计

评论