about summary refs log tree commit diff stats
Commit message (Collapse)AuthorAgeFilesLines
* .Kartik K. Agaram2021-03-281-2/+20
|
* always acknowledge enabled interruptsKartik K. Agaram2021-03-281-2/+17
| | | | | Now we can start enabling the timer interrupt. It doesn't do anything yet, but keyboard continues to work.
* .Kartik K. Agaram2021-03-272-2/+2
|
* .Kartik K. Agaram2021-03-271-2/+24
|
* .Kartik K. Agaram2021-03-271-169/+0
| | | | Clean up some debug prints.
* explicitly pass data disk to mainKartik K. Agaram2021-03-2715-118/+316
|
* .Kartik K. Agaram2021-03-271-1/+1
| | | | | | | https://wiki.osdev.org/ATA_PIO_Mode#IDENTIFY_command recommends the straight-and-narrow way, but the LBA bit shouldn't matter in drive-select during IDENTIFY command, according to the ATA 3 spec. And it works in Qemu and bochs. It'll slightly simplify drive parameter management.
* fix stale examplesKartik K. Agaram2021-03-263-13/+13
|
* explicitly pass screen and keyboard to mainKartik K. Agaram2021-03-2614-51/+76
|
* .Kartik K. Agaram2021-03-261-12/+3
|
* .Kartik K. Agaram2021-03-261-0/+0
|
* .Kartik Agaram2021-03-251-0/+431
|
* .Kartik Agaram2021-03-241-1/+1
|
* .Kartik Agaram2021-03-235-7/+7
|
* .Kartik Agaram2021-03-237-807/+851
|
* .Kartik K. Agaram2021-03-231-2/+2
|
* example demonstrating disk accessKartik K. Agaram2021-03-231-0/+51
|
* bochs support for disk drivesKartik K. Agaram2021-03-232-0/+24
|
* .Kartik K. Agaram2021-03-231-125/+132
|
* reorg boot.subxKartik K. Agaram2021-03-231-10/+9
|
* mouse support that requires pollingKartik K. Agaram2021-03-235-15/+271
|
* get rid of unnecessary paddingKartik K. Agaram2021-03-231-115/+2
| | | | Now we only specify addresses where it matters.
* .Kartik K. Agaram2021-03-231-3/+5
|
* .Kartik Agaram2021-03-231-4/+3
|
* .Kartik Agaram2021-03-231-2/+2
|
* .Kartik Agaram2021-03-23276-83028/+85954
|
* writes to disk now workingKartik K. Agaram2021-03-233-0/+93
| | | | | | Tested by inserting a call into the shell, but we can't leave it in because every test ends up clobbering the disk. So it's now time to think about a testable interface for the disk.
* transfer only 16 bits at a timeKartik K. Agaram2021-03-221-8/+3
|
* .Kartik K. Agaram2021-03-221-3/+20
|
* .Kartik K. Agaram2021-03-221-4/+5
|
* .Kartik K. Agaram2021-03-223-14/+12
|
* .Kartik K. Agaram2021-03-221-1/+0
|
* .Kartik K. Agaram2021-03-221-1/+1
|
* .Kartik K. Agaram2021-03-221-1/+1
|
* shell: gracefully handle missing data diskKartik K. Agaram2021-03-222-13/+73
|
* shell: read initial expression from secondary diskKartik K. Agaram2021-03-216-11/+62
| | | | See shell/README.md for (extremely klunky) instructions.
* .Kartik K. Agaram2021-03-211-3/+3
|
* snapshot: reading secondary drive also worksKartik K. Agaram2021-03-211-3/+1
| | | | | | | | | | | | dd if=/dev/zero of=data.img count=20160 echo '(+ 1 1)' |dd of=data.img conv=notrunc ./translate ex2.mu && qemu-system-i386 -hda disk.img -hdb data.img Compare output with `xxd data.img |head`. This works because primary and secondary drives on the primary bus share the same ports. All we have to do is select the right drive by flipping a bit.
* snapshot: reading from disk without BIOS!!Kartik K. Agaram2021-03-213-0/+216
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Both LBA and CHS coordinates are now working for the primary disk on the primary bus. Failure modes I ran into: - ATA ports are 16-bit values. Using instructions with 8-bit immediates will yield strange results. (I had to debug this twice because I missed poll-ata-primary-bus-primary-drive-regular-status-word the first time around.) Mu's toolchain has been found out here. bootstrap has good errors but doesn't support the instructions I need in boot.subx. The self-hosted phases support the instructions but provide no error-checking. Might be worth starting to add error-checking as I encounter the need. In this case, a vote for validating metadata sizes even if we don't validate that instructions pass in the right metadata sizes. - Can't poll readiness first thing. Maybe we need to always select the drive first. - Reading 8-bit values from a 16-bit port (data port 0x1f0) returns garbage. Reading 32-bit values however works totally fine; go figure. (Maybe it won't work on real hardware?) https://forum.osdev.org/viewtopic.php?t=36415 - Passing in a 0 segment will never return data.
* .Kartik K. Agaram2021-03-211-15/+15
|
* .Kartik K. Agaram2021-03-211-3/+3
|
* typo; thanks waterhouseKartik K. Agaram2021-03-211-1/+1
| | | | https://news.ycombinator.com/item?id=26525349#26529192
* .Kartik K. Agaram2021-03-181-2/+2
|
* .Kartik Agaram2021-03-171-25/+25
|
* .Kartik K. Agaram2021-03-161-1/+1
|
* .Kartik K. Agaram2021-03-161-1/+4
|
* .Kartik K. Agaram2021-03-151-1/+1
|
* .Kartik K. Agaram2021-03-1511-15/+21
|
* undo previous commitKartik K. Agaram2021-03-152-15/+0
| | | | It was just an experiment.
* snapshot: write to disk using BIOSKartik K. Agaram2021-03-152-0/+15
| | | | | | | | | | Requires the following commands: dd if=/dev/zero of=data.img count=20160 ./translate life.mu qemu-system-i386 -hda disk.img -hdb data.img Before running Qemu, data.img will contain all 0s. After quitting Qemu, data.img will contain the first 512 bytes of disk.img.