EuroRack版山下シンセのキット存続について
■山下シンセのキット
数年前からMakerFaireなどのイベントで、EuroRack版山下シンセ・キット(VCO、VCF、VCA、EG、LFO)を頒布してきました。難易度の高いキットですが細々ながら継続した需要があり、続けていました。
写真1はそのVCOの外観です。

狭いEuroRackパネルに、3.5mmジャック7個とVR5個を配置した設計で、
写真2のように基板裏面にジャック、表面にVRを実装するDoepfer社の構成を採用。
理由は、手はんだを行うキットではスルーホール部品を使うので基板面積が大きくなため、パネルと垂直に基板を配置するこの方式が好都合だったからです。
しかし、特殊な超短奥行きジャックと首長VRが必要で、欧州から輸入していましたが、前回の購入時と比べて価格・送料・それにともなう税金他が高騰(100円台→400円近く)し、キットとして成立しなくなりました。
在庫限りで終了する予定でしたが、友人との飲み話から、写真3のようにパネルと平行に2枚の基板を使う方式を再検討することにしました。この構成は特殊な部品を使わず価格を抑えられる反面、基板面積が小さくなるためSMD部品が使える完成品向けと見なして検討から除外していました。

今回は、フロント基板にも部品を分散し、抵抗ピッチを6.37mmに縮めるなど地道な工夫で実現できました。一番難題であるVCOがクリアしたので、あとはなんとかなりそうです。
何事も「やってみんとわからん」ですね。
マイコン博物館に行ってきた フォトギャラリ その2
私の気になったコンピュータのつづきです。

こんなものが見れるとは思いもしなかった。背の低いロッカーの大きさです。
1980年代に通産省主導の国家プロジェクトの成果物ですね。
今とは違うルールベースのAI の実現を目指したものでした。Prolog という推論言語に特化したマシンだと記憶しています。結果的に成功しなかった黒歴史的存在?
ある大学で、償却せずにこっそり保管されていたが、その方が退官するに当たり寄贈されたもの。
・謎のマシンBubcom80と富士通FM8

左のBubcom80の見た目は、6809 CPU搭載の富士通のFM8(Fujitsu Micro 8 )とまるでそっくり。システムズフォーミュレート社製で標準で磁気バブルメモリ搭載で、こちらのCPUはZ80です。そっくりなはずで、製造は富士通でした。
・Altair8800

世界初のパーソナルコンピュータと呼ばれるMITS社のオルティア8800、CPUはインテル8080です。互換機メーカがS-100バスと呼ぶようになったオリジナルはAltiar Busです。
モトローラ6800モデル( Altair680 )は、残念ながら右写真のマニュアルだけでした。珍しいマイクロソフト製の6800 Basicがありました。
・IMSAI 8080

互換機ですが、こちらのほうがS-100バスとして有名だった気がします。
今見るととても大きなボードが多量に刺さっています。
・IBM PC XT

1983発売。元祖IBM PCの改良版で、CPUは8bit busの16bit 8088。後継のPC ATは、80286。
・Apple LISA

何百万もしたやつ、初めてみました。PC XTと同時期にAppleはこんなすごいのを作っていたんや。この翌年に元祖Mac 128Kが出た。
裏の基板が見える。じっくり眺めたら、CPUは68000のはずだが、Apple II で慣れた6502系のファミリの便利なチップ 6522 VIAなども使われている。肝心の68000は、この基板には乗っていない。
・ Apple I (復刻品)

このボードは、復刻基板を用いて作られた復刻品ですが動作するとのことでした。
まだまたあるのですが、きりがないのでこの辺で。
マイコン博物館に行ってきた フォトギャラリ その1
NAKAMOZU TINY BASICのASCII投稿の件でお世話になった、かつてASCII編集長の吉崎氏が運営するマイコン博物館に行ってきました。
一般財団法人 科学技術継承財団 | 歴史的な計算機・図書・模型を保存し未来につなぐ
X: @Dream_Library_
もともと9月6日,7日開催のNT東京へ出展するのため、上京するので、この機会を活かして前日にもう一泊し、青梅市まで伺いました。 青梅市は初めてであんなに遠いとは思わなかった。
吉崎館長ともお会いでき、丁寧に説明をしていただきました。
展示物は、量質とも想像を遥か超えるもので、
もちろんマイコン好きの人の知っている機種は網羅していることはもちろん、ほとんどが修理、オーバーホールされ動く状態で展示されているのには感銘を受けました。
私の個人的に興味を引いたものの写真を紹介します。
・PDP11

