apps,nanos-lite,proc: press F12 to change game
This commit is contained in:
parent
4793cd1ac8
commit
c58336da18
|
@ -15,6 +15,10 @@ size_t read_events(void *buf) {
|
|||
char keydown_char = (key & 0x8000 ? 'd' : 'u');
|
||||
key &= ~0x8000;
|
||||
if (key != _KEY_NONE) {
|
||||
if (key == _KEY_F12 && keydown_char == 'u') {
|
||||
extern void change_game(void);
|
||||
change_game();
|
||||
}
|
||||
return sprintf(buf, "k%c %s\n", keydown_char, names[key]) - 1;
|
||||
}
|
||||
else {
|
||||
|
|
|
@ -26,6 +26,7 @@ int main() {
|
|||
|
||||
load_prog("/bin/pal");
|
||||
load_prog("/bin/hello");
|
||||
load_prog("/bin/litenes");
|
||||
|
||||
_trap();
|
||||
|
||||
|
|
|
@ -22,12 +22,18 @@ void load_prog(const char *filename) {
|
|||
}
|
||||
|
||||
static int cnt = 0;
|
||||
static PCB* game_pcb = &pcb[0];
|
||||
|
||||
void change_game() {
|
||||
Log("game change!");
|
||||
game_pcb = (game_pcb == &pcb[0] ? &pcb[2] : &pcb[0]);
|
||||
}
|
||||
|
||||
_RegSet* schedule(_RegSet *prev) {
|
||||
// when current == NULL at the very beginning, it will not cover
|
||||
// any valid data, so it will be safe to write to memory near NULL
|
||||
current->tf = prev;
|
||||
if (current == &pcb[0]) {
|
||||
if (current == game_pcb) {
|
||||
cnt ++;
|
||||
if (cnt == 200) {
|
||||
current = &pcb[1];
|
||||
|
@ -35,7 +41,7 @@ _RegSet* schedule(_RegSet *prev) {
|
|||
}
|
||||
}
|
||||
else {
|
||||
current = &pcb[0];
|
||||
current = game_pcb;
|
||||
}
|
||||
_switch(¤t->as);
|
||||
return current->tf;
|
||||
|
|
Loading…
Reference in New Issue