今気が付いたけど2017年03月22日 00:02

MegaFlashROM SCC+ SDのSDカードスロットってmicroSDであってフルサイズのSDカード刺さらないのか…
ってことはFlashAir使うには、通常とは逆のSDmicroSDの変換アダプタが必要と。

理屈上は動くと思うんだけどなぁ…

FlashAirのRTC取得プログラム (FA_CLOCK Ver0.01)2017年03月05日 18:21

1chipMSX専用、FlashAirのRTCから取得した日付時刻をMSXに設定するプログラム。
プログラム内でSDカードの初期化は行っていないので、1chipNextorMSX等SDHCを利用できる環境必須で。
FlashAirのRTCをluaスクリプトで設定の上ご利用ください。

※余り厳密なエラーチェックはしていないので暴走とかしたらごめんなさい。

ダウンロードはこちら。

RTC設定luaスクリプトのサンプル。
FlashAirがインターネットにアクセスできる(STAモード等)事前提。

FlashAirのカレントに
SCRIPT ディレクトリ
を用意

FlashAirのSD_WLANディレクトリのCONFIGファイルに1行追加
LUA_RUN_SCRIPT=/SCRIPT/startup.lua

このサイトからダウンロードした
libFlashTime.lua
をlibFT.luaという名前でSCRIPTディレクトリに配置

以下スクリプトを
startup.lua
という名前でSCRIPTディレクトリに配置
---------------------------------------------
print("Script Start")
sleep(5500)
local t = require "/SCRIPT/libFT"
print("Get Time from NICT")
t.SetNICT();
print("Script End")

これで起動時にFlashAirのRTCに現在時刻がセットされる。
あとは、FA_CLOCK.COMを実行するごとに
FlashAirから取得した日付時刻をMSXに設定する。


1chipNextorMSX更新 (Ver1.06)2017年03月05日 18:17

Ver1.0.6

Ver1.0.5のBugfix
Nextor利用時の起動時[F09]押下で内蔵RAMDISKだけでなくSDカードも無効になっていたのを修正。

ダウンロードはこちら



1chipMSXと無線LAN(FlashAir) その42017年02月28日 22:34

こちらのサイトを参考に、1chipMSXの起動時に外部タイムサーバーから時間を取得してセットするluaスクリプトを書いてみた。
制限はいくつかあるけど、日付時刻の自動取得が実現できる。

仕様は
1・FlashAIRの起動時実行スクリプトで、日付時刻指定用のバッチファイル作成
2・AUTOEXECの中で1のバッチを呼び出し
という簡単なもの。

日付時刻指定用のバッチの作成タイミングは、無線LANが有効になるまでの時間を考慮して、8秒後に指定。
起動に時間がかかる1chipNextorMSXだと十分間に合うみたい。

欠点は、日付時刻指定用のバッチは電源ON時に更新=リセットでは更新されないので、リセットしたときには時間が巻き戻る事。
MSX側からluaスクリプト呼べるか、なにかプログラム組めればどうにかできそうな気もするけど、とりあえず気にしない方向で…

以下手順。
※FlashAirはSTAモードで。

FlashAirのカレントに
TIMESET.BAT ファイル(空)
SCRIPT ディレクトリ
を用意

FlashAirのSD_WLANディレクトリのCONFIGファイルに1行追加
LUA_RUN_SCRIPT=/SCRIPT/startup.lua

上記サイトからダウンロードした
libFlashTime.lua
をlibFT.luaという名前でSCRIPTディレクトリに配置

以下スクリプトを
startup.lua
という名前でSCRIPTディレクトリに配置
---------------------------------------------
print("Script Start")
sleep(8000)
local timebat   = "/TIMESET.BAT"
local t = require "/SCRIPT/libFT"
print("Get Time from NICT")
t.SetNICT();
t.ShowTime();

local Year,Month,Day,Hour,min,sec = t.GetTime();
local outfile = io.open(timebat, "w")

print("DATE "..Year.."/"..Month.."/"..Day.."\r\n")
outfile:write("DATE "..Year.."/"..Month.."/"..Day.."\r\n")
print("TIME "..Hour..":"..min..":"..sec.."\r\n")
outfile:write("TIME "..Hour..":"..min..":"..sec.."\r\n")

outfile:close()

print("Script End")

これで、FlashAirの起動毎にカレントのTIMESET.BATが更新される。
後はAutoexec内から
COMMAND2.COM TIMESET.BAT
として呼び出すだけ。

※2017/3/4 sleep(8000)が抜けてたので修正。
※sleepはもっと短くても時刻の取得は成功するのだけど、SDからのBIOSロードとかち合うと
※WebDav書き込みがおかしくなったりしました。適宜調整してみてください。

1chipMSXと無線LAN(FlashAir) その32017年02月28日 22:21

FlashAirに無線LANからWevDAVで書き込んだ後、1chipMSXからの書き込みができなかったのは、
無線LANからの書き込み時には、安全の為ホストからの書き込みを無効にするというFlashAir側の仕様が原因だった。
WevDAVからの書き込み後、
http://myflashair/upload.cgi?WRITEPROTECT=OFF

とやってホストからの書き込みを明示的に許可したところ、無事ホスト(1chipMSX)から書き込みができるようになった。
ただし、デベロッパーサイトにも記載があったけど、ホストと無線LAN両方から書き込みを行うというのは結構危険。同時に書き込み行おうとした場合など簡単にファイル破壊ができると思う。

とりあえず、Nextor+MMに関しては、無線LANからの書き込み後、「L」で再読み込みすると最新の状態が表示されるようなので、一人で作業する分にはどうにか対処できそう。
めんどくさくなければ、カードさし直しが一番安全なのも確かみたい。