• R/O
  • HTTP
  • SSH
  • HTTPS

Commit

Tags
No Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

BASIC compiler/interpreter for PIC32MX/MZ-80K


Commit MetaInfo

Revisão2c26c7ee910ece3ce4c08818952a652f3d5ba13d (tree)
Hora2019-05-22 08:01:15
AutorKatsumi <kmorimatsu@sour...>
CommiterKatsumi

Mensagem de Log

Disable FS functions when MOS mode without SD/MMC card.

Mudança Sumário

Diff

--- a/mips/megalopa/compiler.h
+++ b/mips/megalopa/compiler.h
@@ -239,6 +239,7 @@ extern int g_compiling_class;
239239 extern unsigned char g_num_classes;
240240 extern char g_option_fastfield;
241241 extern HEXLINE g_hexline;
242+extern char g_fs_valid;
242243 extern int g_temp;
243244
244245 /* Prototypes */
--- a/mips/megalopa/debug.c
+++ b/mips/megalopa/debug.c
@@ -267,42 +267,35 @@ static const char hextext[]=
267267 ":088040000800e0032000bd2749\n"
268268 ":020000040000fa\n"
269269 ":107f80000000000000000080ac7f00a0508000a036\n"
270-":107f9000cc8100a0b48100a0388100a0000001a025\n"
271-":0c7fa000f08000a0588000a0000000004d\n"
270+":107f9000708100a0548100a0000001a0388100a0e1\n"
271+":0c7fa000588000a000000000000000005d\n"
272272 ":020000040000fa\n"
273273 ":108050000800e0030000000000001c3c187f9c2783\n"
274-":1080600021e09903e0ffbd271c00bfaf1000bcafab\n"
275-":108070000e0080542c80828f2880998f09f820036d\n"
276-":10808000000000001000bc8f2c80848fa08184240d\n"
277-":108090003080998f09f82003000000001000bc8f89\n"
278-":1080a0002c80828f02000010808142249081422423\n"
279-":1080b0001c00bf8f0800e0032000bd2700001c3c0f\n"
280-":1080c000b47e9c2721e09903e0ffbd271c00bfafd1\n"
281-":1080d0001000bcaf3480998f09f820030000000025\n"
282-":1080e0001000bc8f1c00bf8f0800e0032000bd27dc\n"
274+":1080600021e09903e0ffbd271c00bfaf1800b0afaf\n"
275+":108070001000bcaf110080542880828f1880908f30\n"
276+":108080000000048e2480998f09f82003000000006e\n"
277+":108090001000bc8f2880848f248184240000058eea\n"
278+":1080a0002c80998f09f82003000000001000bc8f7d\n"
279+":1080b0002880828f0200001004814224148142240f\n"
280+":1080c0001c00bf8f1800b08f0800e0032000bd2700\n"
281+":1080d00000001c3ca07e9c2721e09903e0ffbd2707\n"
282+":1080e0001c00bfaf1000bcaf3080998f09f820038f\n"
283+":1080f000000000001000bc8f1c00bf8f0800e003d0\n"
284+":048100002000bd2777\n"
283285 ":020000040000fa\n"
284-":1080f00000001c3c807e9c2721e09903e0ffbd2707\n"
285-":108100001c00bfaf1000bcaf2480998f09f820037a\n"
286-":10811000000000001000bc8f0000438c0c00428c5b\n"
287-":108120000c00428c09f8400000007c8c1c00bf8fc2\n"
288-":088130000800e0032000bd2758\n"
286+":1081040048656c6c6f20576f726c6421000000002e\n"
287+":108114005468697320697320612074657374000066\n"
288+":10812400434c494220746573742e000054455354e3\n"
289+":048134000000000047\n"
289290 ":020000040000fa\n"
290-":1081380000001c3c387e9c2721e09903e0ffbd2706\n"
291-":108148001c00bfaf1000bcaf2480998f09f8200332\n"
292-":10815800000000001000bc8f0000438c0c00428c13\n"
293-":108168001800428c09f8400000007c8c1c00bf8f6e\n"
294-":088178000800e0032000bd2710\n"
291+":108138000000a38c0c00a28c0c00428c08004000ac\n"
292+":0c81480000007c8c0800e0030000000038\n"
295293 ":020000040000fa\n"
296-":1081800048656c6c6f20576f726c642100000000b2\n"
297-":1081900054686973206973206120746573740000ea\n"
298-":1081a000434c494220746573742e00005445535467\n"
299-":0481b00000000000cb\n"
294+":108154000000838c0c00828c1800428c08004000c4\n"
295+":0c81640000007c8c0800e003000000001c\n"
300296 ":020000040000fa\n"
301-":1081b40000001c3cbc7d9c2721e099031880828f21\n"
302-":0881c4000800e0030000428cfa\n"
303-":020000040000fa\n"
304-":1081cc004001000080000000dc8100a000000000e5\n"
305-":0c81dc00ac8100a0bc8000a000000000ee\n"
297+":108170004001000080000000808100a0000000009d\n"
298+":0c818000308100a0d08000a000000000b2\n"
306299 ":00000001FF\n"
307300 ;
308301
--- a/mips/megalopa/editor.c
+++ b/mips/megalopa/editor.c
@@ -2193,7 +2193,7 @@ void run(int test){
21932193 break;
21942194 }
21952195 // MOS: insertion
2196- if (2==test) {
2196+ if (2==test && !er2) {
21972197 // Create HEX file as Self Running Apprication
21982198 msra();
21992199 }
@@ -2494,7 +2494,9 @@ void control_code_process(unsigned char k,unsigned char sh){
24942494 break;
24952495 case VK_F2: //F2キー
24962496 if(num==0) break;
2497+// MOS: modification
24972498 if(sh & CHK_SHIFT) run(2); //create direct running file
2499+// if(sh & CHK_SHIFT) msra(); //create direct running file
24982500 else save_as(0); //ファイル名を付けて保存
24992501 break;
25002502 case VK_F3: //F3キー
--- a/mips/megalopa/globalvars.c
+++ b/mips/megalopa/globalvars.c
@@ -102,6 +102,9 @@ unsigned char g_num_classes;
102102 // OPTION FASTFIELD
103103 char g_option_fastfield;
104104
105+// Flag if file system has been initialized
106+char g_fs_valid;
107+
105108 // Result of reading a HEX file line
106109 HEXLINE g_hexline;
107110
--- a/mips/megalopa/library.c
+++ b/mips/megalopa/library.c
@@ -779,6 +779,11 @@ int lib_file(enum functions func, int a0, int a1, int v0){
779779 int i;
780780 int buff[1];
781781 char* str;
782+
783+ // Immediately return if file system is invalid.
784+ // See also "case LIB_FILE:" in _call_library().
785+ if (!g_fs_valid) return v0;
786+
782787 if (activefhandle) fhandle=s_fhandle[activefhandle-1];
783788 switch(func){
784789 case FUNC_FINIT:
@@ -1011,6 +1016,7 @@ int _call_library(int a0,int a1,int v0,enum libs a3){
10111016 scroll(g_libparams[1],v0);
10121017 return v0;
10131018 case LIB_FILE:
1019+ if (!g_fs_valid) err_str("File System not initialized");
10141020 return lib_file((enum functions)(a3 & FUNC_MASK),g_libparams[1],g_libparams[2],v0);
10151021 case LIB_KEYS:
10161022 return lib_keys(v0);
--- a/mips/megalopa/main.c
+++ b/mips/megalopa/main.c
@@ -212,6 +212,7 @@ int searchinittext(char *s){
212212 void readinifile(void){
213213 FSFILE *fp;
214214 char inittext[9];
215+ if (!g_fs_valid) return;
215216
216217 fp=FSfopen(INIFILE,"r");
217218 if(fp==NULL) return;
@@ -267,7 +268,7 @@ void printhex32(unsigned int d){
267268
268269 int main(void){
269270 char *appname,*s;
270- int use_editor, fs_valid;
271+ int use_editor;
271272
272273 /* ポートの初期設定 */
273274 CNPUB = 0xFFFF; // PORTB全てプルアップ(I/O)
@@ -326,9 +327,10 @@ int main(void){
326327 setcursorcolor(COLOR_NORMALTEXT);
327328 printstr("Init File System...");
328329 // Initialize the File System
329- fs_valid=FSInit(); //ファイルシステム初期化
330- if(fs_valid==FALSE){
331- if (use_editor) {
330+ g_fs_valid=FSInit(); //ファイルシステム初期化
331+ if(g_fs_valid==FALSE){
332+ if (use_editor || !g_objpos_mos) {
333+ // Editorモードの場合、及び、BASファイル読み込みモードの場合
332334 //エラーの場合停止
333335 setcursorcolor(COLOR_ERRORTEXT);
334336 printstr("\nFile System Error\n");
@@ -336,11 +338,14 @@ int main(void){
336338 printstr("And Reset\n");
337339 while(1) asm("wait");
338340 } else {
339- // MOSモードの場合は、エラー表示の後、続ける
340- printstr("Failed\n");
341+ // MOSモードの場合は、あと二回、トライ
342+ // エラー表示の後、続ける
343+ g_fs_valid=FSInit();
344+ if(g_fs_valid==FALSE) g_fs_valid=FSInit();
341345 }
342346 }
343- printstr("OK\n");
347+ if (g_fs_valid) printstr("OK\n");
348+ else printstr("Failed\n");
344349
345350 // 音源初期化
346351 OC4RS=LATFbits.LATF5 ? 0xff:0x00;
@@ -350,7 +355,7 @@ int main(void){
350355 initialvmode=VMODE_STDTEXT; // 標準テキストモード(36文字)
351356 lockkey=2; // NumLockキーオン
352357 keytype=0; // 日本語キーボード
353- if (fs_valid) readinifile(); //INIファイル読み込み
358+ readinifile(); //INIファイル読み込み
354359 printstr("Init PS/2...");
355360 wait60thsec(30); //0.5秒待ち
356361 if(ps2init()){ //PS/2初期化
@@ -366,9 +371,10 @@ int main(void){
366371 // 実行中HEXファイル名がHEXFILEと一致した場合はエディタ起動
367372 if(use_editor) texteditor(); //テキストエディター呼び出し
368373
374+ g_disable_break=1; // Breakキー無効化
375+ // buttonmode(); //ボタン有効化
369376 if (g_objpos_mos) {
370377 // MOSからコードをコピーして実行
371- g_disable_break=1; // Breakキー無効化
372378 runbasic(0,2);
373379 } else {
374380 // 実行中HEXファイル名の「.HEX」を「.BAS」に置き換えてBASファイルを実行
@@ -378,8 +384,6 @@ int main(void){
378384 appname=".BAS";
379385 while(*appname!=0) *s++=*appname++;
380386 *s=0;
381- // buttonmode(); //ボタン有効化
382- g_disable_break=1; // Breakキー無効化
383387 runbasic(tempfile,0);
384388 }
385389 while(1) asm(WAIT);
--- a/mips/megalopa/statement.c
+++ b/mips/megalopa/statement.c
@@ -1442,11 +1442,11 @@ char* fclose_statement(){
14421442
14431443 TODO: candidates to add:
14441444
1445-int FSattrib (FSFILE * file, unsigned char attributes);
1445+// int FSattrib (FSFILE * file, unsigned char attributes);
14461446 int FSrename (const char * fileName, FSFILE * fo);
14471447 int FSmkdir (char * path);
14481448 int FSrmdir (char * path, unsigned char rmsubdirs);
1449-int SetClockVars (unsigned int year, unsigned char month, unsigned char day, unsigned char hour, unsigned char minute, unsigned char second);
1449+// int SetClockVars (unsigned int year, unsigned char month, unsigned char day, unsigned char hour, unsigned char minute, unsigned char second);
14501450 int FindFirst (const char * fileName, unsigned int attr, SearchRec * rec);
14511451 int FindNext (SearchRec * rec);
14521452