m@3記念館 QA(と言う題の書き散らし、想定でもない問答集) 2024/2/28改

[このサイト何]
8〜32bitレトロパソコンの記念館として収集物(がらくた)の記念撮影した画像を上げてます
(元は博物館でも作ろうかと集めたのですが10年ほったらかした挙句故障多発して止めました)
実用性を重視する趣味により初代とかよりFDD付き後期モデルに偏ってます
MSX2とFM TOWNS多めです

ついででレトロパソコンで何か動かそうというソフト研究実験室になってます
題材(習作)としてC言語でスクロールMAP表示と縦2Dシューティングゲームを上げてます
筆者は凡人未満なので凄いソフトやハード改造修理のような大した物や解説記事は置いてないです/誇る経歴も無し

下らないですが何かの参考になれば幸い。

[画像汚い]
諦めて下さい/出し入れで腰を痛めました

[こんなもん集めてどうすんですか]
昔のゲームする位が関の山。ソーサリアンのBGM聞くだけとか。
修理に出すと5万円から、壊れて店に売りに出すと値が付いても2千円、修理済をオクで買い戻すと10万円から
メンテ済と称して相場が急に上がった。今は買い時で無いのかも。

[金有りますね]
無いです
貯めては買ってるだけ

[おススメの機種]
(PC-88) FH黒+SB2 又はMA VAはまず故障してますレアだからFEかMA2でいいじゃん
(X1) turboZ2(CZ-881C)か3(CZ-888C)だけどほぼ故障してるらしいレアだから普通のturboでいいじゃん
(FM77AV) EX40レアだから何でもよさげ
(MSX) FS-A1ST一択に近い ベルト?レアでもないけどF1シリーズ辺りで略
(MZ) 1500か2500 だけどQDもテープもまず故障してるシリーズ自体がレア
(X68K)XVI以降だけどほぼ故障の上、改造済レアだからACEかEXPERTシリーズ辺りで略
(FM TOWNS)HA/HB/HCだけどほぼ電池切れレアだからFreshシリーズ辺りで略
(モニタ)PC-TD151に各種変換繋ぐ、かD端子テレビに電波の変換繋ぐ/古い三菱やDellの液晶にいいのがあるらしいけど
結論:直せないか直してもらえない素人はレトロパソコンには手を出さない。お金は大事にしよう。

[DOS/Vは]
容量の都合で載せてません

[素朴な疑問]
PC-88でCで開発する人が皆無な辺り〜z88dkで+PC88すれば8A00から実行できるt88ファイルが出来るのが分かった
→で、自分でやってみた(トップページ参照)
レトロパソコンでいじられる素材が決まってゼビウスとシルフィードとYs1/2とコナミな辺り
(いや凄いんですけどね、X1turboの人とか77AV→X68Kの人とか、P6の人とかmk3の人とかぴゅう太とか、FC/MSX2ゼビウスのアンドアを浮遊させたりとか)
PC-88VAで開発する人が少ない辺り(やってみたいけど、アセンブラやる気無いのでどうだか)→やってみた
P6SR版ReFIGHTは素直に感動した。(CORE FIGHTERは模倣なので)

[なんでこんなちゃちいページなの]
今の限界です&容量無いし

[おススメのレトロパソコン資料は]
問題は有りますがWikiでも読んでください

[技術資料は]
諦めて下さい(図書館やネットにある物以外)
なお日高さんのページには氏の本の正誤表があります

[BDS-CとSDCCとz88dkどれがいいですか]
全ては試してないので何とも。どれが速いのかも知りません
SDCCはz88dkにパッチ当ててZSDCCとして取り込まれてます。(Winでは別配布のパッチでないとうまく動かなかった→今はそうでもない?)
SCCZ80より速いけど最適化に癖があったりして動かすのに一苦労します。MSX-BASICから呼ぶとexit(0)しないとSyntax Errorになるのは直ったらしい。

