TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼
[RPA]PC自動化技術総合スレ[効率化] Part.9
スレ立てるまでもない質問はここで 149匹目
プログラム板へのID導入の投票実施中 月曜0:00まで
【Java標準GUIライブラリ】 JavaFX スレッド
関数型プログラミング言語Haskell Part33
逆コンパイラCodeReverseを作る
C#で仕事ある?
ふらっと C#,C♯,C#(初心者用) Part145
P2P型の完全匿名掲示板はまだ出来ないの?その5
Objective-C [ObjC part:9];

懐かしのMS-DOSプログラミング ver.2


1 :2014/05/15 〜 最終レス :2020/01/05
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.sc/test/read.cgi/tech/1271821343/

2 :
LSI C-86試食版 Ver.3.30c
http://www.lsi-j.co.jp/freesoft/
ぜひとも手にしておきたいDOS用国産フリーCコンパイラ

3 :
echo テスト > tes.com
tes
# 「テ」一文字だけでいいんだけどね

4 :
push ffffh
push 0
retf

5 :
DOSのエミュレータを使えば、いろんな環境でDOSとまったく同じように使えます。

6 :
>>2
スモールモデルしか対応していないのが残念なんだが

7 :
int 21hとか直接書いてたのっていつ頃なんだ?

8 :
ふつー CALL 5

9 :
DOSでアセンブラ使ってたら今でも使うだろ。

10 :
>>6
あくまで試食版だからね。

11 :
>1000 デフォルトの名無しさん [sage] 2014/05/18(日) 23:04:42.60 ID:rUyw0YMJ Be:
> Windows 8.1でもdosソフトウェアは、うごきますか?
DOXBOX おすすめ

12 :
あれ
打ちまちがえた
x DOXBOX
o DOSBOX

13 :
>>8
DOSでそれを使う奴はただのアホ

14 :
_finfo STRUC
_dmy DB 21 DUP(?)
_attr DB ?
_time DW ?
_date DW ?
_sizeL DW ?
_sizeH DW ?
_name DB 13 DUP(?)
_finfo ENDS

.DATA
MSG DB ">>9 今のMASM32てCみたいじゃないですか",0DH,0AH,'$'
SEARCHNAME DB '*.*',00H
.CODE
L1:MOV DX,OFFSET finfo
MOV AH,1AH
INT 21H
MOV DX,OFFSET SEARCHNAME
MOV CX,A_READONLY+A_HIDDEN+A_SYSTEM+A_ARCHIVE
MOV AH,4EH
INT 21H

15 :
MOV DX,OFFSET finfo._name
MOV CX,20H
MOV AX,4301H
INT 21H
DELETE
MOV CX,A_READONLY+A_HIDDEN+A_SYSTEM+A_ARCHIVE
MOV AH,4FH
INT 21H
CMP AX,12H
JE TMN0
LOOP L1

TMN0 PROC NEAR
MOV DX,OFFSET MES
MOV AH,09H
INT 21H
MOV AX,4C00H
INT 21H

16 :
MOV DX,OFFSET finfo._name
MOV CX,20H
MOV AX,4301H
INT 21H
DELETE
MOV CX,A_READONLY+A_HIDDEN+A_SYSTEM+A_ARCHIVE
MOV AH,4FH
INT 21H
CMP AX,12H
JE TMN0
LOOP L1

TMN0 PROC NEAR
MOV DX,OFFSET MSG;こっちだったわ。つい手癖で。。いつもMESと
MOV AH,09H
INT 21H
MOV AX,4C00H
INT 21H

17 :
>>6
でもfarが使えるから大きなデータは外へ出しちゃえばかなりのことができる。
ご丁寧にfar文字列処理関数も入ってる。

18 :
Turbo Cがタダで使えるのに LSIC86 試食版を今更使う理由が分からん

19 :
>>13
CP/M 対応も考慮したプログラム作法が理解できんとは

20 :
CP/M86なんて使ってたやついたのかね。
call 5なんて、知識レベルでの互換性の意味しかないだろ…。

21 :
四半世紀前に、バイト先の別働隊が
コンカレントCP/MとかC-DOSの案件
やってたのを思い出した。

22 :
>>17
コードセグメントが near ポインタのみの64KBというのは、ちと狭すぎやしないか‥

23 :
>>18
フリーの MS-DOS 用 C コンパイラってあるの?

24 :
>>23
Turbo C
GCC(要djgpp)
他にもあるやろ

25 :
>>20
そゆこと
DOSでcall 5を使うのは「俺はお前らと違ってCP/Mから知ってんだぞドヤァ」の意味にしかならない

