So-net無料ブログ作成
English Version

3チップ構成68Kマイコンの構想(その9)メモリ拡張 [68K]

 前回の「3チップ構成68Kマイコンの構想(その8)ローダーによるCP/Mの起動」の記事で書いたようにCP/M-68KがSDカードからブートできるようになったので今回はメモリの拡張を行います。

 今まで128KBytesのM628128ALP-7を使っていましたがebayでポチった512KBytesのメモリ(K6T4008C1B-DB70)が手元にあるので交換しました。
 いずれもアクセスタイムは70nsです。K6T4008C1BはM628128ALPのCS2(30番ピン)と未使用ピン(1番ピン)にそれぞれA17、A18が割り振られておりピンアサインはアッパーコンパチなので追加配線は楽です。

 ソフトについてはメモリ容量の変更になるべく影響受けないように考慮していたのでBIOS内のgetseg用のテーブルのメモリサイズ情報のみの対応となります。

 メモリが512KBになったので今までメモリ不足で動かなかったデジタルリサーチ社の CBASIC(コンパイラ) を動かしてみました。

 Twiterでも紹介した「RetroBrew Computers Forum」の最後の方に書かれているアスキーアートを動かしてみました。

 このForumにはベンチマーク結果の例がいくつか書かれていて68Kのものでは

CB68(compiled) (68k @ 6 MHz) 4:23 <== I can get it to work on one of my slower 68ks

となっています。

 下記がasciiart.basのコンパイルから実行までのログです。

CBASICでASCIIART
M>cb68 asciiart.bas -------------------------------------------------- CB68 CBASIC Compiler Version 1.0 Serial No. 3123-0000-000061 All Rights Reserved Copyright (c) 1983 Digital Research, Inc. -------------------------------------------------- end of pass 1 end of pass 2 1: 10 FOR Y=-12 TO 12 2: 20 FOR X=-39 TO 39 3: 30 CA=X*0.0458 4: 40 CB= Y*0.08333 5: 50 A=CA 6: 60 B=CB 7: 70 FOR I=0 TO 15 8: 80 T=A*A-B*B+CA 9: 90 B=2*A*B+CB 10: 100 A=T 11: 110 IF (A*A+B*B)>4 THEN GOTO 200 12: 120 NEXT I 13: 130 PRINT " "; 14: 140 GOTO 210 15: 200 IF I>9 THEN I=I+7 16: 205 PRINT CHR$(48+I); 17: 210 NEXT X 18: 220 PRINT 19: 230 NEXT Y end of compilation no errors detected code area size: 738 000002e2h data area size: 88 00000058h common area size: 0 00000000h symbol table space remaining: 49687 M>link68 asciiart.rel=asciiart.o,cb68.l68 -------------------------------------------------- LINK68 Overlay Linker Release 0.f Serial No. XXXX-0000 All Rights Reserved Copyright (c) 1983 Digital Research, Inc. -------------------------------------------------- asciiart.rel=asciiart.o,cb68.l68 M>reloc asciiart.rel asciiart.68k M>stat asciiart.* DRIVE M: USER : 0 RECS BYTES FCBS ATTRIBUTES NAME 92 12K 1 DIR RW M:ASCIIART.68K 3 2K 1 DIR RW M:ASCIIART.BAS 15 2K 1 DIR RW M:ASCIIART.O 182 24K 2 DIR RW M:ASCIIART.REL ---------------------------------------------- TOTAL: 40K 5 M: RW, FREE SPACE: 1,368K M>asciiart 000000011111111111111111122222233347E7AB322222111100000000000000000000000000000 000001111111111111111122222222333557BF75433222211111000000000000000000000000000 000111111111111111112222222233445C 643332222111110000000000000000000000000 011111111111111111222222233444556C 654433332211111100000000000000000000000 11111111111111112222233346 D978 BCF DF9 6556F4221111110000000000000000000000 111111111111122223333334469 D 6322111111000000000000000000000 1111111111222333333334457DB 85332111111100000000000000000000 11111122234B744444455556A 96532211111110000000000000000000 122222233347BAA7AB776679 A32211111110000000000000000000 2222233334567 9A A532221111111000000000000000000 222333346679 9432221111111000000000000000000 234445568 F B5432221111111000000000000000000 864332221111111000000000000000000 234445568 F B5432221111111000000000000000000 222333346679 9432221111111000000000000000000 2222233334567 9A A532221111111000000000000000000 122222233347BAA7AB776679 A32211111110000000000000000000 11111122234B744444455556A 96532211111110000000000000000000 1111111111222333333334457DB 85332111111100000000000000000000 111111111111122223333334469 D 6322111111000000000000000000000 11111111111111112222233346 D978 BCF DF9 6556F4221111110000000000000000000000 011111111111111111222222233444556C 654433332211111100000000000000000000000 000111111111111111112222222233445C 643332222111110000000000000000000000000 000001111111111111111122222222333557BF75433222211111000000000000000000000000000 000000011111111111111111122222233347E7AB322222111100000000000000000000000000000 M>


 気になる実行時間は・・・・5分32秒(332秒)でした orz
 因みにMC68008のクロックは8MHzです。

 あまりにも遅いので CBASIC について調べてみると製作者の Eubankさんが修士論文のプロジェクトとして開発したBASIC-Eが元版でこれをデジタルリサーチ社が商用化したもののようです。
 浮動小数点を14桁の2進化10進数(BCD)演算として組み込んでいたことから非常に人気があったとのことです(マイクロソフト社のMBASICでは丸め誤差が発生するので経理計算では使いにくい)

 BCD演算とバイナリ演算を比較するのは酷というものでしょう・・

 また、コンパイル後のリンク方法としては下記のような方法でもいいようですが、出力される ASCIIART.68K のサイズが大きくなりました(実行時間は変わりませんでした)