1970年代のDEC社の16bit ミニコンですね。大学にもありましたが中のボードを見たのは初めて。黒いチップは、TTLの4bit ALUで、16bit分、4個並んでいます。
・PDP8 (後期型)

同じくDEC製の今では珍しい12bit ミニコン。1965年の最初はDTLを使って巨大だったそう。これはLSIを使ったコンパクトな後期型。
・International の電動タイプライタ

Internationalは、IBMの前身です。左に立てかけられているのは、コアメモリボードです。
・Fridenトランジスタ電卓

機械式計算機メーカのフリーデン社が1965年に発売した、トランジスタ式電卓。逆ポーランド式。
CRTは、ラスタースキャンでなくXYスキャンで一筆書き表示なのが面白い。
大学の研究室のオシロで、マイコンのゲームをXY一筆書きで作ったのを思い出した。
次回に続く
NAKAMOZU BASIC COMPILERの失われた記憶 (その4) 開発環境と動作環境
開発環境
今回のターゲットは、ERIS6800という6802搭載のワンボードマイコンです。
概略の仕様は、$0000〜&7FFFがRAM、$C000〜$FFFFが複数バンクのROMで様々なモニタや言語が格納されています。
モニタとして、オリジナルのままのAltairモニタ、MIKBUG、SWTBUG、SmithBUGなど有名所が使えます。(RAM容量が少ないのは残念ですが、当時のモニタに合わせたのだと思います)
言語は、アセンブラの他、AltairBASICや当時ASCII紙面を賑わしたVTL,GAME,TL/1と、そして私のNTBがインストールされています。(今回そこにNBCを追加しようと努力しているわけです)
本体にもテンキーやLCD,LEDがありますが、言語系は、シリアル接続したTeraTermから使います。(ASR-33テレタイプによるかつてのミニコン風システムの時代を彷彿とさせます)
もちろん私はそんな経験はなく、H68にテキストVRAMとRAMをフル実装し、ASCIIキーボードと放電プリンタをつけた環境で、アセンブラが内蔵されたH68のROMモニタにカセットテープベースの自前のミニOSを追加し、友人作のスクリーンエディタと逆アセンブラを使って開発していました。このようにアマチュアにとっては、実機にすべての開発環境が合体しているセルフ形態が普通でした。
今回は、PCを使ったクロス開発になるので、開発の仕方についても未経験なので、はせりん様からご教授いただきました。
具体的には、アークピット製汎用クロスアセンブラがMS-DOSようなので、MS-DOSエミュレータで実行。これが出力する懐かしのモトローラSフォーマットをmot2binでbinaryに変換し、適当なバイナリエディタでROMイメージにまとめ、ROMライターで焼き込みます。(ROMライターも貸与いただきました)
またデバッグは、実機ではやりにくいので、MAMEという汎用エミュレータとデバッガーを用います。
こんな手順も、手取り足取り教えてもらわないと不可能でした。ありがとうございました。
コンパイラの動作環境は?
すでにERIS68に実装されているNTBインタプリタは、行番号ベースの簡易エディタ内蔵で、決めるべきメモリマッピングは、インタプリタ本体、BASICプログラム、変数エリアくらいでシンプルですが、コンパイラの場合はそうはいきません。
もしFDOSが使える環境なら、ソースもファイルから入力し、オブジェクトもファイルに出力できるのでなんの問題もありません。(FLEX09上で開発した6809版のNBCはこれでした)
しかし、H68をテープベースで使っていた当時の6800版NBCは、とても複雑でした。
2つの動作モードがあり、
(1)インメモリでコンパイル
一番、素早く快適に使えるモードで、
・スクリーンエディタ ・コンパイラ ・ランタイム ・アプリのソース
・アプリのオブジェクト ・ワークエリア
のすべてをメモリに配置します。
エディタでアプリのソースの編集し、エディタからコンパイラを呼び出してコンパイルし、できたオブジェクトをエディタから実行する、というエディタ中心のシステムでした。H68はメモリフル実装でしたが、メモリが逼迫して大きなプログラムはコンパイルできません。
無理やりコンパイルするため、TinyBasic特有の省略形を駆使してファイル容量を削減していました。
また、実行したオブジェクトが暴走すると、ソースを失う危険があるのでソースは必ずセーブします。実際何度もソースを失いました。
(2)テープからコンパイル
このモードは、ソースコードをカセットテープから読み込みながらコンパイルをします。メモリ消費の大きなソースコードの分メモリに余裕ができ、大きなプログラムが作れます。
・エディタで作成したファイルをテーブにセーブし、エディタを終了します。(セーブ時には、改行ごとに例えば数10msec程度の間隔を空ける)
・コンパイラとランタイムをテープから読み込んで起動し、アプリのソースのテープを読み込みながらコンパイルします(数10msecの間に1行分コンパイルします)。 オブジェクトは実行させるアドレスのメモリに書き込みます。
・オブジェクトもエディタから実行させる、あるいはエディタもコンパイラも終了させ、モニタから実行させるなどができます。
今回のERIS68へのインプリは ?
当初、ERIS68向けのインプリをすることになったときに悩んだのは、ファイルが使えず、RAM容量が少ないこととです。当初、インメモリのソースコードをコンパイルする方法しかできないと思い、この少ないRAM容量では実用的な使い方ができないことを危惧しました。
後で知ったのですが、TeraTermはシリアルを通してファイルを転送する機能があり、それを使ってメモリにソースをアップロードできると言う事を知りました。
はせりん様といろいろ議論して、NBCをコントロール(ソースのアップロード、コンパイル、実行、オブジェクトのダウンロード)する専用のミニモニタNBCMENUを作っていただくことになりました。私は、それに合わせてサブルーチンとして動作するようNBCを書き換えました。
これができると、TeraTermを通じて一連の作業がインタプリタ並の手軽さで行えるようになり、
その後さらに、コンパイル中に一行単位でソース入力を要求するコールバック機能をNBCに追加したので、ファイルからのコンパイルも可能になりました。 TeraTermからのファイル転送を利用しているため、コンパイルエラーが生じても途中打ち切りができないなど、不便な点もありますが、それなりに使える方向に進んでいます。
また、元はVRAMを直接アクセスする画面クリアやカーソル移動などの最低限の動作は、エスケープシーケンスで行えるようにランタイムを書き換えています。
シリアルが遅いのが辛いですが、実際使ってみると、ちょうどカセットベースで開発していたときに近い感触になり、ノスタルジーを感じます。
つづく
NAKAMOZU BASIC COMPILERの失われた記憶 (その3) サルベージされたものと言語仕様
サルベージされたもの
不安定な6809/Z80マルチCPUマシンの8"ディスケットから奇跡的にサルベージされた6800CPU関連のアーカイブは、
NBCver6のソース、NBCver6のRuntimeのソース、山西氏作のスクリーンエディタのソースがあり、NBCによるアプリケーションソフトとしては下記のものがありました。

