- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
,{t},{BSIZE:1 0|SIZE:100%}
,{BSIZE:0}←[[4章 BASIC]] ,{BSIZE:0|RIGHT}[[6章 マッパーRAMセグメント]] →
!!5.1 追加されたエントリ
MSX turbo Rでは、BIOSについても、CPUの切り換えやPCM関連のエントリが追加されています。
以下では、それぞれのエントリについて説明します。
!5.1.1 CPU切り換え
CPUの切り換えのBIOSには、CHGCPUとGETCPUというエントリがあります。
::CHGCPU(0180H/MAIN)
,機 能{SIZE:100|CENTER}
CPUを切り換えます。
,コール手順{SIZE:100|CENTER}
{{svg 図P25.svg}}
・モード
CPUのモードを指定します。
,{t},{BSIZE:1 0}
,{c},{BSIZE:1 0 1 0|SIZE:60},{BSIZE:1 0 1 0|SIZE:300}
,モード,意味
,{c},{BSIZE:0},{BSIZE:0}
,00 ,Z80モード
,01 ,R800 ROM モード
,10 ,R800 DRAMモード
,11 ,システム予約
・LED
LEDの状態を指定します。
,{t},{BSIZE:1 0}
,{c},{BSIZE:1 0 1 0|SIZE:60},{BSIZE:1 0 1 0|SIZE:300}
,LED ,意味
,{c},{BSIZE:0},{BSIZE:0}
,0 ,LEDを変化させない
,1 ,LEDを変化させる
,戻り値{SIZE:100|CENTER}
なし
,変更レジスタ{SIZE:100|CENTER}
なし
,解 説{SIZE:100|CENTER}
Aレジスタの内容によって、CPUを切り替えます。もし、Aレジスタのビット7が1なら、変更したCPUにあわせて、CPUの状態を表すLEDを変化(点灯するか消灯するか)させます。Aレジスタのビット7が0なら、LEDを変化させません。
変更前のCPUのレジスタの内容は、Rレジスタ以外は、変更後のCPUに受け継がれます。変更後は、割り込みは許可されます。
,注 意{SIZE:100|CENTER}
CPUの切り換えは、システムコントロールLSI(S1990)内の設定を変えるだけです。そのため、Z80やR800 ROMモードに切り替えた後、空いたDRAMエリアの内容を書き換えて、R800 DRAMモードにすると、システムは暴走します。DRAMへのシステムソフトウェアの転送は、システム起動時にのみ行っています。
::GETCPU(0183H/MAIN)
,機 能{SIZE:100|CENTER}
現在、どちらのCPUが動作しているかを調べます
,コール手順{SIZE:100|CENTER}
なし
,戻り値{SIZE:100|CENTER}
A
,{t},{BSIZE:1 0}
,{c},{BSIZE:1 0 1 0|SIZE:60},{BSIZE:1 0 1 0|SIZE:300}
,値 ,意味
,{c},{BSIZE:0},{BSIZE:0}
,0 ,Z80モード
,1 ,R800 ROM モード
,2 ,R800 DRAMモード
,変更レジスタ{SIZE:100|CENTER}
F
!5.1.2 PCM
PCMデータの録音・再生のBIOSには、PCMPLYとPCMRECというエントリがあります。
::PCMPLY(0186H/MAIN)
,機 能{SIZE:100|CENTER}
PCMのデータを再生します。
,コール手順
{{svg 図P27.svg}}
・サンプリングレート
サンプリングレートを指定します。
,{t},{BSIZE:1 0}
,{c},{BSIZE:1 0|SIZE:200},{BSIZE:1 0|SIZE:300}
,サンプリングレート,意味(KHz)
,{c},{BSIZE:0},{BSIZE:0}
,00 ,15.75
,01 ,7.875
,10 ,5.25
,11 ,3.9375
・メモリ
再生するデータをおくメモリを指定します。
,{t},{BSIZE:1 0}
,{c},{BSIZE:1 0 1 0|SIZE:80},{BSIZE:1 0 1 0|SIZE:300}
,メモリ,意味
,{c},{BSIZE:0},{BSIZE:0}
,0 ,メインメモリ
,1 ,VRAM
,{t},{BSIZE:0}
,{c},{BSIZE:0|SIZE:60},{BSIZE:0}
,HL,PCMデータのアドレス
, ,VRAM指定時は、EレジスタとHLレジスタとをあわせて、3バイトで設定します。Eレジスタが最上位バイトです。
,BC,PCMデータの長さ
, ,VRAM指定時は、DレジスタとBCレジスタとをあわせて、3バイトで設定します。Dレジスタが最上位バイトです。
,戻り値{SIZE:100|CENTER}
キャリーフラグ
,{t},{BSIZE:1 0}
,{c},{BSIZE:1 0|SIZE:60},{BSIZE:1 0|SIZE:60},{BSIZE:1 0|SIZE:60},{BSIZE:1 0}
,値 ,意味 , ,
,{c},{BSIZE:0},{BSIZE:0},{BSIZE:0},{BSIZE:0}
,0 ,正常終了{COLS:3}, ,
,1 ,異常終了{COLS:3}, ,
, ,A ,異常終了要因{COLS:2},
, , ,1 ,サンプリング周波数指定誤り
, , ,2 ,[STOP]キーによる中断
, ,HL ,中断時のデータアドレス{COLS:2},
, , ,VRAM指定時は、EレジスタとHLレジスタとをあせて、3バイトで返します。Eレジスタが最上位バイトです。{COLS:2},
, , ,VRAM指定時は、EレジスタとHLレジスタとをあわせて、3バイトで返します。Eレジスタが最上位バイトです。{COLS:2},
,変更レジスタ{SIZE:100|CENTER}
すべて
,注 意{SIZE:100|CENTER}
Z80モードの時には、自動的にR800 ROMモードに切り換えて実行し、終わるとZ80モードに戻ります。
PCMを再生しているあいだは、割り込みは禁止されます。なお、[STOP]キーが押されると実行を中断します。
このBIOSは、実際にはページ1(04000H〜07FFFH)におかれたプログラムで実行されます。したがって、データをメインメモリにおくときは、必ず08000H番地以降でなければなりません。
::PCMREC(0189H/MAIN)
,機 能{SIZE:100|CENTER}
PCMのデータを録音します。
,コール手順{SIZE:100|CENTER}
{{svg 図P29.svg}}
・サンプリングレート
サンプリングレートを指定します。
,{t},{BSIZE:1 0}
,{c},{BSIZE:1 0|SIZE:200},{BSIZE:1 0|SIZE:300}
,サンプリングレート,意味(KHz)
,{c},{BSIZE:0},{BSIZE:0}
,00 ,15.75
,01 ,7.875
,10 ,5.25
,11 ,3.9375
・圧縮
圧縮するかしないかを指定します。
,{t},{BSIZE:1 0}
,{c},{BSIZE:1 0 1 0|SIZE:80},{BSIZE:1 0 1 0|SIZE:300}
,圧縮,意味
,{c},{BSIZE:0},{BSIZE:0}
,0 ,圧縮しない
,1 ,圧縮する
・トリガーレベル
録音のきっかけとなる音の大きさを指定します。
・メモリ
録音するメモリを指定します。
,{t},{BSIZE:1 0}
,{c},{BSIZE:1 0 1 0|SIZE:80},{BSIZE:1 0 1 0|SIZE:300}
,メモリ,意味
,{c},{BSIZE:0},{BSIZE:0}
,0 ,メインメモリ
,1 ,VRAM
,{t},{BSIZE:0}
,{c},{BSIZE:0|SIZE:60},{BSIZE:0}
,HL,PCMデータのアドレス
, ,VRAM指定時は、EレジスタとHLレジスタとをあわせて、3バイトで設定します。Eレジスタが最上位バイトです。
,BC,PCMデータの長さ
, ,VRAM指定時は、DレジスタとBCレジスタとをあわせて、3バイトで設定します。Dレジスタが最上位バイトです。
,戻り値{SIZE:100|CENTER}
キャリーフラグ
,{t},{BSIZE:1 0}
,{c},{BSIZE:1 0|SIZE:60},{BSIZE:1 0|SIZE:60},{BSIZE:1 0|SIZE:60},{BSIZE:1 0}
,値 ,意味 , ,
,{c},{BSIZE:0},{BSIZE:0},{BSIZE:0},{BSIZE:0}
,0 ,正常終了{COLS:3}, ,
,1 ,異常終了{COLS:3}, ,
, ,A ,異常終了要因{COLS:2},
, , ,1 ,サンプリング周波数指定誤り
, , ,2 ,[STOP]キーによる中断
, ,HL ,中断時のデータアドレス{COLS:2},
, , ,VRAM指定時は、EレジスタとHLレジスタとをあせて、3バイトで返します。Eレジスタが最上位バイトです。{COLS:2},
, , ,VRAM指定時は、EレジスタとHLレジスタとをあわせて、3バイトで返します。Eレジスタが最上位バイトです。{COLS:2},
,変更レジスタ{SIZE:100|CENTER}
すべて
,注意{SIZE:100|CENTER}
Z80モードの時には、自動的にR800 ROMモードに切り換えて実行し、終わるとZ80モードに戻ります。
Z80モードやR800 ROMモードときに、サンプリングレートを15.75KHzに指定すると、「サンプリング周波数誤り」エラーになります。録音中は、割り込み禁止されます。なお[STOP]キーが押されると実行を中断します。
Z80モードやR800 ROMモードのときに、サンプリングレートを15.75KHzに指定すると、「サンプリング周波数誤り」エラーになります。録音中は、割り込み禁止されます。なお[STOP]キーが押されると実行を中断します。
メインメモリに録音するときは、PCMPLYと同じように、データを録音する番地に注意して下さい。
'''圧縮'''
再生時には、常にデータは圧縮されているものと見なして再生します。
録音時には、圧縮スイッチにより圧縮処理の有無を指定できます。ただし、録音データが0のときは、常に1に読みかえて録音します。
!5.2 変更されたエントリ
MSX turbo Rの仕様により、内容が変わったエントリもあります。
以下では、それぞれについて変更された点を説明します。
::GTPDL(00DEH/MAIN)
,機 能{SIZE:100|CENTER}
パドル機能はなくなりました。常に0が返されます。
::TAPION(00E1H/MAIN)
,機 能{SIZE:100|CENTER}
常にキャリーフラグを立て、エラーとしてリターンします。
::TAPIN(00E4H/MAIN)
,機 能{SIZE:100|CENTER}
常にキャリーフラグを立て、エラーとしてリターンします。
::TAPIOF(00E7H/MAIN)
,機 能{SIZE:100|CENTER}
常にキャリーフラグを立て、エラーとしてリターンします。
::TAPOON(00EAH/MAIN)
,機 能{SIZE:100|CENTER}
常にキャリーフラグを立て、エラーとしてリターンします。
::TAPOUT(00EDH/MAIN)
,機 能{SIZE:100|CENTER}
常にキャリーフラグを立て、エラーとしてリターンします。
::TAPOOF(00F0H/MAIN)
,機 能{SIZE:100|CENTER}
常にキャリーフラグを立て、エラーとしてリターンします。
::STMOTR(00F3H/MAIN)
,機 能{SIZE:100|CENTER}
何もせずにリターンします。
::GTPAD(00DBH/MAIN)
,機 能{SIZE:100|CENTER}
ライトペン機能はなくなりました。Aレジスタに8〜11を入れてコールすると、常に0が返されます。
::NEWPAD(01ADH/SUB)
,機 能{SIZE:100|CENTER}
ライトペン機能はなくなりました。Aレジスタに8〜11を入れてコールすると、常に0が返されます。
::RDRES(017AH/MAIN)
,機 能{SIZE:100|CENTER}
システム予約です。
::WRRES(017DH/MAIN)
,機 能{SIZE:100|CENTER}
システム予約です。
,{t},{BSIZE:1 0|SIZE:100%}
,{BSIZE:0}←[[4章 BASIC]] ,{BSIZE:0|RIGHT}[[6章 マッパーRAMセグメント]] →