| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
I'm now back at the state of commit 7382 (including 7376). The existing
print to screen surprisingly seems to work without reset-looping, but when
I step through I notice that the lidt isn't doing what I expect.
Desired: at address 0x7cce, the processor executes:
0f 01 1e 00 7f # lidt ds:*idt_descriptor
Observed: at address 0x7cce, the processor executes:
0f 01 1e # lidt ds:*esi
As a result the next instruction is:
00 7f fb
So the `fb` isn't interpreted to enable interrupts. So the problem of commit
7376 is latent.
Past this point the instruction stream is lined up again, and everything
occurs as it should. Purely by chance.
I fully expect all hell to break loose again, like it did in commit 7376,
once I debug the lidt encoding. There's still something I don't understand
about enabling interrupts. Perhaps I need to fill in more entries in the
table.
|
|
|
|
|
|
| |
Redo commit 7381. There was a bug.
Current state: commit 7381 excluding 7376.
|
|
|
|
| |
Commit 7380 excluding 7376.
|
|
|
|
| |
Commit 7379 excluding 7376.
|
|
|
|
|
| |
Currently at commit 7378 (reset the A20 address line) except without 7376
(enabling interrupts).
|
|
|
|
|
| |
Currently at commit 7377 except without 7376 (enabling interrupts). Works
as advertised.
|
|
|
|
|
| |
Turns out I've been "testing" with a stale file since commit 7373. We need
to go over everything since then.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
| |
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)
|
| |
|
|
|
|
| |
A little more robustness after reading https://stackoverflow.com/questions/43786251/int-13h-42h-doesnt-load-anything-in-bochs/43787939#43787939
|
|
|
|
|
| |
apps/boot.hex doesn't need much by way of syntax highlighting. Have it
work even for people who haven't installed subx.vim
|
| |
|
| |
|
|
|
|
| |
Use a more realistically sized disk image. Now we can read the second sector.
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
Lots of great tips here:
https://stackoverflow.com/questions/43786251/int-13h-42h-doesnt-load-anything-in-bochs/43787939#43787939
|
|
|
|
|
| |
Not working yet. Reading sectors from disk returns an error (sets carry
flag).
|
|
|
|
|
|
| |
Move more padding around.
Reading a sector from disk requires about 24 bytes of code.
|
| |
|
| |
|
|
|
|
|
| |
Kinda brutal way to lose the bochs warning. Should suffice for now. As
we add more code we'll introduce more sectors.
|
|
|
|
|
| |
I hadn't noticed that bochs was getting into a reset loop after executing
my code correctly. Fix that.
|
|
|
|
|
| |
Switch bochs from floppy to hard disk.
Bochs throws a new warning, but otherwise 32bit.hex continues to work.
|
|
|
|
|
| |
Insert padding in a few places so we don't have to recalculate addresses
quite so much.
|
| |
|
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
|
|
|
|
|
| |
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
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
Still a bug in cursor positioning. It's always shown at the start of the
function body.
|
|
|
|
| |
Still can't edit functions, but we're getting there.
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
We can't yet edit the function once we jump to it.
|