update_running_msg();
break;
}
-
- case 'input': {
- let input_array = new Uint8Array(input_shared_buffer);
- Atomics.store(input_array, 0, 0);
- let msg = prompt("Line: ");
- input_array.fill(0);
-
- for (let i=0; i<msg.length && i<input_array.length - 1; i++) {
- input_array[i + 1] = msg.charCodeAt(i);
- }
-
- Atomics.store(input_array, 0, 1);
- break;
- }
}
};
write_output(input + "\n", false);
- let input_array = new Uint8Array(input_shared_buffer);
- Atomics.store(input_array, 0, 0);
+ let input_array = new Uint8Array(input_shared_buffer, 4);
input_array.fill(0);
for (let i=0; i<input.length && i<input_array.length - 1; i++) {
- input_array[i + 1] = input.charCodeAt(i);
+ input_array[i] = input.charCodeAt(i);
}
- Atomics.store(input_array, 0, 1);
+ let atomic_array = new Int32Array(input_shared_buffer);
+ Atomics.store(atomic_array, 0, 1);
+ Atomics.notify(atomic_array, 0);
inputbar.value = "";
}
return Date.now();
},
- read_line_available: async function() {
- let input_array = new Uint8Array(input_shared_buffer);
- while (Atomics.load(input_array, 0) == 0);
+ read_line_available: function() {
+ let input_array = new Int32Array(input_shared_buffer);
+ Atomics.store(input_array, 0, 0);
+ Atomics.wait(input_array, 0, 0);
},
read_line(msgptr, msglen) { // Returns actual length
let input_array = new Uint8Array(input_shared_buffer);
let i;
- for (i=0; input_array[i + 1] != 0 && i<msglen; i++) {
- data[i] = input_array[i + 1];
+ for (i=0; input_array[i + 4] != 0 && i<msglen; i++) {
+ data[i] = input_array[i + 4];
}
- Atomics.store(input_array, 0, 0);
+ let atomic_stuff = new Int32Array(input_shared_buffer);
+ Atomics.store(atomic_stuff, 0, 0);
return i;
},