forked from AZO234/NP2kai
-
Notifications
You must be signed in to change notification settings - Fork 0
/
update.txt
executable file
·784 lines (594 loc) · 32.5 KB
/
update.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
// ---- info
TRACE版(i286_step())で シングルステップ割り込みが割り込み続けるとか
mov SS直後に割り込みが発生するとか不都合があります。
これについては、直す気力があれば(286コードを追っかける時だけだし…)
CHARSET_OEMについて
要は毎回Shift-JISに変換せずに OS依存の文字コードで処理しようとする…
まだ機能しません。定義しないで下さい。
OEMCHAR (現状char固定、将来として UCS2でUINT16、UCS4でUINT32)
OEMTEXTの追加
コンパイルが通るかご確認下さい。
ステップ.1 (WinCE,X11)
OEMコードと SJIS(EMBED/hostdrv)の変換調整
(FONTMNGは SJISのままで EMBEDで変換)
つか…X11版のDOSIO file_catname,file_cmpnameの入力が sjisになってる…
(NP2はファイル名は OSLANGに従う…筈…
と思ったら hostdrvで SJISのまま食わせてる?(汗
EUCの2バイトコード判定が (((c - 0xa1) & 0xff) < 0x5d)で
半角カナ(0x8e)の判定で狂う
(c & 0x80)のほうが良い?
現状の…
・codecnv.hのインクルードは compiler.hに移動
・#if defined(OSLANG_EUC)
codecnv_sjis2euc(tmp, NELEMENTS(tmp), src, (UINT)-1);
file_catname(path, tmp, NELEMENTS(path));
#elif defined(OSLANG_UTF8)
oemtext_sjis2oem(tmp, NELEMENTS(tmp), src, (UINT)-1);
file_catname(path, tmp, NELEMENTS(path));
#else
file_catname(path, src, NELEMENTS(path));
#endif
を
#define oemtext_sjis2oem codecnv_sjis2euc
#define oemtext_oemsjis2 codecnv_euc2sjis
としておいて
#if defined(OSLANG_ANK) || defined(OSLANG_SJIS)
file_catname(path, src, NELEMENTS(path));
#else
oemtext_sjis2oem(tmp, NELEMENTS(tmp), src, (UINT)-1);
file_catname(path, tmp, NELEMENTS(path));
#endif
とする?
メモ: http://euc.jp/i18n/charcode.ja.html
ステップ.2 (WinNT,MacOSX)
OEMCHARのUCS2対応
ステップ.3 (MacOSX)
ANSI PageCodeと Macintosh PageCodeの調整
メモ: http://homepage1.nifty.com/nomenclator/unicode/normalization.htm
ステップ.4 (WinNT,WinCE,MacOSX,X11)
フォント関数回りを SJISからOEMコードに移行
// ----
ver0.84 → ver0.85
(X11)
・環境によってサウンドの設定を変更した後にリセットするとプログラムが
クラッシュする不具合を修正
・SDL 2.0 サポート追加
configure では SDL 2.0 → SDL 1.2 の順番でライブラリを検索するので
SDL 1.2 を明示的に使用したい場合には configure のオプションに
--disable-sdl2 を指定する必要がある
・SDL audio のバックエンドとして PulseAudio を使用している場合に音が正常に
鳴らない不具合を修正
・USB 接続外部 FM 音源サポート追加。C86BOX を使用するには libusb 1.0 が必要
SPFM Light + RE:birth RE1-YM2608、C86BOX + PC-9801-86 で動作確認済み
// ----
ver0.83 → ver0.84
・i386c - 色々と変更
・i386c - rcl, rcr 命令の不具合を修正
・i386c - 命令実行中に例外が発生した際にスタックポインタがずれてしまう不具合
を修正
・i386c - 割込みゲート、トラップゲートで不正なエラーコードが設定されてしまう
不具合を修正
・i386c - セグメント有効範囲チェックの不具合を修正
・i386c - enter, leave, call, pusha, popa 命令でリアルモード時でもスタック
サイズチェックで例外が発生してしまう不具合を修正
・i386c - セグメントレジスタ設定時の不具合を修正
・i386c - タスクゲート処理時のエラーコードプッシュ処理の不具合を修正
・i386c - iret 命令で仮想86モードに復帰する際にスタック上の値によっては例外が
発生してしまう不具合を修正
・i386c - ゲートを通じて別コードセグメント移行時に使用するオペランドサイズに
ゲートタイプではなくスタックセグメントを使用していた不具合を修正
・BIOS - 1F90h A20有効後に戻していない不具合を修正
・BIOS - 1Bh メモリアクセスを修正
(Win32)
・NASM 2.09を使用するように修正
・UNICODE版(np2nt.exe) で hostdrv が利用できないバグを修正
・G.I.M.I.C、C86BOX、RE:birth に対応
(X11)
・STATSAVE 用のメニューを作成
・レジューム/STATSAVE のファイル名を変更
- レジューム: ${HOME}/.np2/sav/sav → ${HOME}/.np2/sav/np2.sav
- STATSAVE : ${HOME}/.np2/sav/s00 → ${HOME}/.np2/sav/np2.s00
・フォントパスに設定ファイル名が含まれてしまう不具合を修正
・エミュレーションウィンドウサイズ変更用のメニューを作成
・GLIB, GTK+ の deprecated なインタフェースを使用しない様に修正
・CPU 使用率を軽減する様に修正
・コンフィグ画面からサウンドドライバを変更出切る様に修正
・環境によってサウンドを有効にした場合にプログラムがクラッシュする
不具合を修正
・ビルド、インストールに Autotools(configure) を使用するように修正
・ファイル保存時に既に同名ファイルが存在した場合、上書き確認ダイアログを
表示するように修正 (GTK+-2.8 以降のみ有効)
・F12 キー機能割り当てに Help キーを追加
・ファイルダイアログの floppy disk image Files にて拡張子が flp のファイル
を表示する様に修正
・Screen Option の LCD のチェックを外しても外れない不具合を修正
・FDD シーク音が鳴らない不具合を修正
・色深度が 8bpp の場合に配列の範囲外にアクセスしていた不具合を修正
・F11 キーにフルスクリーン表示切り替え、フルスクリーン時のメニュー表示
切り替え機能を割り当て
(MacOSX)
・新規対応
(iOS)
・新規対応
// ----
ver0.82 → ver0.83
(X11)
・ファイルダイアログにて拡張子が大文字のディスク・イメージを認識する様に修正
・ファイルダイアログの IDE disk image Files にて拡張子が .hdi .tfd の
ファイルを表示する様に修正
// ----
ver0.81a → ver0.82
・MPU-PC98II - モード切替時のMIDIリセットを修正
・VERMOUTH - ver1.15版に差し替え
(Win9x)
・モジュール判定不具合修正
(X11)
・PC9801-26K の I/O ポートが設定できなかった不具合を修正
・フルスクリーンモードサポート
・F11 キーに機能割り当て
- フルスクリーンモードトグル
- フルスクリーン時のメニュー表示トグル
// ----
ver0.81 → ver0.81a
・80286 (ARM版) - 割り込みハンドラを修正
・MOUSE - ボタンフラグの修正
・PIT - シリアルカウンタの修正
・HOSTDRV - 拡張子を消去する不都合を修正 (ver0.81エンバグ)
・BIOS - FDCスイッチ/シグナルの修正
ver0.80 → ver0.81
・80286 (x86版) - rep ins, 2バイトmov8命令の不都合修正
・80286 (x86版) - クロック修正 (enter)
・80286 (C版) - クロック修正 (cmp, jcc, test, enter)
・80286 (ARM版) - pop ss命令の修正
・80286 (ARM版) - クロック修正 (cmp, jcc, test, enter)
・80286 (C版) - rep outsw命令を修正
・MPU-PC98II - conductor修正
・MPU-PC98II - Request PC/Tempo コマンドの追加
・DMA - セルフイニシャライズを追加
・GDC - ソフトリセット時のフラグ修正
・GRCG - ソフトリセット時のフラグ修正
・PIT - シリアルカウンタの修正
・MOUSE - 割り込み修正
・ATRIC - 時間巻き戻りバグ修正
・SOUND - アドレスバスの修正
・WSS - データ転送サイズの修正
・BIOS - 1842h スクリーンモードを破壊する不都合修正 (ver0.75エンバグ)
・BIOS - CRTBIOSフラグ修正 (PC-9821モード)
・BIOS - FDDアクセス時にstatsaveを行なうと復帰できなくなる不都合修正
・一部(というか大部分…)のキーボードのmake/break関係を修正
・メモリを修正(C版コア)
・16MB以上のメモリをサポート(IA32)
・内部変更
たぶん
#define OEMTEXT(string) (string)
を
#define OEMTEXT(string) string
にする必要がある。
CPUフォルダの DMA EGC等がほぼ同様のコードなので memフォルダへ移動し
共通にしました。
embedのShift-JISを ネイティブコードにしました。
文字コードがEUCの環境では SUPPORT_SJISは不要になります。
また、fontmng_getsize, fontmng_getdrawsizeの引き数の文字コードが
SJISからEUCへ変更になっています。
codecnvとucscnvを /codecnv へ移動しました。
pccore.cとかにあるデバグコードがウザイので trapフォルダへ移動。
ENABLE_TRAPが定義されてなければ見る必要はありません。
// ----
ver0.79 → ver0.80
・BIOS - スクロールコマンド修正
・BIOS - システムポートの修正(i286/V30ではほぼ無意味)
・GDC - ステップフラグの反映
・FDC - レディ信号を修正
・i286x - div命令 (i286モード側)
・i286c - div命令 (V30モード側)
(X11)
・ジョイスティックサポート
サウンドドライバに SDL を使用している時にのみ使用可
・screen depth == 24bpp の時にキーディスプレイ、ソフトウェアキーボードの
描画がおかしい不具合を修正
・T98-Next(.NHD)形式、Anex(.HDI)形式ハードディスクイメージ作成サポート
(MacOSX)
・日本語リソース追加
・ソフトウェアキーボードを有効にした
// ----
ver0.78 → ver0.79
・CGROM - JIS83罫線の不都合修正
・CGROM - 2バイト半角アクセス修正
・86PCM - バッファリングの不都合を修正
・BEEP - BEEP PCMの修正
・BIOS - 2Dタイプのシリンダ倍移動を修正
・BIOS - FDD割り込みフラグを修正
・AMD98 - レジスタリードの追加
・VRAM - スキップライン描画の修正
・BMPSave - スキップライン有効時のセーブ不都合を修正
(Win9x)
・ソフトウェアキーボードを有効にした
(MacOSX)
・カレンダーに対応
・内部変更
char *file_getext(const char *path);
char *file_getname(const char *path);
(constが付きます)
記念に gif保存に対応してみたり
vram/scrnbmp.c の代わりに vram/scrnsave.c をリンクして
SCRNSAVE ss = scrnsave_get();
scrnsave_writegif(ss, "out.gif", SCRNSAVE_AUTO);
scrnsave_trash(ss);
bmpなら scrnsave_writebmp(ss, "out.bmp", SCRNSAVE_AUTO);
np21のVGA時に 257色以上になるのに注意
(ss->type == SCRNSAVE_24BITの時にgif保存出来ません)
// ----
ver0.77 → ver0.78
・PIC - スレーヴのマスクの修正
・CGROM - JIS83罫線の不都合修正
・TEXTRAM - JIS83罫線の不都合修正
・86PCM - 割り込みステータスの修正
・BIOS - ブート時にメモリを完全に消去するようにした
※ RanceII対策、他のホットスタートで不都合が出るかも
・BIOS - 直線描画のアルゴリズム修正
・BIOS - 円の半径が異常だった不都合の修正
・BIOS - JIS83罫線の不都合修正
・LIO - 内部塗り潰し指定付きBOX描画の対応
・LIO - 半角ひらがなの対応
・LIO - 円の仮サポート
(X11)
・ソフトウェアキーボードサポート
・内部変更
追加ファイル
/lio/gcircle.c
// ----
ver0.76 → ver0.77
・BIOS - FDC BIOSの修正
・FDD - ディスクシーク音再生中にリセットを行なうと 以降ディスクアクセスが行なえなくなる不都合を修正。
(X11)
・i386 アーキテクチャ以外でコンパイルできない不具合を修正
// ----
ver0.74 → ver0.76 (branch...)
・DMA - バンク・アドレスマスクの修正
・PIC - スペシャルマスクモードの対応
・PIT - マルチプルラッチコマンドのサポート(uPD71054)
・CGROM - 2バイト半角の処理を修正
・CGWINDOW - ワードアクセスの挙動修正 (MacOS9/MacOSX/x11/SDL)
・MOUSE - uPD8255のコマンドレジスタの修正
・86PCM - 停止時にもかかわらずバッファを進めてしまう不都合を修正
・CS4231 - PIOサポート
・BIOS - ベクタ08/1A/1Fの修正
・BIOS - リセット時の挙動の修正
(Windows9x)
・ATマシンの場合に PageUp/PageDownを反転
・内部変更
基本的にファイルが存在しなければプロジェクトから除外、
リンクエラーが出たらgrepしてファイル追加
追加ファイル
/bios/bios1f.c
/bios/biosfd80.res
/cbus/ideio.h
/cbus/ideio.c (SUPPORT_IDEIO定義時)
/cbus/atapicmd.h
/cbus/atapicmd.c (SUPPORT_IDEIO定義時)
/cbus/idebios.res
/io/pcidev.h
/io/pcidev.c (SUPPORT_PC9821定義時)
削除ファイル
/bios/bios02.c
/bios/bios08.c
/bios/biosboot.res
/common/pf_key.tbl
/sound/wavemix.h
/sound/wavemix.c
/sound/rhythmg.c
/lio/gview.c
/lio/gcolor1.c
/lio/gcolor2.c
/lio/gcls.c
ROMIMAGEは MASMからNASMへ移行中でつ。
SUPPORT_IDEIOは定義しないで下さい(まだマトモに動きません)
IA32でもハードウェアEMSを有効にしてみるテスト。
// ----
ver0.74 → ver0.75
・GDC - ベクタの初期化し忘れを修正
・GDC - パターンの修正
・ITF/BIOS - リセット時の挙動の修正
・BIOS - 1842h モノクロフラグを修正
・EGCの高速化(?)
・リズムの修正(PCM 44khz 16bit monoralの制限を外した)
・LIOの修正
(Windows)
・(I286X) EGCバイトアクセス修正
・(I286X) ストリング命令修正
・フロッピードライブ接続状態指定
(MacOS9)
・フロッピードライブ接続状態指定
・MPU-PC98IIの設定ダイアログ
(WinCE)
・(I286A) メモリの修正
・GDC - GDCクロック 1.79MHzのサポート
(X11)
・Configure Dialog にてアーキテクチャの指定を追加
(MacOSX)
・フロッピードライブ接続状態指定(FDD1、FDD2のみ)
・設定ダイアログのディップスイッチ画像表示
・CoreMID経由のMIDI演奏に対応
・MPU-PC98IIの設定ダイアログ拡充
・Key Display対応(マウスクリックでFMとMIDIが切り替わります)
・200ラインモードについて (正式サポート / #define SUPPORT_CRT15KHZ)
PC-9801シリーズ(FELLOW、PC-9821、ハイレゾ機を除く)に搭載されている
200ラインモードは設定ファイルのDIPswtchにて設定可能となります。
400ラインモード
DIPswtch=3e ?? ??
200ラインモード
DIPswtch=3f ?? ??
本機能は DIPSW1-1に相当する機能であり、PC-9801VM以降のマシンで
一般に言われている200ラインモードとは異なる機能です。
※PC-98シリーズの一般的な200ラインモードは、640x200を縦に2倍拡大し
400ラインモードで動作しています。
本機能は DIPSW1-1の切り替え機能を削除した FELLOW、PC-9821、ハイレゾ機の
BIOS.ROMを使用時には正常に動作致しません。
これを理由に、本機能は NP2上で設定スイッチを設けません。
また、レジューム動作時に DIPswtchの値を変更した場合、正常に
スクリーンモードを変更できなくなります。
(PC-98動作中にディップスイッチを変更した時と同じ状態になります。)
必ずリセットして下さい。
・キー設定について
bios.romとかと同じフォルダに key.txtというファイル名のテキストファイルを
作成して、キー設定を記入して下さい。
書式)
[keyname] = [key1] (key2) (key3)
[keyname] [TAB] [key1] (key2) (key3)
userkey[1-2] = [key1] (key2) (key3) ... (key15)
フルキー 0〜9 A〜Z - ^ \ @ [ ] ; : , . / _
STOP COPY ESC TAB BS RET SPC XFER NFER
INS DEL RLUP RLDN HMCL HELP
ファンク F1〜F10 VF1〜VF5
テンキー [0]〜[9] [-] [/] [*] [+] [=] [,] [.]
シフト SHIFT CAPS KANA GRPH CTRL
通常キーは3個、userkeyは15個の同時押し設定が可能です。
[=] キーは = で区切られてしまうので TABで区切るか [EQU]として下さい。
例:
W = UP (ダイアモンドキーをカーソルにしてみたり…)
S = LEFT
D = RIGHT
X = DOWN
[7] = [4] [8] (テンキー斜め同時押しにしてみたり…)
[9] = [6] [8]
[1] = [4] [2]
[3] = [6] [2]
userkey1 = CTRL XFER (CTRL+XFER FEP切り替え)
userkey2 = D O A Z (D+O+A+Z 同時押し)
・内部変更
win9x/unasmをgenericへ移動(+P6,FPU命令をサポート)
np2infoをgenericへ移動
エスケープ文字を !KEY から %KEY%へ変更
ex == NULLで OS指定の改行コードになる筈
(MacOSXは np2info.cppがそのまんま移動になるかと思われ
io/serial.*に存在した keystat系を /keystat.* へ移動
keystat.cをリンク、 keystat.hをインクルード
SUPPORT_WAVEMIX廃止
→ SUPPORT_SWSEEKSNDに変更
ハードウェアで対応してる場合には 一応 SUPPORT_HWSEEKSNDと定義して
くれると嬉すぃ
・keystat_initialize(keystat_reset)をコールして初期化すること…
// ----
ver0.73 → ver0.74
・I/OレベルでのSASIに対応(INT3/DMA#0/BIOS:d0000-d0fff)
・SCSI HDDに対応
・np2qn形式 HOSTDRVに対応
・拡張メモリの修正 (80286)
・VRAM - 通常ディスプレイ時にメモリを破壊するバグを修正
・GDC - GDCクロック 1.79MHzのサポート
・GDC - 走査周波数を可変にした
・GDC - マスクが左右反転していたのを修正
・GDC - テキスト処理を修正(uPD7220A? cmd:05)
・GDC - VECTEコマンド(R)を修正 (undocumented Tを追加)
・GDC - TEXTEコマンド(SL/T)を修正 (undocumented L/C/Rを追加)
・GDC - GRCG/EGC動作中の挙動を修正
・EGC - マスクフラグを修正
・FDC - DMAとステータスを修正
・SERIAL - キーボードステータスの修正
・uPD4990 - ホールド時の出力が不定になっていたのを修正
・RHYTHM - レジュームが反映されなかった不都合を修正
・ADPCM - サンプルリードがMSB/LSB逆転していたのを修正
・BIOS - ブート時にディップスイッチで指定した画面モードを反映
・BIOS - 1840h/1841h/1842h/1847hの結果をワークメモリへ反映するようにした
・BIOS - 1847h マスクを左右反転させていなかったのを修正
・BIOS - 1848h/1849h/184ahをサポート
・ITF - PC-9801VM/PC-286時に BEEPが初期化されない不都合を修正
・ITF - SSP終了時にハードウェアリセットをかけるように修正
・IDE - ディップスイッチ内容(SW2-6)を反映するように修正
(Windows)
・(I286X) sidt命令の修正
・(I286X) テキストRAMアクセスの修正
・(I286X) 割り込みの修正
・(I286X) EGCシフタを修正
・Aboutダイアログの修正
・ろみおとか…
(MacOS9)
・テンキーの [+] [/] の修正
・file_attr()で FILEATTR_READONLY を返すように…
(MacOSX)
・テンキーの [+] [/] の修正
・file_attr()で FILEATTR_READONLY を返すように…
・ツールウィンドウ修正
・FDIイメージ対応(仕事早いよー>ゆいさん)
・フルスクリーン修正(たぶん・・)
・マウスドラッグに対応(タコミス・汗)
・Userkeyについて
userkey1, userkey2は、cfgを書換えることによりキーを自由に変更することが
出来ます。
書式)
userkey1 = [key1] (key2) (key3)...
フルキー 0〜9 A〜Z - ^ \ @ [ ] ; : , . / _
STOP COPY ESC TAB BS RET SPC XFER NFER
INS DEL RLUP RLDN HMCL HELP
ファンク F1〜F10 VF1〜VF5
テンキー [0]〜[9] [-] [/] [*] [+] [=] [,] [.]
シフト SHIFT CAPS KANA GRPH CTRL
例:
userkey1 = CTRL XFER (CTRL+XFER FEP切り替え用)
userkey2 = D O A Z (D+O+A+Z 同時押し)
本機能は 簡易的な実装であり ver0.75で変更されます。
また、ver0.74ではシフト系は不整合が発生する可能性があります。
・内部変更
pccore.h の中で statsave.hをインクルード
→ #include <statsave.h> をトル
io/extmem を io/emsioに変更
(IA32は emsioは要らないが、NEC EMSバンク形式で必要になるかも)
np2cfg.hddfile[2] -> np2cfg.sasihdd[2]
void diskdrv_sethdd(REG8 drv, const char *fname);
drv = BIOSのデバイス番号
0x00〜0x01 SASI #0-1
0x20〜0x23 SCSI #0-3 (SUPPORT_SCSIを定義した時のみ)
bios/sxsibios.c はリンク必須
cbus/sasiio.c - SUPPORT_SCSIを定義した時にリンク
cbus/scsiio.c cbus/scsicmd.c - SUPPORT_SCSIを定義した時にリンク
IA32でハードウェアEMSを禁止しました。
→ #define CPU_SETEXTSIZE() init_mem() に変更 (済)
→ memory.cの EMM部分をトル (済)
→ cpumem extmem_size を CPU_EXTMEM, CPU_EXTMEMSIZEに変更(済)
→ protectmem_sizeをトル (済)
しかし emm386.exeが使えないから ハードウェアEMSを有効にした
ほーがいいかな? 辻褄は合いそうだし。
386以降に乗っかってる NEC EMSバンク方式だと あまりにアホだし。
dosio.hの FTYPEを common.hへ移動。
こそーり fdiを読めるよーにしてみたり。
フロッピードライブについて np2cfg.fddequipを見に行くようにしました
デフォルトで2基
np2cfg.fddequip = 0x03 (ドライブ1 = ビット0 〜 ドライブ4 = ビット3)
(実際に動作中の装備状態は fdc.equipで リセット時に更新されます)
必要によって main()で変える、cfgに書き出す等してください。
S98について SUPPORT_S98定義時のみリンクするようにしました。
(Win9x, MacOSX, x11(USE_GTK))
PC9861Kについて SUPPORT_PC9861K定義時のみリンクするようにしました。
(シリアル通信に対応していなければ無意味な機能です)
userkey
ini.cで profile_setkeys, profile_getkeysで np2cfg.userkeyを更新
キーボードのどこかにキーに キーコード 0x76,0x77を追加
メモ
実機で FDでVRAMクリアされるのは何故?
// ----
ver0.72 → ver0.73
・主にRISC向けの最適化、その2
・EPSON PCシリーズのアーキテクチャをサポート
・ARM版CPUコアのサポート
・CPU(I286C) … シングルステップ割り込みの修正
・CPU(I286C) … int3 / int imm8 / into クロック数を修正
・CPU(I286C) … shl r/m8,cl / shr r/m8,cl の修正
・CPU(I286C) … sar r/m (eVC3/eVC4コンパイラバグ回避)
・CPU(I286C/I286X/I286A) … グループ7とか…
・DMAC … インプットでアドレスとカウンタが逆なのを修正
・PIT … ビープカウンタを修正
・NP2SYSP … ポートを叩いた瞬間 フリーズするバグを修正
・CALENDAR … 時間をインクリメントしないバグの修正
・ITF … 拡張メモリ使用時にエミュレーション内部のメモリを破壊するのを修正
・CS4231 … 再生しなくなっていたのを修正
・CS4231 … DMA,IRQを変更出来るようにしました
・CS4231 … デフォルトのDMAチャネルを #1に変更
・MIDI … STATSAVEの修正
・SOUND … JAST SOUNDをサポート
・Vermouth … Roland GSコマンドの一部に対応
補足
ver0.73では EPSONモードの時 D000〜DFFFがRAM化されます。
・SOUND BIOSは D000,D400に配置しないで下さい、もしくはUMB等で破壊されないようにして下さい。
(X11)
・Qt 2.x の実験的なサポート
・SDL の実験的なサポート
・ビープ音量が設定ファイルに保存されないのを修正
ver0.73向け
・io/necio.c io/epsonio.c をリンクして下さい
・io/itf.cをリンクよりはずして下さい
・configのモデル選択 http://retropc.net/yui/cvs/config.gif
np2cfg.model に それぞれ "VM" "VX" "EPSON"の文字列を設定する。
(それぞれ common/strresにstr_VM, str_VX, str_EPSONが用意されています)
・JAST SOUNDの選択 http://retropc.net/yui/cvs/jastsnd.gif
パラレルなので 機種依存部の COMMNG.Cを修正して CMJASTCを呼ぶ
使用・未使用判定は OSごとに(np2oscfgで)設定すること
・wavemix sound/getsnd については ver0.73では不要ですが、
ver0.74あたりで使用する予定(Seeksnd?/OPNA/AMD-98の共用ルーチン化)
今までのseeksndインタフェイスはどうするかね…
更新履歴に書かなくていい変更点
・i286a/i286c/i286xに簡易プロテクトモードを追加(保護・タスクなし)
・DMACを再配置できるように修正
・CPU/EGCのストラクチャの調整
・BIOS … DISK BIOSをサポート(但し 通常のBIOSコールは DISK BIOSを使用せずに BIOSレベルでシミュレートしています)
・BIOS … SASI/SCSI BIOS ROMをサポート(BIOSアドレス d000:0000)
補足→ (ver0.74に回す)
SASI/SCSI BIOSは 殆どの場合にはブート時にしか使っていないので RAM内容を破壊しても HDDアクセスは正常に行なわれます。
※アプリケーションが SASI/SCSI BIOSを直視しない限りは大丈夫。
ver0.72までは SASI/SCSI BIOSがサポートされていない(=つまり使われていない) ver0.72までに動いていたソフトウェアはほぼ大丈夫と言えます。
・hostdrv...
// ----
ver0.71 → ver0.72
・主にRISC向けの最適化(CPU, BEEP counter, BIOS etc...)
・CPU … aaa命令の修正
・PIT … インターバルタイマの割り込みを修正、リカバリ修正
・VRAM … SLとLRの関係をミスってた。
・PC-9801-26K … ステータスを修正
・PSG … サウンド作成タイミングの修正(ヴォリューム変更時)
・マウス … 負方向の演算の不都合を修正
・一部の設定だけを変更しても cfgに保存されないのを修正
・vermouth … Win9x,MacOS,X11でバンク切替えを有効にした
(済: MacOSX→cmverを使って下さい)
(済: x11→midimod_loadprogram/rhythmの代わりに midimod_loadallを)
・ini/cfg … biospathの追加 (nullstringでdosioカレント)
(MacOSX)
・Open/Saveダイアログ修正
・ドラッグ&ドロップ修正
・vermouthをcmverを使うように変更
・XFERとNFERをそれぞれカナキーと英数キーに割り当てた。
・ウィンドウの位置をnp2.cfgに記録するようになった。
・これまでF12に割り当てていたキーをF11とF12で分担するように変更(要再設定)。
・割り当て可能なキーにNFERとXFER(とカナ)を追加。
・コマンド+クリックを右クリックに割り当てるように変更。
(Win9x)
・標準ディスプレイ→プラズマディスプレイ移行時にゴミがのこるのを修正
(WinCE)
・ソフトウェアキーボードのサポート
(X11)
・Qt の実験的なサポート
・MIT Shared-Memory Extention shared Pixmap サポート
・画面描画時の無駄を減らした
・Key Display のサポート
でぶねこ補足
・必須
compiler.h に 以下のうち必要な定義を入れること
OSLANG_SJIS, OSLANG_EUC
OSLINEBREAK_CR, OSLINEBREAK_LF, OSLINEBREAK_CRLF
SUPPORT_ANK, SUPPORT_SJIS, SUPPORT_EUC
・変更
(target)/keydisp -> (generic)/keydisp
(target)/cmmidi -> (target)/cmver (vermouthのみ使用の場合)
基本的には WinCE版とSDL版用のファイルで追加されたファイルで
リンクエラーが発生しない限りは必要はないと思われ。
// ----
ver0.70 → ver0.71
・CPU … enter命令(level>=2)の修正(C版のみ)
・メモリスイッチ … 初期値を修正(コプロセッサフラグ)
・FDC … Read IDの対応
・FDD … Write ID時にキャッシュがフラッシュされていなかったバグの修正
・np2sysp … ポート指定ミスを修正
・PSG … ステレオ出力の対応
・PC-9801-14 … DIPSWポートの修正、PITのクロックを変更
・AMD-98 … クロックを修正、レジュームの対応
(Win9x)
・keydisp PSG修正
・マウス修正
(MacOS9)
・マウス対応(Classicのみ)
・キーボード修正
バックグラウンド処理中にキー入力を抑制
Classic - 旧Classicルーチンを使用するようにした
Carbon - キーリピートに対応
・メニュー修正
・エミュレーションウィンドウを可変サイズに
(MacOSX)
・マウス修正
・New Disk修正
・ヘルプ対応
・IIx専用ロゴ追加
・書類アイコン追加/変更
・About表示変更
・AMD-98対応
・画面回転対応
・エミュレーションキー追加
・シークサウンドをリソースに追加(外部ファイルは不要です)
・その他にも細かな修正あり