SCCZ80とZSDCCではスタックに積む引数の順番が標準では逆です。
癖と言うかBIOSコール時にIXレジスタ退避してないから変数が化けてたとか、みたく。

(でも実はLSI C-80の方がいいとか。)

SDCC4.2.0で引数のレジスタ渡しが出来るようなので調査中。
→ZSDCCではオプション --sdcccall1を付ける…がライブラリ(乗除算も?)が対応してないので駄目。--sdcccall0だと引数をレジスタとスタック両方に積むが、ドキュメントに無いのでスタックだけ見た方がいいと思われる。1だとレジスタだけになる(使用されるレジスタも一部違う。戻り値も16bitではhlからdeになる)。引数のある関数ごとに__sdcccall(1)付けるしかない。
本家のドキュメントでは1が標準とあるのでZではあえて0にしてあると思われる。

[後期PC-88のキーボードのタイプ、HC-95の本体のタイプ]
探せば出てきます

[X1turboZのロゴの色の組み合わせ]
1〜3全部違うらしい

[RaspberryPiとかIchigoJamとかどうですか]
標準でケースもないしTK-80みたい、いやAKI-80とかかな
ワンチップMSXじゃ駄目なんですね(教育用には高すぎて)

PICも相当流行ったけど無かったことになってる
スティックPC

プログラムしないとパソコンは意味が無いというのを教えられます
ただ詰め込みなんですよね。構造化無視して。ハード屋さんには分かんないだろうけど。

[FUZIXってどうなんですか]
国産機へのポーティングが少ないね。ということで忘れることにした
Z80だとRAM食いぽい

誰もついて来れないのか一向に国産機にポーティングしませんね(そもそも大容量デバイスが無いと。PC-8801/FM77AV/X1/MZ-2500にはHDD I/Fあるらしいけど)

[μClinuxってどうなんですか]
H8の基板使ってたときポーティング考えたことがありました

[UNIX系OSってレトロパソコンではどうなんですか]
PC-98はFreeBSDとLinuxと作りかけのNetBSD等があったけど更新停止
FM TOWNSのLinuxとX68KのNetBSDは2019年現在メンテされてるらしい

[無印X1とかファミコンとか割り込みじゃなくポーリングでBGM鳴ってるんですか]
らしいですね

[ソースが汚いコメントも無い清書しろ]
あえて清書してない

[DISK-BASIC・OSが無い]
諦めて下さい
こんなもの動かせなくても死にはしませんし、わざわざお縄になることは無い
MSXはROMに入ってるしPC-88ならALPHA-DOS/MINIとか出てるしX1は探せば入ってたりする。FM・MZは知らない。MSX-DOS2?Boot Disk作ったりとか、とだけ。Nextor?もっと茨。

[マップが起動できたけど海しか出てこない]
左上端にいるので右下に移動して下さい→修正しました

[gcc6809の通し方]
ビルドに必要なパッケージ全部入れて、ちゃんとビルドできるバージョン(Cygwin32なら4_3_branchとか)を解凍してbuild-6809からmake everythingする
改行コードの問題、GCCのバージョンの互換性、カレントフォルダのパスもクリアしておく。
crt0.Sが何故かフォルダ名で誤生成されたら、フォルダに直してまっさらからもう一回。
終わったらcrt0.Sをmain呼ぶだけにいじり、crt0.oを生成。先頭番地を指定できるようアセンブラとリンカをわざわざ通すようにスクリプトを書く
インラインアセンブラの書式とラベル(行頭に_とか入れないとno headerとか出る)も直す。あとは先頭番地から実行できます。
なおnewlibの生成はできず?。tarballも間違ってました。libc.a欲しければgcc6809-CoCoが参考になります。

gcc6809 CoCoで探せばCygwin用バイナリがあるらしい。今はWSL2/Ubuntuで.debがある(後述)。