26 :
>>19
そこで自分から“CP/M”を口にしてしまうようでは、煽り師失格だな

27 :
>>24
turbo c ってフリーなの?
でもオープンソースじゃないよね
gcc(djgpp) は i386 以上を要求するしね

28 :
>>27
オープンソースでi386未満がターゲットのコンパイラが欲しかったの?
条件後出し乙。
その条件だと心当たり無いわ。
役立たずで申し訳ない。

29 :
>>27
small-cでも使ってれ
http://www.cpm.z80.de/small_c.html

30 :
パソ通全盛期の80年代末、フリーウェアはほとんどがTurbo Cで書かれてたね。
俺はQuick Cへ行ったけど。

31 :
そうか?
アセンブラも多かった気がするよ。
そんな俺は、TurboPascalをasm文だけ使って構造化アセンブラとして駆使してた。

32 :
TurboPascalってasm文をテンポラリファイルに書き出して子プロセスでtasm呼び出してたし、
asm文しか使わんなら素直にtasm直に使ったほうが便利だろ。

33 :
いや、tasmいらんよ、アセンブラを内蔵してる。
tasmとか呼び出すのはとろくさいC系だろ。

34 :
OpenWatcomのことを思い出してあげてください・・・

35 :
>>27, >>28
Open Watcom C/C++ はどう?
DOSエクステンダ不要なバイナリーも
作れたハズ

36 :
リロってなかった。スマソ

37 :
Turbo Cはコンパイルも速いし、吐き出したコードもMS-Cより2〜3割速かった

38 :
Open Watcomはインラインアセンブラ周りでいろいろ罠があって勧めにくい

39 :
QuickCって学習用と謳っておきながら
ラージどころかヒュージモデルのライブラリまで入ってたね。
実際にQCでそんな巨大なアプリ書く奴いたのだろうか・・・

40 :
そらゲームとかの素材置きまくったらあっという間ですわ

41 :
ヒュージポインタはいまいち信頼出来ないと思っていた‥‥
セグメント-オフセット処理は自分でなんとかしないといけないと思うよ‥‥
というか、やっぱり 64KB 以上のオブジェクトをそのまま使おうと思っちゃいけない、自分で完全管理するしかないと
というわけで、LSI-C にラージモデル(だけでいいのでそ)のサポートがほしかった
>>38
自分で探すべきなんだろうけれども、たとえばどんなところが罠なんですか?

42 :
>>41
Open WatcomのBugzillaでinlineとかをキーワードで検索するといろいろと
何年も放置された未修正のバグの山が出てくる

43 :
鯖移転完了age

