懐かしのMS-DOSプログラミング ver.2
■ このスレッドは過去ログ倉庫に格納されています
mov dx,offset msg mov ah,9 int 21h mov ax,4c00h int 21h msg db '懐かしのDOS時代のプログラミングについて語ろうぜ ver.2',0dh,0ah,'$' 前スレ 懐かしのMS-DOSプログラミング http://toro.2ch.net/test/read.cgi/tech/1271821343/ LSI C-86試食版 Ver.3.30c http://www.lsi-j.co.jp/freesoft/ ぜひとも手にしておきたいDOS用国産フリーCコンパイラ echo テスト > tes.com tes # 「テ」一文字だけでいいんだけどね DOSのエミュレータを使えば、いろんな環境でDOSとまったく同じように使えます。 >>2 スモールモデルしか対応していないのが残念なんだが int 21hとか直接書いてたのっていつ頃なんだ? >1000 デフォルトの名無しさん [sage] 2014/05/18(日) 23:04:42.60 ID:rUyw0YMJ Be: > Windows 8.1でもdosソフトウェアは、うごきますか? DOXBOX おすすめ あれ 打ちまちがえた x DOXBOX o DOSBOX >>6 でもfarが使えるから大きなデータは外へ出しちゃえばかなりのことができる。 ご丁寧にfar文字列処理関数も入ってる。 Turbo Cがタダで使えるのに LSIC86 試食版を今更使う理由が分からん >>13 CP/M 対応も考慮したプログラム作法が理解できんとは CP/M86なんて使ってたやついたのかね。 call 5なんて、知識レベルでの互換性の意味しかないだろ…。 四半世紀前に、バイト先の別働隊が コンカレントCP/MとかC-DOSの案件 やってたのを思い出した。 >>14 コードセグメントが near ポインタのみの64KBというのは、ちと狭すぎやしないか‥ >>15 フリーの MS-DOS 用 C コンパイラってあるの? >>20 Turbo C GCC(要djgpp) 他にもあるやろ >>17 そゆこと DOSでcall 5を使うのは「俺はお前らと違ってCP/Mから知ってんだぞドヤァ」の意味にしかならない >>16 そこで自分から“CP/M”を口にしてしまうようでは、煽り師失格だな >>21 turbo c ってフリーなの? でもオープンソースじゃないよね gcc(djgpp) は i386 以上を要求するしね >>24 オープンソースでi386未満がターゲットのコンパイラが欲しかったの? 条件後出し乙。 その条件だと心当たり無いわ。 役立たずで申し訳ない。 パソ通全盛期の80年代末、フリーウェアはほとんどがTurbo Cで書かれてたね。 俺はQuick Cへ行ったけど。 そうか? アセンブラも多かった気がするよ。 そんな俺は、TurboPascalをasm文だけ使って構造化アセンブラとして駆使してた。 TurboPascalってasm文をテンポラリファイルに書き出して子プロセスでtasm呼び出してたし、 asm文しか使わんなら素直にtasm直に使ったほうが便利だろ。 いや、tasmいらんよ、アセンブラを内蔵してる。 tasmとか呼び出すのはとろくさいC系だろ。 OpenWatcomのことを思い出してあげてください・・・ >>24 , >>25 Open Watcom C/C++ はどう? DOSエクステンダ不要なバイナリーも 作れたハズ Turbo Cはコンパイルも速いし、吐き出したコードもMS-Cより2〜3割速かった Open Watcomはインラインアセンブラ周りでいろいろ罠があって勧めにくい QuickCって学習用と謳っておきながら ラージどころかヒュージモデルのライブラリまで入ってたね。 実際にQCでそんな巨大なアプリ書く奴いたのだろうか・・・ そらゲームとかの素材置きまくったらあっという間ですわ ヒュージポインタはいまいち信頼出来ないと思っていた‥‥ セグメント-オフセット処理は自分でなんとかしないといけないと思うよ‥‥ というか、やっぱり 64KB 以上のオブジェクトをそのまま使おうと思っちゃいけない、自分で完全管理するしかないと というわけで、LSI-C にラージモデル(だけでいいのでそ)のサポートがほしかった >>35 自分で探すべきなんだろうけれども、たとえばどんなところが罠なんですか? >>38 Open WatcomのBugzillaでinlineとかをキーワードで検索するといろいろと 何年も放置された未修正のバグの山が出てくる LSIC-80 今でも使ってますよ。XPまではDOS窓で動いたのに、7になったら 動かなくなって、仮想マシンとか調べたら対象のOSをインストールしなければ いけないのね。困ってたらnetでmsdos.exe見つけ、それ経由で使えてラッキー。 8085+82XXの基板がまだあって、去年は\3万の仕事を2件やりました(w DOSでCW、エコロジーとか使ってた頃が懐かしい(w CWはemm386.exeと相性悪くロックしたりした。 REDもそうかな? CWとほとんど同じ使い勝手だったのは覚えてるけど。 ああ俺もだな。 メルコの4MB-EMSボード使っていたからというのもあるけど 細かな指定ができるのはメルウェアが一番だったな。 ディスクキャッシュは糞だったけど。 ダメルコのディスクキャッシュソフトで何枚FDが死んだ事か…。 MSDN垢持ってるひとは今でもMS-DOS6.22が手に入る。6.2/Vも。 16bitコンパイラはあったかな。 Visual C++1.52cのリンカーってDOSのEXE吐けたっけ? 吐けるよ。win3.1用exeもdllもvbxも quick win用exeもスタティックlibも P-codeもcomも。 RAMDiskで768KBぐらい使って、そこに中間ファイルのパス張っておくと コンパイルが速いってのをやったなあ。5インチ縦置き20MBのディスクの頃。 TurboPASCALはコンパイル速かったなあ ディスクキャッシュ上でコンパイルして実行。フロッピーへは遅延書き込み パスカルはワンパスでコンパイルできる言語仕様だからな。 ヘッダも分離してないし、当時のマシンスペックには最適の高級言語だった。 関係ないが、アップルのSwiftがちょっとパスカル臭がしてうれしい。 Turbo Cも1パスで高速、安価、吐き出したコードもMS-Cより高速と いいところずくめだった。日曜プログラマは一斉にTCへ流れた感じがある。 特にMSAが98用に移植した1.5が大ヒットしたね。 プリプロセッサがあったり前方参照が可能なCが1パスでコンパイルできるわけない ところが、BorlandのCはプリプロセッサも含めて1パス #if中でsizeofあたりも使えたんだぜ 最近clang化したせいでできなくなった 理解不足で速いと言いたいだけだろとも思ったけど、clang化でできなくなったというからには何か構造的なレベルでこ違いを感じてるのかなあ つか#if内でsizeofって逆にパス増やしてない?それともプリプロセッサ内でも自然に扱えるように独自実装積み上げてたのかな Cはどれも似たり寄ったりだけど、ターボアセンブラは至宝! QuickCのコンパイル速度だけは感動した気がする >>57 > #if中でsizeofあたりも使えたんだぜ #if sizeof(int)==4 typedef int int32; #elif sizeof(long)==4 typedef long int32; #endif とかやれても limits.h あるし意味ないよなあ、移植性失うし。どういう便利な使い方あんの? >>56 pascal にも前方参照あるし、前方参照は call 命令だけ吐いといてあとからオペランド埋めればいいだけだよ >>64 > pascal にも前方参照あるし、 本質的にできないからforwardなんてのが後からUCSDに追加されたりしたんだけど。 >>65 それがどうかしたのか? 前方参照できるのは事実だろ。 ん? 横レス 本質的にできない、ってワンパスでは、ってことではないのかな。実際ワンパスで実現する方法はないよね いや、まああえて言えばシンボル保存した上での実行時の遅延評価までやるのなら可能だろうけど。 cでそんなことやるにはobj-cみたいにランタイム用意しなきゃ無理だろ 機械語レベルの前方参照なら>>64 の言う通り、何も難しい事は無いし ソースレベルの前方参照は、C言語はそもそも不可能だろ、普通forward宣言が必要なのを前方参照とは言わんしな (C++でクラス内ではまだソースコードに出現してないメンバ変数名を使えたりするようなのがそれ) >>59 ひとつのコンパイラがプリプロセスから構文解析、意味解析をトークンごとに一気に行ってるからできるわけでパスは増えてないよ ていうかこれが1パスでないなら1パスって何なんだ >>68 > ソースレベルの前方参照は、C言語はそもそも不可能だろ、普通forward宣言が必要なのを前方参照とは言わんしな ごめん、意味がわからない > (C++でクラス内ではまだソースコードに出現してないメンバ変数名を使えたりするようなのがそれ) そんなことできないし 話にならんな class t { int f(){ return m; //この時点でmを参照できる } int m; }; こういう風にまだ出てきてない宣言を使えるのが前方参照で、これは1パスでは無理 CやPascalみたいにプロトタイプやforward宣言が必須なものは、その情報だけで呼び出し側の生成には充分だからこそ必須になってる訳で1パスで可能 バブル絶頂の80年代末、パソ通が黎明期から普及期へと移り変わった頃 Vz + TCCは俺の青春って人は多いだろうね >>71 ちょっとおそい90年代前半だが、それでも Vz + lsic が青春でした‥ EZ→TunedEZ→NITemacsだったかな。 VZは仕事で使ってたか。 VZを常駐させるようになって、いままで多数使用していたフリーソフトを整理できたからな。 各自がシステムのフロッピーとデータ用フロッピー持って、共同パソコンを一々 立ち上げてはエディット・コンパイルとかやってたな。システムは左側。 HDD内蔵のパソコンが出た時は、フロッピースロットが1つしかない!って慌てたわ。 フロッピースロットが1つでも何とかなってたような記憶が なんかフロッピー入れ替えてた覚えがある MS5550は3FDDでシステム&プログラム&データ おれが大学当時、大学の授業のために5インチフロッピーが必要ってのがあった。 生協で買ったよ。1枚700円ぐらいしてた。 >>80 書込み防止したまま書込みをすると警告と再試行、中止、無視の 指示要求が出る その状態でフロッピーを入れ換えて再試行をするとDOSは入れ替え前の 状態から書き込むのでフロッピーの中身が大変なことになる >>85 PC-9801で最初にHDDを内蔵したやつでは、普段の使い方で同様に 「さっきまでのディスクのディレクトリを上書き」が発生するという酷いバグが 受信ringバッファから読みだすルーチン: LSIC80、石は8085=8080コード char* _asm_u(char*); /* 左辺値にするための宣言*/ #define ring(ptr,ring) *(_asm_u("\n\tMVI\tH, HIGH " #ring "_\n" \ "\tLDA\t" #ptr "_\n\tMOV\tL,A\n\tINR\tA\n\tSTA\t" #ptr "_\n")) char ch1read(void) { return ring(c1r_rpt,r1ring); 受信ringバッファに書込む割込み処理の、正常受信時の処理: ring(c1r_wpt,r1ring) = ACHDR;<---I/Oreg. B000h番地 rptとwptはbyte、ringは[256]にして自然ラップアラウンド、添え字計算時の アドレス演算がワード演算されないように最適化させてます。 ptrを1バイトにするために MVI H,HIGH ring LDA ptr MOV L,A INR A STA ptr MOV A,M として11バイト50クロックにするより、素直にptrに2バイト使って LHLD ptr MOV A,M INR L SHLD ptr として8バイト44クロックのほうがメリットあると思う。 ptrを1バイトにする以前にringバッファに256バイトもいるのかまず検討すべき。 わを!4行でできるのか(*o*) ptrの頭はゼロのまま・・・あ!違うか初期化で 先頭+00にしとくのですね。今度使ってみます。ありがとう!! ringは32と64で周回遅れが出たことがありますが、 主な理由は++した後マスク演算が要らないからです。 4CHあって、各受信256送信512、実装8KBの半分近くがringです(w 再構成するフレームがせいぜい80byte5種類位なのでこれでも余裕です。 最初に書いたときは受信バイト数を持って、書き込みで++読み出しで--、 片方は割込みだからタスク側で DI/EI してとかややこしい事書いてました。 自分では簡潔になったと思ってましたが、診て貰ってよかったです(m_ _m) >>88 の部分は確かに上の最適化可能ですが、システム全体の性能はどっこい なことが判りました。メインループで「そのCHに受信データがあるか?」の判定 のところで、rptrとwptrを並べて配置してあることを利用して、 LHLD rptr ;wptrとrptr両方 MOV A,H XRA L CNZ そのCHの受信フレーム再構成処理 と最適化してます。 こっちでメモリアクセスが1行増えるから、全体の性能はどっこいなのでした。 80C85のデータシート見たら、機械語の説明表でステート数とサイクル数 という欄があるのですが、これらはどう見ればいいのですか? ここで答え書いてもらうより ステートとかで検索してみれば 一般用語から類推すると、ステート数=CPUクロック数 だと思えますが、 サイクル数ってのがステートより少し小さい数字で出ていて、こちらが何の事か 想像できないんです。どちらの数字に1/原CLKを掛けたものが実行時間とか。 メーカーさんのサイトでも覗いてみれば もしくは電凸?答えられる人いるかな うろ覚えだからな、ヘタにかけないし 当時はステート数で実行時間を計算してたよ DMAがどうとかウェイトサイクルがどうとか、そんな話だった気がする 何クロックだかで1ステートとか1サイクルとか、そういう定義があった。 きちんとした資料なら定義がちゃんと書いてあるだろうし、書いてないならいまさら 確認するのは無理だからあきらめろ。 沖電気の80C85のpdfの中探してみましたが、定義なしで使っていました。 4ステートの命令が1サイクル、7ステートが2サイクル、10ステートが3サイクル なので、3で割った商で近似できそう。メモリアクセスの量みたいですね。 reg,reg 命令が一番少なくて、LDA/STAのようにメモリアクセス1回だと2サイクル メモリアクセス2回だと3サイクル、call/return はpush/pop & jump だから もっとサイクル数が多い。 8085は条件分岐が成立しないと 命令の3バイト目の読み込みをスキップするから2サイクルになるぞ 男なら黙ってリアルモード実行 プロテクトモード、なにそれ美味しいの? >>101 Z80にしてほしかったね、多分今でも買う‥ >>102 VRAM を一時的に UMB にして FEP を放り込むとかできないじゃないか 1980年代、NECのドットプリンタ(PC201HPR*?)が70万円だった。 PC9801VM2が40数万円、40MBのHDD付のPC9801VX4(?型式忘れた)が80万円。 たった40MB(GBじゃない)のHDD付で40万円も高かった。信じられる? もっとも、ずっと前のYHPなんかFDに相当するシステムだけで1千万円、 プリンタみたいにきれいな印字ができなくてグラフを描画するプロッタ が300万円したから、その時代よりは随分安くなったが。 ああ、当然、FORTRANのプログラムはタイプライタで横にテープに穴を 空ける装置で打ち込んでた。ディスプレイなんて気のきいたものはなかった。 VM2とCバスに差す40MBHDD(互換品)なら持ってた DOSの起動が速くて感動した FORTRANはグリーンディスプレイが付いてた世代 メインフレームに転送ボタンを押すと、瞬時に実行された! ★2ch勢いランキングサイトリスト★ ◎ +ニュース板 ・ 2NN ・ 2chTimes ◎ +ニュース板新着 ・ 2NN新着 ・ Headline BBY ・ unker Headline ◎ +ニュース板他 ・ Desktop2ch ・ 記者別一覧 ◎ 全板 ・ 全板縦断勢いランキング ・ スレッドランキング総合ランキング ・ ログ速 ◎ 全板実況込み ・ 2勢 ・ READ2CH ・ i-ikioi ※ 要サイト名検索 またとんでもない懐古趣味のスレがあった物だ。 懐かしいな。 4bit,8bitでゲームを作り、インベーダーではCPUやROMが無くなり海外まで資材担当にリュックを背負わせて買いに行かせたり。 インベーダーゲームの基板を買取にヤクザが会社に押しかけたり。 CP/M CP/M86 MP/M 色々やったな。 DOSには腹立たしい思いしか無い。 CP/Mのライセンスは10万とか30万とか安かったしただで使うケースも多かった。 しかしMSDOSになってから突然1000万だとふっかけられて頭に来た。 西みたいな若造が窓口だなんて頭に来た。 LSIC-80のリンカで、ROMのアドレスを指定しないと0100h番地からになるのは CP/M時代のルールを引きずってるんだよね。 >>110 あれだろ,メモリ上ではプロセスの頭にヘッダが確保されている,そのヘッダの大きさにあわせているんだろ. でもあのヘッダ(Program Segment Prefix) の半分はコマンドラインの内容だったたりするのは MS-DOS 的だったかと (CP/M なら FCB(FileControlBlock) で引数を指定するからな なんのための 80h バイトだったんだろ? >(CP/M なら FCB(FileControlBlock) で引数を指定するからな > >なんのための 80h バイトだったんだろ? コマンドライン全体がコピーされるしデフォルトのDMAでもあった筈 80h〜ffhのディスクバッファはなぜかDMAと呼ばれたたな。 フロッピーはDMAで転送すると思い込まれてたんだろうね。 それともdisk 何とか areaとかの略称だったのかな >>113 CP/M 2.2のマニュアル(http://www.cpm.z80.de/manuals/cpm22-m.pdf )では、 システムコールの説明で > FUNCTION 26: SET DMA ADDRESS > Entry Parameters: > Register C: 1AH > Registers DE: DMA Address > > DMA is an acronym for Direct Memory Address, となっているが、巻末の用語説明では > DMA: Direct Memory Access. DMA is a method of transferring data from the disk into memory > directly. とも書かれているので用語として統一されたものではない感じ。 さんくす。結構曖昧なんだね。 PC-88の内蔵フロッピーはDMA使ってなかったりする >>113 > フロッピーはDMAで転送すると思い込まれてたんだろうね。 当時の CPU の能力では、DMAC を使うか、転送に専任しないと FDD (30kbyte/sec ぐらい) に間に合わなかった様な気がする。 PC-88はメインCPUがZ80だけど、FDにも専用のZ80(とRAM)を持っていて データはそれら同士でI/Oポート介してハンドシェイクしていたんだよね。 FDの方のZ80がDMA使っていたんじゃないの? 俺は詳しくしらんけど。 >データはそれら同士でI/Oポート介してハンドシェイク ハンドシェイクはI/O経由でも良いけど データ転送はDMA使った方が良くね? Web見てもオーバーヘッドの問題はあったみたいだね。 もともとFDDの無かったPC-8801(8001?)から拡張して、何かしら互換性を持たせるために 建て増し的に設計して、それでFDDはサブシステムに追い出したのかも知れないし NECの中の人が何を思う所あってそう設計したのか俺には分からないw PC-8001の外付けFDDから既にサブシステムだったから、それを継承したんだろう 元々PC-8001とPC-8031とは別々に開発がスタートしたんじゃなかったかな。 PC-8031を開発始めた段階で、どんな代物と繋ぐのかよく分かってなかったと言うw PC-8031は簡単な外付け回路でセルフブートできるし、プリンタ等繋げられるI/Fもついてるから スタンドアロンのマイコン装置としての活用も想定されてたと思う。 スタンドアロンで音楽を演奏(ヘッドをガチャガチャ動かして)というのがあった記憶が PC-8031にプリンタ繋いで、プリンタサーバにしたことならある。 PC-8031って変換アダプタつければP6にも繋げたよな。 PC-8031にプログラムを転送して実行、結果を受け取るプログラムなら作った事ある >>124 そうか8255を使ったパラレルポートだからプログラム次第でプリンタを繋いで動かしたりとかできたんだな >>127 PC-8001との通信用とは別のポートだよ。 PC-8031って本体用ポートの他にプリンタポートも付いてたのか。 8001用のペンプリンタの試作機って見たことある カンカンカンカンうるせーのw あのPC-8023だって十分うるさい PC-8023でググったらWindowsから印刷してる人がしてわらた csvdeでメンバーのデータをツリー状に出力する方法ってありませんか? csvdeでメンバーのデータをツリー状に出力する方法ってありませんか? LSIC80は完全に16bitアプリなので、win7にしたら使えなくなった。 (今でも8085のコードを書く仕事がある) netで msdos.exe というのを拾って使えるようになった。感謝。 8085なんてまだ現役なのか。 せいぜい80186くらいだと思ってた。 8085が現役なんじゃなくて、互換チップが未だ生き延びているんじゃないか? 川崎重工辺りが頑なに作っていた気がするぞ。 >>136 >LSIC80は完全に16bitアプリなので、 http://www.lsi-j.co.jp/products/lsic80.html SolarisやFreeBSD、Linuxにも対応してるし違うんじゃない。 Windows版だけは16bitって主張? >>139 そのFreeBSD/Linuxパックも2.2.6-RELEASEだのlibc5だのって 20年くらい前のバージョンだろ Windowsパックだって32bit版OSのみって時点で 16bit DOSアプリだと考えた方が自然 川重が作ってるのはZ80(Z180?)互換チップです。 8085は今はどこも作ってないでしょう。年に数枚しか作らない基板なので、 必要なCPUはアキバで別の基板から抜いた奴を調達してるのではないかと。 今売ってるLXIC80があれば64bit環境にも対応してるかもしれませんが、 私のは20年近く前にお客のPC98の中から拾ってきた奴なのでもろ16bit製品(w >>140 > Windowsパックだって32bit版OSのみって時点で > 16bit DOSアプリだと考えた方が自然 動作環境にDOSもWin3.1もないんだしそれはなかろ。 いまだに売ってるDOS用ツールはDOS用って言って売ってるし。 http://www.lsi-j.co.jp/products/lsic80_debug.html > 動作環境 > 対応OS MS-DOS 2.11以上 > 対応メモリ 384KB以上 > 対応機種 NEC PC-9800シリーズ(XA,XL,XL2,RLのハイレゾリューションモードも含む) > PC-H98シリーズ およびその互換機 >>142 それはPC-98専用の製品だからだろ・・・ >>145 C9を瞬時に理解してしまった自分にワロタ Opcode Mnemonic Description C9 LEAVE Set SP to BP, then pop BP. さて質問だ com 形式で 'C9' だけおきリターンすると,無事にプロセス終了となるわけだが,そう簡単な話ではない なぜこれでうまく終了できるのか説明願いたい.RET っていってもいったいどこに戻るのか? そうだね scの晴れるかな http://toro.2ch.s c/test/read.cgi/esite/1401073775/326 8080でもRETだよ。 C9の場所をcallする前にSPに適切な値を入れてやる必要がある。 それをするのはOS(の、ローダー機能)のはずだから、OSの存在が前提に なってるね。デバッカなどでRETの場所をステップ実行すれば、PCの値が SPの指していたメモリの内容に置換されるのが見える。 『はじめて読む486』のサンプルプログラム集がGitHubで公開されたね。 https://github.com/tkmc/486 DOSエクステンダを自作したい人なんかには有用な本だとは思うが、あんま一般的な内容じゃないと 思うんだがツイッター見てると絶賛の声が多いな >はじめて読む486 リセット直後の32bitリアルモードがずっと使えると便利なんだけどな。 リアルモードのアドレッシングだけど4GB全部アクセスできるモードが。 486の頃は既に高級言語に移行してたな…。 パフォーマンス必要なとこだけアセンブラで書いてた。 それにしても、MONコマンドとBSAVEだけでプログラム作ってたとか今じゃありえんよな。 ってこれはDOSじゃなくてN88BASICの話だけど。 DOSもDEBUGコマンドで似たような事してたから、やはりマジキチ。 >>157 え、DATA分にバイナリを羅列しておいて、BACIS では確保していた領域に POKE し、USR 関数でジャンプしていたんでは?あーわすれたね >>158 そのバイナリを作るのに、俺はまだ厨房だったからさすがに直接ニモニックコードは書けず、アセンブラでやってたのです。 読むのはできたけどね、プロテクトディスクダンプして解除とか(笑 ちなみに引数もPOKEで書いてCALLしてた。 >>159 > 直接ニモニックコードは書けず、アセンブラでやってたのです。 意味がわからん。 単語は知らんが、英語はしゃべれるみたいな? db XX,YY,ZZ〜 みたいなソース書いてアセンブラに食わせてたんじゃないの >>160 16進数でcd 21とか直接バイト列をゴリゴリ書くレベルではなかったけど、int 21hと打つことはできた、みたいな。 まあ実際は上くらいならいいけど、アドレス計算が面倒なので、機械語コードを言語に翻訳してくれるdebugコマンドはありがたかったという話。 今で言うなら、メモ帳だけでプログラム書くのはめんどいけど、IDE使うなら楽ちん、みたいな感覚かな。 ああ、ニモニックコードの意味の使い方を間違えてたのか、失礼しました ついでに言えば、masmを使えるようになった時の快適さもすごかったな。 エディタはedlinだったけど。 今じゃviエディタすら使う気がしない、もうろくしたものです。 そういや、みんなはDOS最終期は何のエディタ使ってたの? 俺はeliseだったなあ。 Turbo系のIDE系はUMBを限界まで張ってると起動できなかったから、結局コンパイラ単体しか使わなかったなあ。 MIFES, Vz …と言いたいが、俺はその時大学生だったのでフリーソフトくらいしか 選択肢が無くSE3を使っていた。 教育用 フルスクリーンテキストエディタ PC-98 アナログカラー 版 http://www.vector.co.jp/soft/dos/writing/se004927.html パソ通の書き込みをそれで作ってkmtermで送信していたような記憶が。 FEPはソフトベンダーTAKERUで入手したWXPだったかな。 おお、こんなのあったんだね、知らなかった。 ニフティに入ってなかったから、地元の草の根でしかフリーソフトの情報なんて仕入れられなかったよ。 これ移植してる機種数すごいな。 それにしても、ベクターは偉大だなあ、本業はもうすっかりゲームになったけど、ソフトライブラリは会社がつぶれても何らかの形で残してほしい、ここからしかもう入手できない遺産が多すぎる。 実際、俺が作ったソフトもいくつか登録されてんだが、作った俺本人がここからしか入手できない、ソースも実行ファイルも読む手段のない5インチフロッピーに封印されてるので。 TAKERUも懐かしいね、魔導物語かなんかを買った記憶があるなあ。 FEPは最後までNECAIだった。 あれをUMBに入れるには、いったんVRAMもUMB領域に割り当てる必要があったなあ。 DOS時代は RED-->CW だった。winになってWZ viは、exモードを駆使して初めて真価を発揮する。 それができないなら、使う意味はあまりない。 exモードが駆使できるならvisualモードなど不要 >>169 その発想はただのヲタ 両方をTPOに応じて的確に使い分けられてこそ、真のvi使い それには同意だが、私はNitEmacsを使っていた。 おっちゃんの最期のDOSエディタはVzだった Win3.1に入り秀丸に出会った。 今も秀丸だ。 キーバインドはWordStart&Vzな変態だw vzにシェアを食われて肩身の狭い思いをしたmifes派 Vzが出てMIFESが食われたかは知らんけど、Finalは消えた。 まあFinalは品質に問題あるソフトだったけどな。 しかし生き延びてるのはMIFESという…。 今更買う人いるのかねえ…。 そういうけどエディタってIMEやフォントと同じで慣れたものから離れられない。 生き延びるって重要だ。 仕事で永く使えるといったらMIFESの他に何かあるかな? (秀丸はちょっと…) オープンソースのものなら最悪自分でメンテ続けられるので安心だよ うーん、仕事でプレーンなテキストを書きまくるっていうシチュエーションがまず思いつかないなあ。 最近のMIFESはCSVに特化したモードとかはあるらしいけど、Excelでいいじゃん、みたいな。 1万以上する価格設定も今時強気すぎる気がする…。 今公式サイト見てきたら、内容をSNSに投稿できますってのをウリにしてる段階で、なんかもうなんか違う気がする。 ソースコード作成とか閲覧とかはテキストエディタを使うよ csvもexcelを通すと変に加工されることがあるし、そもそも使いにくいので、csvエディタ機能はあると嬉しい 高すぎるからmifesは使わないけど MIFES風マクロだとやっぱり微妙に使いにくいのん? ソースなんてもうコード補完がないと書きたくないくらいに怠け者になってしまった Vzなつかしいな Windows版のVzもっと早く出てれば 秀丸には乗り換えなかっただろうな >>186 >Windows版のVzもっと早く出てれば いまだにそんなもの出てないのに? それを言い出したらMIFESだってDOS版とは別物だろうに。 >>166 nifty にしかないものも多かったからね‥MIDI データ群は返す返すも惜しい‥今 MIDI やってる人はどういう発表形態をとるの? >>190 作業比率は減ってるらしいがDOS版の作者が今も関わっててるみたいだから別物ではないだろ Mifesはバージョン5よりバージョン4のほうが軽くてよかったな。 >>192 オリジナルならニコ動とかにうpするんじゃないかな? 版権ものは分からん。 >>193 開発者がどうであれ、ソフトそのものはスクラッチだろ。 >>154 あれが有用なのは「動く」32ビットコードが省略なしに載っていて誰でも試せるところにある 実際、アラインメントの調整くらいで、タスクスイッチングが動いた、‥i386SX でのお話 特権モード関連の分かりやすい資料として高く評価されているよ。 >>156 リセット直後ってCSのベース値が特殊なだけで32bitでも何でもないぞ いったんプロテクトモードにしてからリミット4Gのセレクタをロードして そのままリアルモードに戻すと4GBアクセスできたりするらしいが >>190 VZはc.mos氏作であるが故のVZといえるけど、MIFESは別にそういうわけじゃないよなぁ MIFESはDOSの頃はメガソフトの外部の人ひとりでやってて、Windowsになってその人とメガソフトの中の チームとでやってるんでなかったかな。 8085の仕事がまたキター---いよいよ基板がなくなるみたいなのでこれが最後 かな〜。使われてる石見ると1980年代の半ば頃の設計のはずなんだけど、 よく同じ石があるなと感心する。 >>206 置き換えたくても、基板アートワークを起こすのに数十万円掛かるからな。 うん、それはお客さんも言ってた。年に数枚しか出ない基板だから、その起こし の費用が出ないんだって。今後は最近の1チップでuartが4CH載ってる適当な 基板にソフトを載せ換えることで対応するらしいので、実際にあるH8Sの基板を 想定してHEWに移植してみた。XPマシンが壊れる前に単体までは動かしてみた。 ルネでHEWなら石に見合ったiodefine.h使うだけで移植可能なので、それを お奨めしてみたい。 そういうのに国が補助金出せばいいのに ルネなんて救済しないでいいから 1週間返信が無いから、動いてる(確認中)なのだとおもう。 動かなければ動かんぞゴルァ!はすぐ来るだろうから。暇だったので最適化(w _asm_c("\n\tEXTRN\teventfg_,clrdata_\n"); _asm_c("\n\tLDA\teventfg_\n\tORA\tA\n"); /* if(eventfg) */ _asm_c("\n\tCNZ\tclrdata_\n"); /* crldata() */ まあインラインアセンブラなんて局所的にしか使わんし 使い勝手なんてどうでもいいよ。 >>213 すげえな、これ本当に8086系用なんか? CP/Mと8080ってイコールじゃないけど何言ってんの?? LSI-C80はMS-DOS上でしか動かんってのが起点だからまぁいいんでね?w > LSI-C80はMS-DOS上でしか動かん 何言ってんの? バカなの? LSI-C80でビルドしたモジュールは8080上で動くが、 LSI-C80はMS-DOS環境でしか動かないよ。 だからWindows7標準では動かせないって話を>213=>41が書いているわけだ。 > LSI-C80はMS-DOS環境でしか動かないよ。 CP/M版もあったの知らないのねw >>224 > LSI-C80はMS-DOS環境でしか動かないよ。 何言ってんだかw http://web.archive.org/web/20090226223619/http ://www.lsi-j.co.jp/hard/product/lsic80/index.html > 2003年11月5日をもちまして「MS-DOS版」のサポートは終了いたしました。 >>225 それをちょっといじったと思われるMSX-DOS版もあったな。 当時アルバイトで使った あーなるほど。すんません。 んじゃ、クロス開発専用と言い換えておく。 >>226 ひでえな それより新しいMS-DOSじゃ動かないのかよ!!!! CP/Mはこれからも8080/Z80の開発環境として生き残りそうだし、 x64が主流になって仮想86が捨てられ、DOSの方が先に忘れられそうな気がす 64ビットのWindowsOSで16ビットアプリケーションが動きました! http://www.alles.or.jp/ ~thisida/mycpu619.html MSが言ってる16bitの断念って、win3.1用のソフトの動作とかじゃないの? ていうか、次期OSではwin32すら切り捨てるという噂もあるけど、どうなることやら そもそも、16bitアプリが何でもかんでも動く訳じゃないし MS-DOSのソース見つけたけど、どうやって使うの? >>236 まずはio.sysに当たる部分を0から書く >>232 全角英数を使うのが当たり前、半角英数を使う奴は非常識馬鹿 …そう言われてた時代もかつてあったんだよ 技術的な理由もちゃんとあった まあその元記事を書いた奴はその時代で頭が固まってるってことで、やっぱり非常識馬鹿なんだけど >>238 パソコン通信の頃の話だっけか 全角半角が混在してると何かあったときに文字化けしやすくなるとか聞いたことがある だがな、全角英数きもっ >>239 当時を何も知らん糞ガキは黙ってな 文字化けの話じゃねーよ馬鹿が >>238 >全角英数を使うのが当たり前、半角英数を使う奴は非常識馬鹿 >…そう言われてた時代もかつてあったんだよ ねぇよバカかよw >>238 それは違うな‥ 二つの原則を混在している @半角カナは使うな A全角英数は使うな つまり、void さんは文字コードが特定のフォント中のグリフに対応することはあってはならない、と主張していた だから、半角と全角でグリフが異なるのはおかしい、と。 しかし、void さんのシグナチャー「ヘミ猫」はその主張とは裏腹に半角全角が混在していたのであった‥ >>242 おいじいさんや、>>238 の技術的な理由ってのを教えてくだしあ >>243 懐かしいなぁ…「話しってなんですか?」「無礼者」 >>246 void さん曰く「猫じゃないもん!」 >>248 もうIE8..ごめん/Operaでは気軽に JISコード(ISO-2022-JP) を閲覧できない‥手元の環境ではいちいちエディタで変換しないと 他のブラウザはどうなってんの? どいつもこいつも…頭カッチカチだから文字化けの話からどうしても抜け出せないとはw 当時の半角英数の画面や印刷物を一目見れば理由が分かるのに 10年位前だったか、voidさんが2ちゃんねるに遊びに来てた頃、 「voidには読めないスレ」と題して半角カナだけで会話してたスレが有ったな >>253 > 当時の半角英数の画面や印刷物を一目見れば理由が分かるのに そんなもん今時誰も持ってないからわかんねーよ >>240 Shift-JISは混在している方が復帰しやすいね まさか出版業界という狭い世界でしか通用しない「常識」を 一般でも当然であるかのように偉そうに言い張るジジイだったとは voidさんは荒らしてない 荒らしてたのはvoidさんに突っ込まれて発狂した人たちの方 もともとNetNewsのfj.*辺りの話題ではなかったっけ >半角カナ使うな >>257 「画面や印刷物」→出版業界? お前も糞婆並みの思い込みの激しさ・視野の狭さだなw そもそも出版業界は当時からそんなチンケなシステム使ってないし(笑) >>259 coolを装って他人を発狂させるように持って行くのが奴のやり口 つまり荒らしの一種であることには変わりない その辺が、ただ吠えるだけだったmohtaと違うところだが もしかして半角が混ざると折り返しで引っかかるというショボい話をしているのか 半角カナが本文とかタイトルとかに含まれてると ハングアップするメールソフトがあったんだわ あとNeXTのメールソフトはJISのESCシーケンスが途中で終わってるメールが来ると良くハングアップした そもそも7ビットしか通さないサーバを経由すると文字化けするんよ。 縦書きにするときの折り返しがうまくいかない、という理由以外 英数字を半角にしてはダメ、という理由は見たことがないよね ダサダサの全角英数で書かれた横書きWeb記事は笑えるけど 今時、文章を書くのは縦書きを要求されない事案の方がずっと多いのに それが当然かのごとく言い続けるバカ プロポーショナルフォントなら全角でも違和感ないぞ。 少なくとも、他人に半角を強制する理由もない。 >>269 だからさ、「Web記事」の時代しか知らないようなお子様は大人しく黙ってればいいと思うよ、見てて滑稽だから。 そもそも、なんでそんなお子様がこのスレに来るのかが意味不明(笑) fj時代は、書き込み内容は日本語でも標題だけは半角英数にしてたな。 >>271 98で一太郎使ってる頃から、英数は半角が当然 論文だろうと企画書とかのレジメだろうと、ね 縦書きにする必要があるものは当然全角で原稿を書くけど 全角が必要ない場所に全角使用を強制するなどという 狭い世界での馬鹿げた習慣は無かったよ 「本屋新聞の原稿」以外にパソコンとか使ってなかったのかね 会議の資料の手書きとか考えられないんだが それとも、専用のワープロ(死語)でも使って書いていて 文字コードの変換で苦労するから全角英数の強制かね いずれにしろ、無知の老害は邪魔以外の何者でもないね 全角英数の使用を、でかい声で、さも全世界で普通に行われていたかのごとく言い張ってたのに それが単なる「縦書き改行の都合」とは >>277 単なる週末限定論破厨 こういう輩は誰にでも食らいつく 板名もスレタイも読めないあたり人間並の知能がないのは確かだな そもそも、Windows環境でコンソールアプリをちょっと作ったぐらいで 「俺はDOSも知ってるぜぃ」などと勘違いしてる奴が多いんじゃないのかな やはり TSR をみようみまねで組んでほしいところ デバドラとしても実行ファイルとしても常駐コマンドとしても使えるファイル ネ申業に見えたな デバイスドライバも兼用できるか?!いや、emm386.exe はあったか‥こいつが dos の最高峰かもしれん‥ 一度実行したら常駐し、再実行で常駐から外れるという節約精神 割り込みベクタをリンクして あとから取り外すとき ほかの常駐がリンク追加してても 自分のベクタだけ消す親切仕様ですねわかります .exe形式のデバドラってどういう構造なんだろう デバイスヘッダが先頭になきゃいけないわけだし・・・ 割り込みベクタはチェーンになってないぞ。 デバドラチェーンと混同してない? いずれにしろ、チェーンから自分だけ外す、というのは無理。 自分が書き換えたより後で誰かが書き換えてたら、常駐解除を 中止する、ということしかできない。 チェーン部分だけ切り離して常駐したままとし,他の主要機能は解放してしまう,というのはありかな‥結構難しいな‥ 困ったときはリセット 余計なことして無駄なメモリ食うほうが罪 割込みベクタの場合は、自分が書き換える前にあった番地を、アプリ側で どこかに持っておいて、自分の処理をやる前あるいは後に、そっちも呼んでやる、 という風になってるから、自分以外のアプリについては手が出せない。 ちと知恵を貸してくれ CONFIG.SYSでデバイスドライバ内から環境変数にセットしたいんだが この時、Master Enviroment Blockは存在しない様で煮詰まってます なんかいい方法無いですかね shellとして実装してcommand.comを呼び出すのもアリかなとは思いますが スマートじゃないもんで・・ Function 52hあたりで取れなかったっけ? ドライバの組み込み段階でPSPとかあるのかものすごく疑問だが int 21h ah=52hでFirst MCBからたどってたんだけど見つけられなかった PC-DOSとかのRAMDISKとかもバッチ側から判定してるし無理なんかな config.sysの段階ではまだ環境変数そのものが無いんじゃないか? あれはcommand.comの担当だし。 一時的に適当なメモリに渡したい値を書いておいて、autoexec.bat内でそれを参照して環境変数をセットするプログラムを走らせるとか。 たしかに、デバイス読込み時には環境変数は1個もなかったですね 一応ブロック型のデバイスなのでCONFIGで組込む必要があるんですが ドライバ内で作業域作って、後から別プログラムで参照した方が簡単でいいかもですね どうも有り難うございました え、もしかして実務のデバドラなのか。 環境変数にこだわってるわけではなくて、実行構成も固定されてて、クライアント?に値を渡したいだけなら、適当な割り込みベクタを使ってオレオレシステムコールを作ればいいんじゃないかな。 産業用途の環境なら、あえて予約はされてるけど絶対に使われない割り込み番号を乗っ取るのが一番安全だな。 例えばサウンドボードとかMIDIとかのメディア系。 ついでに書けば、ドライバ内に作業域とあるが、起動シーケンスで一回しか使われない情報は、必ずしもお行儀よくmallocとかしなくていいんだぜ。 起動時なんだから、他に動くプログラムが固定されてるなら、メインメモリの一番おしりあたりとかを勝手に書き換えてしまえば良い。 Turbo系のデバッガだって、MCBを無視して勝手にUMB領域使ってたしなあ(笑) 未だにこんなの使ってるということはエミュ運用も考えられるので あまり裏ワザじみたことはしないほうがいいかも あまり裏ワザ使うと、エミュでも再現できず、作動しないと思うのだが。 >>313 LHAもLSI-Cで作成されてたんだよね サブディレクトリを含む、ファイル名の一覧を出力したい フォルダは除きたい ▼入力 dir /a-d /s /b 上記から、ファイルのパス部分を削除したい for /f "delims=" %%a in ('dir /a-d /s /b') do @set x=%%a 変数に代入 ここからファイル名のみ取り出す方法がわかりません なにか、いい案ないでしょうか >>316 もう自己解決しているかもしれないが REM もっとシンプルに出来るかどうかは知らん setlocal enabledelayedexpansion for /f "delims=" %%a in ('dir /a-d /s /b') do @CALL :proc %%a goto BYE :proc @set x=%~n1%~x1 @echo %x% @goto :EOF :BYE endlocal ↑ すまん setlocal enabledelayedexpansion は不要 ↑↑ 更に修正 for /f "delims=" %%a in ('dir /a-d /s /b') do @CALL :proc "%%a" 末尾の %%a はダブルクォートでくくる。ファイルメーにスペースが有るときに必要だった。 ↑↑↑ 後出しですまんが、表示するだけなら for /f "delims=" %%a in ('dir /a-d /s /b') do @echo %%~na%%~xa で充分 LSI C-86は出来過ぎた試食版だったからな。 Sモデルのみ以外に何の制約もない。 64KB以上のコードなんて個人じゃほとんど書かないしね。 データ用メモリならBMSなりEMSなりでいくらでもなんとかなったし。 サポート無しと書いてあるにもかかわらずサポート電話は鳴り止まず アセンブラR86への質問が集中したという(のちにオンライン公開) なお、一番売れたのはLSI C-86のマニュアルだったという マイナーだと思ってたがそんなに人気のツールだったのか farデータ、farポインタはそのまま使える(Sモデル向けのライブラリ関数は当然未対応) far関数はそのままだと共通のTEXTセグメントに入れられちゃうけど 一度アセンブリ言語で吐き出してから、所属するセグメントを例えばTEXT CSEGから <ファイル名>_TEXT CSEGに書き換えて、RETでなくRETFで帰るようにしてやると…… >>328 call 側も far-call にしてセグメントを指定しないと ごめん、訂正、呼び出される側はfar指定付けた時点でRETFになる(当たり前) 外部関数の宣言でfarつけとけば、Sモデルでもきちんとセグメント指定したfarコールしてくれる 手動で手間かけなきゃいけないのは呼び出される側のセグメント名の修正だけ(なハズ) なので1ファイル=1モジュール=1セグメントで、同一モジュール内のstatic関数だけnearコールする感じの使い方が 試食版でも(やろうと思えば割と簡単に)できちゃう(書き換えたファイルでは標準ライブラリ呼び出せなくなるから苦労は増えるけど) ライブラリで master.lib を活用してたっけなぁ その作者がその後ニコニコ動画を作成するとは dir と打とうとして指が滑り、dior になってしまってオシャレな気分に diorとは何か? ググってフランスのブランドだと知る。 俺ら引きこもりプログラマはブランド品など縁がないからな(笑) microsoft嫌いの俺が唯一評価するツールはm80だけだな >>334 興味ないつーても聞いたことくらいはあるでしょw ディオール知らないとかネタじゃないならビビる ヴィトンやエルメスぐらい有名だぞ ユニクロ知らねえって言ってるようなもんだ ユニクロみたいな庶民の味方と高級ブランドを比較されてもね 尺度の揃ってない比較だよな 俺もガキの頃エルメス読めなくて恥かいたけど、今でも男性向け商品そんな目立ってないし、そもそも日本人男性に合うのかとか思うしね ジップネックニットとか10万超すのにジップ裏地が弱くてしばらく着てると痒くなったのよ。洗濯機に気軽に放り込めてなんぼだよ。ユニクロでいいよアホかと 男が詳しい必要ないと思うんだよな 腕時計とジャケットとクツだけはっときゃいいんじゃ 匿名通信(Tor、i2p等)ができるファイル共有ソフトBitComet(ビットコメット)みたいな、 BitTorrentがオープンソースで開発されています 言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか? Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします https://twitter.com/Lyrise_al ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw The Covenant Project 概要 Covenantは、純粋P2Pのファイル共有ソフトです 目的 インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します 特徴 Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW) 接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です DHTにはKademlia + コネクションプールを使用します UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります) 検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません 15 timeout で最後まで待ったら処理A、途中でキーを押したら処理Bに分岐したいです for /f "usebackq tokens=3" %i in (`timeout 3`) do set res=%i 「0 秒待っています。続行するには何かキーを押してください ...」←普段はこの左の数字が変化するけど 「3 秒待っています。続行するには何かキーを押してください ..0」←for文では左の数字は固定で..のあとに変化する数字が付くことに気づきました これで途中でキーを押せば「...」「..2」など、最後まで待てば「..0」を取得できました しかし、なぜか if %res%==..0 で比較できません… 何か目に見えない特殊な文字コードが入っている? %res:~8,1% これが空なら途中でキーを押した、0なら最後まで待ったということが分かりましたw なんとかなりましたorz 見た目は「..0」でも1文字ずつ調べるとピリオドは3つあり、「...(空)2(空)1(空)0」となっていました (空)はたぶん制御文字で、途中でキーを押すと最後の0まで伸びない 秒数に応じて(空)も合わせて2つづつ位置が伸びるようで、5秒なら %res:~12,1% AT-互換機のDOS互換FDDブートかWindowsの16bitモードやDOSBOX等で動くLSI-Cで VRAMに図形を出すのって何処かに例はありますか? Turbo C++ for Windows 7, 8, 8.1 and Windows 10 ttp://turboc.codeplex.com/ memo 【ランサムウエア】「身代金要求型」不正ウイルス作成の疑い 中学生を逮捕 asahi.2ch.net test read.cgi newsplus 1496631476 【自作PC】AMD、32コア/64スレッドのEPYCを6月20日、次世代のRadeon VegaはSIGGRAPHで発表 asahi.2ch.net test read.cgi newsplus 1496264554 ☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の 両院で、改憲議員が3分の2を超えております。 『憲法改正国民投票法』、でググってみてください。国会の発議は すでに可能です。平和は勝ち取るものです。お願い致します。☆☆ 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方 役に立つかもしれません グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』 2FT6E PC/AT の VGA カードって、PC-9801みたいに、テキストとグラフィックの画面の合成はできないのでしょうか。 >>351 多分、出来ないんじゃないかな、たとえ1バイトの ASCII 文字であっても。 「text mode」はあるけれど、「mode」という言葉が示すとおり、グラフィック mode とは切り替えて使っていただと思う。PC-9801 や PC-8801 では、text と graphic をハードウェア的に重ね合わせることが出来て便利だったけれど。 [VGA] ・640 x 480, 16色/モノクロ ・640 x 200, 16色/モノクロ (EGA 互換) 16色は、4BIT分使うから、(640*480*4/8)/1024 = 150 で、 640 x 480 x 4BIT は、150(KB)。また、 640*480*4/8 = 0x25800。 [EGA] 典型例: ・640 x 350, 64色中の16色/モノクロ ・640 x 200, 16色 [CGA] text mode と graphic mode を持つ。 ・320 x 200, 16色のうちの4色 ・640 x 200, 2色 PC/AT の video memory は、古い仕様書では、0xA0000 - 0xBFFFF (128KB)と なっているが、実際は 「RAM」だけでも、150(KB)以上あるはず。 仕様書的には典型的なアドレスは、 0xA0000 : EGA/VGA graphics modes (64 KB) 0xB0000 : monochrome text mode (32 KB) 0xB8000 : color text mode and CGA-compatible graphics modes (32 KB) 0xC0000 : Video BIOS の ROM ---> VGA の場合は、ROM ではなく、VRAMのはず。 となっており、VGA での text buffer は、0xB8000 となっている。 0xA0000 から 150KB までの領域は、最終アドレスが、0xC57FF となり、 0xB8000 と重なってしまう。なので、graphic と text の同時使用は出来 ないハズ。ただし、ネットで入手できる仕様書は概ね かなり古いようだが。 【CGA】 https://www.seasip.info/VintagePC/cga.html [Graphics Modes] In the two graphics modes, all memory is used for the framebuffer. Each row is 80 bytes. At the beginning of memory are the first set of rows (0, 2, 4, ..., 198); offset by 8k are the second set (1, 3, 5, ..., 199). This may have been to make it easier for the hardware to produce an interlaced picture, but it's a pain to program. グラフィック・モードでは、1ラインは、80バイトで、 0行目、2行目、4行目、・・・、198行目 と続いた後、先頭から 8KB 離れて、 1行目、3行目、5行目、・・・、199行目 となっていたらしい。 In low-resolution graphics mode (320x200), a byte corresponds to four pixels; in high-resolution mode (640x200), a byte corresponds to 8. In each case, the highest-numbered bits correspond to the leftmost pixel. ↑は、つまり、320x200 では、4色だから、1ピクセル当たり2BIT。 よって、8/2 = 4 で、1バイト当たりで、4ピクセル。 この場合、1行は、4(ピクセル/バイト) × 80(バイト) = 320(ピクセル)。 640x200 は、モノクロモードだから、8BIT で、8ピクセルに相当。 つまり、4色カラーモードでも、当初からパックド・ピクセル方式だったらしい。 この場合、1行は、8(ピクセル/バイト) × 80(バイト) = 640(ピクセル)。 >>351 見つけた。CGA では、排他使用しか出来なかったらしい。 多分、この伝統を VGA も受け継いでいたと考えられる: 【Register I/O】 03D8h: Mode control register The following bits are used: Bit 1: Graphics mode If this bit is set, the display RAM will be treated as bitmap graphics rather than as text. ↑[I/O ポート、0x3D8] BIT1 = 0 : display RAM will be treated as text. 1 : display RAM will be treated as bitmap graphics. ちなみに、おいらは、昔の人全体の代表ではない。 昔から、浮いた、もとい、特殊な存在だったよ。 昔から今に至るまで中二病が良くなってないのか ご愁傷様 okitacはカードでtosbacは紙テープだったな 昔、ウルトラマンで紙テープを読みとるの見て憧れたな。 仮面ライダーV3はカタカナ表示がスクロールしてたぞ Windows7 が走る機械で編集・コンパイルして PC-9801FA にバイナリーを送り込む、ってのを最終的にやりたいのですが、 そしてデータ受け渡しは RS-232C が適当だと思っていますが、手をつけるにあたって何かいい方法・書籍・Cバス基盤はありませんか? >>365 PC9801関連のスレで聞いた方がよいのでは? RS-232Cなら標準搭載しているのでCバス拡張ボードは不要なんじゃ。 それよりバイナリ転送するなら、ホスト側はUSBポートしかない機種だとRS-USB変換アダプタの フロー制御でハードウェア・ハンドシェイクできる製品を検討することが重要な気がするけど。 仮に、MS-DOS側(=PC9801)の転送ソフトを知識ゼロから自作したいという話だとしても CCT-98IIIとかフリーソフトとかの転送用ソフトで試してみては? 様々なバイナリ転送プロトコルを勉強したいとかなら廃刊になったCマガジンとか。 (今では電子書籍で安価に買えるみたい) >>365 素直にUSB接続のFDDを買いなよ・・・ >>365 Windows7→Windows98(PC-98)にネットワーク経由でデータ移動 Windows98(PC-98)→PC9801FAにMAXLINKで転送 あるいはヘキサダンプをプリントアウトしてPC-9801FAでバイナリエディタを使って手入力w ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.1 2024/04/28 Walang Kapalit ★ | Donguri System Team 5ちゃんねる