mirror of
https://github.com/exoticorn/microw8.git
synced 2026-01-20 11:16:42 +01:00
Compare commits
1 Commits
v0.2.1-che
...
v0.2.1-sou
| Author | SHA1 | Date | |
|---|---|---|---|
| fa089100be |
1861
Cargo.lock
generated
1861
Cargo.lock
generated
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -372,7 +372,16 @@ export fn printChar(char: i32) {
|
|||||||
global mut controlCodeLength = 0;
|
global mut controlCodeLength = 0;
|
||||||
|
|
||||||
fn printSingleChar(char: i32) {
|
fn printSingleChar(char: i32) {
|
||||||
if outputChannel >= 2 & (char < 4 | char > 6) {
|
if char >= 4 & char <= 6 {
|
||||||
|
outputChannel = char - 4;
|
||||||
|
if !outputChannel {
|
||||||
|
textCursorX = 0;
|
||||||
|
textCursorY = 0;
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if outputChannel >= 2 {
|
||||||
logChar(char);
|
logChar(char);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -390,15 +399,6 @@ fn printSingleChar(char: i32) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if char >= 4 & char <= 6 {
|
|
||||||
outputChannel = char - 4;
|
|
||||||
if !outputChannel {
|
|
||||||
textCursorX = 0;
|
|
||||||
textCursorY = 0;
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if char == 7 {
|
if char == 7 {
|
||||||
80?0 = 80?0 ^ 2;
|
80?0 = 80?0 ^ 2;
|
||||||
return;
|
return;
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -134,10 +134,6 @@ impl super::Runtime for MicroW8 {
|
|||||||
let end_frame = platform_instance.get_typed_func::<(), (), _>(&mut store, "endFrame")?;
|
let end_frame = platform_instance.get_typed_func::<(), (), _>(&mut store, "endFrame")?;
|
||||||
let update = instance.get_typed_func::<(), (), _>(&mut store, "upd").ok();
|
let update = instance.get_typed_func::<(), (), _>(&mut store, "upd").ok();
|
||||||
|
|
||||||
if let Some(start) = instance.get_typed_func::<(), (), _>(&mut store, "start").ok() {
|
|
||||||
start.call(&mut store, ())?;
|
|
||||||
}
|
|
||||||
|
|
||||||
let (sound_tx, stream) = if self.disable_audio {
|
let (sound_tx, stream) = if self.disable_audio {
|
||||||
(None, None)
|
(None, None)
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ use warp::{http::Response, Filter};
|
|||||||
pub struct RunWebServer {
|
pub struct RunWebServer {
|
||||||
cart: Arc<Mutex<Vec<u8>>>,
|
cart: Arc<Mutex<Vec<u8>>>,
|
||||||
tx: broadcast::Sender<()>,
|
tx: broadcast::Sender<()>,
|
||||||
socket_addr: SocketAddr,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl RunWebServer {
|
impl RunWebServer {
|
||||||
@@ -19,13 +18,8 @@ impl RunWebServer {
|
|||||||
let cart = Arc::new(Mutex::new(Vec::new()));
|
let cart = Arc::new(Mutex::new(Vec::new()));
|
||||||
let (tx, _) = broadcast::channel(1);
|
let (tx, _) = broadcast::channel(1);
|
||||||
|
|
||||||
let socket_addr = "127.0.0.1:3030"
|
|
||||||
.parse::<SocketAddr>()
|
|
||||||
.expect("Failed to parse socket address");
|
|
||||||
|
|
||||||
let server_cart = cart.clone();
|
let server_cart = cart.clone();
|
||||||
let server_tx = tx.clone();
|
let server_tx = tx.clone();
|
||||||
let server_addr = socket_addr.clone();
|
|
||||||
thread::spawn(move || {
|
thread::spawn(move || {
|
||||||
let rt = tokio::runtime::Builder::new_current_thread()
|
let rt = tokio::runtime::Builder::new_current_thread()
|
||||||
.enable_io()
|
.enable_io()
|
||||||
@@ -53,26 +47,24 @@ impl RunWebServer {
|
|||||||
warp::sse::reply(warp::sse::keep_alive().stream(event_stream(&server_tx)))
|
warp::sse::reply(warp::sse::keep_alive().stream(event_stream(&server_tx)))
|
||||||
});
|
});
|
||||||
|
|
||||||
let server_future = warp::serve(html.or(cart).or(events)).bind(server_addr);
|
let socket_addr = "127.0.0.1:3030"
|
||||||
|
.parse::<SocketAddr>()
|
||||||
|
.expect("Failed to parse socket address");
|
||||||
|
|
||||||
|
let server_future = warp::serve(html.or(cart).or(events)).bind(socket_addr);
|
||||||
|
println!("Point browser at http://{}", socket_addr);
|
||||||
|
let _ignore_result = webbrowser::open(&format!("http://{}", socket_addr));
|
||||||
server_future.await
|
server_future.await
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
RunWebServer {
|
RunWebServer { cart, tx }
|
||||||
cart,
|
|
||||||
tx,
|
|
||||||
socket_addr,
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl super::Runtime for RunWebServer {
|
impl super::Runtime for RunWebServer {
|
||||||
fn load(&mut self, module_data: &[u8]) -> Result<()> {
|
fn load(&mut self, module_data: &[u8]) -> Result<()> {
|
||||||
if let Ok(mut lock) = self.cart.lock() {
|
if let Ok(mut lock) = self.cart.lock() {
|
||||||
if lock.is_empty() && !module_data.is_empty() {
|
|
||||||
println!("Point browser at http://{}", self.socket_addr);
|
|
||||||
let _ignore_result = webbrowser::open(&format!("http://{}", self.socket_addr));
|
|
||||||
}
|
|
||||||
lock.clear();
|
lock.clear();
|
||||||
lock.extend_from_slice(module_data);
|
lock.extend_from_slice(module_data);
|
||||||
}
|
}
|
||||||
@@ -94,4 +86,4 @@ impl Default for RunWebServer {
|
|||||||
fn default() -> RunWebServer {
|
fn default() -> RunWebServer {
|
||||||
RunWebServer::new()
|
RunWebServer::new()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
include "../examples/include/microw8-api.cwa"
|
|
||||||
|
|
||||||
export fn start() {
|
|
||||||
printChar('Test');
|
|
||||||
}
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
include "../examples/include/microw8-api.cwa"
|
|
||||||
|
|
||||||
export fn upd() {
|
|
||||||
printString(USER_MEM);
|
|
||||||
}
|
|
||||||
|
|
||||||
data USER_MEM {
|
|
||||||
i8(12, 31, 5, 6) "Text mode"
|
|
||||||
i8(5, 31, 4, 5) "Graphics mode"
|
|
||||||
i8(6) "Console output\nSecond line\n"
|
|
||||||
i8(4, 31, 4, 12) "Back to text mode"
|
|
||||||
i8(0)
|
|
||||||
}
|
|
||||||
@@ -15,4 +15,4 @@ pollster = "0.2"
|
|||||||
bytemuck = { version = "1.4", features = [ "derive" ] }
|
bytemuck = { version = "1.4", features = [ "derive" ] }
|
||||||
anyhow = "1"
|
anyhow = "1"
|
||||||
minifb = { version = "0.23.0", default-features = false, features = ["x11"] }
|
minifb = { version = "0.23.0", default-features = false, features = ["x11"] }
|
||||||
winapi = "0.3.9"
|
winapi = { version = "0.3.9", features = ["std"] }
|
||||||
|
|||||||
@@ -263,10 +263,6 @@ export default function MicroW8(screen, config = {}) {
|
|||||||
window.addEventListener('blur', () => updateVisibility(false), { signal: abortController.signal });
|
window.addEventListener('blur', () => updateVisibility(false), { signal: abortController.signal });
|
||||||
updateVisibility(document.hasFocus());
|
updateVisibility(document.hasFocus());
|
||||||
|
|
||||||
if (instance.exports.start) {
|
|
||||||
instance.exports.start();
|
|
||||||
}
|
|
||||||
|
|
||||||
function mainloop() {
|
function mainloop() {
|
||||||
if (!keepRunning) {
|
if (!keepRunning) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
Reference in New Issue
Block a user