Kartik Agaram
f29b6c6b1a
7383
...
Currently at commit 7377 except without 7376 (enabling interrupts). Works
as advertised.
2020-12-23 10:03:51 -08:00
Kartik Agaram
de7bd3998b
7382 - snapshot
...
Turns out I've been "testing" with a stale file since commit 7373. We need
to go over everything since then.
2020-12-23 08:41:53 -08:00
Kartik Agaram
e82e7d644c
7381
2020-12-23 00:39:42 -08:00
Kartik Agaram
364133226c
7380
2020-12-23 00:37:39 -08:00
Kartik Agaram
e412bf9443
7379
2020-12-23 00:34:46 -08:00
Kartik Agaram
6a9fff36c4
7378
...
Turns out we only had access to 50% of RAM so far. Closing my nose and
moving right along..
Though this _does_ give me practice interacting with ports. That'll be
handy for the keyboard.
2020-12-23 00:20:36 -08:00
Kartik Agaram
2e7798e39c
7377
...
Ooh, look at that, the device number comes conveniently initialized in
the right register. No need to hardcode it.
https://wiki.osdev.org/MBR_(x86)
2020-12-23 00:04:20 -08:00
Kartik Agaram
2b61e5e0a0
7376
2020-12-23 00:04:20 -08:00
Kartik Agaram
6216a79974
7375
...
A little more robustness after reading https://stackoverflow.com/questions/43786251/int-13h-42h-doesnt-load-anything-in-bochs/43787939#43787939
2020-12-23 00:04:20 -08:00
Kartik Agaram
50c994dd88
7373
...
apps/boot.hex doesn't need much by way of syntax highlighting. Have it
work even for people who haven't installed subx.vim
2020-12-21 00:22:12 -08:00
Kartik Agaram
0a4cf3397f
7372 - successful read from disk using BIOS
2020-12-21 00:21:51 -08:00
Kartik Agaram
e4edacfecb
7371
2020-12-21 00:13:03 -08:00
Kartik Agaram
946dfe7ffb
7370
...
Use a more realistically sized disk image. Now we can read the second sector.
2020-12-21 00:04:38 -08:00
Kartik Agaram
6ac16fd1ae
7369 - read hard disk using BIOS
...
There were two problems:
a) We have only 1 sector per track (spt=1), so 'second sector' is meaningless.
b) Drives 0-127 are reserved for floppies.
2020-12-20 23:52:21 -08:00
Kartik Agaram
a350fb4c68
7368 - ooh, int 13h works with a floppy
...
Lots of great tips here:
https://stackoverflow.com/questions/43786251/int-13h-42h-doesnt-load-anything-in-bochs/43787939#43787939
2020-12-20 23:37:43 -08:00
Kartik Agaram
d12094ee4d
7367 - start of boot sector for Mu computer
...
Not working yet. Reading sectors from disk returns an error (sets carry
flag).
2020-12-20 22:58:37 -08:00
Kartik Agaram
9b867ab438
7366
...
Move more padding around.
Reading a sector from disk requires about 24 bytes of code.
2020-12-20 21:02:52 -08:00
Kartik Agaram
61a2813f2f
7365
2020-12-20 20:53:08 -08:00
Kartik Agaram
d26836caae
7364
2020-12-20 20:51:15 -08:00
Kartik Agaram
c1ffd4c0a6
7363
...
Kinda brutal way to lose the bochs warning. Should suffice for now. As
we add more code we'll introduce more sectors.
2020-12-20 20:47:19 -08:00
Kartik Agaram
3f6bb8a0ca
7362
...
I hadn't noticed that bochs was getting into a reset loop after executing
my code correctly. Fix that.
2020-12-20 20:38:29 -08:00
Kartik Agaram
d5a9a92452
7361
...
Switch bochs from floppy to hard disk.
Bochs throws a new warning, but otherwise 32bit.hex continues to work.
2020-12-20 20:13:15 -08:00
Kartik Agaram
72e34ecb63
7360
...
Insert padding in a few places so we don't have to recalculate addresses
quite so much.
2020-12-20 20:03:02 -08:00
Kartik Agaram
02135b7ae8
7359 - boot into 32-bit mode
2020-12-20 00:44:23 -08:00
Kartik Agaram
9b5b8471ca
7358
...
Snapshot: first draft of a boot image that switches to 32-bit mode as quickly
as possible (~70 bytes)
Doesn't work yet. Gets stuck in an infinite reset loop.
2020-12-20 00:16:15 -08:00
Kartik Agaram
70bb19100e
7357
2020-12-19 21:22:28 -08:00
Kartik Agaram
1e46a0f6b2
7356
2020-12-19 21:09:05 -08:00
Kartik Agaram
a84fadd65d
7355 - learning to boot into 32-bit mode
...
These exercises are from the incomplete "Writing a simple operating system
from scratch" by Nick Blundell.
https://www.cs.bham.ac.uk/~exr/lectures/opsys/10_11/lectures/os-dev.pdf
2020-12-19 21:06:05 -08:00
Kartik Agaram
cbe8bfd87a
7354 - tile: stop trying to center menu
2020-12-14 22:29:34 -08:00
Kartik Agaram
8c2e580e0f
7353
2020-12-14 22:18:02 -08:00
Kartik Agaram
001efc35f0
7352
2020-12-14 22:14:13 -08:00
Kartik Agaram
88152c621a
7350 - mu.subx optimization: skip no-op copies
2020-12-11 22:43:09 -08:00
Kartik Agaram
a6167c6472
7349
2020-12-11 21:59:22 -08:00
Kartik Agaram
84f7026e82
7348 - mu.subx bug with string literals
2020-12-11 21:52:55 -08:00
Kartik Agaram
1626a32f2d
7347 - tile: separate sandbox and function menus
2020-12-06 22:16:22 -08:00
Kartik Agaram
026ab21673
7346
2020-12-06 22:13:48 -08:00
Kartik Agaram
35898016ac
7345
2020-12-06 22:12:49 -08:00
Kartik Agaram
b0d323ff87
7344
2020-12-06 22:08:12 -08:00
Kartik Agaram
601785364f
7343
2020-12-06 22:06:44 -08:00
Kartik Agaram
642c7c8cab
7342 - tile: hotkeys for ending function edit
2020-12-06 21:57:27 -08:00
Kartik Agaram
bec147690f
7341 - tile: function editing done
...
A tiny modicum of reuse amidst all this copypasta: I'm able to reuse the
same function that renders lines without stacks in the sandbox.
2020-12-06 21:48:39 -08:00
Kartik Agaram
4cf5916c2b
7340 - tile: function editing almost done
...
Still a bug in cursor positioning. It's always shown at the start of the
function body.
2020-12-06 21:47:53 -08:00
Kartik Agaram
60ac5d9e93
7339 - tile: position cursor in correct function
...
Still can't edit functions, but we're getting there.
2020-12-06 20:57:43 -08:00
Kartik Agaram
5c46d55532
7338 - tile: architecture starting to crystallize
...
In particular, I'm starting to have opinions about how to scalably position
the cursor at the end of each frame.
One advantage of text mode without a pointer device (mouse/trackpad): only
one cursor to track. UI can't be modified anywhere. That simplifies any
reactive UI framework.
2020-12-05 21:01:30 -08:00
Kartik Agaram
4ef29dc9d5
7337 - tile: jumping to a function
...
We can't yet edit the function once we jump to it.
2020-12-05 01:17:52 -08:00
Kartik Agaram
fcdd9238cb
7336 - tile: back to function editing
2020-12-05 00:20:10 -08:00
Kartik Agaram
68a5032ccd
7334 - advent day 5 done
2020-12-04 23:35:18 -08:00
Kartik Agaram
d893ae58b7
7333 - advent day 5 part 1
2020-12-04 23:25:21 -08:00
Kartik Agaram
6570a0c146
7332 - advent day 4 done
...
The code is shit and I can't be arsed to clean it up. But it was a useful
exercise given the bugs and gaps it caught in Mu.
2020-12-04 23:02:53 -08:00
Kartik Agaram
eea6659a40
7331 - hacky way to convert slice to string
2020-12-04 23:02:53 -08:00
Kartik Agaram
273c42c066
7330 - snapshot: advent day 4 part 2 easy cases
...
Now I need to tune the SubX vocabulary.
2020-12-04 23:02:53 -08:00
Kartik Agaram
18d5bab2b6
7329 - snapshot: advent day 4 part 2
...
I've found two bugs in SubX libraries:
1. next-word had an out-of-bounds read
2. next-word was skipping comments, because that's what I need during bootstrapping.
I've created a new variant called next-raw-word that doesn't skip comments.
These really need better names.
We're now at the point where 4b.mu has the right structure and returns
identical result to 4a.mu.
2020-12-04 23:02:53 -08:00
Kartik Agaram
8a8db34f25
7328 - advent day 4 part 1
...
Bug #1 : forgot to process final passport
Stupid mistake #2 : was reporting invalid rather than valid passports
2020-12-04 21:01:59 -08:00
Kartik Agaram
2d14f6c971
7327
2020-12-03 21:49:03 -08:00
Kartik Agaram
f2ee237eea
7326
2020-12-03 21:43:21 -08:00
Kartik Agaram
6c7d9300e2
7325 - tile: start implementing function editing
2020-12-03 21:22:32 -08:00
Kartik Agaram
ed59e2eda9
7323 - advent day 3 done
...
Stupid mistake; I missed one slope in the question.
2020-12-02 22:32:27 -08:00
Kartik Agaram
50973ad178
7322 - snapshot: advent day 3 part 2
...
Answer isn't right.
2020-12-02 22:21:07 -08:00
Kartik Agaram
124f515826
7321 - advent day 3 part 1
2020-12-02 22:12:55 -08:00
Kartik Agaram
36b4bf1f1b
7320 - snapshot: advent day 3 part 1
2020-12-02 22:08:37 -08:00
Kartik Agaram
f60ebed0fb
7318 - advent day 2 done
...
Funny story: I got the right answer for part 1 even though I missed the
':' in the line format. But of course that didn't work for part 2.
2020-12-02 19:36:10 -08:00
Kartik Agaram
a41a6eadd1
7317 - advent day 2 part 1
...
https://adventofcode.com/2020/day/2
2020-12-02 19:20:06 -08:00
Kartik Agaram
74bc598c44
7316
2020-12-01 01:19:07 -08:00
Kartik Agaram
3d291822ca
7315
2020-12-01 01:03:30 -08:00
Kartik Agaram
05ad07b63e
7313 - advent: day 1 done
2020-12-01 01:01:49 -08:00
Kartik Agaram
69f4c36b71
7312 - advent: snapshot of 1b
2020-12-01 00:54:09 -08:00
Kartik Agaram
a06611f35c
7310 - advent day 1 part 1
...
In the process I had to:
* Fix a bug in reading lines from stdin into streams
* Start trailing newlines when parsing ints from streams
* Implement `find` in an array
2020-12-01 00:32:43 -08:00
Kartik Agaram
8a73ef7052
7309 - tile: parsing strings into words
2020-11-30 23:20:13 -08:00
Kartik Agaram
3c84f1ae41
7308
2020-11-29 16:52:46 -08:00
Kartik Agaram
55dfa5b985
7305 - make float-size more consistent as well
2020-11-29 13:26:48 -08:00
Kartik Agaram
ee3ddc3961
7302 - tile: at long last, division
...
Also square roots.
But there's a bug in rendering floats without precision.
2020-11-29 12:51:57 -08:00
Kartik Agaram
614b132b2e
7301 - tile: float computations now working
2020-11-29 12:45:23 -08:00
Kartik Agaram
61cfedceef
7300 - bugfix in type-checking float returns
2020-11-29 12:42:34 -08:00
Kartik Agaram
33a85545e1
7299 - bug in code-generating float returns
2020-11-29 12:20:08 -08:00
Kartik Agaram
6b1cde4761
7297 - tile: use floats everywhere
2020-11-29 12:17:23 -08:00
Kartik Agaram
a518d84bf4
7295
2020-11-29 03:40:12 -08:00
Kartik Agaram
8766aa12cd
7294
2020-11-28 08:31:55 -08:00
Kartik Agaram
bbcf033aff
7292 - mu.subx: loosen copy-byte checks a bit
...
Without this there's no way to convert an int to a byte. And that feels
too restrictive, and gives up a lot of safe things one might want to do
with bytes. (Such as divide a number by 10 and emit the remainder as a
byte.)
2020-11-27 22:44:23 -08:00
Kartik Agaram
bcd2adfbf3
7291
2020-11-27 22:27:34 -08:00
Kartik Agaram
6f65b65f7d
7290
...
I've wrestled for a long time with how to support integer division with
its hard-coded registers. The answer's always been staring me in the face:
just turn it into a function! We already expect function outputs to go
to hard-coded registers.
2020-11-27 21:37:20 -08:00
Kartik Agaram
3341af3d92
7288
2020-11-27 00:26:27 -08:00
Kartik Agaram
530af63477
7287
...
Regression: I'd broken compare on bytes. Apparently I took away support
for bytes from numberlike-output even though I didn't need to by the end.
2020-11-27 00:17:51 -08:00
Kartik Agaram
125bfde435
7286 - mu.subx: isolate bytes from previous values
2020-11-27 00:04:54 -08:00
Kartik Agaram
c165b0be5a
7285
2020-11-26 23:20:15 -08:00
Kartik Agaram
736bfe9547
7284
2020-11-26 22:34:32 -08:00
Kartik Agaram
b0dfe182ff
7283
2020-11-26 21:59:28 -08:00
Kartik Agaram
7f40e8a3f6
7282
2020-11-26 21:46:46 -08:00
Kartik Agaram
896a353a7d
7281
2020-11-26 21:37:09 -08:00
Kartik Agaram
066014d4b4
7280
2020-11-26 21:23:15 -08:00
Kartik Agaram
5ce7c8dcff
7279
2020-11-26 20:10:46 -08:00
Kartik Agaram
e9f411d5c5
7278 - typo in mu.subx
2020-11-26 12:58:02 -08:00
Kartik Agaram
32505d159e
7269
2020-11-21 21:40:23 -08:00
Kartik Agaram
fd4d7b38da
7267 - mu.subx: type-check 'convert' statements
2020-11-20 00:20:58 -08:00
Kartik Agaram
1696ed831a
7261 - mu.subx: array bounds-checking done
2020-11-17 18:16:26 -08:00
Kartik Agaram
83221b4e21
7260
...
This seems to preserve the intent of commit 6555.
2020-11-17 16:32:38 -08:00
Kartik Agaram
98399a621f
7258
2020-11-17 10:04:53 -08:00
Kartik Agaram
18944f44e6
7257 - partially undo commit 7253
...
I don't need to pass the function pointer quite so low. I think..
2020-11-17 10:04:49 -08:00
Kartik Agaram
789c0ac05a
7256
2020-11-17 09:25:17 -08:00
Kartik Agaram
18579f77c6
7253 - mu.subx: starting to bounds-check 'index'
...
First step: start passing the function name into code-generation functions.
We're going to need it for the error message.
2020-11-16 22:32:25 -08:00
Kartik Agaram
3d31467c0d
7251
2020-11-16 00:37:37 -08:00