別なリンク方法
M>link68 asciiart.o,cb68.l68 -------------------------------------------------- LINK68 Overlay Linker Release 0.f Serial No. XXXX-0000 All Rights Reserved Copyright (c) 1983 Digital Research, Inc. -------------------------------------------------- asciiart.o,cb68.l68 M>stat asciiart.* DRIVE M: USER : 0 RECS BYTES FCBS ATTRIBUTES NAME 182 24K 2 DIR RW M:ASCIIART.68K 3 2K 1 DIR RW M:ASCIIART.BAS 15 2K 1 DIR RW M:ASCIIART.O ---------------------------------------------- TOTAL: 28K 4 M: RW, FREE SPACE: 1,380K M>


 ヘッダのリロケーションフラグを確認してみるとFFFFになっていないのでリロケーションフラグ(水色文字分)がアクティブ(ゼロ)になっていてASCIIART.RELと同じサイズなのでファイル名が".68K"となっていますが".REL"と同じもののようです(バイナリ比較まではしていません)。

asciiart.68kのヘッダ内容
M>dump asciiart.68k 0000 00 (000000): 601A 0000 2BF8 0000 0176 0000 0266 0000 *`...+x...v...f..* 0000 10 (000010): 0000 0000 0000 0000 0000 0000 4EF9 0000 *............Ny..* 0000 20 (000020): 0006 4BF9 0000 2BF8 49F9 0000 2BF8 4EB9 *..Ky..+xIy..+xN9* 0000 30 (000030): 0000 02E2 2C3C FFFF FFF4 4EB9 0000 27DC *...b,<...tN9..'\* 0000 40 (000040): 49F9 0000 2D6E 4EB9 0000 2202 6000 028E *Iy..-nN9..".`...* 0000 50 (000050): 2C3C FFFF FFD9 4EB9 0000 27DC 49F9 0000 *,<...YN9..'\Iy..* 0000 60 (000060): 2D76 4EB9 0000 2202 6000 022C 4BF9 0000 *-vN9..".`..,Ky..* 0000 70 (000070): 2D76 49F9 0000 2BFA 4EB9 0000 2402 49F9 *-vIy..+zN9..$.Iy* 0001 00 (000080): 0000 2D7E 4EB9 0000 2202 4BF9 0000 2D6E *..-~N9..".Ky..-n* 0001 10 (000090): 49F9 0000 2C02 4EB9 0000 2402 49F9 0000 *Iy..,.N9..$.Iy..* 0001 20 (0000A0): 2D86 4EB9 0000 2202 4BF9 0000 2D8E 49F9 *-.N9..".Ky..-.Iy* 0001 30 (0000B0): 0000 2D7E 4EB9 0000 21FC 4BF9 0000 2D96 *..-~N9..!|Ky..-.* 0001 40 (0000C0): 49F9 0000 2D86 4EB9 0000 21FC 2C3C 0000 *Iy..-.N9..!|,<..* 0001 50 (0000D0): 0000 4EB9 0000 27DC 49F9 0000 2D9E 4EB9 *..N9..'\Iy..-.N9*


[TOP] [ 前へ ] 連載記事 [ 次へ ]
nice!(0)  コメント(0) 
共通テーマ:趣味・カルチャー

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。