[CMOCって何]
6809のCライクコンパイラ。動かすまで難解なgcc6809に代わる物かも。ただWin版はうまく動かなかったのでCygwin等でmakeする必要あり
BASICからだとスタートアップが動かないので逆アセンブラした結果、mainの実行番地を直接呼んでます。アセンブラ・リンカ通せばいいのかもしれないけど、投げた
ビルド前にcrt.asmをいじっておくらしい。やり方は特に書かない。0.1.58はgcc6809より遅かったけど0.1.81は幾らか速くなった。

[何でFM77AV版は遅いのですか]
メインCPUで全部やってるからです。サブCPUにやらせないとなのですがC言語だけではちょっと。でもメモリが無いかも。
SUB CPUをON/OFFしすぎなので見直してみた。キー入力が時々変になるのは仕方ないのかも。VRAMアクセスのためにSUB CPU止める=キー入力を取りこぼす?詰んでる。
パレット版は論理演算切り忘れてるけどSCREEN@で無効化されるらしく動いてる。
→SUB CPUコマンド版を試験的に作成。若干速い。(この若干が大事)
→キーボード入力をメインでやらせるように戻した。が取りこぼすし、不具合が露呈。以下マップ表示参照。

[MB-S1はどうですか]
入手できずじまいなのでどうにも。スペック的にも1985年組より一段下の気がする
性能うんぬんよりも標準メモリが少ないのが欠点らしい。

[ぷらすとりって何ですか]
BASICやCで組まれた追いかけっこゲーム?これまでにPC-88/MSX/PC-98/MZ-2000/FM TOWNS/MZ-2500/X68K/True BASIC/WonderSwan/プチコン3号/IchigoJamBASIC/プチコン4号などに移植された(非公開)

[ザカリテの逆襲はもう作らないの]
PCMが実物の録音だったのでインターネットの拡大とともにお蔵入りしました

[DropBoxって大丈夫]
容量難で移してみたけどわかりません

[某BEEPはどうですか]
ジャンク屋です。PC-88の一部とMSX(主にturboR)、X68K、Marty、MZ-1500以外はリフレッシュしないみたいです。後はもれなくまんまオク行きです。
処分するか直すか迷ってたら直すことをお薦めします。直してあるのなら自分が欲しいです。いや邪魔だからいらないけどソフトの動作確認だけしたい。
それにしても2回目のプロコンどうしたんだろう→知らない所で結果が出てた模様。
それよりTOWNS HR等のスピーカーカバー(ネット)は何処へ行くんだろう。何でわざわざはがして売るなんてことするんだろう。恨みでもあるんだろうか。
動作品の88MAからFDDはがして動作不良の88MA2に付けたのも不可解。

[連絡先は/動かない/バグってる]
各種キタナイトコロからは手を引いてます、諦めて下さい/犬猫や政治に興味無いし/そもそも掲示板やSNSが性に合わないみたい。
TOWNSのは2M以上V2.1L20以降で起動します。X68Kも2Mで動くはず。PC-88はfiles=0にして下さい。
実機は壊れてたりしてるし、動いてても毎回確認はしてないので。ソース付けてるので直してみるとか。テストしてない物は動かない。
動作品を(これだけの為に)再度入手する訳にも(特に88VA/画面の初期化が適当なので多分駄目)。ジャンク屋じゃないし。

[ヤフーメールが重い]
ブラウザから適当なフォルダ作って移動させて下さい

[ViXが使いたい]
FM-7関連で調べてればレジストリパッチがでてくるかも。XnViewに乗り換えましたが

[昔はどんなページだった]
インターネットアーカイブ
掲示板があって今考えると濃ゆいメンツが集まってきた時期もありました。
何故か皆シューティングゲームを作っていたという。
対人が不器用なので結局閉じてしまいましたが。それでPG同士は話さない方がいいのかと。

自立してない同士じゃ仕方ない。

[過去の遺物の再公開やWin32/64移植は]
考えてません

