MCS-52 Basic 基板作成

ヤフオクを見ていましたら、BASIC-52 の基板を見つけたので購入。基板に書かれたアドレスから https://www.billy.gr/mcs-basic-52/ で公開されているガーバーファイルのようです。以前作成した BASIC-52 基板は EEPROM 領域がないため、プログラムの保存が出来なかったのですが、こちらの基板は EEPROM のソケットが付いています。

この基板を作成された方は EEPROM の代わりに DALLAS DS1230AB-70 という バッテリーバックアップ付き 32KB SRAM (NVRAM) を載せておられました。不揮発性メモリなので機能は果たしますが、Mouser 価格 4000円程度とお高い状況。また、EEPROM は HC138 のアドレスデコードで 8KB バウンダリになっているので、8KB 分しかつかいません。NVRAM はもったいないので AT28C64B など8KBx8bit の汎用EEPROMを使用することにしました。

WEBサイトを見ると基板のエラー情報が書かれています。

DC ジャックの GND 未配線は、DCジャックの端子を抵抗の切れ端で接続して、電源が入るようになりました。また、リセット回路からの信号は CPU のリセット端子まで来ていましたが、74HC32 のリセット信号が配線されるべき端子には来ていなかったためジャンパー飛ばして結線。私の所ではこの2か所手当することで動作しました。

*MCS-BASIC-52 V1.31*
READY

>erase       

READY
>
>10     REM Basic ROM directory
>20    ADR=8010H : PN=1
>30     IF XBY(ADR)<>55H THEN  END
>40    ADR=ADR+1 : BA=ADR
>50     IF XBY(ADR)=1 THEN  GOTO 80
>60    ADR=ADR+XBY(ADR): GOTO 50
>80     GOSUB 100: PRINT : PN=PN+1 : ADR=ADR+1:   GOTO 30
>100    PRINT "PRG",PN,"from ", :  PH1. BA, :  PRINT " to ", :  PH1. ADR,
>110    PRINT " (",ADR-BA,"bytes)",
>120   NB=XBY(BA)-2: IF NB<4 THEN RETURN
>130 IF XBY(BA+3)<>96H THEN  RETURN
>140    FOR XX=BA+4 TO BA+NB:PRINT CHR(XBY(XX)),: NEXT : RETURN
>prog
 1

READY

erase 命令で EEPROM 領域を初期化します。3分くらいかかるので気長に待ちます。その後プログラムを入れて、prog 命令を実行すると EEPROM にプログラムが保存されます。↑のプログラムは、EEPEOM にどんなプログラムが格納されているか表示するプログラムで、http://www.nomad.ee/micros/8052bas.shtml で公開されているものです。

>rrom

PRG 1 from  8011H to  8134H ( 291 bytes) Basic ROM directory

READY
>

rrom 命令を実行すると、EEPROM の1番目のプログラムを実行します。先ほど書き込んだ EEPROM に何が入っているかを表示するプログラムです。

>ram

READY
>new

>1 REM ASCII ART
>10 FOR Y=-12 TO 12
>20 FOR X=-39 TO 39
>30 CA=X*0.0458
>40 CB=Y*0.08333
>50 A=CA
>60 B=CB
>70 I=0
>80 T=A*A-B*B+CA
>90 B=2*A*B+CB
>100 A=T
>110 IF (A*A+B*B)>4 THEN GOTO 150
>120 I=I+1:IF I<=15 THEN GOTO 80
>130 PRINT " ",
>140 GOTO 170
>150 IF I>9 THEN I=I+7
>160 PRINT CHR(48+I),
>170 NEXT X
>180 PRINT
>190 NEXT Y
>
>prog
 2

READY
>rrom

PRG 1 from  8011H to  8134H ( 291 bytes) Basic ROM directory
PRG 2 from  8136H to  8417H ( 232 bytes) ASCII ART

READY
>rrom2

新しいプログラムを追加します。prog を実行すると EEPROM の2番目に格納されます。rrom2 と引数2で2番目を実行できます。

マニュアルを見ると、電源投入時に自動起動するプログラムの設定などもあるようです。また GPIO ピンもCPUについているので簡単に使えますし、このマイコンボードの右端にはメモリマップドI/Oの端子も出ています。プログラムのセーブが出来るマイコンボードは当時としては優れた機能だったかと思います。普通はROM差し替えですしね。まぁBASIC言語なので実行速度はお察しというところで。