about summary refs log tree commit diff stats
path: root/baremetal/boot.bochsrc
diff options
context:
space:
mode:
authorKartik Agaram <vc@akkartik.com>2021-02-03 09:49:40 -0800
committerKartik Agaram <vc@akkartik.com>2021-02-03 09:49:40 -0800
commit022ecb94f055a3f221092ee9ac2b5f842a83a912 (patch)
tree2484033ba59c88734f162194d0ab35143a7f7016 /baremetal/boot.bochsrc
parent7212178bc6cd2cf4bf8ab90eea5d43a89e2eec60 (diff)
downloadmu-022ecb94f055a3f221092ee9ac2b5f842a83a912.tar.gz
7684 - baremetal will have no mouse
I spent a week on trying to support it, and I am now past the five
stages of grief.

-- Important things I read
https://web.archive.org/web/20040604041507/http://panda.cs.ndsu.nodak.edu/~achapwes/PICmicro/keyboard/atkeyboard.html
https://web.archive.org/web/20040604043149/http://panda.cs.ndsu.nodak.edu/~achapwes/PICmicro/mouse/mouse.html

https://wiki.osdev.org/index.php?title=Mouse_Input&oldid=23086#Waiting_to_Send_Bytes_to_Port_0x60_and_0x64
  says command 0xa8 is optional

SaniK: https://forum.osdev.org/viewtopic.php?t=10247
  recommends command 0xa8 before setting Compaq Status byte

Setting Compaq status byte before 0xa8: https://forum.osdev.org/viewtopic.php?f=1&t=19873
  This thread also suggests that keeping reads from keyboard vs mouse straight
  is non-trivial.

-- Where I got stuck
Following SaniK's recipe doesn't seem to work. It seems like not sending
the 0xa8 command gets us a little closer. I saw the mouse handler
trigger, but it seems to not actually happen in response to mouse
events (vector 0x74 in the interrupt descriptor table).

-- Other options that may be worth considering
USB mouse
Serial mouse

Implementing a PS/2 handler in SubX
  would require somehow referring to SubX labels in this file

It seems clear that a mouse driver is complex enough to need a
higher-level language than just hex bytes. But it's _not_ clear how to
_explain_ a mouse driver. There's just a lot of random rules, historical
anecdotes, just-so stories and sheer black magic here. I'm going to try
to do without it all. Mu will be a keyboard-only computer for the
foreseeable future.
Diffstat (limited to 'baremetal/boot.bochsrc')
-rw-r--r--baremetal/boot.bochsrc4
1 files changed, 2 insertions, 2 deletions
diff --git a/baremetal/boot.bochsrc b/baremetal/boot.bochsrc
index 4ddd2ca1..7745d972 100644
--- a/baremetal/boot.bochsrc
+++ b/baremetal/boot.bochsrc
@@ -1,7 +1,7 @@
-# Configuration for the Bochs x86 CPU emulator to run the output of baremetal/boot.hex
+# Configuration for the Bochs x86 CPU emulator to run baremetal Mu programs
 # See baremetal/boot.hex for more details.
 
 ata0-master: type=disk, path="disk.img", mode=flat, cylinders=20, heads=16, spt=63  # 10MB, 512 bytes per sector
 boot: disk
-mouse: enabled=1, toggle=ctrl+f10
+# PS/2 mouse requires black magic that I don't know how to explain.
 log: -