[TOWNS HR等の電源が直らない]
トランジスタ周りの抵抗とかやられてるのかも。壊れるのはコンデンサだけでないのです。ATX化するしかないんですかね。それ以前に何故か修理嫌がられる。

[X68030 compact等の音量が直らない]
オペアンプ周りのスルーホールとかやられてるのかも。壊れるのはコンデンサだけでないのです。-12Vも出てるか見ろって。

[このまま国産パソコン文化が消えてしまわないか危惧]
大丈夫。もう消えてるから。国が保護してる訳でも無し
特に8bit御三家から88独占/MSX2躍進に流れが変わる辺り。

[gcc-ia16がWindowsでビルドできない]
WSL2入れてUbuntu版を使う。これで98や88VAが試せるかもしれない。試した。

[gcc-ia16でI/Oポートを叩きたい]
libi86-ia16-elfをsudo apt-get installで入れて(解説には書いてない)、dos.hを#includeしてoutportb(,)/inportb()関数を使う。
-li86でリンクできる。#define _BORLANDC_SOURCEしないとWarning出る。
メモリモデルはtiny/small/mediumのようです。
何か.EXEで終了後ディスク読みに行けなかったりするので調査中。

[ELMSTRKって何]
昔知人とMSX2で作った一本道RPG。PREASEとかCANSELとか怪しい英語が目立つのでお蔵入り。MAP表示のデータはこれの流用。

[動画はもう出さないの]
77AV版が遅くてかわいそうだったので。(Ys2なんかも比較してみると遅いっぽい。ダブルバッファみたいで豪華なんですけどね)
デュアルCPUの力をもってしてもPCGはともかくALUの3倍速には勝てないらしい。対MSX2VDPも怪しい。最適化の資料無いし。最初に比べたら大分速くなりましたが。
この辺がソーサリアンとかイースIIIとか出なかった遠因かも。ダブルバッファにしたりハードスクロールにすればもう少し速くなるけど現在BASIC版しかないのでやってません。

[USBセガサターンパッドが動かない・おかしい]
ATARI仕様ではなくてメガドライブ6ボタンパッド+CPA001やアナログパッドを選択してみて下さい。

[山賊の館はどこですか]
山の中です。なお抜け道色々あります。困ったものだ。

[Unityは簡単ですか]
難しいです。パソコン壊れて中断してそれっきり。CF-QV1、キーボードが一ヶ月で壊れて実費請求。

[某Zについてどう思いますか]
もしFPGAだったら或いはだったのですが。

[X68KがPC-8801を脅かしたのですか]
どっちかというとSFCとかのゲーム機の性能アップかな。

[PC-88VAはPC-9801に性能で負けたのですか]
PC-9801VMのV30+GRCGが最低ラインとして幅を利かせていて286以降(EPSON以外)に付いたEGCオンリーのソフトというのは少なかった。EGCの機能もPC-8801のALU+ビットシフト位なので。

EGCの性能が発揮されるのは486機時代になって力技が通用するようになってからですね。

[MSX0/MSX3についてどう思いますか]
ホームコンピュータからIoTへってことかな。turboRにV9990とOPNA載せたら88VA2並になってMSX3です、でもいい気はする。

[やってみたいことありますか?]
新作作るとか。でもドット打つの面倒だしこれといった企画も無い。
GCLSを高速化するとか。DMA使うとか。→X1 turbo DMAで出てくるBDS Cのページ、DMAのリセットコマンドはC0ではなくてC3です。

結局何もしない。配布できない物作っても仕方ない。→一応作ったからいいか。

[TOWNSって何だったんでしょう]
でっかいファミコン。スプライト使用時にBG面が1枚しか使えなかったり256色モードでスプライト出せないから叩かれた。今はただのマイナーパソコン。

[PC-98x1/PC-88VA+gcc-ia16でVSYNC割り込みが使いたい]
まずTurboCとかと違いI/Oとかの関数呼ぶとバグります。処理速度の問題もあります。98の方はアセンブラでI/O直叩きで行けそうだけど今のところVAは何やっても駄目。
→何とか止まらず動くものが出来たけど、どうしようこれ。→現状のまま出しときます。

