懐かしの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/ 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(ピクセル)。 ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる