DEMUプロジェクトの仕様と詳細  

このページは、DOSエミュレータ 「DEMU」の仕様や進行状況を更新するページです。
最初から書き直す必要に迫られたので、改名とともにページ名を変更しました。
とりあえずDOS互換だけ実装し、その後コツコツと仕上げていくつもり。だいぶ完成してきました
大まかな骨組みは「基礎ライブラリ(グラフィックテキストボックス+ファイルアクセス/リスト+DOSメモリ管理)+CPU本体+APIシミュレータ」な予定。

(編集中)


もくじ

スクリーンショットとか  

最新  

demu20061124a.png
QEMU上のOSASKではRTCがパックドBCDモードになっているようだ。
11月24日が17月36日(0x11,0x24)になってしまっている。
手元の資料では'PCではバイナリモードに設定'とあるのでバイナリモードを想定して作成してしまった。
demu20061123a.png
時間取得関係を実装しないと進まないところまで実行されたところ
demu20061121a.png
やっとタイトル画面が正常に出るようになりました。
OR命令実行後の挙動がおかしくなっていたのを修正しました(汗
他にもキーボード入力ルーチン等が実装されました。


フォント適応補間リサイズ  

16x16のOSASK標準フォントを12x12や32x32へリサイズした例です。
12x12はそれなりに使えると思いますが、
32x32は使用用途が…(笑)。

仕様とか  

内部資料(仮仕様)  


管理用メモ  

ここは、管理人が試行錯誤しながら変更していく内部用のメモがわりです。


(編集中)

RTCの内蔵メモリアドレスマップ

OS-Wikiにも見つからなかったので、メモ代わり。

アドレスレジスタ機能備考
00秒カウンタ00h~3Bh(バイナリモード),00h~59h(BCDモード)
01アラーム時刻(秒)
02分カウンタ00h~3Bh(バイナリモード),00h~59h(BCDモード)
03アラーム時刻(分)
04時カウンタ24時間モード時
 00h~17h(バイナリモード),00h~23h(BCDモード)
12時間モード時(午前)
 01h~0Ch(バイナリモード),01h~12h(BCDモード)
12時間モード(午後)
 81h~8Ch(バイナリモード),81h~92h(BCDモード)
PCでは24時間,バイナリモード





05アラーム時刻(時)
06曜日1~7,1:日曜日
0701h~1Fh(バイナリモード),01h~31h(BCDモード)
0801h~0Ch(バイナリモード),01h~12h(BCDモード)
0900h~63h(バイナリモード),00h~99h(BCDモード)年の上位2桁は, 32hに格納
0AレジスタAビット7:UIP(Update In Progress)
 1:時刻更新サイクル中
 0:時刻更新完了
ビット6~4:OSn:発振回路制御
 11x:発振回路ON, 分周器OFF
 010:RTC動作開始(発振回路ON, 分周器ON)
ビット3~0:SQW信号出力
 1111:500ms
 1110:250ms
 1101:125ms
 1100:62.5ms
 1011:31.25ms
 1010:15.625ms
 1001:7.8125ms
 1000:3.9063ms
 0111:1.9532ms
 0110:0.97656ms
 0101:0.48828ms
 0100:0.24414ms
 0011:0.12207ms
 0010:7.8125ms
 0001:3.9063ms
 0000:無効





←通常は010の設定のままにすること
←PCではSQWは使用していない









←PCは通常は0110に設定



←1001と同じ扱いになる
←1000と同じ扱いになる
0BレジスタBビット7:UTI
 1:RTCバイトのユーザバッファへの転送/時刻更新割り込みクリア
 0:転送許可
ビット6:PIE(Periodic Interrupt Enable)
 1:SQW割り込み発生許可
 0:SQW割り込み発生禁止
ビット5:AIE:アラーム割り込みイネーブル
 1:許可
 0:禁止
ビット4:UIE:アップデートサイクル割り込みイネーブル
 1:許可
 0:禁止
ビット3:SQW信号出力制御
 1:出力許可
 0:出力禁止(Lレベルに固定)
ビット2:DF:データフォーマット
 1:BCD
 0:バイナリ
ビット1:HF:24時間/12時間計選択
 1:24時間計
 0:12時間計
ビット0:DSE(Daylight Saving Enable)
 1:夏時間補正を有効にする
 0:夏時間補正なし



←PCは通常は0に設定
←SQWによる定周期割り込み


←アラーム時刻レジスタと時刻レジスタが
すべて一致すると割り込みを発生する機能

←時刻レジスタ更新が完了すると割り込み
を発生する機能

PCでは使用していないため無意味


←時刻データのフォーマット指定

PCでは通常0に設定

←PCは通常1に設定

←夏時間設定時の動作
・10月最後の日曜日の01:59:59の次が01:00:00になる
・4月最初の日曜日の01:59:59の次が03:00:00になる
0CレジスタCビット7:INTF:割り込みフラグ
 1:割り込み発生
 0:割り込み発生していない
ビット6:PF(Periodic Event Flag)
 1:SQW割り込み発生
 0:通常動作
ビット5:AF(Alarm Event Flag)
 1:アラーム割り込み発生
 0:通常動作
ビット4:UF(Update Event Flag)
 1:アップデートサイクル割り込み発生許可
 0:通常動作
ビット3~0:未使用
←レジスタCのリードによってクリアされる
←要因はPIE,AIE,UIEで個別に許可/禁止可能


←レジスタCのリードによってクリアされる


←レジスタCのリードによってクリアされる


←レジスタCのリードによってクリアされる


0DレジスタDビット7:VRT
 1:RTCバックアップ電池有効
 0:RTCバックアップ電池切れ(日付/時刻データ無効)
ビット6~0:未使用



←ACPIではビット5~0にアラーム「日」設定を要求
0E汎用SRAM自己診断情報
ビット7:RTCバックアップ電池
 1:電池切れ
 0:電池有効
ビット6:チェックサムステータス
 1:エラー
 0:正常
ビット5:構成異常
ビット4:メモリサイズ異常
ビット3:HDDコントローラ/ドライブC初期化ステータス
ビット2:時刻データ正当性
 1:無効
 0:有効
ビット1~0:未使用(予約済み)
2Eチェックサム(上位)
2Fチェックサム(下位)
32世紀情報(年の上位2桁をBCDで格納)自動桁上がりはしない


進行状況欄  

ここは管理人が書く場所です。



コメントお名前NameLink

なにか書いていってください  

なんでもいいですよ。



コメントお名前NameLink

[リロード]   [トップ] [一覧] [単語検索] [最終更新]   [最終更新のRSS]