44 :
LSIC-80 今でも使ってますよ。XPまではDOS窓で動いたのに、7になったら
動かなくなって、仮想マシンとか調べたら対象のOSをインストールしなければ
いけないのね。困ってたらnetでmsdos.exe見つけ、それ経由で使えてラッキー。
8085+82XXの基板がまだあって、去年は\3万の仕事を2件やりました(w
DOSでCW、エコロジーとか使ってた頃が懐かしい(w

45 :
CWはemm386.exeと相性悪くロックしたりした。

46 :
REDもそうかな? CWとほとんど同じ使い勝手だったのは覚えてるけど。

47 :
初期の仮想EMSドライバは各社癖があったよな

48 :
MELEMM.386 が一番使いやすかったな。

49 :
ああ俺もだな。
メルコの4MB-EMSボード使っていたからというのもあるけど

50 :
細かな指定ができるのはメルウェアが一番だったな。
ディスクキャッシュは糞だったけど。

51 :
ダメルコのディスクキャッシュソフトで何枚FDが死んだ事か…。

52 :
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。

アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。

                  京都大学霊長類研究所

53 :
>>52にもなってから書くネタかよ、低学歴田舎爺が

54 :
MSDN垢持ってるひとは今でもMS-DOS6.22が手に入る。6.2/Vも。
16bitコンパイラはあったかな。
Visual C++1.52cのリンカーってDOSのEXE吐けたっけ?

55 :
そういえば今年はIBM-PC/AT誕生30年

56 :
吐けるよ。win3.1用exeもdllもvbxも
quick win用exeもスタティックlibも
P-codeもcomも。

57 :
RAMDiskで768KBぐらい使って、そこに中間ファイルのパス張っておくと
コンパイルが速いってのをやったなあ。5インチ縦置き20MBのディスクの頃。

58 :
TurboPASCALはコンパイル速かったなあ
ディスクキャッシュ上でコンパイルして実行。フロッピーへは遅延書き込み

59 :
パスカルはワンパスでコンパイルできる言語仕様だからな。
ヘッダも分離してないし、当時のマシンスペックには最適の高級言語だった。
関係ないが、アップルのSwiftがちょっとパスカル臭がしてうれしい。

60 :
Turbo Cも1パスで高速、安価、吐き出したコードもMS-Cより高速と
いいところずくめだった。日曜プログラマは一斉にTCへ流れた感じがある。
特にMSAが98用に移植した1.5が大ヒットしたね。

61 :
プリプロセッサがあったり前方参照が可能なCが1パスでコンパイルできるわけない

62 :
ところが、BorlandのCはプリプロセッサも含めて1パス
#if中でsizeofあたりも使えたんだぜ
最近clang化したせいでできなくなった

63 :
ああ、1パスの意味が分からん人か。

64 :
理解不足で速いと言いたいだけだろとも思ったけど、clang化でできなくなったというからには何か構造的なレベルでこ違いを感じてるのかなあ
つか#if内でsizeofって逆にパス増やしてない?それともプリプロセッサ内でも自然に扱えるように独自実装積み上げてたのかな

65 :
たーCは無駄なコード吐いてたな(Pコード形式?)

66 :
Cはどれも似たり寄ったりだけど、ターボアセンブラは至宝!

67 :
QuickCのコンパイル速度だけは感動した気がする

68 :
>>62
> #if中でsizeofあたりも使えたんだぜ
#if sizeof(int)==4
typedef int int32;
#elif sizeof(long)==4
typedef long int32;
#endif
とかやれても limits.h あるし意味ないよなあ、移植性失うし。どういう便利な使い方あんの?

69 :
>>61
pascal にも前方参照あるし、前方参照は call 命令だけ吐いといてあとからオペランド埋めればいいだけだよ

70 :
>>69
> pascal にも前方参照あるし、
本質的にできないからforwardなんてのが後からUCSDに追加されたりしたんだけど。

71 :
>>70
それがどうかしたのか?
前方参照できるのは事実だろ。

72 :
ん?
横レス
本質的にできない、ってワンパスでは、ってことではないのかな。実際ワンパスで実現する方法はないよね
いや、まああえて言えばシンボル保存した上での実行時の遅延評価までやるのなら可能だろうけど。
cでそんなことやるにはobj-cみたいにランタイム用意しなきゃ無理だろ

73 :
機械語レベルの前方参照なら>>69の言う通り、何も難しい事は無いし
ソースレベルの前方参照は、C言語はそもそも不可能だろ、普通forward宣言が必要なのを前方参照とは言わんしな
(C++でクラス内ではまだソースコードに出現してないメンバ変数名を使えたりするようなのがそれ)
>>64 ひとつのコンパイラがプリプロセスから構文解析、意味解析をトークンごとに一気に行ってるからできるわけでパスは増えてないよ
ていうかこれが1パスでないなら1パスって何なんだ

74 :
>>73
> ソースレベルの前方参照は、C言語はそもそも不可能だろ、普通forward宣言が必要なのを前方参照とは言わんしな
ごめん、意味がわからない
> (C++でクラス内ではまだソースコードに出現してないメンバ変数名を使えたりするようなのがそれ)
そんなことできないし

75 :
話にならんな
class t {
 int f(){
  return m; //この時点でmを参照できる
 }
 int m;
};
こういう風にまだ出てきてない宣言を使えるのが前方参照で、これは1パスでは無理
CやPascalみたいにプロトタイプやforward宣言が必須なものは、その情報だけで呼び出し側の生成には充分だからこそ必須になってる訳で1パスで可能

76 :
バブル絶頂の80年代末、パソ通が黎明期から普及期へと移り変わった頃
Vz + TCCは俺の青春って人は多いだろうね

77 :
>>76
ちょっとおそい90年代前半だが、それでも Vz + lsic が青春でした‥

78 :
EZ→TunedEZ→NITemacsだったかな。
VZは仕事で使ってたか。

79 :
VZを常駐させるようになって、いままで多数使用していたフリーソフトを整理できたからな。

80 :
FDか

81 :
fdとki-shell 手放せなかったな

82 :
FDのひと死んじゃったんだよね南無南無

83 :
【FD,MIEL,WTERM作者】出射 厚氏にお礼を言うスレ
http://hello.2ch.sc/test/read.cgi/i4004/1128860398/

84 :
各自がシステムのフロッピーとデータ用フロッピー持って、共同パソコンを一々
立ち上げてはエディット・コンパイルとかやってたな。システムは左側。
HDD内蔵のパソコンが出た時は、フロッピースロットが1つしかない!って慌てたわ。

85 :
システム用フロッピーには書込み防止シールを貼る

86 :
8inchだと角を切るだっけ?

87 :
フロッピースロットが1つでも何とかなってたような記憶が
なんかフロッピー入れ替えてた覚えがある

88 :
MS5550は3FDDでシステム&プログラム&データ

89 :
おれが大学当時、大学の授業のために5インチフロッピーが必要ってのがあった。
生協で買ったよ。1枚700円ぐらいしてた。

90 :
>>85
書込み防止したまま書込みをすると警告と再試行、中止、無視の
指示要求が出る
その状態でフロッピーを入れ換えて再試行をするとDOSは入れ替え前の
状態から書き込むのでフロッピーの中身が大変なことになる

91 :
int 1bh

92 :
>>90
PC-9801で最初にHDDを内蔵したやつでは、普段の使い方で同様に
「さっきまでのディスクのディレクトリを上書き」が発生するという酷いバグが

93 :
受信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]にして自然ラップアラウンド、添え字計算時の
アドレス演算がワード演算されないように最適化させてます。

94 :
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バイトもいるのかまず検討すべき。

95 :
わを!4行でできるのか(*o*) ptrの頭はゼロのまま・・・あ!違うか初期化で
先頭+00にしとくのですね。今度使ってみます。ありがとう!!
ringは32と64で周回遅れが出たことがありますが、
主な理由は++した後マスク演算が要らないからです。
4CHあって、各受信256送信512、実装8KBの半分近くがringです(w
再構成するフレームがせいぜい80byte5種類位なのでこれでも余裕です。
最初に書いたときは受信バイト数を持って、書き込みで++読み出しで--、
片方は割込みだからタスク側で DI/EI してとかややこしい事書いてました。
自分では簡潔になったと思ってましたが、診て貰ってよかったです(m_ _m)

96 :
>>93 の部分は確かに上の最適化可能ですが、システム全体の性能はどっこい
なことが判りました。メインループで「そのCHに受信データがあるか?」の判定
のところで、rptrとwptrを並べて配置してあることを利用して、
    LHLD rptr  ;wptrとrptr両方
    MOV  A,H
    XRA  L
    CNZ  そのCHの受信フレーム再構成処理   と最適化してます。
こっちでメモリアクセスが1行増えるから、全体の性能はどっこいなのでした。
80C85のデータシート見たら、機械語の説明表でステート数とサイクル数
という欄があるのですが、これらはどう見ればいいのですか?

97 :
ここで答え書いてもらうより
ステートとかで検索してみれば

98 :
一般用語から類推すると、ステート数=CPUクロック数 だと思えますが、
サイクル数ってのがステートより少し小さい数字で出ていて、こちらが何の事か
想像できないんです。どちらの数字に1/原CLKを掛けたものが実行時間とか。

99 :
メーカーさんのサイトでも覗いてみれば
もしくは電凸?答えられる人いるかな
うろ覚えだからな、ヘタにかけないし

100 :
当時はステート数で実行時間を計算してたよ
DMAがどうとかウェイトサイクルがどうとか、そんな話だった気がする


100〜のスレッドの続きを読む
【COBOLから】バッチ処理【Javaまで】
Java入門・初心者質問スレ Part.7
TopCoder
クラスとかインスタンスってなんのためにあんの?
C++/TemplateMetaProgramming
今までに見たソースコードで一番感動したのは deux
プログラミング言語 Scala 11冊目
【超高速】C/C++に代わる低級言語を開発したい 8
Excel VBA 質問スレ Part55
攻守最強のプログラミング言語は?
--------------------
sasha@womb
【再結成】NUMBER GIRL 15
fubスレ Ver.7
【まよんぬ】森田真結子【DOP】 Part.59
どこに行っても嫌われる喪女いる?いたら集合46
【パヨク悲報】東大新入生アンケート、自民党が圧倒的支持を集める Part2
メトロンブログを語るスレ▼▼2
☆ ☆  1941  ☆ ★
【アラフォー アラフィフ専用】pairs part6
東北のみやげ・特産品
韓国「韓国人と中国人を一目で見分ける方法、知ってますか?」
【兵庫】今までマスクとは縁もゆかりもなかった店がマスク販売「転売じゃないです。中国からの輸入品。え?仕入れ値ですか。はは…」 [富豪立て子★]
狼ポケモンGOスレ 209匹目
【園田競馬】三宅きみひと【ウンコ実況】 Part.3
井澤秋乃
Socket AM3/AM3+マザー総合 Part11
【バーチャル】hololiveアンチスレ#3720【youtuber】
【浅草】純レバ丼を語れ【亀戸】
青山学院原監督「箱根は全国大会にすべき」
世界の切手コレクション
TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