P6月間企画(その6)
3.オート起動にまつわる事その2
BASICのプログラムをオート起動で動かしたい時に使う方法です。
前述の通り、フロッピーからオート起動をした場合、BASICのモードは選べるんですが、それ以降のページ指定や、コマンドなどは設定できません。
その代わり、ファンクションキーフラグを使う方法で、人間がキーボードから入力する事を代用できます。
ファンクションキーポインタ:0xfb8d〜0xfb8e(モード1〜5)/ 0xe8ce〜0xe8cf(モード6)
ファンクションキーフラグ :0xfa32(モード1〜5) / 0xe6d3(モード6)
ファンクションキーフラグに文字数を設定すると、ファンクションキーポインタからの文字列をキー入力したと解釈され、自動的にキー入力が行われます。
設定できる文字数は0xffまでで、文字列は 0x00 でも終了と見なされます。
○モード1〜5でオート起動するプログラム例(トラック#0セクタ#1)
org 0xf900
START:
db "SYS"
ld a,(FUNCCNT)
ld (0xfa32),a
ld hl,FUNCBUF
ld (0xfb8d),hl
ld a,$04 ; モード5で起動
ld (0xff4e),a
ret
FUNCCNT:
db FUNCBUF_end - FUNCBUF
FUNCBUF:
db "0",$0d ; Files
db "3",$0d ; Pages
db "run ",$22,"TETRIS.BAS",$22,$0d
FUNCBUF_end:
MODE=5、Files=0、Pages=3で起動後、TETRIS.BAS をロードして、RUNします。
○モード6でオート起動するプログラム例(トラック#0セクタ#1)
org 0xc000
START:
db "IPL"
ld a,(FUNCCNT)
ld (0xe6d3),a ; ファンクションキーフラグをセット
ld hl,FUNCBUF
ld (0xe8ce),hl ; ファンクションキーポインタをセット
xor a ; Zflag=1:メニューを出さずにモード6にする
ld a,0x02 ; Files=2に設定
ret
FUNCCNT:
db FUNCBUF_end - FUNCBUF
FUNCBUF:
db "run ",$22,"PBOYP6.BAS",$22,$0d
FUNCBUF_end:
モード6で起動後、PBOYP6.BAS をロードして、RUNします。
この方法の唯一の欠点は、途中にSTOPキーを押すと止まる、事です(^^;)
2018年06月06日
この記事へのコメント
コメントを書く