[GCCなのかgccなのか]
コンパイラコレクション全体を指すときはGCC、Cコンパイラだけだとgcc?良く分からない。

[低速なVDPに足を引っ張られたR800]
Z80が遅すぎたので低速なというよりむしろ低機能なVDPと思う。スプライトのY座標の一番上は255です(直した)。

[レトロPCはNECだけだ若造が]
圧力に屈しました。

[パソコン御三家は嘘だ]
1983・4年位のBASICのプログラムの本にPC-8001/6001/6601/8801、FM-7/new7とともにMZ-700やX1、MB-S1のリストが出ています。MSX1は出だしでオマケ扱い。

[これがあればな]
TOWNSのgcc版MSVライブラリ(ソース公開の壁)というかまともな音源ドライバ。
ブラウザ上で動く様々な環境。
勝手移植&改造(海賊版)は別によくなった。

[LSX-Dodgersはどうですか]
z88dkではMSX-DOS形式ではなくて+cpmでないと駄目らしい。
PC-88版で何故かALUが効かず暴走する。→スタックポインタがOS側でC000H以降になってしまってるため。I/O 35HでVRAM選択するとおかしくなる。無理矢理スタックポインタを変更しても変数がおかしくなる。→VRAM選択中はスタックをいじらないことで解決。
似非DOSforMSXってのもある。メモリマッパ対応ではないようなのでMGSDRVが常駐できなかった(プレイヤーでの再生はできる)。
実機なくてデバッグ行き届かないのかバージョン変わるたびに何かしらあるみたいなので静観。互換というけどMSX-DOSとは別物。

FM-7系はこういうMS-DOSのFAT読めるローダ的なOSはどうなんだろう。標準入出力から問題か。孤高の6809。BASICフォーマットベースのOSなら幾つかあったみたいですが。海外ではTandyのCoCoとか、Dragonとかが6809採用例。
どうでもいいけどCSCPの77AVのDOSモード効いてない気がする。CSCPのMSX2Pは横スクロールしないしDOS1/2切り替えスイッチ無いし。PC-6601に至っては何処へ。

[8ビット機にいいグラフィックツールってないんですか]
当時は色々あったんでしょうけどね。PC-88はPUT@/GET@で配列とやりとりしてそれ以上はマシン語で、PC-98はDEFSEG=でプレーン指定してBLOAD/BSAVEしてた時代。BASICだけではろくなものは作れませんでした。MSX2はBLOAD/BSAVE,Sで行けましたが。
→作りかけだったBASICのキャラクタエディタを手直して公開しました。誰が使うんだ。

[MZ-700/1500とかPC-6001/6601やゲーム機はやらないのですか]
やらないです。MSX1も。

[背景との手前の重ね合わせ処理しないんですか]
したいけどメモリ食うからやれない。.COM版ならできるかもだけど。

[リンクとかライセンスとか]
サウンドドライバと各種ツールのご利用はご自由にどうぞ。その他はフリーソフト。MITとか言いたいけどGPLとかも絡んでくると思うしよくわからないのでとりあえずソース全部出してます。お察しください。参考にするだけなら自由。

[PC-8801 V1モードでは動かないの]
やろうと思えば動くんでしょうけど。現状でALU使ってる意味がほとんどないので書き直してテキストOFFにすればいい。→作ってみた。ALUの使い方も変えた。
→折角作ったけど旧機種ではCLEAR文で取れる領域がfiles=0でB3ECHから(新機種だとV1/2ともにA5E2H)になる模様。ようはALPHA-MINIでないと動かない。
ずらしてもVRAMとコードまたはテンポラリ変数が干渉する。→干渉しないようずらしてみた。

ついでにPOP-LD16bit転送かまそうとしたけどデータ構造変えないと駄目なので断念。→.COM版限定で内部で変換してみた。
高速化を目指すばかりアセンブラ化を進め過ぎて方向性がずれた。

