之前在 SB2000 上算过圆周率 [猛击此处 和 此处],速度特别慢.当我拿到步步高软驱1号 [看这里], 我就准备把 SB2000 放 ebay 上拍了 :). 步步高上也有个BASIC,想比较一下之前算圆周率的程序在步步高上运行如何,就请继续往下看.
原来的BASIC程序如果不修改是无法直接运行在步步高上的.尽管如此,BASIC程序还算是当时所有8位兼容机带键盘的中可移植性较强的语言(当然还有LOGO,不过BASIC能做的事情会比较多)
顺便说一下,之前我装了仿真软驱,把一个U盘格成100张1.44M 的软盘,往”软盘”上写数据得借助PC上的软件,这样一来,在步步高和PC上交换数据就特别麻烦.后来,我翻出了一个老的 128M 的U盘,把它格成1张1.44M 的软盘(其它空间就浪费了),但是这样一来,这个U盘可以很容易(不用借助软件)就可以在电脑上识别,也可以在仿真软驱上识别(这时候指示灯必须在000 号盘), 交换数据因些变得很简单.
总结了几个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 清理变量空间. 有更多的函数如 time 和 date 这样你就可以测量程序运行的时间了. call 函数可以用来运行指定内存的程序或者外部程序.
7. 在步步高BASIC上有画图相关的语句 circle, dot, color 和 line.
8. 在步步高BASIC上你可以用 peek 和 poke 来对内存进行操作,比如 dump bios
经过修改后, 就可以在步步高上计算圆周率了.
最后几个数字不对的, 这是和算法相关, 因为最后几位还没有收敛,要提高精度,请修改第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
loading...
上一篇: 步步高多媒体学生电脑 汇编程序设计 - 1
下一篇: 关于代购FC卡带放英国 ebay 上卖的成本价分析