| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Bugfix in clear-screen.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
Pretty thin; perhaps we should put cursor management in words. But we don't
need every node in the list of words to know which word in the list the
cursor is at.
|
|
|
|
| |
Include a file for commit 7708.
|
|
|
|
|
|
|
| |
Fix the jarringness in the previous commit. Gap buffers now always occupy
the same width on screen regardless of where their cursor is. The price:
we sometimes have more whitespace between words. But that is perhaps a
good thing.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Not everything here is tested, but enough that I'm starting to feel confident.
We see our first divergence with apps/tile. In apps/tile we render everything,
then go back and figure out where to position the cursor. This relies on
some low-level smarts and is also quite klunky and complex.
In baremetal/shell I plan to do something simpler: maintain a tree of objects
where each level knows which sub-object under it has the cursor. Now I
can pass in the cursor object to each object, and if it detects that it
has the cursor it can recursively figure out which sub-object has the cursor.
The bottom-most objects (grapheme stacks) draw the cursor as they render
themselves. Single-pass algorithm, draw the cursor as you render, no low-level
smarts needed.
But there's a divergence. What in apps/tile used to look like this, with
a cursor ␣ at the end of the word 'abc':
abc␣def
..now looks like this:
abc␣ def
..with an extra space.
This could cause some jarring 'dancing' as you move the cursor through a
list of words.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Gap buffer with a more testable interface for rendering to screen.
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
When I'm also checking graphemes I assume that spaces can be in other bg
colors. However, if I want to closely check the bg color for a cell with
a space in it (ahem, cursor), I have to check the color in isolation.
|
| |
|
| |
|
|
|
|
| |
Convert comments about magic constants into metadata.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
|
|
|
| |
What I have so far is crap. Roll baremetal/boot.hex back to commit 7673.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
No handler yet, just initialization.
Bochs boots up; Qemu gets into a reboot loop.
Unlike the keyboard where I did the minimum necessary for Qemu, here I
am blindly copying something alleged to work on "real hardware." Makes
no difference to the failure modes I'm seeing.
Even in this tiny endeavor I see the abyss open up. Poke bytes at some
sequence of ports, read back bytes from some sequence ports; it's like
sending out prayers.
|
| |
|
| |
|
|
|
|
| |
Make some room for a mouse handler.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Somehow everything worked with this bug.
|
| |
|