about summary refs log tree commit diff stats
path: root/baremetal
Commit message (Collapse)AuthorAgeFilesLines
* 7739 - baremetal/shell: first draft of loopKartik K. Agaram2021-02-142-62/+237
| | | | | This is quite new and speculative. I tried to list out some potential future tests later when we add 'return'. We'll see how it goes.
* 7738Kartik Agaram2021-02-131-5/+2
|
* 7736Kartik K. Agaram2021-02-131-22/+34
| | | | Game of Life with a larger grid.
* 7735 - baremetal: game of life simulatorKartik K. Agaram2021-02-131-0/+243
|
* 7734 - baremetal/shell: break out of groupKartik K. Agaram2021-02-131-2/+93
|
* 7733 - baremetal/shell: conditional skips groupsKartik K. Agaram2021-02-131-1/+83
|
* 7732 - baremetal/shell: grouping wordsKartik K. Agaram2021-02-121-1/+95
| | | | Now there's a neat resonance carrying over all 3 levels of Mu notation.
* 7731 - baremetal/shell: conditional executionKartik K. Agaram2021-02-121-3/+69
|
* 7730 - baremetal/shell: boolean valuesKartik K. Agaram2021-02-123-10/+226
| | | | | In the process I found a bug in the Mu compiler. Limitations of just asserting the emitted code but not running it.
* 7729Kartik K. Agaram2021-02-121-3/+3
|
* 7728Kartik K. Agaram2021-02-121-0/+30
|
* 7727 - baremetal/shell: 1+1Kartik K. Agaram2021-02-113-0/+35
|
* 7726Kartik K. Agaram2021-02-113-7/+210
|
* 7725 - baremetal/shell: start on evaluatorKartik K. Agaram2021-02-112-0/+174
|
* 7724 - baremetal: rendering array valuesKartik K. Agaram2021-02-115-0/+1644
|
* 7723 - baremetal: rendering string valuesKartik K. Agaram2021-02-116-3/+370
|
* 7722Kartik K. Agaram2021-02-111-0/+2
|
* 7721 - baremetal: start rendering valuesKartik K. Agaram2021-02-111-0/+84
|
* 7720 - baremetal: load more sectors againKartik K. Agaram2021-02-111-10/+26
|
* 7719 - baremetal: print floatsKartik K. Agaram2021-02-114-0/+646
|
* 7718Kartik K. Agaram2021-02-111-4/+4
| | | | Bugfix in clear-screen.
* 7717 - baremetal: enable FPU (I think)Kartik K. Agaram2021-02-112-5/+20
|
* 7716Kartik K. Agaram2021-02-101-0/+8
|
* 7715Kartik K. Agaram2021-02-101-2/+1
|
* 7714Kartik K. Agaram2021-02-101-0/+8
|
* 7713Kartik K. Agaram2021-02-105-14/+20
|
* 7712Kartik K. Agaram2021-02-101-71/+0
|
* 7711 - baremetal/shell: line data structureKartik K. Agaram2021-02-102-4/+176
| | | | | | 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.
* 7710Kartik K. Agaram2021-02-101-0/+58
| | | | Include a file for commit 7708.
* 7709Kartik K. Agaram2021-02-092-24/+28
| | | | | | | 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.
* 7708 - baremetal/shell: word data structureKartik K. Agaram2021-02-092-1/+786
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* 7707Kartik K. Agaram2021-02-091-0/+14
|
* 7706Kartik K. Agaram2021-02-092-9/+30
|
* 7705Kartik K. Agaram2021-02-091-6/+3
|
* 7704Kartik K. Agaram2021-02-091-6/+6
|
* 7703Kartik K. Agaram2021-02-091-0/+3
|
* 7702Kartik K. Agaram2021-02-092-7/+7
|
* 7701Kartik K. Agaram2021-02-093-9/+9
|
* 7699Kartik K. Agaram2021-02-082-11/+442
| | | | Gap buffer with a more testable interface for rendering to screen.
* 7698 - starting to test-drive baremetal shellKartik Agaram2021-02-074-5/+259
|
* 7697Kartik Agaram2021-02-071-4/+6
|
* 7696Kartik Agaram2021-02-071-1/+0
|
* 7695 - baremetal: second bg assertion for spacesKartik Agaram2021-02-071-1/+60
| | | | | | 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.
* 7694 - baremetal: asserting bg color in testsKartik Agaram2021-02-072-7/+103
|
* 7693 - baremetal: pass background color everywhereKartik Agaram2021-02-0714-117/+137
|
* 7690Kartik Agaram2021-02-0712-117/+117
| | | | Convert comments about magic constants into metadata.
* 7687Kartik Agaram2021-02-051-0/+3
|
* 7686Kartik Agaram2021-02-041-2/+2
|
* 7684 - baremetal will have no mouseKartik Agaram2021-02-032-8/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* 7683Kartik Agaram2021-02-011-1/+1
|