ページ

2026年7月7日火曜日

ADTPro and Apple Super serial card

ADTProというファイル転送プログラムを使ってWindowsとApple II間の通信を行う事ができるという話を聞き及んだので、その転送に使うハードを集めてみました。
1)Apple super serial card(SSC)
2)USBシリアル変換ケーブル
3)ADTProというソフト

Windows側で使うソフトはADTPro-2.1.0
これをRS232C USB シリアル変換ケーブル-->
DB9ピン パラレル(D-sub25ピン) DB25アダプタ-->SSC
という順序で接続

この状態でApple II slot2にSSCを入れて電源オン。
]IN#2
]Ctrl+A
APPLE SSC:という表示がでます。
ここで
14Bと入力(これは9600ボーレイトの設定:下記を参照)

そしてWindows側ADTProでserial 設定->MENU->Bootstrapping->ProDOS->Speediboot
これで、windows側には無事に転送できたという表示になるのですが、Apple II側には何ら の反応もありません。本来からClient softが起動するはずなのですが。
ヌルモデムを使って接続する必要がある?-->クロスケーブルをはさんでも結果は同じ。
シリアル変換ケーブルが壊れている?-->別の変換ケーブルを使っても結果は同じ。
SSCが壊れているかと考えてSSCを3台入手しましたが同じ結果でした。ここで止まったままです。

そこで最近流行のAIに尋ねてみました。使っているAIはClaude.ai(Fable5)。
AIの答えはこうでした。

ADTPro公式の配線ページによると、SSCとホストPCの接続はストレートケーブルでもヌルモデムケーブルでもよいが、ジャンパーブロックがその切り替えを担う。ストレート接続ならブロックの矢印を下向き「Terminal」に、ヌルモデム接続なら上向き「Modem」に設定する必要があります。

え?そんなページがあったのか、という驚きでした。
考えてみると、ジャンパーブロックは上向きでないといけないと思い込んでいたのです。確かにMODEMモードでは上向きにという表現がどこかにあったはずです。
そういう次第で入手したSSCのジャンパーブロックはすべて上向きにしていたのです。

で、ジャンパーブロックを下向きにしたら、Apple IIのモニター画面に文字が流れて、しばらくするとADTProのクライアントプログラムが立ち上がりました。

=================================================================================

SSCのマニュアル
SSCの通信モードへの準備
ジャンパーブロックとスイッチSW1-5およびSW1-6が正しく配置されている場合、SSCは通信モードで動作する準備が整います。
ジャンパーブロックの三角形が「MODEM」の文字の方を向いている場合は、ブロックを取り外し(必要に応じてICエクストラクタを使用)、三角形が「MODEM」の方を向くように再度挿入してください(図3-1)。
先の尖ったものを使用して、スイッチSW1-5とSW1-6の両方をONに設定してください(図3-1参照)。
これにより、SSCは通信モードになります。
通信モードコマンド

このセクションで説明するコマンドは、コンピュータプログラムに組み込むことで実行できます。 BASICまたはDOS環境では、Apple(またはリモート端末)のキーボードから直接入力することもできます。
BASICプログラムでは、制御文字とコマンドをPRINT文に記述します。
Pascalプログラムでは、コマンドをWRITE文またはWRITELN文に組み込みます。
これらのコマンドをキーボードで入力してSSCに反映させるには、まずIN#sコマンド(SSCをスロットに挿入した状態)を実行する必要があります。次にコマンド文字(通常は(CTRL-A)、下記参照)を入力すると、ディスプレイ画面に「APPLE SSC:」というプロンプトが表示されます。(RETURN)までの文字は、SSCコマンドとして解釈されます。
(RETURN)を押す前に左矢印キーを押すと、コマンドがキャンセルされ、「APPLE SSC:」プロンプトが再び表示されます。
これらのコマンドの多くは、SSCの物理スイッチ設定を上書きします。そのため、Apple IIのケースを開けてSSCスイッチ設定を手動で変更する必要はありません。値を物理スイッチ設定に戻すには、Apple IIを再起動またはリセットするか、後述のリセットコマンドを入力してください。
コマンド形式

