■ このスレッドは過去ログ倉庫に格納されています
PC-9821/9801スレッド Part83
- 1 :ナイコンさん :2018/12/08(土) 21:03:48.47 ID:xaGsWrqW0.net
- !extend:checked:vvvvv:1000:512
↑立てミス防止の為に二行にしてスレ立てすること
前スレ
PC-9821/9801スレッド Part82
http://matsuri.5ch.net/test/read.cgi/i4004/1532306015/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
- 560 :ナイコンさん :2019/03/10(日) 00:17:46.08 ID:x/N5I1PG0.net
- >>546
どういうわけかマニュアルだけ持ってたのであげておく
https://www.axfc.net/u/3964458.zip
(転載 OK と書いてあるので)
いわれてみると使いたくなってきたので、
誰か本体を持ってたら欲しー
- 561 :ナイコンさん :2019/03/10(日) 01:38:37.43 ID:uefaJVvD0.net
- >>559
節子、それMIFES-miniや
- 562 :ナイコンさん :2019/03/10(日) 11:42:35.91 ID:2HdDu99SM.net
- mifes-miniはseditでしょ。
DOS7(Windows 95とも言う(笑))に付属してたのはMS-DOS Editor
- 563 :ナイコンさん :2019/03/10(日) 19:58:18.19 ID:2rq6xD6/0.net
- dosでviか…
そうなるとbashも欲しくなる。
lsも欲しくなる。
FreeBSDでいいやとなる。
エロゲは知らん。
- 564 :ナイコンさん :2019/03/10(日) 20:25:35.78 ID:Y62lbzLq0.net
- X なしの UNIX 系マシンがあれば良い
あるいは X 端末化
PC-9800 シリーズが X 端末化できるかどうかは知らない
- 565 :ナイコンさん :2019/03/10(日) 20:41:07.81 ID:2rq6xD6/0.net
- できるとは思うけど、LANが遅すぎてキツイかも。
ああいうよはGbEが欲しくなる。
Xの速度はもう忘れちゃったけど…
- 566 :ナイコンさん :2019/03/10(日) 21:51:29.48 ID:ZMq/hNedM.net
- Xは動くけど、解像度が、、、
トライデントとかシーラスロジックのドライバーしかなかった気がする
合わないと640X400の16色とかに
- 567 :ナイコンさん :2019/03/10(日) 22:00:17.52 ID:2rq6xD6/0.net
- ああ、そうだ思い出した。
あの時代はX使うならS3一択だったような。
あとMillenniumも実用的に使えたかな?
- 568 :ナイコンさん :2019/03/10(日) 23:59:16.38 ID:Y62lbzLq0.net
- 質問ッス
PC-9801 で、ネットに転がってる Turbo C は動きますか
入力の補完が bash ライクにできるフリーソフトがあれば1行も書く必要は無いでしょうけど…
98 は MS-DOS 3.3C くらいの時代までしか使ってなくて、その後 AT 互換機の Windows95 OSR2.1 まで一気に飛んで
あいだの知識が全くないもので…。
- 569 :ナイコンさん :2019/03/11(月) 00:04:27.73 ID:n/aZuYC70.net
- MS-DOS 5.00A-H に DOSKEY ってあったのかも知れんけど見当たらず
フロッピーディスクの入っている段ボール箱を漁れば出て来るのかも知れんけど
- 570 :ナイコンさん :2019/03/11(月) 00:22:17.67 ID:9BLomtgq0.net
- >>568
ライセンスがフリーになってる昔のやつのこと?
具体的にバージョンを書いて質問した方が良いかも?
- 571 :ナイコンさん :2019/03/11(月) 00:43:59.94 ID:n/aZuYC70.net
- >>570
ですです
Borland Turbo C 2.01 のバイナリは (tc201.zip) 入手できました
C++ もあるらしいのですが、現状、入手方法不明…
- 572 :ナイコンさん :2019/03/11(月) 00:48:11.15 ID:n/aZuYC70.net
- やりたいこと;
1. A:: ドライブに hoge.bin というのがあるときに
A:\hoge. と押したときに TAB キーなどで補完金したい
2. コマンドの履歴が欲しい
カーソルの「↑」キーを押したときに、過去のコマンドを呼び出せる
まあ、こんな感じです。
純粋なバイナリエディタは BEDIT というのが中々良いかんじ
複数のバイナリを比較できないのが難点かも
- 573 :ナイコンさん :2019/03/11(月) 00:53:49.99 ID:n/aZuYC70.net
- コンベンショナルメモリ…知らんぞそんなの…
いちおう 8MB の Cバス EMS メモリは持ってる
- 574 :ナイコンさん :2019/03/11(月) 00:54:15.41 ID:v+qofoKo0.net
- どうだったっけか
一旦PC AT互換機にインストールして
ランタイムを9801用に作り直せば
コマンドラインコンパイラ一式は9801に
もっていけるという話だったような気もする
- 575 :ナイコンさん :2019/03/11(月) 00:55:35.43 ID:tSe0UvFqa.net
- freedos(98)付属のfreecom.comが自分にとってはいい感じにキー補完してくれる
turboCはAT用だと割り込み間違えるとか聞いたことあるけどもってないから知らない
- 576 :ナイコンさん :2019/03/11(月) 01:01:14.95 ID:v+qofoKo0.net
- PC AT用のsim cityを動かすのに話で有名になったsimってのがあったなあ
あれかませばコマンドラインコンパイラに多少AT依存があっても動くんじゃないかな
それから落ち着いてランタイム修正かけたらよさそうな気がしてきた。
- 577 :ナイコンさん :2019/03/11(月) 01:07:59.29 ID:n/aZuYC70.net
- 不正ソフトウェアではなく
antique 扱いのエンバカデロ社の正規品で考えてます
…バイナリエディタか何かでパッチ当て必須だとしても頑張ります
- 578 :ナイコンさん :2019/03/11(月) 01:18:49.39 ID:v+qofoKo0.net
- PC ATのMS DOS版のTubbo Cって、公式にフリーになってなかったっけ?
それを9801で動かすことはライセンス上どうだったかわからないけど、
今はどこからダウンロードするのが一番正しいんだろう
- 579 :ナイコンさん :2019/03/11(月) 01:44:44.31 ID:PuB2Ad4H0.net
- フリーのキーシェルでEZKEYってのがあった
VZに付属してたな
- 580 :ナイコンさん :2019/03/11(月) 02:36:45.58 ID:n/aZuYC70.net
- …それともアセンブラ…?
補完と履歴だけのためにソレはキツい
プロンプトでの入力支援のためだけにソレは辛い
あるいはバイナリエディタを自作し、んで、ファイルを開くダイアログでどうにか?
バイナリエディタでソース公開してるものってあるんかいな…?
極論、指定のアドレスへ飛んで修正して、修正内容を保存するだけで良いのですが
N-BASIC の MON コマンドみたいなもんで充分と言われそうだけど
- 581 :ナイコンさん :2019/03/11(月) 02:40:53.31 ID:9BLomtgq0.net
- >>580
MON みたいなのが MS-DOS に欲しいなら debug コマンドを使えよ。
ところで Windows 10 でも debug コマンドが残ってるんだけど、
これって使う場面ってあるんかなぁ。
- 582 :ナイコンさん :2019/03/11(月) 03:03:41.13 ID:n/aZuYC70.net
- >>581
DEBUG.COM が見当たらず><
- 583 :ナイコンさん :2019/03/11(月) 03:25:43.63 ID:n/aZuYC70.net
- というか、極論、ファイル名の補完だけ出来れば
それ以外の機能は全く要らないのですね…
それとも、ランチャーソフトが手に入り
それを使った方が楽???
NEC MS-DO 5.00 A-H を使ってます
- 584 :ナイコンさん :2019/03/11(月) 08:53:31.95 ID:uXvuoRdm0.net
- >>568
LSI C-86試食版じゃ駄目なの?
- 585 :ナイコンさん :2019/03/11(月) 13:11:42.66 ID:ijChOwa+0.net
- FDみたいなファイラ使うんじゃダメなの?
- 586 :ナイコンさん :2019/03/11(月) 13:12:43.70 ID:9BLomtgq0.net
- >>582
フリーの exdeb がデバッガとして優秀すぎて良い。
- 587 :ナイコンさん :2019/03/11(月) 13:56:34.46 ID:DCY2+0290.net
- ブリザラ
- 588 :ナイコンさん :2019/03/11(月) 14:26:10.24 ID:9BLomtgq0.net
- PC-9801 のランチャーといえばエコノミーだよな。
と思ったけど、これから合法的に入手するのは大変だろうし、
そもそもググってもうまくヒットしない……。
ソフトの名前はもっとユニークなものにすべきだと思った。
- 589 :ナイコンさん :2019/03/11(月) 15:13:42.61 ID:uXvuoRdm0.net
- それエコロジーじゃね?
- 590 :ナイコンさん :2019/03/11(月) 15:25:28.73 ID:9BLomtgq0.net
- うおっ、クソみてぇな勘違いしてた
- 591 :ナイコンさん :2019/03/11(月) 19:47:12.84 ID:n/aZuYC70.net
- FOO.EXE --option BAR.BIN
みたいなときにタイピングに神経質になりたくないだけです
FOOとかBARで補完が効けば充分なので…
それが実現できるなら何でも良いです
Windows なら BAR.BIN を右クリックして FOO.RXR で開く訳ですが FD というもので出来るのでしょうか
>>584
コンパイラは正直なんでも良いです
ただ、DOS アプリ自体作ったことがないので
UNIX 系でいう ncurses とか pcurses とかみたいな画面の実現方法が分からんので
LSI C 試食版の制約のもとで出来るかどうかさえ不明なのです
- 592 :ナイコンさん :2019/03/11(月) 19:53:31.74 ID:zpPymC/y0.net
- >>591
CUIの画面デザインやUIなんて、全部自前で書くしかなかった
コンパイラの種類とか一切関係なし
汎用性を持たせるにはエスケープシーケンスかint 21H、スピードを求めるならVRAM直撃
- 593 :ナイコンさん :2019/03/11(月) 19:59:05.74 ID:n/aZuYC70.net
- mjdsk
curses ライブラリみたいなものは存在しない…?
なんか x68k 方面だと gnu の userland が結構移植されていたとか何とか…
コンベンショナルメモリの制約で無理???
- 594 :ナイコンさん :2019/03/11(月) 20:06:45.63 ID:ijChOwa+0.net
- お、VectorにPC98用のPCCURSESとかいうのがあるで
MS-CとTurbo-C対応しとる
- 595 :ナイコンさん :2019/03/11(月) 20:31:08.40 ID:n/aZuYC70.net
- DOSエクステンダ(RUN386) と組み合わせた PDcurses 環境は
いちおうあるみたいですね
- 596 :ナイコンさん :2019/03/11(月) 20:32:07.10 ID:DCY2+0290.net
- Cygwinにgccあるぞって思ったら98スレだった…
- 597 :ナイコンさん :2019/03/11(月) 20:36:03.60 ID:n/aZuYC70.net
- djgpp(go32)
https://www.vector.co.jp/soft/dos/prog/se021566.html
との組み合わせっぽいですね
確認してみます
- 598 :ナイコンさん :2019/03/11(月) 20:48:12.86 ID:n/aZuYC70.net
- もちろん
1. 何らかのファイルマネージャで、ディレクトリまたはドライブを開く
2. 対象となるファイルを選ぶ
3. 外部コマンドを実行し、外部コマンドの画面に遷移する
というのが出来れば1行もコード書かずに済む訳ですが…
- 599 :ナイコンさん :2019/03/11(月) 21:00:07.58 ID:tSe0UvFqa.net
- キー補完はfreecom.comあるって書いたのに何で無視するの?
32bit必要ないならLSI-C試食版で充分
必要あるならopenwatcomがおすすめ
後は触って覚えるしかないよ まだ触ってもないでしょ
- 600 :ナイコンさん :2019/03/11(月) 21:08:48.58 ID:n/aZuYC70.net
- >>599
PC-9801 の MS-DOS 5.00A-H で動くということですか
- 601 :ナイコンさん :2019/03/11(月) 21:19:45.75 ID:n/aZuYC70.net
- >>599
そもそも freecom.com が入手できる場所が見つかりません
- 602 :ナイコンさん :2019/03/11(月) 21:34:34.37 ID:n/aZuYC70.net
- FreeBSD(98) と空目してました
申し訳ありません
- 603 :ナイコンさん :2019/03/11(月) 22:26:06.23 ID:9BLomtgq0.net
- >>593
PC-9801 時代のアーキテクチャのテキストやグラフィックは
特定のメモリ領域が対応付いていて
そのメモリに書き込んだらそのまま表示される
という牧歌的な仕組みで、保護もないから
いきなりアプリケーションから直接弄っていいんだ。
あるいは、 MS-DOS の文字列表示ファンクションを経由するなら、
エスケープシーケンスも使える。
資料さえあれば ncurses を使うより楽なくらいな気がするが、
体系的な資料を見つけるのは大変かもしれん。
全体像をわかっているなら個々の資料はすぐに見つかるんだが。
- 604 :ナイコンさん :2019/03/11(月) 22:39:14.77 ID:EzBIsTId0.net
- 今風に言えばメモリマップI/Oだな。98の画面。
- 605 :ナイコンさん :2019/03/12(火) 00:43:22.76 ID:UYhfhjlL0.net
- 98のハードについて詳しく書かれた本がいくつか出ていたから、ブログラマー達はだいたい全部買って読んでた
「PC-Techknow9800」
「UNDOCUMENTED 9801/9821」
「PC-9801スーパーテクニック」
「PC-9801解析マニュアル」
「N88-BASIC-86解析マニュアル」
企業秘密を自力で調べたり極秘資料を入手して載せちゃった本があったため訴えられてしまい、
それ以降は「PC-9801スーパーテクニック」のことは「某テク」と呼ぶという暗黙のルールなんてのも存在した
- 606 :ナイコンさん :2019/03/12(火) 01:04:06.15 ID:YJmkiyZl0.net
- 色々な情報、感謝です
帰納的に、「こういう実装にはこうコーディングする」と調べるために
逆アセンブラ使うのってアリなのかなあ…?
既に目的から逸れているような気もしますけど
興味深い話なので…
- 607 :ナイコンさん :2019/03/12(火) 01:19:23.16 ID:tKrbP7eR0.net
- >>605
元の質問者は >>573 みたいなことを言ってるから、
9801 に特有のことだけじゃなくて
16bit 環境でのメモリの表現とか
MS-DOS の基本的な構造とかも必要だと思うけど、
そのあたりの資料で足りるかな?
ちなみに俺はその内のどれも持ってなくて、
技術評論社の「PC-9801 プログラマーズ Bible」
をよく参照してたな。
これは出版の日付が 1994 年になってるから、
PC-9801 の時代としては終わりに近くて、
だいぶん網羅的な資料だと思う。
たぶんこのスレにいるなかでは俺は比較的若い方じゃないかな?
>>606
根性があれば出来なくはないだろうが、
逆アセンブラの結果を読み解くのって結構しんどいと思うよ。
やりとりに使う構造体のレイアウトとか、
C なら宣言を見れば、要素の名前を見ればある程度は想像がつくだろうけど、
逆アセンブル結果ってそういう情報が何もないもんな。
OS を呼び出すのだってただの番号に機能が割り振られてるから、
そんなのを見ても何もわからん。
- 608 :ナイコンさん :2019/03/12(火) 08:27:36.45 ID:8wrYRqpD0.net
- RGBそれぞれの先頭アドレスがわかれば大丈夫
あとは1ドットが16ビットの明度があり左上から右下に向けて並んでるだけ
先頭アドレスは忘れたw
- 609 :ナイコンさん :2019/03/12(火) 09:28:32.45 ID:8wrYRqpD0.net
- 思い出したが、NECのMS-DOSはキレイにキャラクタで画面作ってたね。
水色のウィンドウっぽいのと白い文字で、たまに黄色?
- 610 :ナイコンさん :2019/03/12(火) 12:30:09.47 ID:YJmkiyZl0.net
- https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1499997214
VRAM のアドレス・マッピングと属性の仕様と作法さえ分かれば
無茶苦茶に難しいという訳ではなさそう…?
具体的なアドレスは忘れたけど N-BASIC で PC-8001 の VRAM 弄る奴みたい
テキスト画面だとアトリビュート(カラーモードなら色属性、モノクロならブリンクその他)が1行毎にあったっけ…
「curses とどっちが楽か」という疑問もあろうかと思われるものの
Python でのサンプルコード等資料が豊富なのがメリットかも
- 611 :ナイコンさん :2019/03/12(火) 13:17:01.73 ID:8wrYRqpD0.net
- N88-BASICだとBSAVE, BLOADでもVRAMいじれたな。
って、質問者はキャラクタベースでやろうとしてるんだよね。
ぐぐったら、VectorにMLWINってライブラリあったよ。
- 612 :ナイコンさん :2019/03/12(火) 13:59:45.78 ID:YJmkiyZl0.net
- >>611
情報ありがとうございます。
Windows の 7-zip では lzh ファイルが展開できなかったので
適切なツールをさがしてみます
https://archive.org/details/98HardBookBecomingStrongII1988/page/n111
何かすごいモノを発見した気が…
- 613 :ナイコンさん :2019/03/12(火) 14:06:31.96 ID:YJmkiyZl0.net
- 日本語をテキスト VRAM へ展開する場合は Shift-JIS から JIS コードへの変換が必須…?
- 614 :ナイコンさん :2019/03/12(火) 14:13:41.93 ID:YJmkiyZl0.net
- ベッタベタに「マルチバイト文字しか展開しません」という仕様にするなら
全ての文字列リテラルに対して Shift-JIS → JIS 変換を行うというトンデモ仕様もアリかも知れないし
Shift-JIS でマルチバイトか ASCII かの判別自体は大して難しくは無いから判別ルーチン入れても良いかも
- 615 :ナイコンさん :2019/03/12(火) 15:32:22.49 ID:YJmkiyZl0.net
- http://www.st.rim.or.jp/~phinloda/phin/phin9509.html
> (unsigned int) (c ^ 0x20) - 0xa1 < 0x3c
下のは、マクロにブッ込めばバイナリサイズが削減できるってことかしらん
http://www.geocities.jp/hoku_hoshi/TIPPRG/tipprg03.html
#define is_kanji1st(c) ((unsigned int) (c ^ 0x20) - 0xa1 < 0x3c) // Shift-JIS 1文字目判定
- 616 :ナイコンさん :2019/03/12(火) 16:14:28.41 ID:tKrbP7eR0.net
- 昔のコンパイラはインライン化に積極的じゃなかったりするしな。
使われる頻度が高くて小さい計算をマクロにするのは、
ありふれた判断だった。
C って言語の中では古い部類だけど、
地味に変化を重ねてて、習慣とかも変わってる部分は有る。
- 617 :ナイコンさん :2019/03/12(火) 16:52:02.17 ID:YJmkiyZl0.net
- >>609
罫線を使い、テキスト V-RAM のアトリビュート領域で色指定するとキレイにキャラクタで画面作れるっぽい
実装がどうだったのかは分からんけど
- 618 :ナイコンさん :2019/03/12(火) 17:59:49.50 ID:2WbcK6XPa.net
- 1行20色まで
- 619 :ナイコンさん :2019/03/12(火) 22:14:23.49 ID:YJmkiyZl0.net
- なんか
テキストV-RAM まわりと
キー入力検出関係は
インラインアセンブラ叩きまくりんぐになりそうな…そんなもんかしら
CLS に相当するソフトウェア割り込みもあるみたいだけど DOS/V で動くかどうかは知らない…
やろうと思えば PRINT CHR$(12) も出来るみたい(勿論やらんけど
- 620 :ナイコンさん :2019/03/12(火) 22:20:47.62 ID:GUjIyoEmM.net
- DOSで文字画面作る時はエスケープシーケンスを駆使するものなんじゃないのです?
- 621 :ナイコンさん :2019/03/12(火) 22:47:41.93 ID:CmsvSw720.net
- >>618
それはPC80/88のuPD3301の制限だな
- 622 :ナイコンさん :2019/03/12(火) 22:56:03.51 ID:8wrYRqpD0.net
- >>620
それをしないで済むためのラッパーライブラリだよ
- 623 :ナイコンさん :2019/03/12(火) 23:39:16.29 ID:YJmkiyZl0.net
- >>620
DOS の作法は全く存じませんが PC-9801 の技術的な資料を見たら
エスケープシーケンスの「エ」の字も出て来ないものでして
設計思想が1970年代ベースなんじゃないかと言われたら「全くその通り」かと存じます
ポータビリティを考えるなら21世紀的には curses ライブラリになるのではないかと(私見)
MacOS X でも bcurses を搭載しているようですし
- 624 :ナイコンさん :2019/03/12(火) 23:39:56.89 ID:YJmkiyZl0.net
- ncouses の typo でした
失礼
- 625 :ナイコンさん :2019/03/13(水) 03:44:35.34 ID:IxFZN2R90.net
- curses はエスケープシーケンスを制御するライブラリなんだけどね
- 626 :ナイコンさん :2019/03/13(水) 03:58:20.62 ID:70/ztQtw0.net
- >>601
FreeCOM
ttp://bauxite.sakura.ne.jp/software/dos/freedos.htm
FreeDOS(98) で丸々 MS-DOS の代替にする手もあります
(URLのsakuraのsは元は半角小文字です 規制対処のため)
ファイラーでの操作を望むなら
FILMTN
ttps://www.vector.co.jp/soft/dos/util/se001385.html
FD
ttps://www.vector.co.jp/soft/dos/util/se000010.html
WD
ttps://www.vector.co.jp/soft/dos/util/se019590.html
とか
- 627 :ナイコンさん :2019/03/13(水) 10:56:08.55 ID:NW5+Pood0.net
- Windowsが登場するより前の時代はCPUクロックが今の1/1000しかなくて、レスポンスを良くしようとするとVRAM直撃が当たり前で、エスケープシーケンスなんか誰も使わなかった
今はエミュレータでも十分な速度が出るけど、ターゲットの環境や使い易さをどこまで想定するかだな
- 628 :ナイコンさん :2019/03/13(水) 12:32:50.21 ID:mfr/U9QGr.net
- >>611
BSAVEで画面をベタ形式セーブする手法があったな
- 629 :ナイコンさん :2019/03/13(水) 12:55:39.31 ID:Eqk55QGv0.net
- よくやるのが1プレーン当たり640x400x1bpp=32000バイトをセーブすればいいところを
32768バイト保存してしまうミス。まぁ、たかが768バイトくらいどうでもいいけどね(笑)
- 630 :ナイコンさん :2019/03/13(水) 18:43:22.70 ID:QV/KPKYh0.net
- >>627
ゲームとかはそうかもだけど、
DOSアプリはテキストVRAMや
エスケープシーケンスを活用してなかった?
98の日本語が速い理由もそれだし。
- 631 :ナイコンさん :2019/03/13(水) 20:51:52.86 ID:Ezra0UiKp.net
- >>630
テキストVRAMを直接さわるならエスケープシーケンスは必要ないのでわ
- 632 :ナイコンさん :2019/03/13(水) 21:18:44.39 ID:5yYVVfPv0.net
- MS-DOS の文字列表示ファンクションは終端に $ を使うという謎仕様があるのもつらい。
- 633 :ナイコンさん :2019/03/13(水) 21:30:28.13 ID:TfF1qyR50.net
- 何かお騒がせしているようで…
実装を見たことはありませんが、DOS 汎用ではなく IBM PC/AT 互換機用のソフトウェアだと
VRAM を直接叩いているケースもあったようです。
PowerShell でもエスケープシーケンスは使えるようですが
https://en.wikipedia.org/wiki/ANSI_escape_code#3/4_bit
こんなの見るとエライコッチャと思われ
- 634 :ナイコンさん :2019/03/13(水) 22:03:08.54 ID:QV/KPKYh0.net
- >>631
書き方が悪かった、すまぬ。
テキストVRAMや、エスケープシーケンス
2つの方法を書いてるの
- 635 :ナイコンさん :2019/03/13(水) 22:55:59.28 ID:TfF1qyR50.net
- こんなものを見つけました
https://archive.org/details/TURBOC2.0C
うーん。。。
- 636 :ナイコンさん :2019/03/13(水) 23:06:45.36 ID:5yYVVfPv0.net
- >>635
PC-9801 版はライセンス的な処理がされていないので、堂々とは使えないなぁ。
問題にする人なんていないだろうけど、そこはそれ、モラルというものが。
個人的には Open Watcom C を使ってクロス開発するのが楽だと思う。
Turbo C の古いやつはどうせ大したライブラリも入ってないから
細かい制御をしようと思ったら自分でかかなきゃならないことも多くて、
「PC-9801 用」と銘打っていてもあんまり役に立たないと感じる。
- 637 :ナイコンさん :2019/03/13(水) 23:22:58.16 ID:TfF1qyR50.net
- Open Watcom って 80286 以降必須のように見受けられましたが
V30 でも動くバイナリ作れるのでしょうか
NASM を使えと言われそうな、コンパイルするだけなら IBM PC 用 Tuebo C からバイナリを生成する手もあるような
- 638 :ナイコンさん :2019/03/13(水) 23:33:59.96 ID:5yYVVfPv0.net
- >>637
Open Watcom C のコンパイラのオプションにある -0 が 8086 instructions と書いてあるので、
8086 (やその上位互換の V30) には対応できてるんじゃないの。
フリーな MS-DOS 用 Turbo C は C の古い規格にしか対応できてないので、
C99 以上に慣れた私にはつらいんだが、そこを苦にしないなら IBM PC 用の Turbo C でも充分かもね。
- 639 :ナイコンさん :2019/03/13(水) 23:47:24.26 ID:TfF1qyR50.net
- void main(void) {
while (1)
}
その後彼は逮捕されました
- 640 :ナイコンさん :2019/03/13(水) 23:49:26.15 ID:TfF1qyR50.net
- >>638
御教示に感謝です。
クロスコンパイルして進めていくことにします。
Cは専ら趣味・個人用にしか使ってないのですが
C99 以上での仕様で、「無いと辛い」要素というのは、どういうものがあるのでしょうか
- 641 :ナイコンさん :2019/03/14(木) 00:04:20.66 ID:QuQjYq5yM.net
- 2.8Mって、、、2.8Gのまちがいじゃないのかね?
画像1枚がギリギリのサイズじゃないですか
- 642 :ナイコンさん :2019/03/14(木) 00:05:57.50 ID:FHRgsZpw0.net
- 2.8MB か…
2HD のフロッピー2枚に収まらないな
凄い容量だな
- 643 :ナイコンさん :2019/03/14(木) 00:46:13.16 ID:IabyqxLh0.net
- >>640
ちょっとスレの趣旨とは違うのでアレなんだけどまあ関連はしてるからいいのかな?
C99 で私が手放せないと思う部分はこんな感じ。
・ 変数の宣言がブロックの先頭のみという制限から解放されたこと
・ int32_t などの幅が固定された型やそれを printf で表示するときの書式指定マクロ (inttypes.h で定義されているやつ)
・ inline 関数
・ 暗黙の型の廃止 (後述)
モダンなプログラミングでは変数のスコープの幅が狭い方が好ましい、なるべく使う直前で宣言したいという要求がある。
宣言してる箇所と使う箇所は近い方が見通しが良いし。
他は無ければなくてもどうにでもするが、これは本当にありがたい。
C では整数型の幅が各アーキテクチャで都合の良いように処理系が決めて良いのだけれど、
データ幅について意図があって決め打ちにしたいときに困ることがあったので、
データ幅を示せる型や、それを表示するためにポータブルな仕組みが用意されたのはありがたい。
だけど、 MS-DOS 用に作ったプログラムを他に移植することも無いだろうから、
ポータビリティについてはそんなに気にしても仕方がないかな……。
inline 関数について、たとえば >>615 みたいなマクロを見ればわかるように、
マクロだと型で定義されないので間違いの内容がよくわからんようになるし、
マクロだとローカル変数も定義できないし。 こういうのは積極的に inline 関数に置き換えていきたい。
暗黙の型っていうのは、 C89 でこういう関数定義が許されているやつね。
func(p1,p2) {
return p1+p2;
}
自分はちゃんと型を書くようにすればそれでいいんだけど、今どきのプログラミングを知ってると
こんなのが許されていたというだけで耐えがたい気色悪さを感じる。
- 644 :ナイコンさん :2019/03/14(木) 01:04:16.77 ID:FHRgsZpw0.net
- >>643
> inline 関数について、たとえば >>615 みたいなマクロを見ればわかるように、
> マクロだと型で定義されないので間違いの内容がよくわからんようになる
それある!!!!!
個人的には「えーマクロでやんのー効率化という面では分からんでもないけど気持ち悪くね?」
と思ってたのでした
func(p1,p2) {
return p1+p2;
}
みたいなのは大昔の K&R 記法の名残のうち悪しきものかも??
- 645 :ナイコンさん :2019/03/14(木) 01:26:14.18 ID:IabyqxLh0.net
- >>644
先進的な処理系だと inline 宣言はインライン化のヒントとしてすら使われず、
性能的に得だと判断したら inline 宣言が無くてもインライン化するし、
効果無しか逆効果だったら inline 宣言がついててもインライン化しないんだけどね。
だから近年の先進的な処理系で書くのだったら inline 化をあまり意識しない。
プログラマの判断よりコンパイラの方が賢いので。
リンク時最適化 (LTO) があると別のコンパイル単位にある関数でもインライン化できるし。
そういう賢い処理系の上では inline 宣言は One definition rule (定義は一回だけ) の規則の例外にする指定という意味しかもたない。
C++ だとその延長線上でインライン変数というのも導入されてたりして「インラインって何だっけ?」という気持ちになる……。
- 646 :ナイコンさん :2019/03/14(木) 01:41:06.43 ID:FHRgsZpw0.net
- egcs-1.1.2 「ボク20世紀のコンパイラだけど、i386 / i486 / Pentium(i586) / Pentium pro以降(i686) で違う処理してたよ」
…完全にスレチですね
ごめんなさい
- 647 :ナイコンさん :2019/03/14(木) 02:03:53.72 ID:IEF9yHcO0.net
- >>637
仮に286用でもリアルモードなら80186とV30は互換あるだろ
- 648 :ナイコンさん :2019/03/14(木) 02:28:10.73 ID:IabyqxLh0.net
- egcs の話題が出たついでなんだけど、
GCC のフォークで gcc-ia16 ってのが出てるの知ってる?
GCC は int が 32bit 以上を対象にし続けてるんだけど、
gcc-ia16 は 16bit コードを吐くコンパイラで、
近頃は FreeDOS の開発にも使われてるらしい。
まだちょっと安定しないみたいだけど、
レトロコンピュータ界の人間としては期待したい。
- 649 :ナイコンさん :2019/03/14(木) 03:16:36.98 ID:jp0C3KBf0.net
- >>640
フリーソフトに頼らず自前で作成するということですか?
- 650 :ナイコンさん :2019/03/14(木) 18:28:38.42 ID:V6sEZkTd0.net
- >>648
16bitコードを生成するgccなんてかれこれ20年以上前から存在するけど。
まあDOSの開発に使われているというのなら8086特有の方言のfarとかhugeとか
各種メモリモデルを完全にサポートしてるのかな。
- 651 :ナイコンさん :2019/03/14(木) 21:11:40.01 ID:s7Ryo6l/a.net
- メモリモデルっていくつかあったよね。
CS、DS、SSが同じか違うか、と、セグメントレジスタの値が不変か可変かで定義されてたと思うけど。
Tiny、Small、Large、Hugeの4つしか(しかも名前しか)知らないけど。
- 652 :ナイコンさん :2019/03/14(木) 22:12:07.29 ID:ZRB0UFUzM.net
- コードが16BIT、データが16ビットがスモールモデル。
コードが32BIT、データが16ビットがミディアムモデル。(たぶん)
コードが32BIT、データが32ビットがラージモデル。
ラージモデルのうち、ポインタの正規化(オフセットを00h〜0Fhに逐次調整)したのがヒュージモデル。
スモールモデルでも指定すればfarポインタが使えるので、デフォルトのポインタがという意味。
- 653 :ナイコンさん :2019/03/14(木) 22:30:45.65 ID:RFLHTzaH0.net
- >>546
https://www.rupan.net/uploader/download/1552569663.LZH
PASS:pc98
ELIS135N.LZH
とりあえず必要なのかわからんがあげといた
- 654 :ナイコンさん :2019/03/14(木) 22:31:48.56 ID:odcmVyD60.net
- ツウホウシマスタ
- 655 :ナイコンさん :2019/03/14(木) 22:38:14.55 ID:/AOXELtD0.net
- タイニー コードデータ合わせて64kB。.comファイル
スモール コード64kB データ64kB
ミディアム コード64kB超 データ64kB
コンパクト コード64kB データ64kB超(1配列は64kBまで)
ラージ コードデータとも64kB超(1配列は64kBまで)
ヒュージ ラージとほぼ同じだが配列1つ当たり64kBを超えられる
- 656 :ナイコンさん :2019/03/14(木) 22:40:48.00 ID:/AOXELtD0.net
- Lattice CとLSI Cでは
ミディアム → P(プログラムモデル)
コンパクト → D(データモデル)
- 657 :ナイコンさん :2019/03/14(木) 23:21:00.45 ID:IabyqxLh0.net
- >>650
GCC は -m16 オプションを付ければ 16bit のコードを出すけど、
16bit モードで動くコードってだけで、
32bit のレジスタも使ったりするので、
いわゆる 16bit 用のコードというのとは趣が異なるらしい。
- 658 :ナイコンさん :2019/03/14(木) 23:41:13.90 ID:FHRgsZpw0.net
- FreeDOS(98) の COMMAND.COM は watcom で生成されてたような。
LSI C 試食版は 64kKiB が上限の筈なのに Hello, world だけで12KiB くらいのサイズになったから正直マトモには使えない
- 659 :ナイコンさん :2019/03/15(金) 00:05:04.77 ID:Qmh2b1KF0.net
- >>658
その大きさはライブラリやスタートアップルーチンの分。
printf が以外にデカいとかがあるので、intlib の方を使えばもうちょっと縮むはず。
command.com を作るなら C のライブラリはあまり使わないベアメタル開発に近いので、
Hello, world の大きさが大きいってのはあまり関係ない。
どちらかというと LSI-C の方がちょっと優秀かもしれない。
処理系もオープンソースのものを使った方が都合がよいので
Open Watcom C を使ってるんだと思う。
総レス数 1001
258 KB
新着レスの表示
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver.24052200