• 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

Revision84d223af7509730f6d3f4711bb8fea56a0bb31d9 (tree)
Time2019-05-03 09:15:23
AuthorKatsumi <kmorimatsu@sour...>
CommiterKatsumi

Log Message

Megalopa: revise KEYS interrupt.

Change Summary

Incremental Difference

--- a/mips/megalopa/envspecific.h
+++ b/mips/megalopa/envspecific.h
@@ -20,9 +20,6 @@ void pre_run(void);
2020 void post_run(void);
2121 void err_peri_not_init(void);
2222
23-// KEYPORT mask for available button inputs
24-#define KEYPORTMASK (KEYUP|KEYDOWN|KEYLEFT|KEYRIGHT|KEYSTART|KEYFIRE)
25-
2623 // 30, 36, 40, 48, 64, 80 characters per line for Megalopa
2724 void printcomma(void);
2825
--- a/mips/megalopa/help.txt
+++ b/mips/megalopa/help.txt
@@ -865,6 +865,7 @@ ON GOTO分やON GOSUB文はサポートしていません。ただし、例え
865865  ・割り込み機能(INTERRUPTステートメント)を追加。
866866  ・オプション機能(OPTIONステートメント)を追加。
867867  ・アイドル機能(IDLEステートメント)を追加。
868+ ・READKEY()関数を追加。
868869  ・EXEC()関数を追加。
869870  ・変数名などで、英数字に加えてアンダースコアーが使用可能に。
870871  ・PRINTでカンマを使った時の表示不具合を修正。
--- a/mips/megalopa/timer.c
+++ b/mips/megalopa/timer.c
@@ -44,7 +44,6 @@ int g_int_vector[NUM_INTERRUPT_TYPES];
4444
4545 // Current button status
4646 static int g_keys_interrupt;
47-static unsigned short g_keys_mask;
4847
4948 /*
5049 Initialize and termination
@@ -346,13 +345,18 @@ void CS0Handler(void){
346345 // Raise DRAWCOUNT interrupt flag
347346 raise_interrupt_flag(INTERRUPT_DRAWCOUNT);
348347 // Check buttons
349- keys=KEYPORT&KEYPORTMASK;
350- if (g_keys_mask==KEYPORTMASK && 0<=g_keys_interrupt && g_keys_interrupt!=keys) {
348+ if (inPS2MODE()) {
349+ keys=readbuttons();
350+ ps2mode();
351+ } else {
352+ keys=readbuttons();
353+ }
354+ keys=keys & (KEYUP|KEYDOWN|KEYLEFT|KEYRIGHT|KEYSTART|KEYFIRE);
355+ if (0<=g_keys_interrupt && g_keys_interrupt!=keys) {
351356 // Raise KEYS interrupt flag
352357 raise_interrupt_flag(INTERRUPT_KEYS);
353358 }
354359 g_keys_interrupt=keys;
355- g_keys_mask=KEYPORTMASK;
356360 // Check PS/2 keyboard input
357361 if (g_int_vector[INTERRUPT_INKEY]) {
358362 if (keycodeExists()) raise_interrupt_flag(INTERRUPT_INKEY);