石原 博の覚書

電子工作に関する日々の覚書を記載します

CP/M68K SDカード内容整理

2024-03-20 12:53:57 | 日記
CP/M68Kが一応動き出したがプログラムのやり取りが面倒

linux側から毎回cpmtoolsを使用してSDカードに書き込みしていたが、
逆にSDカードからlinuxへの読み出しを試みた。

SDカードのイメージを dd でdiskimagecに読み出したあと、
cpmcpでファイルに戻す
>cpmcp -f 8mb diskimagec 0:* diskc

ところが「malloc(): invalid size (unsorted)」というエラーが出る。
確保した領域以上になにかしているのかなあ。素人だから良くわからない。

githubでcpmtoolsがあった(https://github.com/lipro-cpm4l/cpmtools)のでダウンロード。
unofficial forkらしい。とりあえずソースを読むがやっぱりわからない。

gdbで動きを見ようと
./configure CFLAGS="-g O0"
make
sudo make install
とすると動いた??
(apt get install では /usr/binだが、コンパイルすると/usr/local/binにインストールされる)

あれっと思い、今度はconfigureにオプションをつけずにコンパイル
./configure
make clean
make
sudo make install
すると今度も動いた???

debianのレポジトリのcpmtoolsにバグがあったのか、コンパイラのバージョン違いか
良くわからないが、まあ動いたので良しとしよう。

これでSD内のファイル整理がしやすくなる。

FDD-USB(USB_FDD@1306)が動いた

2024-03-17 12:54:47 | 日記
先日Arduinoを利用したFDD読み取りができたが、別にアマゾンで1800円程度のボードがあるのを見つけた
話のネタに注文。少し時間がかかったが到着。


動かない。

良く見ると半田ブリッジ。出荷検査してないのか? これでは動くわけないやと修正。


一応電源用のケーブルはあるが、これを使ってもモーターがちゃんと動かない(カタカタいうけど回らない)。
調べて見るとMITSUMI D353M3Dは5V 1.6W 一応USB2.0の範囲内とも言えなくもないが、
こんな細い線でモーターを動かすのは問題。

外部からドライブの電源を接続。


lsusbでは
Bus 001 Device 043: ID 0644:0000 TEAC Corp. Floppy
と表示される。

一応3.5inchフロッピーディスクを読めることが確認できた。


KIM Unoを動かした

2024-03-10 14:46:08 | 日記
たまたまKIM Unoの基板が400円というのをオークションサイトで見かけた

手持ちでArduino Prominiはあるし、タクトスイッチも以前にアマゾンで買った中華製が大量にある。
そこで作ってみることにした。
https://obsolescence.wixsite.com/obsolescence/kim-uno-details

問題はLED。仕様上は「3461BS」らしいが、手にはいりそうにない。
4桁アノードコモンのLEDを日本橋で探し、大きさが違うが足が細くて長いのが
デジットであったため、これを基板にあうように曲げて接続。


表にLED、裏にArduino Prominiで重なっているため、失敗すると面倒。
そこでLEDもAruduino Prominiもピンヘッダを利用した。
(Arduinoは細pin headerオス)


一応動くところまで確認。(ダイナミックドライブのため、写真では一部しか光ってないように見える)


ただマニュアルを見てもメモリの読み出し書き込み程度はわかるが、動作が良くわからない。
(vtlとか逆アセンブラとか記載にあるが、あのスイッチと7セグメントLEDでどうするの)

そこでinoファイルを読んでみた。

config.hは以下のとおり。STMやESP32でも動くプログラムらしい。
#define _TARGET ARDUINO_MINI
//#define _TARGET BLUEPILL_STM
//#define _TARGET ESP32_R
//#define _TARGET PERSONAL_COMPUTER

さらに、ProMiniでは全部同時には動かないとある。デフォールトでは以下のtrueだけ。
//-------------------------------------------------------------
//----- Programs to include in ROM, set any combination to TRUE
//----- (as long as target has space: Pro Mini can't have all)
//-------------------------------------------------------------
#define _INCL_DISASM FALSE
#define _INCL_MINIASM TRUE
#define _INCL_MCHESS TRUE
#define _INCL_CALCULATOR TRUE
#define _INCL_VTL02 FALSE
#define _INCL_A1BASIC FALSE
#define _INCL_ACI TRUE
#define _INCL_LIFE FALSE

ProMiniのシリアルにも文字は出てくるので、VTLや逆アセンブラはそれで動くのだなと
納得したが、それならLEDやタクトスイッチは電卓とモニタぐらいにしか使わないわけか。

各プログラムは以下のようにアドレス指定で実行して動かすようだ。
// All ROMS together do not fit in a tiny Arduino Pro Mini,
// ---> make your selection in config.h.
// If you copy to RAM, you also have to choose which programs are loaded.
//
//
// --- ROM MAP ----------------------------------------------------------------
// ROM1: KIM-1 ROM002 (monitor main code) $17C0
// ROM2: KIM-1 ROM003 (tape and RS-232 code) $1780
// disassembler: Baum & Wozniak disassember $2000
// calc: 6502 floating point library from crbond.com/calc65.htm $5000
// special I/O area for programmable calculator (part of calc@5000) $7000
// mchess: microchess from benlo.com/microchess recompiled to start at $C000
// Apple-1 Basic $E000
// vtl-02: from 6502.org $DC00
// Apple-1 ACI (cassette tape ROM) $F100
// Baum-Wozniak mini-assembler (run $FDDD) & Wozmon ($FF $FBAE
// ----------------------------------------------------------------------------


SST(シングルステップ?)はオリジナルではスライドスイッチで、
ここではタクトスイッチでトグル動作のため、シリアル接続画面で状態は見えるのだが、
それがなければ現在の状態がどうか判然としない

もう少し調べよう。

ArduinoFDCがとりあえず動いた(2)

2024-02-24 18:20:30 | 日記
バラックで作っていたので不安定だったのを、
万能基板で作り直した(コネクタも34pin買ってきてはんだ付け)
グラウンドもそれなりに強化、1Kオームでのプルアップも行った。


・3.5インチ
 ほぼ問題なく動くようになった(時々CRCエラーは出るかリトライで読めている)


・5インチ
 ArduinoFDCでdirするとディスクは回転するが、エラー(Error#3:Drive not ready)
 (monitorで t 0や t 1としても同じ)
 なんか接続が違うのかな?

ArduinoFDCがとりあえず動いた

2024-02-18 15:11:16 | 日記
約40年程前になるが、シャープMZ80Bでカセットテープ入手力やキーボードスキャンを含めモニタを完全に作り変えた上で、日本橋で8inch厚型 両面単密度の中古ドライブを購入し、1982年10月トランジスタ技術に相沢 一石さんが連載していた「作りながらマングマイコン設計トレーニング」を参考に、フロッピーディスクコントローラMB8877を使用してフロッピーディスクをつないでいた。さらにその後薄型の両面倍密度の中古ドライブを購入しCP/Mを動かしていた。

今思えばオシロもなしにテスターだけでよく動かしたものだ。若かった。
turbo pascalを動かし、Game80を動かし、micro pascalを動かし、TL/1を動かし遊んでいた。JUG CP/Mにも参加してたし。

その後AT互換機(386 25MHzとか)やMacPlusを使用していたが、当時使用していた5インチや3.5インチの
フロッピーディスクがまだ手元にある。動くかどうかはわからないが放置するのはもったいない。
(内容的には今となっては大したものがあるわけではないが)

そんな折WebでArduinoFDCを見かけた。なんとArduinoでフロッピーディスクを読み書き出来るとのこと。(https://github.com/dhansel/ArduinoFDC)
昔はVFOを利用したデータセパレータとか、FMだのMFMだの大変だったし、速度的にも単純なZ80 4MHzのソフトでは間に合わないので、
Waitを利用して読み書きしていたが、このArduinoFDCは信じられないことに16MHz atmeg328pでソフト的にMFMまで読み取っている。
さらにArduino UNOだけではなく、miniやmicroでも動くらしいので検証を兼ねてpro miniで作成してみた。

とはいえなかなか機器の入手が難しい。
・フロッピードライブやケーブルはオークションで入手
・電源は以前作成していたATX電源を利用したものを使用(これなら5インチで使う12Vも出る)
・Arduinoはpro miniを使用


結果
・3.5インチ
 読めるがCRCエラーが結構出る(monitorコマンドでrで全面読み込み時)
 ディスクの劣化によるものなのか、中古ドライブの問題なのか、貧弱な配線の問題か、
 ArduinoFDCの問題なのか良くわからない(*1)。
・5インチ
 黄ばんだFD1155Cを入手したが、フロッピーディスクを入れた際にモーターは回るが、
 ヘッドをおろした時にモーターが止まってしまう。ArduinoFDCをつなぐところまで行かない。



(*1)USB接続の3.5インチディスクから読むと普通に読めるのできっと配線だろう。まず動くかの確認のため、
 強く推奨されている信号線のプルアップも端折ってるしGNDラインもブレッドボード用の線1本しかつないでないし。

3.5インチのディスクなら今でもUSB接続のドライブがあり、今でもそれほど必要性はないが
5インチはなかなか読む手段がない。将来的には8インチが読めれば良いなあ。