2018年06月06日

P6のフロッピー関連まとめ(3)

  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キーを押すと止まる、事です(^^;)


posted by えすび at 22:27| Comment(0) | P6解析:FDC周り | このブログの読者になる | 更新情報をチェックする