多くのゲームは乾氏作で、NTB用としてASCII誌の「TinyBasicNewsLetter」のコーナーに発表されたをNBCに移植したたものです。
大半が、VRAMを前提とし、セミグラフィックを多用しているので、TeraTermを使うERISに移植するには工夫が必要だと思われます。
ゲーム以外は、私と山西氏が作ったもので、
CROSS09は、山西氏作の6809用クロスアセンブラ
NBCNBC68は、私作の NBCver5をNBCで記述したもの
NFORTHも私作で、コンパイラ形式のFORTH処理系
NBCver6の言語仕様
前回の続きですが、NTBとの互換路線を捨て、当時噂に聞いた「システム記述ができるC言語」という言葉に魅力を感じて構造化路線を目指しました。(C言語自体は見たこともなく) 当時コンパイラはアセンブラで書くものとの認識でしたので、言語仕様の目標を、自分自身を記述できることに置き、NBCNBC68を書きました。(ただ今となっては、実用になったのかどうか記憶にないですが)
NAKAMOZU BASIC COMPILER ver.VI - Google ドキュメント
Ver6の仕様書を作りましたので、見てください。
まず、乾氏のOTHELLOのNTBインタプリタの例です。 先読み部はほとんどアセンブラですね、
今見るとと??。当時のTinyBasicです。省略形とGOTOだらけです。

つぎに、山西氏がNTB用をNBC用に書き直したOTHELLOのソース例です
全然ちがいますね。


