もうすぐ新年・・・ [日記]
今年を振り返ってみるとレトロマイコンの年だったように思います。
昨年の暮れにZ80を手に入れ、久々にZ80ボードを作ろうと思い立ちました。
学生の時には徹夜して配線していましたが、流石にそんな時間は取れないので極力シンプルなハード構成ということでPICを使った3チップ構成のCP/Mマシンを作りました^^
PIC用に開発した自作コンパイラ(picle)の実用性を試せたという意味でも有意義だったと思います。
CP/M-80は初期の頃はソフトの入手性が非常に良かったのですが、次第に自由に使えるソフトは少なくなってきました。しかし、現在は多くの優れたソフトをネットからダウンロードして使える状況なので、この意味でも昔に帰った錯覚を覚えますw
基板もCNCで自作したかったのですが、プリント基板製造業者の破格なサービスの誘惑には勝てず基板は作ってもらっています(まぁ自分で作るよりは遥かにきれいにできるのでそれはそれでいいのですが)
歴代の自作ボードと比較すると3DプリンタやCNC等の導入によりここ数年で物作り力は確実に向上できているのではないかと思います^^
参考)https://piclabo.byte.jp/hoby.html
同様の3チップ構成でCP/M-68Kが動くマイコンボードも作りました。PCBのパターンもこちらの方が洗練されていてスキルアップできていると思います。
また、CP/M-68Kはネット上でもあまりソフトがないのでスクリーンエディタを自作し楽しみました^^
さぁ~て来年は何をやるかなぁ~^^
昨年の暮れにZ80を手に入れ、久々にZ80ボードを作ろうと思い立ちました。
学生の時には徹夜して配線していましたが、流石にそんな時間は取れないので極力シンプルなハード構成ということでPICを使った3チップ構成のCP/Mマシンを作りました^^
PIC用に開発した自作コンパイラ(picle)の実用性を試せたという意味でも有意義だったと思います。
CP/M-80は初期の頃はソフトの入手性が非常に良かったのですが、次第に自由に使えるソフトは少なくなってきました。しかし、現在は多くの優れたソフトをネットからダウンロードして使える状況なので、この意味でも昔に帰った錯覚を覚えますw
基板もCNCで自作したかったのですが、プリント基板製造業者の破格なサービスの誘惑には勝てず基板は作ってもらっています(まぁ自分で作るよりは遥かにきれいにできるのでそれはそれでいいのですが)
歴代の自作ボードと比較すると3DプリンタやCNC等の導入によりここ数年で物作り力は確実に向上できているのではないかと思います^^
参考)https://piclabo.byte.jp/hoby.html
同様の3チップ構成でCP/M-68Kが動くマイコンボードも作りました。PCBのパターンもこちらの方が洗練されていてスキルアップできていると思います。
また、CP/M-68Kはネット上でもあまりソフトがないのでスクリーンエディタを自作し楽しみました^^
さぁ~て来年は何をやるかなぁ~^^
8080/Z80 リロケータブルコードの実験 [Z80]
Z80は8080には無かった相対ジャンプ命令が追加されましたが、6809と違い相対コールができません。なのでOS9のようなポジションインディペンデントコード(PIC)なモジュールが書きづらいです。
昔から議論されていることではありますが、PICは面白いのか?wちょっと考えてみました。
PICなコール(相対コール)をソフトで実現するためにはプログラムカウンタ(PC)の値を参照する必要があります。
Z80の命令セット上、コール時のスタックからPCの値を拾えます(それ以外にPCの値を参照する方法はないと思う)
PCの値さえ参照できれば相対値をコール時のコードに埋め込めば相対コールが実現できます。下記が相対コールのコード例です。'+'が付いている行はマクロ展開で生成された命令です。
Z80 relocatable call
机上検討段階でほとんど動作検証ができてしまっているようなものですが実機での確認結果が下記です。ZSIDDはZSIDに小文字シンボル対応と1行ダンプ表示のパッチを適用したものです。
参照)
3チップ構成Pic24CPMマイコン(その4)ZSIDで小文字のシンボルを使う方法その2
下記のダンプ表示のようにZSIDがRST 38Hを使っているので上のソースから生成したHEXファイルをZSIDではロードできないためSコマンドで手入力しています。
relocatable call code test
想定通り動作することが実機で確認できました(すぐに動かせるCP/Mマシンがあると便利ですね^^)。
DEとHLレジスタを破壊してしまうし、コール命令が4バイトになってしまいますが、リロケータブルなコールが実現できます(必要な場面があまり思い浮かびませんがw)
また、上記の例ではRST命令を使っていますが、固定番地へのコール命令でも同様なことが可能です(この場合rcallは6バイト長になるけど)
★追記 2022/12/10
「8080/Z80 リロケータブルコードの実験(その2)」の記事に DE/HL レジスタ非破壊のリロケータブルコールについて書きました。
下記の [ 次へ ] からも飛べます。
[TOP] [ 前へ ] 連載記事 [ 次へ ]
昔から議論されていることではありますが、PICは面白いのか?wちょっと考えてみました。
PICなコール(相対コール)をソフトで実現するためにはプログラムカウンタ(PC)の値を参照する必要があります。
Z80の命令セット上、コール時のスタックからPCの値を拾えます(それ以外にPCの値を参照する方法はないと思う)
PCの値さえ参照できれば相対値をコール時のコードに埋め込めば相対コールが実現できます。下記が相対コールのコード例です。'+'が付いている行はマクロ展開で生成された命令です。
|
机上検討段階でほとんど動作検証ができてしまっているようなものですが実機での確認結果が下記です。ZSIDDはZSIDに小文字シンボル対応と1行ダンプ表示のパッチを適用したものです。
参照)
3チップ構成Pic24CPMマイコン(その4)ZSIDで小文字のシンボルを使う方法その2
下記のダンプ表示のようにZSIDがRST 38Hを使っているので上のソースから生成したHEXファイルをZSIDではロードできないためSコマンドで手入力しています。
|
想定通り動作することが実機で確認できました(すぐに動かせるCP/Mマシンがあると便利ですね^^)。
DEとHLレジスタを破壊してしまうし、コール命令が4バイトになってしまいますが、リロケータブルなコールが実現できます(必要な場面があまり思い浮かびませんがw)
また、上記の例ではRST命令を使っていますが、固定番地へのコール命令でも同様なことが可能です(この場合rcallは6バイト長になるけど)
★追記 2022/12/10
「8080/Z80 リロケータブルコードの実験(その2)」の記事に DE/HL レジスタ非破壊のリロケータブルコールについて書きました。
下記の [ 次へ ] からも飛べます。
[TOP] [ 前へ ] 連載記事 [ 次へ ]
3チップ構成68Kマイコンの構想(その14)スクリーンエディタの開発 [68K]
ソフトが豊富なCP/M-80とは違いCP/M-68Kはインターネットからダウンロードできるソフトはそれ程豊富ではありません。
CP/Mのラインエディタ(ED)はあまり使い勝手が良くないので使い易いエディタが欲しくなります。
CP/M-68K用のマイクロEmacsが入手可能ですがWordStar系のエディタが欲しいところです。ZDEもCP/M-68Kには対応していないようです・・・
ネットで探すとCP/M-68K用のエディタのソースがいくつか見つかりますが、ソースファイル数が多くてCP/Mのコマンドライン内でリンクできなかったり(ライブラリアンを使ってリンクしたという記事もあった)、ビルドはできてもうまく動かなかったりでソースを解析して動くようにするよりは、エディタを作ってみようという結論に達しました^^
ということでCP/M-68K Ver1.3のCコンパイラ環境を使ってスクラッチでスクリーンエディタを作り、sked(Simple Kitten EDitor)と命名しました^^
ターミナルはTeraTermを想定し、VT100のエスケープシーケンスの一部を使い制御しています。
エディタ内のデータ構造や処理方法について書いておこうかとも思いましたが、あまり興味をひかない内容と思われるので割愛しますw
今時、TeraTermで接続したCP/M-68Kボードを動かす人はほとんどいないと思うので必要とする人は少ないでしょうが、シンボル情報が含まれるリロケータブル形式のものを公開します。
reloc sked.rel sked.68k
の操作でシンボル情報を取り除いたコンパクトな実行ファイルに変換できます。
typeコマンドの代わりにviewerとしても使えるのでコンソール接続のCP/M-68Kが動く環境を持っている人にとってはそれなりに便利だと思います。
現時点で実装しているコマンドに関しては下のヘルプを表示中の画面キャプチャを参照してください。
ダウンロードはこちらからどうぞ(商用利用以外であれば自由に使用できます)
★2018/12/14 追記
twitterにアップした操作動画付きツイートを貼っておきます。
Win10の画面録画機能?で保存していますが、ウィンド内表示の上下がカットされるため、TeraTermを26行に設定して録画したので表示中の最下端の行の表示はゴミです。(skedは 80文字x24行 の画面で動作します)
★2019/01/12 追記
WordStarのコマンドライクなスクリーンエディタがCP/M-68K上で使えるようになったのでライフゲームを動かしてみました。
実行ファイルとソースは下記からダウンロードできます。(★2019/01/13 定常状態の検出ロジックを強化しました)
実行ファイルはシンボル情報の入ったリロケータブル形式(rel形式)になっているので
reloc life68.rel life68.68k
でシンボル情報のないコンパクトな実行ファイルに変換できます。
★2019/02/11 追記
CP/M-68K用に開発したxmodemアプリを下記の記事で公開しています。
TeraTermのxmodem機能を使ってファイルの送受信が可能になります。
3チップ構成68Kマイコンの構想(その10)XMODEMアプリの作成
★2020/08/13 追記 {
「レトロマイコン86ボードの構想(その14)untarの製作」の記事で書いたCP/M-86用に作成したuntarをCP/M-68Kに移植しました。
reloc untar.rel untar.68k
でシンボル情報のないコンパクトな実行ファイルに変換できます。
ダウンロードは下記のリンクからどうぞ(商用利用以外であれば自由に使用できます)
・2021/01/04 Ver0.05
Win10のtarコマンド等のヘッダ内サイズデータのデリミタが20Hの場合に対応
}
[TOP] [ 前へ ] 連載記事 [ 次へ ]
CP/Mのラインエディタ(ED)はあまり使い勝手が良くないので使い易いエディタが欲しくなります。
CP/M-68K用のマイクロEmacsが入手可能ですがWordStar系のエディタが欲しいところです。ZDEもCP/M-68Kには対応していないようです・・・
ネットで探すとCP/M-68K用のエディタのソースがいくつか見つかりますが、ソースファイル数が多くてCP/Mのコマンドライン内でリンクできなかったり(ライブラリアンを使ってリンクしたという記事もあった)、ビルドはできてもうまく動かなかったりでソースを解析して動くようにするよりは、エディタを作ってみようという結論に達しました^^
ということでCP/M-68K Ver1.3のCコンパイラ環境を使ってスクラッチでスクリーンエディタを作り、sked(Simple Kitten EDitor)と命名しました^^
ターミナルはTeraTermを想定し、VT100のエスケープシーケンスの一部を使い制御しています。
エディタ内のデータ構造や処理方法について書いておこうかとも思いましたが、あまり興味をひかない内容と思われるので割愛しますw
今時、TeraTermで接続したCP/M-68Kボードを動かす人はほとんどいないと思うので必要とする人は少ないでしょうが、シンボル情報が含まれるリロケータブル形式のものを公開します。
reloc sked.rel sked.68k
の操作でシンボル情報を取り除いたコンパクトな実行ファイルに変換できます。
typeコマンドの代わりにviewerとしても使えるのでコンソール接続のCP/M-68Kが動く環境を持っている人にとってはそれなりに便利だと思います。
現時点で実装しているコマンドに関しては下のヘルプを表示中の画面キャプチャを参照してください。
help表示状態の画面 |
|
ダウンロードはこちらからどうぞ(商用利用以外であれば自由に使用できます)
-
sked68k_v001g.zip
★2022/02/09 V0.01g メモリ確保方法をmallocからSP参照方式に変更 ★2019/04/08 V0.01f 新規ファイル中断時に新規ファイルが残らないようにした ★2019/04/06 v0.01d ファイル内のコントロールコードを表示
★2017/12/19 v0.01b help表示の誤記修正
★2017/12/17 v0.01a ステータス表示部分を改善
★2018/12/14 追記
twitterにアップした操作動画付きツイートを貼っておきます。
Win10の画面録画機能?で保存していますが、ウィンド内表示の上下がカットされるため、TeraTermを26行に設定して録画したので表示中の最下端の行の表示はゴミです。(skedは 80文字x24行 の画面で動作します)
CP/M-68KはネットからDLできるソフトはそれ程豊富じゃないですね^^;
— skyriver (@wcinp) December 12, 2018
いいエディタを探せなかったのでCP/M-68KのC環境でスクラッチでスクリーンエディタを作ってみたよ^^SimpleKittenEditorで~す#CPM68K #Pic24CPM68K #ScreenEditorhttps://t.co/CUAWehzbSO pic.twitter.com/sJLx4iQNL4
★2019/01/12 追記
WordStarのコマンドライクなスクリーンエディタがCP/M-68K上で使えるようになったのでライフゲームを動かしてみました。
実行ファイルとソースは下記からダウンロードできます。(★2019/01/13 定常状態の検出ロジックを強化しました)
実行ファイルはシンボル情報の入ったリロケータブル形式(rel形式)になっているので
でシンボル情報のないコンパクトな実行ファイルに変換できます。
LifeGame on CP/M-68K |
|
★2019/02/11 追記
CP/M-68K用に開発したxmodemアプリを下記の記事で公開しています。
TeraTermのxmodem機能を使ってファイルの送受信が可能になります。
★2020/08/13 追記 {
「レトロマイコン86ボードの構想(その14)untarの製作」の記事で書いたCP/M-86用に作成したuntarをCP/M-68Kに移植しました。
でシンボル情報のないコンパクトな実行ファイルに変換できます。
ダウンロードは下記のリンクからどうぞ(商用利用以外であれば自由に使用できます)
・2021/01/04 Ver0.05
Win10のtarコマンド等のヘッダ内サイズデータのデリミタが20Hの場合に対応
}
[TOP] [ 前へ ] 連載記事 [ 次へ ]