[普通のgccで生成した実行ファイルは入れないの]
面倒ですがコンパイルしてください。

[8bit用MAGローダとか作らないの]
資料かき集めてCでPC-98に試作してみたけど遅い。PC-88版は書籍まぐろのすべてに入ってるらしい。昔の人はあの仕様書だけで作れちゃうんだから凄い。
→一応PC-88版も出来たけど腑に落ちないところが色々と有り。→MSX2版も作ってみたけどVDPが暴走して不安定。→X1版。ただ遅いだけ。実験終わり。
フラグバッファへの展開自体は一瞬で終わってる模様。ようはVRAM垂直水平変換の描画が遅い。アセンブラで書いてみたけど殆ど速くならない。何か考え方が間違ってるらしい。
凝り過ぎて目が悪くなってきた。

限界を感じたので一度止めたキューバッファを復活させてVRAM操作を低減するよう全面的に書き直してみた。ZSDCCはMSXのBIOSコールでIXレジスタを退避してなかったためグローバル以外の変数が破壊されるのが分かった。あまり速くはなっていない。
→構造体を止めてみた。まだ遅い。30秒以上かかってる。公開されてる物は10秒切る。
フラグ展開もアセンブラ化してみたが全く変わらず。あとはキューだけ。

[TOWNS-gcc クロスコンパイル環境]
試しました。Farポインタが無いのでVRAMアクセスに関数でひたすら書くしかない。あとサウンドドライバはどうにもならない。シューティングゲームテストも動かした。

[xdev68Kのビルド]
CF-SZ5では出来なかった。CF-QV1の方で構築して持ってきた。カーソルがOFFにならない。→B_CUROFF()の後にESCシーケンスで画面クリアしてたため。
シューティングゲームテストも動いたけどアセンブラの文字列比較が良く分からないので調査中。(2023/12/14)ほぼ解決。

[elf2x68k]
fopen()〜fread()で2バイトずれるみたい(2023/11/3現在)。open()系は未検証。→直ったらしい。(2023/12/3)でもインラインアセンブラがエラーになるので調査中。(2023/12/14)ほぼ解決。

[MSXの敵は?]
味方なんていましたっけ。PC-88よりPC-98が敵と言う見解は少し面白くて。PC-88にはMSX2でも相手にされてなかった気もする。逆にturboR位の末期は性能でPC-98に迫るみたいなところは確かにあった。

[CLANGサンプルの改訂版]
z88dkで+MSXしようとするとCLANGではこけます。エラーの該当箇所を削れば通ります。

[他]
メモリマップドI/Oやワークエリアを参照するにはポインタ変数を使うのではなくて#define pointer ((volatile unsigned char *)0x0000)のようにマクロ定義した方がメモリが小さくなります。(修正は当面見送ります)constともまた違うらしい。

WSL2/Ubuntu上にgcc-ia16/elf2x68k/gcc6809/gcc6502/amiga-gcc(旧版)を何とか構築できました。ただ今後はLLVM-CLANGの時代かもしれず。
6502はcc65が必要で古い。C64用にコンパイルすると文字列を小文字にしないとおかしい。
6809のはdebを持ってきて直接展開。コンパイルすると関数のラベル名が旧版と違う。
AMIGAのは内容古くて繋がらないサイトがあるのとgitがhttpsでないと通らないことがあるのと直接落としてあれば入れなくていい物があるので修正が必要。FD起動アプリ作るには色々サンプルの修正が必要。
elf2x68kはmake内のファイル名を小文字に統一する等の修正がコンパイル時に必要なこともあり。新版で色々と変わったみたいだけど試す予定はありません。

レトロパソコン開発は止めにしてNP-15とPSS-A50とPSS-E30で下手の横好きで遊んでます。お金かかるし才能も足りないので。
どうしてもの時はYouTubeに書いてもらえれば。

[戻]