about summary refs log tree commit diff stats
Commit message (Collapse)AuthorAgeFilesLines
...
* 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.
* fix a failing test in pack.subxKartik K. Agaram2021-03-152-5/+68
|
* boot.subx is now clean SubXKartik K. Agaram2021-03-153-14/+30
|
* .Kartik K. Agaram2021-03-151-18/+18
|
* reintroduce Entry labelKartik K. Agaram2021-03-154-10/+6
|
* clean up paddingKartik K. Agaram2021-03-151-26/+0
|
* clean up magic constantsKartik K. Agaram2021-03-155-70/+30
|
* first pass translating all of boot.subxKartik K. Agaram2021-03-151-16/+14
| | | | | | | There's still a few places to clean up surrounded in: == data ... == code
* .Kartik K. Agaram2021-03-151-27/+27
|
* get shell/ workingKartik K. Agaram2021-03-151-5/+5
| | | | This mutates the expected binary.
* .Kartik K. Agaram2021-03-151-84/+63
|
* .Kartik K. Agaram2021-03-151-8/+11
|
* .Kartik K. Agaram2021-03-151-11/+9
|
* manual labels remaining in boot.subx: keyboard + 1Kartik K. Agaram2021-03-151-3/+2
|
* .Kartik K. Agaram2021-03-153-25/+71
|
* clean up paddingKartik K. Agaram2021-03-151-139/+12
| | | | | I'm going to explicitly show all reserved data even if I don't use it. Segment headers are only for padding.
* first pass translating boot sectorKartik K. Agaram2021-03-151-19/+5
|