next up previous contents index
: 参考文献 : ユークリッドの互除法とその計算量 : 章末の問題   目次   索引

章末付録: パーソナルコンピュータの歴史 -- CP/M80

Intel 8080 CPU をのせた TK-80 シュミレータで 8080 CPU のマシン語のプログラムを楽しんだであろうか? その後, Intel 8080 CPU は上位互換の Zilog Z80 CPU に 市場でとってかわられることになる. ベストセラーとなった, NEC PC8801 シリーズは Zilog Z80 CPU を 搭載し, ROM (Read Only Memory) に書き込まれた N88 Basic が 電源投入と共に起動した. N88 Basic は Mirosoft Basic をもとに NEC が機能拡張した Basic 言語であり, 大人気を博した. PC8801 シリーズでは CP/M80 という Digital Research 社により 開発されたディスクオペレーティングシステムも実行することが 可能であった.

現在, たとえば FreeBSD 上の cpmemu なる CP/M 80 エミュレータ を用いることにより, この CP/M 80 上の Microsoft Basic (MBASIC) を楽しむことが可能である. CP/M 80 の多くの商用ソフトは現在 http://deltasoft.fife.wa.us/cpm に保存されており, 自由に取得することが可能である.

GCD を計算するユークリッドのアルゴリズムを FreeBSD 上の cpmemu 上の MBASIC で実装してみよう.

bash$ ls
mbasic.com
bash$ cpmemu

A0>dir
A: MBASIC  .COM
A0>mbasic
BASIC-80 Rev. 5.21
[CP/M Version]
Copyright 1977-1981 (C) by Microsoft
Created: 28-Jul-81
35896 Bytes free
Ok
10 input a,b
20 r=a mod b
30 if r = 0 then goto 50     
40 a=b: b=r: goto 20
50 print b
60 end
list
10 INPUT A,B
20 R=A MOD B
30 IF R = 0 THEN GOTO 50
40 A=B: B=R: GOTO 20
50 PRINT B
60 END
Ok
run
? 1234,1200
 2 
Ok
system

A0>unix
Cp/M BIOS COLDBOOT takes you back to FreeBSD
bash$

CP/M 80 では, MBASIC 以外にさまざまなプログラム言語が動作した. そのなかでもっとも人気を博したのが ターボパスカル (turbo Pascal) である. 言語パスカルは 1970 年代前半にチューリッヒ工科大学の Niklaus Wirth により設計された美しい言語である. ターボパスカルでは, エディタとコンパイラが統合されており, さらに 100 行ほどのプログラムは 1 秒程度でコンパイル, 実行可能で あった. 現在の高速なパソコンを利用している人にはこの感動はつたわらないかも しれないが, 当時の Z80 CPU のパソコンでこのスピードは驚異的であった. ちなみに他の会社のコンパイラで同じプログラムをコンパイルしても, 1 分以上かかるのが通例であった.

0             :  1
1             :  1
2             :  2
3             :  3
4             :  5
5             :  8
6             :  13
7             :  21
8             :  34
9             :  55
10            :  89
11            :  144
12            :  233
13            :  377
14            :  610
15            :  987
16            :  1597
17            :  2584
18            :  4181
19            :  6765
20            :  10946
21            :  17711
22            :  28657
23            :  46368
24            :  75025
25            :  121393
26            :  196418
27            :  317811
28            :  514229
29            :  832040
30            :  1346269
31            :  2178309
32            :  3524578
33            :  5702887
34            :  9227465
35            :  14930352
36            :  24157817
37            :  39088169
38            :  63245986
39            :  102334155
40            :  165580141
41            :  267914296
42            :  433494437
43            :  701408733
44            :  1134903170
45            :  1836311903
46            :  2971215073
47            :  4807526976
48            :  7778742049
49            :  12586269025
50            :  20365011074
51            :  32951280099
52            :  53316291173
53            :  86267571272
54            :  139583862445
55            :  225851433717
56            :  365435296162
57            :  591286729879
58            :  956722026041
59            :  1548008755920

    
60            :  2504730781961
61            :  4052739537881
62            :  6557470319842
63            :  10610209857723
64            :  17167680177565
65            :  27777890035288
66            :  44945570212853
67            :  72723460248141
68            :  117669030460994
69            :  190392490709135
70            :  308061521170129
71            :  498454011879264
72            :  806515533049393
73            :  1304969544928657
74            :  2111485077978050
75            :  3416454622906707
76            :  5527939700884757
77            :  8944394323791464
78            :  14472334024676221
79            :  23416728348467685
80            :  37889062373143906
81            :  61305790721611591
82            :  99194853094755497
83            :  160500643816367088
84            :  259695496911122585
85            :  420196140727489673
86            :  679891637638612258
87            :  1100087778366101931
88            :  1779979416004714189
89            :  2880067194370816120
90            :  4660046610375530309
91            :  7540113804746346429
92            :  12200160415121876738
93            :  19740274219868223167
94            :  31940434634990099905
95            :  51680708854858323072
96            :  83621143489848422977
97            :  135301852344706746049
98            :  218922995834555169026
99            :  354224848179261915075
100           :  573147844013817084101
101           :  927372692193078999176
102           :  1500520536206896083277
103           :  2427893228399975082453
104           :  3928413764606871165730
105           :  6356306993006846248183
106           :  10284720757613717413913
107           :  16641027750620563662096
108           :  26925748508234281076009
109           :  43566776258854844738105
110           :  70492524767089125814114
111           :  114059301025943970552219
112           :  184551825793033096366333
113           :  298611126818977066918552
114           :  483162952612010163284885
115           :  781774079430987230203437
116           :  1264937032042997393488322
117           :  2046711111473984623691759
118           :  3311648143516982017180081
119           :  5358359254990966640871840


Risa/Asir ドリル ギャラリー : フィボナッチ数

[349] pari(nextprime,10^130);
100000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000001113
[350] pari(nextprime,10^131);
100000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000063
[351] pari(nextprime,10^132);
100000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000169
[352] pari(nextprime,10^133);
100000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000021

Risa/Asir ドリル ギャラリー : 素数の生成



Nobuki Takayama 平成15年9月12日