すべてのコマンドは、通信モードコマンド文字(通常は(CTRL-A)、下記参照)で始まり、(RETURN)で終わります。 (CTRL-A)という表記は、「Ctrlキーを押しながらAキーを押す」という意味です。コマンド形式には3種類あります。
1)数字(n)の後に大文字のアルファベットが続く(例:4Dでデータフォーマット4を設定)
2)単に大文字のアルファベットが続く(例:RでSSCをリセット)
3)大文字のアルファベットの後にスペースが続き、Eで機能を有効にする、またはDで機能を無効にする(例:L Dで改行文字の自動生成を無効にする)
(n) の許容範囲は、各コマンドの説明に記載されています。 有効化または無効化の選択は (E/D) と表記されます。
Enable/Disable コマンドの (E/D) の前にアンダースコア ( ) が付いているのは、単にスペースが必要であることを示すためのものです。
SSC は、コマンドとオプションの最初の文字と数字のみをチェックします。これらの文字はすべて大文字でなければなりません。 記憶を助けるために追加できるその他の文字は、SSC には影響しません。
例えば、E(cho E(nable は E と同じです。SSC は無効なコマンドを無視します。

コマンド文字

通信モードにおける通常のコマンド文字は (CTRL-A) です。 コマンド文字自体をSSC経由で送信するには、 (CTRL-A)(CTRL-A) と連続して2回入力します((RETURN) は不要です)。この特殊なコマンドを使用すると、SSCの動作に影響を与えずに、 また別のコマンド文字に変更してから元に戻すことなく、コマンド文字を送信できます。
コマンド文字を (CTRL-A) から (CTRL-別の文字)(例:(CTRL-W))に変更する場合は、(CTRL-A)(CTRL-W) と入力します。
元に戻すには、(CTRL-W)(CTRL-A) と入力します。どちらのコマンドの後も、(RETURN) は不要です。

制御文字を、またはに変更しないでください。 通信モードでは、SSCはこれらの文字をリモートデバイスからの特殊な制御コマンドとして解釈します。

コマンド文字 (CTRL-A) は ASCII コード 1 です。BASIC と Pascal でこの文字を生成する方法は次のとおりです。
Integer BASIC: PRINT "*command" *embedded (CTRL-A)
Applesoft BASIC: PRINT CHR$(2): "command"
Pascal: WRITELN (CHR(2),'command');

通信モードコマンド一覧

表3-4は、通信モードで使用されるコマンドの一覧です。 簡潔にするため、本章の残りの部分で詳しく説明する一部のコマンドは省略しています。 アスタリスク(*)が付いているコマンドは、Pascalではサポートされていません。
スイッチ設定を変更するコマンド

このセクションで説明するコマンドは、SSCのスイッチ設定を上書きするか、SSCの関連する動作に影響を与えます。Resetコマンドは、スイッチの選択状態を復元します。

ボーレート-(n)B

このコマンドは、SSC上のスイッチSW1-1~SW1-4の物理設定を上書きします。 例えば、ボーレートを9600に変更するには、(Ctrl+A)14B(Enter)と入力します。
(n)= SSC Baud Rate
0 use SW1-1 to SW1-4
1 50
2 75
6 300
8 1200
14 9600
15 19200
Table 3-5. Baud Rate Selections

データフォーマット-(n>D)

このコマンドを使用すると、スイッチSW2-1およびSW2-2の設定を上書きできます。下の表は、の各値に対応するデータビット数とストップビット数を示しています。
例えば、(CTRL-A)3D(RETURN)と入力すると、SSCは各文字を次の形式で送信します。 スタートビット1つ(常に送信)、データビット5つ、ストップビット1つ。
(n)= Data Bits Stop Bits
0 8 1
1 7 1
2 6 1
3 5 1
4 8 2 (1 with (n)P options 4 through 7)
5 7 2
6 6 2
7 5 2 (1-1/2 with P options Ø through 3)
Table 3-6. Data Format Selections

パリティ(n>P)

表3-6. データフォーマットの選択
このコマンドを使用すると、SSCが送信データを生成する際、および受信データを確認する際に使用するパリティの種類を指定できます。 利用可能なパリティオプションは5つあります。
(n)= Parity to Use
0, 2, 4 or 6 none
1 odd parity (odd number of l's)
3 even parity (even number of l's)
5 MARK parity (parity bit always 1)
7 SPACE parity (parity bit always )
Table 3-7. Parity Selections

例えば、(CTRL-A)1P(RETURN)と入力すると、SSCが送信を行い、奇数パリティをチェックします。奇数パリティとは、 各文字の最上位ビットが、その文字に既に奇数個の1ビットが存在する場合は1、それ以外の場合は偶数個の1ビットが存在する場合は1となり、合計が常に奇数になることを意味します。これは、データの送信エラーをチェックする簡単な方法ですが、万全ではありません。(付録Fを参照。)

Generate (LF) Out-L_(E/D)

このコマンドを使用すると、SSC は各キャリッジリターン (CR) 文字の後に自動的にラインフィード (LF) 文字を生成して送信します。 これはスイッチ SW2-5 の設定を上書きします。
例えば、(CTRL-A)L E(RETURN) と入力すると、プリンターは編集用のリストや原稿をダブルスペースで出力します。

Mask (Suppress) (LF) In-M_(E/D)

(Ctrl+A)M D(Return)と入力した場合、SSCはキャリッジリターン(CR)文字の直後に続くラインフィード(LF)文字を削除しません。

Reset the SSC-R

(Ctrl+A)R(Return)と入力すると、BASICプログラムにPR#ØとIN#0を送信してからSSCをリセットするのと同じ効果が得られます。このキーボードコマンドは、SSCへの以前のすべてのコマンドをキャンセルし、物理スイッチの設定を元に戻します。

その他のコマンド

このサブセクションで説明するコマンドは、文字とビデオ画面の処理を制御します。3つのコマンドは、(CR)、(LF)、(FF)文字の送信後の時間遅延を制御します。
Translateコマンドは、小文字と大文字の表示を制御します。 2コマンドとFコマンドは、それぞれ制御文字とキーボードで入力された文字を抑制します。
Xコマンドは、XON/XOFFプロトコルの一部として、SSCに文字ストリームのXOFFをチェックさせます。 最後に、(n)Sコマンドは、ビデオ出力を選択されたスロットにルーティングし、Eコマンドは画面上の文字の表示(エコー)を抑制します。

Set Time Delays-(n)C, (n)L, (n)F

プリンタによっては動作が遅く、Apple II に「プリンタビジー」信号やハンドシェイク信号を送信しないものがあります。このようなプリンタがモデム経由で SSC に接続されている場合、次の 3 つの遅延コマンドを使用すると良いでしょう。
(n)C コマンドは、Apple II が改行文字を送信した後、次のグループ (通常は次の行) を送信する前に、指定された時間だけ待機するようにします。これにより、プリントヘッドが印刷を再開する準備が整い、ページの左端に戻るのに十分な時間が確保されます。(n)L コマンドは、改行文字の後にプリンタプラテンが回転して用紙が次の行を受け取る位置に垂直になるようにする時間を与えます。
(n)F コマンドは、用紙送り文字の後にプリンタプレートが用紙を次のページの先頭に移動させる時間を与えます (通常は改行文字よりも長い時間)。
(n)= Time Delay
0 none
1 32 milliseconds
2 250 milliseconds (1/4 second)
3 2 seconds
Table 3-8. Time Delay Selections
プリンターのユーザーマニュアルを参照して、プリントヘッドとプラテンの移動にかかる時間を確認してください。プリンターをリモートデバイスとして使用する場合、これらの3つの遅延時間に適切な値を設定する必要があります。重要なのは、プリンター部品が必要な距離を移動するのに十分な時間を確保しつつ、印刷速度が著しく低下するほど時間を長くしすぎないことです。

Translate Lowercase Characters-(n)T

Apple IIのモニターは、入力された小文字をすべて大文字に変換してから、ビデオ画面またはBASICプログラムに送信します。Tコマンドでは、次の4つのオプションが利用可能です。
(n)= 小文字の扱い方
0 BASICプログラムやビデオ画面に渡す前に、すべての小文字を大文字に変換します。これは、Apple IIのモニターが小文字に対して行う処理と同じです。
1 すべての小文字をそのまま渡します。Apple IIの画面上での小文字の表示は未定義です(意味不明な文字になります)。
2 小文字を大文字反転文字として表示します。(つまり、白地に黒文字として表示します)。
3 小文字をそのままプログラムに渡しますが、小文字は大文字に、大文字は大文字反転文字として表示します。(つまり、白地に黒文字として表示します)。
表3-9. 小文字の表示
制御文字の抑制(Zコマンド)

(Ctrl+A)Z(Enter)と入力すると、SSCはそれ以降の制御文字(およびコマンド)を認識できなくなります。 Zコマンドを発行すると、以降のすべてのコマンドは無視されます。これは、送信データにSSCが制御文字と誤認する可能性のあるビットパターンが含まれている場合に便利です。 Zコマンドを実行した後にコマンド認識を回復するには、SSCをリセットするか、アドレス$5F8+s(SSCがスロットに挿入されている場合)の最上位ビットをクリアする必要があります。

Find Keyboard-F_(E/D)

キーボードのFキーとDキーを同時に押すと、キー入力によるデータ破損を防ぐことができます。 このコマンドを使用すると、プログラムに(Ctrl+A)F Dというコマンドを追加し、その後にデータ取得ルーチンを記述できます。

XOFF Recognition-X_(E/D)

通信モードでは、SSCは接続されたデバイスから送信されるXOFF文字(10進数19、付録D参照)を自動的に認識し、文字の送信を継続します。デバイスからXON文字(10進数17、付録D参照)を受信すると、SSCは送信を再開します。XOFF認識を無効にするには、(Ctrl+A)X D(Enter)を押してください。

Specify Screen Slot-(n)S

このコマンドを使用すると、テキストやリストを表示するデバイスのスロット番号を指定できます。 (通常はスロット番号、つまりApple IIのビデオ画面です。)これにより、SSCを他のカードスロット(例えば80桁表示周辺機器カード)に「連結」できます。 SSCのファームウェアが他のカードのファームウェアに情報を渡すには、他のカードのCs空間内に出力エントリポイントが必要です。 これは、現在入手可能なすべてのApple II用80桁表示カードに当てはまります。 例えば、スロット番号2にSSCが挿入され、リモート端末が接続されており、スロット番号3に80桁表示カードが挿入されているとします。 (CTRL-A)3S(RETURN)と入力すると、リモート端末からのデータがスロット番号3のカードを経由して連結され、Apple IIに80桁形式で表示されます。(Pascalでは使用できません。)

Echo Characters on the Screen-E_(E/D)

Apple IIでは、ほとんどのコンピュータと同様に、ビデオ画面に文字を表示(エコー)する処理は、キーボードから文字を受信する処理とは別のステップで行われます。タイプライターのように、これらを一つのステップとして捉えがちですが、実際には別の処理です。例えば、(CTRL-A)E D(RETURN)と入力しても、SSCは受信した文字をApple IIの画面に転送しません。この仕組みは、端末に入力されたパスワードを隠したり、文字の二重表示を防いだりするのに利用できます。

2026年5月24日日曜日

KiCAD10からFreeRouting

KiCAD10といっても、使い始めてまだ1カ月ほど。
プリント基板なんぞにゃトンと縁がなかった。
なにぶん電子機器の知識が無いものだから何かを作ってみようという気が起きなかったのだ。

そこに昨今のAI騒ぎ。AIなんてよくわからん物をとにかく使ってみるかいな、という次第で作る回路を決めてみた。 そうそう、昔、Apple II などという機械があったが、あれでよく遊んだのだ。という事で設計する回路は Apple II 用の拡張スロットに差し込んで使うものにした。

それで相談相手のAIはGEMINIにしてみた。これは画像を読み取ってくれるAIなので相談しやすそうだと思った次第。
でもGEMINIはある意味バカだった。いや、もっと悪い。わからないのなら、知りませんとか答えればいいのにごまかすのだ。 GEMINIが提示してくる回路図を眺めてみると、電子機器の知識に乏しいオイラにもひどい出来だとわかる図面。 こりゃ話にならんと、次なるAIを探してみた。検索上位に引っかかるAIを試してみると、
これらはGEMINIよりもひどかった。嘘はつかないが、こちらの話を無視するか、はぐらかして、逆に質問してくる。つまり教えてくれという態度なのだ。 それに、そういうAIには大抵有料会員勧誘のページがしつこく表示される。うんざりした頃にCLAUDEにたどり着いた。

CLAUDEは画像を読み取ってはくれない(この点は現在ではわからない。CLAUDEが回路図見せてくれと言ったりしたので)。話だけで回路図が作れるものかなぁ? と思っていたけどCLAUDEは結構使える。使えるので有料会員になってみた。 でも回路図をきちんと作ってプリント基板を発注するにはCADを使わないといけない。 それで、KiCADというアプリの解説本を一冊買って読んでみた。 本の内容はよくわからないが、とにかく使ってみた。

最初の数日は大変だった。年寄ってよくわからん本を読んでると眠くなるのね。
あそこはドーダとかここはどうすれば良いのか、などとAIに相談しながら1週間ほどで回路図ができた。

さて回路図ができたので、次はKiCADのPCBエディタというtoolで回路図に従ってプリント基板の上にコンデンサやら抵抗を乗せてゆく作業になる。 最初に買い込んだ本は、その辺りから解説が少なくなっていて、まあ、使い物にならなくなった。

今では回路図の第二版にとりかかっているのだが、kiCADで回路図つくるよりもKiCADのPCBエディタでプリント基板上の部品同志を配線してゆくほうがよほど大変なのだと思う。 その作業が大変なので、AIに相談したらFreeRoutingというJAVAソフトがあって、それが自動的に結線してくれるのだとか。 これを使ってみると、こりゃ楽チンだわ。あっという間に結線が終了。で、よく確認もせずにJLCPCBにプリント基板を発注。

一時間後、あれま!アースのベタ塗の順番を間違えて、孤立ベタができているではないの。まあ、それでもジャンパーを飛ばせばなんとかなるだろうと。 それに、電子機器はハードウェアだけでは動かないので、動かすソフトウェアを作らないといけない。でもハードウェアが一発で動作するとは、さすがに考えていなかった。 そこはほら、AIに作ってもらおうか、などと考えながら、一週間ほどでプリント基板が到着。

さっそく部品を基板に乗せて半田つけしていった。ほとんど完成かという時になって妙な事に気が付いた。 使っているCPLDというチップなのだが、ピン番号が違うのだ。KiCADにあったPCBエディタで使うフットプリントという、まあCPLD写真みたいな物、がATF1502AS_PLCC44とあったのを拝借して使っていた訳。ところがこいつは基板に直つけする製品では無くてソケット使用の製品だった。さらに勘違いが続く。購入したCPLDはATF1502AS_TQFP44,これは基板に直つけする製品。さらに、PLCCとTQFPはピン番号が完璧に違っていたのだ。

まあ、そういう次第で最初のプリント基板はお倉入りになった。CPLDの方はWinCUPL_IIというアプリで動作をシュミレートしてOKだという結果だったのだが、さて現実の方はどうか? という次第で回路図の第二版と相成った。
ATF1502ASを使うというのは、何とも気分が悪い。こんなCPLDなんか馬に蹴られて死んでしまえ。なので ATF1508AS_TQFP100を使う事にした。このチップはヒン間の距離が0.5mmで100個のピンがあるいとう代物。どうせ動かない物を作るなら派手に玉砕してしまえ、などと思ったわけではない。半田つけは老眼のオイラには一日仕事になりそう。そうそう、JLCPCBにはチップのはんだ付けオプションもあったしね。 で、その後の作業が順調に運んだかというと、そうでもない。

先にこれは便利と思ったFreeRoutingというアプリが反乱を起こした。java.lang.StackOverflowErrorを起こしてまったく動作しなくなった。
「古いFreeRoutingはバグが多いです。GitHubの最新版を使うと改善されることがあります。」
というAIに、いや最新版なのだが、と思いながらも最新版を再インストールするオイラ。
「FreeRoutingをコマンドラインから起動します。java -Xss10m -jar freerouting.jar」
でもJAVAに疎いオイラには実行できない、どうやら -Xss10m というのがスタックを増やすという事のようだ。
「PCBエディタから直接FreeRoutingを呼び出せます。」
やってみると、やはりjava.lang.StackOverflowErrorとなってしまう。
何とかコマンドラインから
java -Xss10m -jar freerouting.jar
とやってみると
Error: Unable to access jarfile freerouting.jar
AIによるとpathが通っていないからだと。システムpathの通し方は下の方にある通り。
Windowsでもfreeroutingには jar 版と exe 版があり、オイラの使っていたのは exe 版の方。
でもスタックを増やせるのは jar 版の方だというので、ダウンロードしてきました。
そしてダウンロードフォルダーまでPowershellでディレクトリーを移動して
java -Xss20m -jar freerouting-2.2.4.jar
と実行するとJAVAのバージョンが古いと言われてしまう。
java -version
で見ると
Java 8(class file 52.0)
なのに対してFreeRouting 2.2.4が必要なJavaは
Java 25(class file 69.0)
最近のJAVAは
https://adoptium.net/
からとってくるみたい。
OpenJDK25U-jdk_x64_windows_hotspot_25.0.3_9
というのをとってきてインストール。
実行してみると
Error: Unable to access jarfile freerouting-2.2.4.jar
なので、
C:\Program Files\Eclipse Adoptium\jdk-25.0.3.9-hotspot\bin
をpathに加えてみた。

ただやはりStackOverflowErrorは続く。

そうやって何時間か経過しているとAIが、StackOverflowErrorはfreerouting-2.2.4のバグだという。 Simplex.simplify が無限再帰を起こしているとのこと。
対策としてfreeroutingの古いバージョンを使うといいらしい。

いろいろ試してみて
FreeRouting 1.9 + OpenJDK17U-jdk_x64_windows_hotspot_17.0.19_10
という組み合わせに決めた。

JAVAのpathの通し方。
Windowsキー → 「環境変数」と入力 → 「システム環境変数の編集」→「環境変数」ボタン
続いて
「システム環境変数」のPathを選択 → 編集 → 新規追加
以下の項目をpathに追加した。

C:\Program Files\Eclipse Adoptium\jdk-17.0.19.10-hotspot\bin
その上で
Windows powershellで
java -version
と入力してjava17がインストールできている事を確認し
https://github.com/freerouting/freerouting/releases/tag/v1.9.0
からFreeRouting-1.9.0.jarというファイルをダウンロード
ダウンロードフォルダにFreeRouting-1.9.0.jarが届いているはずなのでpowershellでdownload folderまで移動してpowershellで
java -Xss20m -jar freerouting-1.9.0.jar
とすると

[main] INFO Freerouting v1.9.0 (build-date: 2023-10-30)
[main] INFO Settings were loaded from freerouting.json
[ForkJoinPool.commonPool-worker-1] INFO New version available: v2.2.4

新しいfreerouting-2.2.4がありますよ、というメッセージは無視して、しばらくするとfreerouting-1.9.0が立ち上がってきます。
その画面の「デザインファイルを選択する」ボタンを使ってKiCADからexportしたdsnファイルを読み込みます。

読み込めましたら、画面の上欄に「オートルーター」というボタンが表示されているので、これを押すと自動配線が開始されます。
使ってみると最高ですね。何よりもStackOverflowErrorが出ない。
自動配線ができない場合は延々と動き続けるので、画面をマウスで押さえて動作を止めます。
うまく自動配線が終了すると自動的に最適化というのか、総結線距離とビアの数を減らす操作が始まります。
一時間も眺めていると、それらの数が減っています。一晩中動かし続けてもいいのですが、そのうち数が減少しなくなってきますので、適当な時期に動作を止めます。 つまり「mail addressを登録してね」というメッセージが出ない。

今回のプリント基板は
1層-一般配線
2層-GND層
3層-VCC層
4層-一般配線
の4層基板にしました。


最初はfreeroutingがStackOverflowErrorを出して使えないので4層基盤なら手配線できるだろうと始めたのですが、
徹夜しても完成しない。しないどころか、どうやって完成したものか見当もつかない状態になってしまった。 freeroutingを使うなら1.9.0ですね。
この状態で久しぶりにfreerouting-2.2.4を使ってみると数本だけ配線して200か所以上未配線で終了してしまった。

2026年4月22日水曜日

Apple2-IO-RPi

Apple2-IO-RPiは Raspberry pi Zero 2 Wを使ってApple II の周辺機器機能を拡張するカードです。
主な機能はWifiを使ってネットワーク接続できる事。
次にSD_Card上にApple II用のイメージファイルを置けること。
Raspberry pi Zero 2 W を使ってインストール

まず、Raspberry Pi Imagerを使ってRaspberry Pi OS(Bookworm 64-bit) Lite
をSD cardに書き込みます。
そのSD cardをRaspberry piに装着し、windowsマシンとUSB経由で接続します。 そしてWindowsマシンからsshでRaspberry piに接続します。 接続後

wget --no-cache -O - https://raw.githubusercontent.com/tjboldt/Apple2-IO-RPi/main/RaspberryPi/setup.sh | bash

でインストールできるとあるのですが、簡単にはできません。
ほとんど諦めかけました。

まずRapberry pi OS ですが、最新のOSでは駄目でした。 ちょっと古いBookwormを使ってうまくできたはずなのですが、 最後の部分で Unit file raspi-config.service does not exist というメッセージで止まってしまいます。 まあ、これは無視してもいいようですね。 問題はsetup.shというスクリプトの最後の方

sudo systemctl disable avahi-daemon.service
sudo systemctl disable triggerhappy.service
sudo systemctl disable raspi-config.service ← ここでエラー
sudo systemctl daemon-reload

なのでdaemon-reloadやってないだけなのです。

まず
sudo systemctl status apple2driver
としてドライバーが動作しているか確認します。

active(running)

という表示がされれば動作はOKです。

そして最後の行にあった
daemon-reloadを動作させます。
sudo systemctl daemon-reload

その後
sudo reboot
で再起動。

なのですが、Apple IIのモニター画面には"."が表示され続けるだけで 一向に前に進んでくれません。

いえ、これでうまく動作できる場合もあるようですので、その場合はここまでお終いです。

さて、ここから始めのwgetの行まで戻ります。

wget --no-cache https://raw.githubusercontent.com/tjboldt/Apple2-IO-RPi/main/RaspberryPi/setup.sh

でsetup.shというスクリプトをダウンロードします。
ここで
git config --global pack.threads "1"
というオマジナイを入力します。
setup.shはそのままでは実行できないので

chmod 777 setup.sh
sudo ./setup.sh

でスクリプトの実行が始まります。 これで以後は前回の通りです。

エラーが出て気持ちが悪いという人は
nano setup.sh
としてスクリプトの最後の方にあるraspi-configの行を削除して
sudo ./setup.sh
とすればエラーが出なくなるはずです。

Raspberry Pi Zero 2 Wはメモリが512MBしかないので、gitがマルチスレッドでpackを処理しようとするとメモリ不足になり、クローンが壊れた状態で完了してしまう。結果としてビルドされたバイナリも不完全で、Apple II側ではドットが延々と出るだけ(通信が確立できない状態)になっていたのかもしれません。

git config --global pack.threads "1"
これでgitのpack処理をシングルスレッドに制限し、メモリ消費を抑えることができます。

Apple2-IO-RPiカードは2台製作していまして、 1台目はうまく動作したのですが、2台目が動きません。

この画像をぼんやりと眺めていたら、遅まきながら気が付きました。 とんでもない勘違いをしていた事に。

画像左の5段に並んだ最下段は74LS245 Data Bus Buffer
一方、画像最上段は74LVC245 Input Level Shifter
つまりどちらも245なので、これを一緒の物だと勘違いしていた訳。

最初に提示した画像の左最下段にあるTTLで、これが74LVC245だとわかるかもしれません。
そういう次第で、何度やってもApple II側でApple2-IO-RPiカードの起動ができなかったのです。 途中でモニターに落ちていました。

最初の画像でEEPROM AT28C64Bのソケットのチップが入っていませんでしたけど。 これには訳がありまして、Apple2-IO-RPiカードの起動ができない間、何度もApple IIスロットにカードを 抜き差ししていて、疲れていたんでしょうね。逆刺ししてしまいました。そしてAT28C64Bは昇天してしまいました。

Windowsで消せないファイル

Windows10のエクスプローラーでどうしても削除できないファイルがいつの間にかできていました。
何かをインストールしたはずみに出来たものだと思いますが、はっきりしません。
そのファイルをPowershellで見ますと、下記のようになってました。

Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2025/06/04 8:15 32768 StateRepository-Deployment.srd-shm
-a---- 2025/06/04 8:15 32768 StateRepository-Machine.srd-shm

最近になってやっと削除できたので、忘備録として書いておきます。特に物忘れが多くなってきたので。
Powershellでcaclsというコマンドを使って削除したいファイルの削除権を設定するのだそう。
削除権を設定したいユーザー名が不明ならば

net user

でユーザー名を調べてから使います。
このファイルの場合は

cacls StateRepository-Deployment.srd-shm /g tagosaku:f

tagosakuはユーザー名なので自分が使っている名称に書き換えて。
これができれば後は簡単で

rm StateRepository-Deployment.srd-shm

で削除できました。

2026年4月11日土曜日

BlueSCSI WiFiと漢字Talk 7.5.3

BlueSCSIでRaspberry pi pico WiFiを使ってMacintoshでインターネット接続をしてみました。

MacintoshはLC475を、OSはMacOS 7.5.3とMacOS 8.0を使いました。

MacOS 8.0に設定文書を読みながらDynaPortの設定をしてみると簡単にインターネット接続できました。

次にMacOS 7.5.3です。

これはまったく歯が立ちませんでした。
いや、正確に言うと、漢字Talk 7.5.3ではインターネット接続ができませんでした。
ところが、MacOS 7.5.3(英語版)ではインターネット接続できました。
では、MacOS 7.5.3(英語版)+ 漢字Talk 7.5.3のことえりシステムをインストールしては?

結果はインターネット接続ができませんでした。

まあ、そんな事ならMacOS 8.0で日本語を使ってWiFi接続でOKではないのかと。
それにWiFiさえ諦めれば、漢字Talk 7.5.3を使う事ができるのですから。
ただねぇ、LC475は別売されたネットワークカードをPDSスロットにささないと ネットワークが使えないのです。でも、PDSスロットにはすでにApple IIe Cardが ありますのでネットワークカードは却下です。
Apple IIe Cardは MacOS7.5.3が上限のようで、それ以後のMacOSでは使えないとの事。 まあ、そういった事情がありまして、最後に試したのが Japanese Language Kitという、英語システムに日本語を組み込むアプリです。

これは1.44M Floppy Disk 13枚に収納されています。
ただ入手したJapanese Language Kit インストーラーがある一枚目のディスクがディスクエラー。
ディスクを修復できないものかと探してみましたらDiskDup_Proというアプリがあるそう。
これはちょっとしたディスクエラーなら読み出して、ディスクイメージファイルを作れるとの事。

で、やってみました。
1回や2回では当然エラーで中断されます。でも10回20回となるとエラー発生までの時間が延びてきて 30回を越えた頃になんとかディスクイメージファイルが作れました。
そのディスクイメージファイルを新規の2HDフロッピーに書き込んでInstallerが使えるようになりました。
さて
MacOS 7.5.3(英語版)+ Japanese Language Kit でどうだったかというと
インターネット接続できました。

Sega Saturn (VA0) CD drive board recap

Sega Saturn (VA0) CD drive board recap Sega Saturn (VA0) CD drive board recap

電圧 容量 個数
10V 220μ 1個
10V 100μ 3個
10V 47μ 1個
16V 22μ 1個
25V 10μ 1個
50V 4.7μ 1個

2026年1月3日土曜日

About BlueSCSI

BlueSCSIという装置がある。
これは68000系のCPUを持つレトロなコンピュータの SCSI接続のMass Storage、代表的にはSCSI接続のHARD DRIVEなどの 役割をSD CARDにさせようというものだ。
昨今、中古のSCSI HARD DRIVEなんて大抵動作不能になってる。

この装置、内蔵用と外付け用(DB25)の2種類ある。 動作可能なコンピュータは68K Macintoshが本来の対象となっている ものの、Amigaなどでも動作実績があるようだ。
そこで、Amiga2000に「GVP GForce 030」を入れて、その外部SCSIを使って BlueSCSIを導入してみることにした。
調べてみると、導入方法は簡単なようで、 SD CardにHARD DRIVEのイメージファイルを作るといいようだ。 Macintosh用には「disk-jockey」なるWindows用のアプリがある。 そのアプリでもいいのかもしれないが、 「CiderPress2」というWindows用のアプリを使ってみた。

ここまで書いてみて、何となく筋書きがわかる方もいるでしょう。 BlueSCSIは、どうやっても使えなかった。

これはGVP deviceがうまくいかない原因だろうと、 「Amiga A2091」に変更して、そのSCSI(DB25)コネクターを使う事に しました。これはCommodoreの純正品だからうまく行くはず。 でもダメでした。
仕方がない。68K Macintoshを手に入れてBlueSCSIを使ってみる 事にしました。これなら動作確認されているのだからOKのはず。 でも、まったく動作しません。
ここまでたどり着くまでに約一か月。 これはBlueSCSIがおかしいのではないか、と疑い始めました。 それならfirmwareを書き換えてみてはどうだろうか? で、やってみました。

Windows上にUSB deviceとして認識されたので、新しい UnivesalFirmwareを放り込んでみました。 すると途中でエラーが発生します。

外付け用(DB25)BlueSCSIはプラスチックケースに特殊なネジで封印されて いますので、それを開けてみるには特殊ドライバーを入手しないと いけません。それをドライバーの規格がわからないまま数週間が経過し、 複数のドライバーを購入した結果、やっとの事でプラスチックケースを 開く事ができました。

開腹なったBlueSCSIを使ってみると変な事にすぐ気が付きました。 「Raspberry pi pico」が触れないくらい熱いのです。 こりゃーどこかショートしてるか発振してる。
拡大鏡を使って調べてみましたが、どこにも異常は見当たりません。 ここまで来ると、もう意地です。どこが問題なのか わかない事には収まりがつきません。
で「Raspberry pi pico」を壊していきました。 BlueSCSIを作ってる人達、何故「Raspberry pi pico」をソケットでは無く 半田で直付けするのか、製品に絶対の自信があるのでしょうねぇ。 で、結局、この写真です。

外付け用(DB25)BlueSCSIは製品としては完全に失敗作だと思います。 内蔵用のBlueSCSIを使ってみましたら、68K Macで簡単に動作しました。