BASIC compiler/interpreter for PIC32MX/MZ-80K
Revisão | d8e3fee225552f706f55b3d409501767f40857d0 (tree) |
---|---|
Hora | 2019-04-10 06:59:32 |
Autor | Katsumi <kmorimatsu@sour...> |
Commiter | Katsumi |
Not TMR1=0 in TIMER statement but g_timer=0 in USETIMER statement.
@@ -1431,6 +1431,20 @@ char* fclose_statement(){ | ||
1431 | 1431 | return 0; |
1432 | 1432 | } |
1433 | 1433 | |
1434 | +/* | |
1435 | + | |
1436 | +TODO: candidates to add: | |
1437 | + | |
1438 | +int FSattrib (FSFILE * file, unsigned char attributes); | |
1439 | +int FSrename (const char * fileName, FSFILE * fo); | |
1440 | +int FSmkdir (char * path); | |
1441 | +int FSrmdir (char * path, unsigned char rmsubdirs); | |
1442 | +int SetClockVars (unsigned int year, unsigned char month, unsigned char day, unsigned char hour, unsigned char minute, unsigned char second); | |
1443 | +int FindFirst (const char * fileName, unsigned int attr, SearchRec * rec); | |
1444 | +int FindNext (SearchRec * rec); | |
1445 | + | |
1446 | +*/ | |
1447 | + | |
1434 | 1448 | char* fget_statement(){ |
1435 | 1449 | return param2_statement(LIB_FILE | FUNC_FGET); |
1436 | 1450 | } |
@@ -123,6 +123,7 @@ void lib_usetimer(int usec){ | ||
123 | 123 | IPC1bits.T1IS=0; |
124 | 124 | IEC0bits.T1IE=1; |
125 | 125 | // Start timer |
126 | + g_timer=0; | |
126 | 127 | T1CONbits.ON=1; |
127 | 128 | } |
128 | 129 |
@@ -143,9 +144,6 @@ char* timer_statement(){ | ||
143 | 144 | check_obj_space(4); |
144 | 145 | g_object[g_objpos++]=0x3C030000|((i>>16)&0x0000FFFF); // lui v1,xxxx |
145 | 146 | g_object[g_objpos++]=0xAC620000|((i-0x8000)&0xFFFF); // sw v0,xxxx(v1) |
146 | - i=(int)(&TMR1)+0x8000;//0xBF800610 | |
147 | - g_object[g_objpos++]=0x3C030000|((i>>16)&0x0000FFFF); // lui v1,0xbf80 | |
148 | - g_object[g_objpos++]=0xAC600000|((i-0x8000)&0xFFFF); // sw zero,0x0610(v1) | |
149 | 147 | return 0; |
150 | 148 | } |
151 | 149 |
@@ -285,7 +283,7 @@ char* interrupt_statement(){ | ||
285 | 283 | 4) DRAWCOUNT interrupt |
286 | 284 | */ |
287 | 285 | |
288 | -const int* keystatus=(int*)&ps2keystatus[0]; | |
286 | +const int* g_keystatus=(int*)&ps2keystatus[0]; | |
289 | 287 | |
290 | 288 | #pragma interrupt CS0Handler IPL3SOFT vector 1 |
291 | 289 | void CS0Handler(void){ |
@@ -308,7 +306,7 @@ void CS0Handler(void){ | ||
308 | 306 | // Check PS/2 keyboard down |
309 | 307 | if (g_int_vector[INTERRUPT_INKEY]) { |
310 | 308 | for(i=0;i<64;i++){ |
311 | - if (keystatus[i]) { | |
309 | + if (g_keystatus[i]) { | |
312 | 310 | // Raise INKEY interrupt flag |
313 | 311 | if (!s_inkey) raise_interrupt_flag(INTERRUPT_INKEY); |
314 | 312 | break; |
@@ -318,8 +316,3 @@ void CS0Handler(void){ | ||
318 | 316 | } |
319 | 317 | } |
320 | 318 | } |
321 | -/* | |
322 | - for(i=0;i<256;i++){ | |
323 | - if (ps2keystatus[i]) return i; | |
324 | - } | |
325 | -*/ |
@@ -1431,6 +1431,20 @@ char* fclose_statement(){ | ||
1431 | 1431 | return 0; |
1432 | 1432 | } |
1433 | 1433 | |
1434 | +/* | |
1435 | + | |
1436 | +TODO: candidates to add: | |
1437 | + | |
1438 | +int FSattrib (FSFILE * file, unsigned char attributes); | |
1439 | +int FSrename (const char * fileName, FSFILE * fo); | |
1440 | +int FSmkdir (char * path); | |
1441 | +int FSrmdir (char * path, unsigned char rmsubdirs); | |
1442 | +int SetClockVars (unsigned int year, unsigned char month, unsigned char day, unsigned char hour, unsigned char minute, unsigned char second); | |
1443 | +int FindFirst (const char * fileName, unsigned int attr, SearchRec * rec); | |
1444 | +int FindNext (SearchRec * rec); | |
1445 | + | |
1446 | +*/ | |
1447 | + | |
1434 | 1448 | char* fget_statement(){ |
1435 | 1449 | return param2_statement(LIB_FILE | FUNC_FGET); |
1436 | 1450 | } |
@@ -123,6 +123,7 @@ void lib_usetimer(int usec){ | ||
123 | 123 | IPC1bits.T1IS=0; |
124 | 124 | IEC0bits.T1IE=1; |
125 | 125 | // Start timer |
126 | + g_timer=0; | |
126 | 127 | T1CONbits.ON=1; |
127 | 128 | } |
128 | 129 |
@@ -143,9 +144,6 @@ char* timer_statement(){ | ||
143 | 144 | check_obj_space(4); |
144 | 145 | g_object[g_objpos++]=0x3C030000|((i>>16)&0x0000FFFF); // lui v1,xxxx |
145 | 146 | g_object[g_objpos++]=0xAC620000|((i-0x8000)&0xFFFF); // sw v0,xxxx(v1) |
146 | - i=(int)(&TMR1)+0x8000;//0xBF800610 | |
147 | - g_object[g_objpos++]=0x3C030000|((i>>16)&0x0000FFFF); // lui v1,0xbf80 | |
148 | - g_object[g_objpos++]=0xAC600000|((i-0x8000)&0xFFFF); // sw zero,0x0610(v1) | |
149 | 147 | return 0; |
150 | 148 | } |
151 | 149 |
@@ -318,8 +316,3 @@ void CS0Handler(void){ | ||
318 | 316 | } |
319 | 317 | } |
320 | 318 | } |
321 | -/* | |
322 | - for(i=0;i<256;i++){ | |
323 | - if (ps2keystatus[i]) return i; | |
324 | - } | |
325 | -*/ |
@@ -1431,6 +1431,20 @@ char* fclose_statement(){ | ||
1431 | 1431 | return 0; |
1432 | 1432 | } |
1433 | 1433 | |
1434 | +/* | |
1435 | + | |
1436 | +TODO: candidates to add: | |
1437 | + | |
1438 | +int FSattrib (FSFILE * file, unsigned char attributes); | |
1439 | +int FSrename (const char * fileName, FSFILE * fo); | |
1440 | +int FSmkdir (char * path); | |
1441 | +int FSrmdir (char * path, unsigned char rmsubdirs); | |
1442 | +int SetClockVars (unsigned int year, unsigned char month, unsigned char day, unsigned char hour, unsigned char minute, unsigned char second); | |
1443 | +int FindFirst (const char * fileName, unsigned int attr, SearchRec * rec); | |
1444 | +int FindNext (SearchRec * rec); | |
1445 | + | |
1446 | +*/ | |
1447 | + | |
1434 | 1448 | char* fget_statement(){ |
1435 | 1449 | return param2_statement(LIB_FILE | FUNC_FGET); |
1436 | 1450 | } |
@@ -123,6 +123,7 @@ void lib_usetimer(int usec){ | ||
123 | 123 | IPC1bits.T1IS=0; |
124 | 124 | IEC0bits.T1IE=1; |
125 | 125 | // Start timer |
126 | + g_timer=0; | |
126 | 127 | T1CONbits.ON=1; |
127 | 128 | } |
128 | 129 |
@@ -143,9 +144,6 @@ char* timer_statement(){ | ||
143 | 144 | check_obj_space(4); |
144 | 145 | g_object[g_objpos++]=0x3C030000|((i>>16)&0x0000FFFF); // lui v1,xxxx |
145 | 146 | g_object[g_objpos++]=0xAC620000|((i-0x8000)&0xFFFF); // sw v0,xxxx(v1) |
146 | - i=(int)(&TMR1)+0x8000;//0xBF800610 | |
147 | - g_object[g_objpos++]=0x3C030000|((i>>16)&0x0000FFFF); // lui v1,0xbf80 | |
148 | - g_object[g_objpos++]=0xAC600000|((i-0x8000)&0xFFFF); // sw zero,0x0610(v1) | |
149 | 147 | return 0; |
150 | 148 | } |
151 | 149 |
@@ -285,7 +283,7 @@ char* interrupt_statement(){ | ||
285 | 283 | 4) DRAWCOUNT interrupt |
286 | 284 | */ |
287 | 285 | |
288 | -const int* keystatus=(int*)&ps2keystatus[0]; | |
286 | +const int* g_keystatus=(int*)&ps2keystatus[0]; | |
289 | 287 | |
290 | 288 | #pragma interrupt CS0Handler IPL3SOFT vector 1 |
291 | 289 | void CS0Handler(void){ |
@@ -308,7 +306,7 @@ void CS0Handler(void){ | ||
308 | 306 | // Check PS/2 keyboard down |
309 | 307 | if (g_int_vector[INTERRUPT_INKEY]) { |
310 | 308 | for(i=0;i<64;i++){ |
311 | - if (keystatus[i]) { | |
309 | + if (g_keystatus[i]) { | |
312 | 310 | // Raise INKEY interrupt flag |
313 | 311 | if (!s_inkey) raise_interrupt_flag(INTERRUPT_INKEY); |
314 | 312 | break; |
@@ -318,8 +316,3 @@ void CS0Handler(void){ | ||
318 | 316 | } |
319 | 317 | } |
320 | 318 | } |
321 | -/* | |
322 | - for(i=0;i<256;i++){ | |
323 | - if (ps2keystatus[i]) return i; | |
324 | - } | |
325 | -*/ |