懐かしのMS-DOSプログラミング [sc](★0)
-
- 1
- 2010/04/21(水) 12:42:23
-
mov dx,offset msg
mov ah,9
int 21h
mov ax,4c00h
int 21h
msg db '懐かしのDOS時代のプログラミングについて語ろうぜ',0dh,0ah,'$'
-
- 715
- 2014/01/17(金) 22:37:20.28
-
nop
-
- 716
- 2014/01/17(金) 23:14:49.64
-
in/outのお供でnopは結構使ったかな
途中からjmp short $+2になって、
その次はなにやらどっかのI/O portにダミー出力してた記憶が
-
- 717
- 2014/01/17(金) 23:24:40.81
-
fwait
-
- 718
- 2014/01/17(金) 23:56:52.49
-
masmは全部の8087命令の前にfwaitを勝手につけてたけど、
いつの間にか付かなくなったな。いつからだろう。
-
- 719
- 2014/01/18(土) 00:44:22.67
-
マルチプロセス?
-
- 720
- 2014/01/18(土) 14:33:09.85
-
>>714
bound使うとプリンターからハードコピーが
-
- 721
- 2014/01/18(土) 14:54:46.93
-
>>714
boundはwin9xで大活躍してるぞ
-
- 722
- 2014/01/18(土) 16:46:11.76
-
64bit modeでは廃止になってるしなぁ
-
- 723
- 2014/01/24(金) 14:42:37.62
-
fwaitは .8086指定で付く
8087はCPUから独立して直接バスとつながってた文字通りのコプロセッサだった
最近のMASMは .386がミニマムでデフォルトだからダメだな
-
- 724
- 2014/01/24(金) 14:47:29.87
-
そういえば8086は微妙に動作が違ってたよね
cxがゼロのとき、loop や rep は 0xffff回ループしてたし
-
- 725
- 2014/01/24(金) 15:31:15.89
-
>cxがゼロのとき、loop や rep は 0xffff回ループしてたし
CXが0のときと65535のときでループ回数が同じ? んなわけないと思うがなあ。
-
- 726
- 2014/01/24(金) 15:43:27.70
-
ああごめん、0x1000回だな
-
- 727
- 2014/01/24(金) 15:44:02.89
-
もいっこたりない、0x10000だ
-
- 728
- 2014/01/29(水) 14:34:19.53
-
DOS時代はCPUの差し替えとかやりまくってたなぁ
CPUの判定はこんな感じだったっけ?
8086 push sp; pop ax; sp != ax
186 flags bit 15 == 1
286 MSW 4-15 bit == all 1
386 eflags bit 18 が書き換え不可
486 eflags bit 21 が書き換え不可
cpuid世代 eflags bit 21 が書き換え可能
-
- 729
- 2014/01/29(水) 22:31:03.43
-
9801スーパーテクニックに詳しい判別法が載ってたね。
8086と186はpop csで見分けてたような。
-
- 730
- 2014/01/30(木) 06:47:47.58
-
>>728
>8086 push sp; pop ax; sp != ax
!!!!なんでだ?
-
- 731
- 2014/01/30(木) 10:04:10.04
-
sp+=2される前にスタックに入れられるかされた後に入れられるかの違い
-
- 732
- 2014/01/30(木) 12:15:55.19
-
なんで sp+=2 されるんだ
-
- 733
- 2014/01/30(木) 12:53:09.11
-
popの動作も sp <- [sp], sp += 2だから
push sp, pop spをペアで使えば大丈夫だ問題ない
-
- 734
- 2014/01/30(木) 13:08:37.74
-
ああ、push時は-2だったな
-
- 735
- 2014/01/31(金) 12:48:51.64
-
CPUID以前の互換CPUの見分け方は何かありましたっけ?
AMDとかCYLIXとか
-
- 736
- 2014/02/15(土) 04:35:50.10
-
>8086 push sp; pop ax; sp != ax
これって万が一、同じ数値がスタックに入っていたって事は無いの?
-
- 737
- 2014/02/15(土) 05:03:36.87
-
>>736
何言ってんの??
-
- 738
- 2014/02/15(土) 10:49:42.54
-
SP「俺の名前を言ってみろ」
-
- 739
- 片山博文MZ無能
- 2014/02/15(土) 12:37:34.24
-
スペシャルスタックポインタ
-
- 740
- 2014/02/15(土) 17:45:09.43
-
すっぽん
-
- 741
- 2014/02/15(土) 21:39:33.80
-
DOS用のForthおしえて
-
- 742
- 2014/02/15(土) 22:09:41.69
-
http://www.forth.org/compilers.html
-
- 743
- 2014/02/16(日) 23:18:39.26
-
Delphi始めたんですけど、複雑でわからないんで、Quickbasicに戻りたいんですけど、
もうないんですかねぇ。
-
- 744
- 2014/02/17(月) 00:08:16.64
-
Win32で動く互換品でよければ、
QB64(32bit版もある)でいいんとちゃう
-
- 746
- 2014/02/21(金) 13:00:41.98
-
Cコンパイラを初めて使ったとき、その吐き出したコードの大きさに驚いた。
Hello, worldが2kBくらいになって出てきたから。
アセンブラなら
mov dx,label
mov ah,9
int 21h
ret
label:
db 'hello, world.',13,10,'$'
たった24バイトで作れるのに。
当時まだFDD2台だったが、こりゃHDDが必要だなと感じたよ。
-
- 747
- 2014/02/21(金) 22:00:15.53
-
スモールモデル: コード64kB データ64kB
(8bit環境から見ると)全然スモールじゃないやん・・・
-
- 748
- 2014/02/21(金) 22:12:43.44
-
8080でもコードとデータでそれぞれ64KBのメモリ空間持てるし大したことではない
-
- 749
- ◆QZaw55cn4c
- 2014/02/22(土) 04:01:12.27
-
>>747
お前タイニーモデルをしらんのか?
-
- 750
- ◆QZaw55cn4c
- 2014/02/22(土) 04:02:12.01
-
>>748
8080 はコード・データ他スタックもみな共用での 64KB だ
-
- 751
- 2014/02/22(土) 04:37:55.46
-
>>750
外から区別できるの知らんのねw
-
- 752
- ◆QZaw55cn4c
- 2014/02/22(土) 09:12:33.72
-
>>751
8080にMMUのようなものは内蔵されていないからね
IOポート番号を16bit とれるようになったは Z80 からだね
-
- 753
- 2014/02/22(土) 11:09:45.41
-
スモールにしろタイニーにしろ
それを超える範囲のメモリにアクセス出来ない訳じゃない
単にセグメントディスクリプタのデフォを適当に初期化してくれるだけ
-
- 754
- 2014/02/22(土) 11:38:39.71
-
>>752
SYNC信号がHIGHのタイミングでデータバスを見れば、コード/データ等外部で判別可能。
http://www.classiccmp.org/dunfield/r/8080.pdf
http://en.wikipedia.org/wiki/Intel_8080
-
- 755
- ◆QZaw55cn4c
- 2014/02/22(土) 14:56:22.30
-
>>754
それでどうやって >>748 のコードセグメントとデータセグメントをそれぞれ別に64KB確保できるようになるのか?
-
- 756
- 2014/02/22(土) 15:28:13.23
-
スタックセグメントもデータセグメントとは別に64KB確保できるな
-
- 757
- 2014/02/22(土) 16:03:56.04
-
8080にセグメントの概念などない
-
- 758
- 2014/02/22(土) 16:12:48.73
-
アクセスの種別によってメモリ空間を分けることは可能だし、それをセグメントと呼んでも差し支えない。
-
- 759
- 2014/02/22(土) 16:15:27.07
-
後期のZ80 BASICマシンのメモリレイアウトなんて
ほとんど曲芸状態だったよな
-
- 760
- 2014/02/22(土) 16:19:07.68
-
いや全然
-
- 761
- 2014/02/22(土) 16:27:34.62
-
>>758
理屈じゃなく過去の具体的な実装事例は?
-
- 762
- 2014/02/22(土) 16:32:17.51
-
>過去の具体的な実装事例は?
そんな話誰もしてないだろ
-
- 763
- 2014/02/22(土) 16:57:12.73
-
Z80で64kbite BASIC-ROM、64kbite RAM、64kbite VRAMなパソコンだと
コードとデータの分離や切り替えが効かないとはじまらんだろ
-
- 764
- 2014/02/22(土) 16:57:14.65
-
データバスをチェックとかわけわからんがな、all 0 だったらどうするつもり?
>アクセスの種別によってメモリ空間を分けることは可能だし、
おいおい、データがきてからアドレスバスを変えるのかよ?なんのためにあんだけのマージンとってんだ?
-
- 765
- 2014/02/22(土) 16:59:18.33
-
>データバスをチェックとかわけわからんがな、all 0 だったらどうするつもり?
>おいおい、データがきてからアドレスバスを変えるのかよ?なんのためにあんだけのマージンとってんだ?
なんだ、タイミングチャートも見れない素人かw
-
- 766
- 2014/02/22(土) 17:03:51.14
-
>>763
>Z80で64kbite BASIC-ROM、64kbite RAM、64kbite VRAMなパソコンだと
>コードとデータの分離や切り替えが効かないとはじまらんだろ
バンク切り替えやI/OにVRAM置いたり色々実装はあったが、コードとデータの分離をやった例って聞いたことないわ。
Z80は命令も多いし外部回路でM1サイクル監視するにしてもコードの4バイト目まで判定するのは骨だろう。
このページを共有する