石原 博の覚書

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

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

もう少し調べよう。