つづく
NAKAMOZU BASIC COMPILERの失われた記憶 (その2) 発掘の旅
この大層なタイトルは、AIが推薦してくれたものです。
NAKAMOZU BASIC COMPILER(NBC)の発掘の旅
家探しすると当時のメモ書きや手書きのマニュアルが発掘されました。
マニュアルは、Ver.VIまで複数あり、
それを見ると、最初はNTBインタプリタとの互換をメインに考えていたようです。しかしNTBは、他のTinyBasicと同様に、インタプリタだからこそ成り立つ便利な機能が多くあり(一例として行番号を利用した計算型GOTO文他多数)ます。それらを取り入れるとコンパイラとして中途半端で効率(サイズ、速度)の悪いものになることに気づき、しだいに仕様を変えていったようです。この話は、また後で。
発掘のつづきですが、
PC内を探索すると、コンパイラのRuntime Package(ライブラリのようなもの)のリスティングの印刷をスキャンしたものが発掘されました。しかしコンパイラ本体のソースは無いようでした。このRuntimeもごく初期のVersionでしたが。
探索範囲を友人まで広げたところ、山西氏の納戸部屋に、多量のテープがあり、その中には、当時氏が有していたパナソニックのJR100(6800マシン)にNBCを移植したものがあることがわかりました。
しかし実機はすでに無いので、マイコン博物館に頼んで展示用のJR100をお借りし、テーブを読もうとしましたが、古い機械ゆえ動きが不安定で結局断念しました。
実際テープが読めたとしても、NBCのオブジェクトしか残ってないことが予想されたので・・
紆余曲折
以前(2018年)のブログで紹介した、手作りの6809/Z80マルチCPUマシン 6809/Z80マシーンを発掘しました(1) - 電音の歩み

これは今探してるNBCの2,3年後に作ったマシンで、8"フロッピーでFLEX09というOSを使っていました。探しているNBCとはCPUが違いますが、6800のNBCを6809に移植し、FLEX09下で動かしていたことは確かなので、少なくともフロッピーには6809版のNBCのソースが残っているはずです。
ただ、この6809/Z80マルチCPUマシンも動作が不安定で、実家から発掘した2018年以降、再びしまい込んでいました。今回これを引っ張り出して動かしたところ、かなり不安定で定期的に暴走します。
なんとかダマシダマシ動かし残っているすべてのフロッピーを調べた結果、6809版のソースを見つけましたが、結局別物に進化しておりこれをベースにするのは無理でした。
一旦はこの道も断念しかかったのですが、
その後、ディスケットのカバーに奇妙な穴が開けられているのに気づき、記憶が蘇ったのですが、
このマシンのドライブはジャンクで入手した片面用でしたが、当時入手出来るディスケットはすでに両面仕様のものでした。つまり両面に磁性体が塗布されているわけです。そこでディスケットのカバーにある回転検出用の穴と同じものを、裏返したとき同じ位置にもう一個開けると、裏返しても使用できるようになるので、1枚を2枚として使えるということで、このようなせこいことをしていました。
この穴を開けたディスケットを裏返しに挿入すると、探していたものが見つかりました。奇跡のようです。おそらく、H68マシンとそのテープを処分するとき、一部のデータをアーカイブしていたのだと思います。我ながらGoodJobです。
ただ、このデータを取り出すには一捻りが必要です。FLEX上でプログラムが作れれば、なんとでもなるのですが、すぐに暴走する不安定なマシンでは難しい。FLEXの持つ機能で出来ることは、テキストファイルの表示をプリンタらリダイレクトすることぐらいです。ただ今あるプリンタは、セントロでASCIIコードを送ればプリントするようなシンプルな動作はできない。
そこで、arduinoProMiniを使って、プリンタを模してセントロを読み込みSDカードに書き込む回路を作り、FLEXでフロッピーのテキストファイルをプリントさせるとSDカードに書き込まれる治具を作りました。途中で何度も暴走する中、粘り強く取り込みを行いすべてのアーカイブをサルベージしました。

つづく
NAKAMOZU BASIC COMPILERの失われた記憶 (その1)
ちなみにこの大層なタイトルは、AIが推薦してくれたものです。
NAKAMOZU TINY BASIC(インタプリタ) について
今年の春(2024/3)に、当時のASCII 編集長をされていた吉崎様から連絡がありました。