Commit Graph

59 Commits

Author SHA1 Message Date
Kartik K. Agaram
dfda825e55 always acknowledge enabled interrupts
Now we can start enabling the timer interrupt. It doesn't do anything yet,
but keyboard continues to work.
2021-03-28 08:30:57 -07:00
Kartik K. Agaram
763719c211 .
Clean up some debug prints.
2021-03-27 17:53:15 -07:00
Kartik K. Agaram
7bf8adb893 explicitly pass data disk to main 2021-03-27 17:50:44 -07:00
Kartik K. Agaram
9818f1de98 .
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.
2021-03-27 08:38:01 -07:00
Kartik K. Agaram
55adbda2d9 . 2021-03-23 21:41:40 -07:00
Kartik K. Agaram
7b89f8e67e reorg boot.subx 2021-03-23 21:27:06 -07:00
Kartik K. Agaram
49a9938333 mouse support that requires polling 2021-03-23 21:14:49 -07:00
Kartik K. Agaram
e0f6dd5240 get rid of unnecessary padding
Now we only specify addresses where it matters.
2021-03-23 20:00:15 -07:00
Kartik K. Agaram
49464e5866 . 2021-03-23 19:37:07 -07:00
Kartik K. Agaram
62a2442110 writes to disk now working
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.
2021-03-23 00:32:49 -07:00
Kartik K. Agaram
bc79a190ec transfer only 16 bits at a time 2021-03-22 23:55:28 -07:00
Kartik K. Agaram
e1843988a4 . 2021-03-22 23:39:26 -07:00
Kartik K. Agaram
3749f99d24 . 2021-03-22 23:29:42 -07:00
Kartik K. Agaram
c0607ecca8 . 2021-03-22 22:56:33 -07:00
Kartik K. Agaram
8abc3639e0 . 2021-03-22 22:30:39 -07:00
Kartik K. Agaram
02b0317c3b shell: gracefully handle missing data disk 2021-03-22 22:21:51 -07:00
Kartik K. Agaram
e6b42204ef shell: read initial expression from secondary disk
See shell/README.md for (extremely klunky) instructions.
2021-03-21 23:10:55 -07:00
Kartik K. Agaram
2718cb453c . 2021-03-21 22:33:33 -07:00
Kartik K. Agaram
0c3f126377 snapshot: reading secondary drive also works
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.
2021-03-21 22:30:44 -07:00
Kartik K. Agaram
fba2146593 snapshot: reading from disk without BIOS!!
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.
2021-03-21 22:29:24 -07:00
Kartik K. Agaram
89db4ec100 . 2021-03-21 21:57:20 -07:00
Kartik K. Agaram
36dd179f49 . 2021-03-21 21:53:51 -07:00
Kartik K. Agaram
31e1c46803 . 2021-03-18 22:49:20 -07:00
Kartik Agaram
e4a224d3a9 . 2021-03-17 10:23:57 -07:00
Kartik K. Agaram
3240c761e8 . 2021-03-16 23:47:18 -07:00
Kartik K. Agaram
eae5483bf6 . 2021-03-16 12:46:53 -07:00
Kartik K. Agaram
2f251aec4d undo previous commit
It was just an experiment.
2021-03-15 21:54:58 -07:00
Kartik K. Agaram
7119d79b8a snapshot: write to disk using BIOS
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.
2021-03-15 21:46:53 -07:00
Kartik K. Agaram
bc182ae559 boot.subx is now clean SubX 2021-03-15 21:22:30 -07:00
Kartik K. Agaram
460528e85b reintroduce Entry label 2021-03-15 20:41:13 -07:00
Kartik K. Agaram
9d4ca5f59a clean up padding 2021-03-15 20:36:00 -07:00
Kartik K. Agaram
3a0664e186 clean up magic constants 2021-03-15 20:32:26 -07:00
Kartik K. Agaram
be42a9c3ec first pass translating all of boot.subx
There's still a few places to clean up surrounded in:
  == data
  ...
  == code
2021-03-15 15:09:38 -07:00
Kartik K. Agaram
93954f7ccd . 2021-03-15 15:04:31 -07:00
Kartik K. Agaram
2a8f664166 get shell/ working
This mutates the expected binary.
2021-03-15 15:03:33 -07:00
Kartik K. Agaram
dae5705067 . 2021-03-15 10:04:16 -07:00
Kartik K. Agaram
e352596792 . 2021-03-15 09:41:36 -07:00
Kartik K. Agaram
4f73f09f1a . 2021-03-15 09:22:27 -07:00
Kartik K. Agaram
5a824b6e9a manual labels remaining in boot.subx: keyboard + 1 2021-03-15 09:18:44 -07:00
Kartik K. Agaram
e35d4f46fd . 2021-03-15 09:17:15 -07:00
Kartik K. Agaram
4374da4d86 clean up padding
I'm going to explicitly show all reserved data even if I don't use it.
Segment headers are only for padding.
2021-03-15 00:16:19 -07:00
Kartik K. Agaram
dfd80bf74b first pass translating boot sector 2021-03-15 00:08:08 -07:00
Kartik K. Agaram
e045516014 . 2021-03-15 00:05:14 -07:00
Kartik K. Agaram
a718f6a2ef . 2021-03-15 00:04:21 -07:00
Kartik K. Agaram
3ca4728330 . 2021-03-14 23:50:16 -07:00
Kartik K. Agaram
174925e6f9 . 2021-03-14 23:34:41 -07:00
Kartik K. Agaram
4f7758fa15 first use of the padding segment selector 2021-03-14 23:30:58 -07:00
Kartik K. Agaram
ee81002eb0 . 2021-03-14 23:24:02 -07:00
Kartik K. Agaram
5c1186a77b fix a few TODOs that mutate the expected binary 2021-03-14 23:04:00 -07:00
Kartik K. Agaram
fba0a56add . 2021-03-14 22:56:51 -07:00