diff --git a/Cargo.lock b/Cargo.lock index baaf1a60..372dc7d3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -73,9 +73,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "cc" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd9de9f2205d5ef3fd67e685b0df337994ddd4495e2a28d185500d0e1edfea47" +checksum = "f34d93e62b03caf570cccc334cbc6c2fceca82f39211051345108adcba3eebdc" dependencies = [ "shlex", ] @@ -201,9 +201,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.15.1" +version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a9bfc1af68b1726ea47d3d5109de126281def866b33970e10fbab11b5dafab3" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" dependencies = [ "allocator-api2", "equivalent", @@ -213,12 +213,12 @@ dependencies = [ [[package]] name = "hbbytecode" version = "0.1.0" -source = "git+https://git.ablecorp.us/AbleOS/holey-bytes.git#86ca959ea3eae1cb32298e135a444820583d24a0" +source = "git+https://git.ablecorp.us/AbleOS/holey-bytes.git#cf672beb79378fa2af529e12fd955204da443ac8" [[package]] name = "hblang" version = "0.1.0" -source = "git+https://git.ablecorp.us/AbleOS/holey-bytes.git#86ca959ea3eae1cb32298e135a444820583d24a0" +source = "git+https://git.ablecorp.us/AbleOS/holey-bytes.git#cf672beb79378fa2af529e12fd955204da443ac8" dependencies = [ "hashbrown", "hbbytecode", @@ -229,7 +229,7 @@ dependencies = [ [[package]] name = "hbvm" version = "0.1.0" -source = "git+https://git.ablecorp.us/AbleOS/holey-bytes.git#86ca959ea3eae1cb32298e135a444820583d24a0" +source = "git+https://git.ablecorp.us/AbleOS/holey-bytes.git#cf672beb79378fa2af529e12fd955204da443ac8" dependencies = [ "hbbytecode", ] @@ -375,9 +375,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.6.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" +checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" dependencies = [ "equivalent", "hashbrown", @@ -401,7 +401,7 @@ dependencies = [ "uart_16550", "versioning", "x2apic", - "x86_64 0.15.1", + "x86_64 0.15.2", "xml", ] @@ -421,9 +421,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.164" +version = "0.2.167" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "433bfe06b8c75da9b2e3fbea6e5329ff87748f0b144ef75306e674c3f6f7c13f" +checksum = "09d6582e104315a817dff97f75133544b2e094ee22447d2acf4a74e189ba06fc" [[package]] name = "limine" @@ -433,9 +433,9 @@ checksum = "02034f8f6b3e7bf050f310fbaf6db0018b8e54b75598d0a4c97172054752fede" [[package]] name = "litemap" -version = "0.7.4" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" +checksum = "643cb0b8d4fcc284004d5fd0d67ccf61dfffadb7f75e1e71bc420f4688a3a704" [[package]] name = "lock_api" @@ -593,9 +593,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.18" +version = "0.23.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c9cc1d47e243d655ace55ed38201c19ae02c148ae56412ab8750e8f0166ab7f" +checksum = "934b404430bb06b3fae2cba809eb45a1ab1aecd64491213d7c3301b88393f8d1" dependencies = [ "log", "once_cell", @@ -726,9 +726,9 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "syn" -version = "2.0.89" +version = "2.0.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d46482f1c1c87acd84dea20c1bf5ebff4c757009ed6bf19cfd36fb10e92c4e" +checksum = "919d3b74a5dd0ccd15aeb8f93e7006bd9e14c295087c9896a110f490752bcf31" dependencies = [ "proc-macro2", "quote", @@ -827,17 +827,20 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "ureq" -version = "2.10.1" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b74fc6b57825be3373f7054754755f03ac3a8f5d70015ccad699ba2029956f4a" +checksum = "b30e6f97efe1fa43535ee241ee76967d3ff6ff3953ebb430d8d55c5393029e7b" dependencies = [ "base64", + "litemap", "log", "once_cell", "rustls", "rustls-pki-types", "url", "webpki-roots", + "yoke", + "zerofrom", ] [[package]] @@ -996,7 +999,7 @@ dependencies = [ "bitflags 1.3.2", "paste", "raw-cpuid 10.7.0", - "x86_64 0.14.12", + "x86_64 0.14.13", ] [[package]] @@ -1012,9 +1015,9 @@ dependencies = [ [[package]] name = "x86_64" -version = "0.14.12" +version = "0.14.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96cb6fd45bfeab6a5055c5bffdb08768bd0c069f1d946debe585bbb380a7c062" +checksum = "c101112411baafbb4bf8d33e4c4a80ab5b02d74d2612331c61e8192fc9710491" dependencies = [ "bit_field", "bitflags 2.6.0", @@ -1024,9 +1027,9 @@ dependencies = [ [[package]] name = "x86_64" -version = "0.15.1" +version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bc79523af8abf92fb1a970c3e086c5a343f6bcc1a0eb890f575cbb3b45743df" +checksum = "0f042214de98141e9c8706e8192b73f56494087cc55ebec28ce10f26c5c364ae" dependencies = [ "bit_field", "bitflags 2.6.0", @@ -1044,9 +1047,9 @@ dependencies = [ [[package]] name = "yoke" -version = "0.7.5" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +checksum = "6c5b1314b079b0930c31e3af543d8ee1757b1951ae1e1565ec704403a7240ca5" dependencies = [ "serde", "stable_deref_trait", @@ -1068,9 +1071,9 @@ dependencies = [ [[package]] name = "zerofrom" -version = "0.1.5" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" +checksum = "91ec111ce797d0e0784a1116d0ddcdbea84322cd79e5d5ad173daeba4f93ab55" dependencies = [ "zerofrom-derive", ] diff --git a/sysdata/programs/ps2_driver/src/controller.hb b/sysdata/programs/ps2_driver/src/controller.hb index 029fdd27..c7767dbe 100644 --- a/sysdata/programs/ps2_driver/src/controller.hb +++ b/sysdata/programs/ps2_driver/src/controller.hb @@ -5,34 +5,38 @@ port1 := @as(Port, PORT_AT_STARTUP) port2 := @as(Port, PORT_AT_STARTUP) -$disable_port1 := fn(): void memory.outb(0x64, 0xAD) -$enable_port1 := fn(): void memory.outb(0x64, 0xAE) -$disable_port2 := fn(): void memory.outb(0x64, 0xA7) -$enable_port2 := fn(): void memory.outb(0x64, 0xA8) +//wiki.osdev.org/"8042"_PS/2_Controller#PS/2_Controller_IO_Ports +$CONTROLLER_PORT := 0x64 +$DATA_PORT := 0x60n + +$disable_port1 := fn(): void memory.outb(CONTROLLER_PORT, 0xAD) +$enable_port1 := fn(): void memory.outb(CONTROLLER_PORT, 0xAE) +$disable_port2 := fn(): void memory.outb(CONTROLLER_PORT, 0xA7) +$enable_port2 := fn(): void memory.outb(CONTROLLER_PORT, 0xA8) test_port1 := fn(): bool { - memory.outb(0x64, 0xAB) + memory.outb(CONTROLLER_PORT, 0xAB) loop if has_input(get_info()) break input := get_input() return input == 0x0 } test_port2 := fn(): bool { - memory.outb(0x64, 0xA9) + memory.outb(CONTROLLER_PORT, 0xA9) loop if has_input(get_info()) break input := get_input() return input == 0x0 } get_config_byte := fn(): u8 { - memory.outb(0x64, 0x20) + memory.outb(CONTROLLER_PORT, 0x20) loop if has_input(get_info()) break return get_input() } Info := struct {d: u8} -$get_info := fn(): Info return .(memory.inb(0x64)) +$get_info := fn(): Info return .(memory.inb(CONTROLLER_PORT)) //inline when can has_input := fn(info: Info): bool return bit0(info.d) can_send := fn(info: Info): bool return bit1(info.d) == false @@ -46,16 +50,18 @@ get_port := fn(info: Info): ^Port { } } +//T +port2_ptr := &port2 send_byte := fn(port: ^Port, byte: u8): void { - if port == &port2 { - memory.outb(0x64, 0xD4) + if port == port2_ptr { + memory.outb(CONTROLLER_PORT, 0xD4) } loop if can_send(get_info()) break - memory.outb(0x60, byte) + memory.outb(DATA_PORT, byte) } -$get_input := fn(): u8 return memory.inb(0x60) -$write_out := fn(data: u8): void memory.outb(0x60, data) +$get_input := fn(): u8 return memory.inb(DATA_PORT) +$write_out := fn(data: u8): void memory.outb(DATA_PORT, data) flush_input := fn(): void { loop if has_input(get_info()) == false break else get_info()