Commit Graph

243 Commits

Author SHA1 Message Date
Kevin Lange
9b5cf9cec5 Video as a module, kill device_init 2014-03-19 18:56:07 -07:00
Kevin Lange
0a08fa257e Partition mappings 2014-03-16 18:39:03 -07:00
Kevin Lange
ddfcd235e9 fix 'make vga' 2014-03-16 15:22:00 -07:00
Kevin Lange
ee30393e48 Keyboard + Mouse as modules 2014-03-16 15:13:27 -07:00
Kevin Lange
711285f2b6 Build modules without debug information 2014-03-16 13:53:19 -07:00
Kevin Lange
013939fbc3 New ext2 module 2014-03-16 13:30:25 -07:00
Kevin Lange
984fa1d4c6 EXT2 backed by block device
WARNING: THIS BREAKS PARTITIONS

Until I get partition maps and can produce device entries like
/dev/hda1, partitions will be broken, so DON'T TRY TO BUILD AN IMAGE
WITH THE IMAGE BUILDER.

Hopefully this is all rectified in under 24 hours...
2014-03-16 01:33:01 -07:00
Kevin Lange
82a917d270 no more serial syscall
More cleanup

Oopsy
2014-03-15 20:51:11 -07:00
Kevin Lange
877c2d9d6f tmpfs, random to mods; drop ext2ramdisk 2014-03-15 19:58:38 -07:00
Kevin Lange
b46d632116 serial, null, zero to modules 2014-03-15 19:48:51 -07:00
Kevin Lange
f5bbab90c1 Drop the device 'hello world' sample 2014-03-15 19:28:16 -07:00
Kevin Lange
ccc86c4dc3 Fix multiple modules, make procfs a module 2014-03-15 17:51:33 -07:00
Kevin Lange
c4fc02f87d Support modules from bootloader (again) 2014-03-15 00:36:50 -07:00
Kevin Lange
e9e23feb66 Let's turn on some optimizations. 2014-03-11 07:58:12 -07:00
Kevin Lange
bcaa93b023 more random housecleaning 2014-03-11 01:55:51 -07:00
Kevin Lange
7ca44b0755 2AM, time to make more Makefile tweaks 2014-03-11 01:43:42 -07:00
Kevin Lange
23d833e591 account for modules in some makefile targets 2014-03-11 00:18:51 -07:00
Kevin Lange
47ace6c8d6 Cleanup headers 2014-03-09 23:31:13 -07:00
Kevin Lange
be7dc6fb17 Support more relocation methods 2014-03-09 23:01:30 -07:00
Kevin Lange
cc4391d783 Initial work on modules
There's a lot here, so let's through it:
- Lots of work to include a symbol table in the kernel. We can't rely on
  our bootloader to give us our own ELF information, so we do this
  separately. This probably should be changed to output a C source
  rather than assembly, but that's a TODO.
- Makefile can now generate modules. It works basically the same way any
  other kernel object works, expect with a slightly different linking
  scheme.
- Commands have been added to the debug shell to load modules, but they
  don't work yet - still need to get through relocation and linking.
- Commands have been added to the debug shell to print the symbol list,
  as well as print symbol values (but note that printing symbol values
  is kinda dangerous if you don't know what they are, so don't just go
  printing things willy-nilly).
2014-03-09 19:36:28 -07:00
Kevin Lange
8658f5ee40 More Makefile cleanup 2014-03-08 22:17:47 -08:00
Kevin Lange
f3b484eeb8 More Makefile cleanup 2014-03-08 21:46:43 -08:00
Kevin Lange
ecf124ece4 Merge branch 'strawberry-dev' of github.com:klange/toaruos into strawberry-dev 2014-02-26 21:00:29 -08:00
Kevin Lange
fd676036cc Build cleanup 2014-02-26 20:58:33 -08:00
Kevin Lange
3fd6a447ef python2 2014-02-12 13:33:19 -08:00
Kevin Lange
0f8e552060 no more ramdisks (for now) 2013-12-15 21:41:50 -08:00
Kevin Lange
ed3c578e64 clean up some legacy util stuff 2013-12-13 20:50:04 -08:00
Kevin Lange
610936ae80 Docs cleanup
- Nuke the old latex docs (They are really, really old, and I have no
  plans to keep them up to date)
- Remove LaTeX docs targets from Makefile
- Move extraneous markdown docs to docs/ and update README links
- Move styleguide to docs/
2013-11-28 19:30:46 -08:00
Kevin Lange
382a24adb8 Fix run-config to work with serial tty 2013-11-28 15:58:57 -08:00
Kevin Lange
283ac3c824 Add some tokenizing 2013-11-27 22:41:27 -08:00
Kevin Lange
bed7567508 Add a 'headless' pseudo target 2013-11-27 19:15:28 -08:00
Kevin Lange
19b5da23f7 WHO BROKE MY QEMU, I WILL FIND YOU 2013-10-18 22:07:35 -07:00
Kevin Lange
7351fa308b Various fixes to help get bash working 2013-08-04 00:04:22 -07:00
Kevin Lange
e176dd0f55 Need to make that a flag... 2013-07-14 22:37:17 -07:00
Kevin Lange
dfa72318a3 Updated build scripts to use cross gcc 2013-06-06 21:59:20 -07:00
Kevin Lange
e70ebf8857 Big fat cleanup and GCC fix batch 2013-06-05 23:10:36 -07:00
Kevin Lange
ac414f005c Fix up some build stuff 2013-05-30 00:57:17 -07:00
Kevin Lange
80445dafcc Various shell and terminal cleanups 2013-05-22 21:59:28 -07:00
Kevin Lange
4e5296ad5a Use cross ld to link kernel 2013-05-08 22:21:20 -07:00
Kevin Lange
b956f6ba8a Use var for ramdisk size in makefile 2013-05-02 23:31:34 -07:00
Kevin Lange
a586afb7d1 Kill loader/ directory 2013-04-21 16:35:56 -07:00
Kevin Lange
f3faf3bc23 512MB disk images (even slower, sadly) 2013-04-21 11:25:34 -07:00
Kevin Lange
47ce8fce81 Double hard disk size 2013-03-29 11:14:20 -07:00
Kevin Lange
9b745b5de0 tags target should depend on userspace properly 2013-02-19 21:10:05 -08:00
Kevin Lange
56b83c1020 I also broke the entire core Makefile 2013-02-10 01:53:23 -08:00
Kevin Lange
b2f94bd393 Completely new build system for userspace 2013-02-10 01:36:35 -08:00
Kevin Lange
0cfa13462c Update build scripts 2013-02-09 20:49:07 -08:00
Kevin Lange
4182bba7de perhaps that'll help 2013-01-27 16:39:54 -08:00
Kevin Lange
48b7101218 Recursively build new compositor.
Also, break all the tests.
2013-01-27 16:37:40 -08:00
Kevin Lange
a4d559a96d Better disk rebuild in core makefile 2012-12-09 19:56:56 -08:00
Kevin Lange
e83f88bacb Add time support to vfs 2012-12-09 16:59:55 -08:00
Kevin Lange
942c49806b retool build utils 2012-12-05 21:40:30 -08:00
Kevin Lange
f5b5b8821d Clean up some minor bits and pieces. 2012-12-04 20:09:06 -08:00
Kevin Lange
50ea1462c3 Fix IDE on new qemu, virtualbox 2012-12-02 21:43:54 -08:00
Kevin Lange
c93b5617e8 Support C++ (roughly) in toolchain
* Reenables building of libstdc++
* Enables building of g++
* WARNING: The static binary loader does NOT support static
  initializer functions! You must run them yourself (see
  userspace/test-cpp.cpp for an example that initializes the standard
  streams in order to use cout) until this is fixed.
* C++ stuff is slow to load, try to manually strip, it'll speed things
  up a bit.
2012-11-20 19:28:22 -08:00
Kevin Lange
05728b0e2f Fix large files on modern ext2 configurations 2012-10-16 22:30:57 -07:00
Kevin Lange
50c5c72389 Use localtime for qemu rtc 2012-10-16 20:42:37 -07:00
Kevin Lange
c8b3a480c7 Scripts to run the clang analyzer 2012-10-09 21:00:50 -07:00
Kevin Lange
f79f345956 Giant ramdisks (works on my desktop)
But not on my laptop...
2012-09-18 22:20:04 -07:00
Kevin Lange
e0e7b8a7ed Double ramdisk size.
8MB can fit some freetype fonts or a dozen extra applications.

[ci skip] since Travis doesn't deal with ramdisks.
2012-09-18 20:00:50 -07:00
Kevin Lange
57534cf009 Fix things up to prepare a working ramdisk. 2012-09-18 00:06:32 -07:00
Kevin Lange
127b24a686 Bump default QEMU memory to 1GB 2012-09-14 21:53:04 -07:00
Kevin Lange
09c01eb2c5 Make docs and utils a separate build path from all
docs require too many extra dependencies and haven't been updated in
ages; utils are not required for anything.

[ci skip]
2012-09-10 22:53:39 -07:00
Kevin Lange
c8cfd50fd7 Rudimentary support for moving the viewport horiz.
Rough, still a bit broken, needs cursor tracking.

[ci skip]
2012-09-08 22:25:32 -07:00
Kevin Lange
3f5dbcaf9b Update core Makefile for building bim for Linux
[ci skip]
2012-09-08 16:49:40 -07:00
Kevin Lange
58ca0b984c Add write support; make sacrifices to the gods
- Write support!
- The widths of characters is now determined with freetype ;-;
  I really wish wcwidth() was a real thing, but it's not.
  This is a sacrifice that had to be made.

  If you are building FOR Linux -rather than toaru- you might need to
  poke at some things to make sure it builds, but in my experience it is
  working just fine (and IMEs now work properly).

  [ci skip]
2012-09-08 15:54:56 -07:00
Kevin Lange
df8afae9b9 Linux support for bim; fix a bug when opening
[ci skip]
2012-09-08 14:37:48 -07:00
Kevin Lange
89034c060f I give up; just use qemu-system-i386 everywhere. 2012-09-03 23:40:50 -07:00
Kevin Lange
bba242dd62 Add a testing framework.
This is an automated system by which we boot qemu headless and use the
serial line to capture output from a testing application that is started
on bootup, running with the VGA terminal shell. This might be expanded
to boot to the graphical display within VNC and perform more advanced
tests with the Python shim using a VNC module for Python; we'll see.
2012-09-02 02:24:25 -07:00
Kevin Lange
7274e8e938 configured run mode 2012-08-20 22:26:22 -07:00
Kevin Lange
959fff1076 Specify directories for ctags 2012-05-31 18:37:17 +09:00
Kevin Lange
fd53947564 Added some new quick-run targets to the makefile. 2012-04-19 19:59:59 -05:00
Kevin Lange
5a1a45bc09 Faster mouse response
- Discard lots of packets
- Don't yield?
2012-04-12 23:21:38 -05:00
Kevin Lange
3e70898674 Yeah, disable debug flags while we're still working on initrds... 2012-04-11 16:03:20 -05:00
Kevin Lange
5832f0545b Fix up target for ramdisk 2012-04-11 13:07:16 -05:00
Kevin Lange
0ebb0ac983 Stop building ramdisks by default. 2012-04-11 12:47:39 -05:00
Kevin Lange
a69bd63fbc Stop running with the ramdisk 2012-04-11 12:46:36 -05:00
Kevin Lange
2e4543d956 Oops, silly me. Minor little bug fixed 2012-03-16 20:05:56 -05:00
Kevin Lange
d9b82bfb06 add -k en-us to QEMU arguments, for mac users 2012-02-06 16:20:23 -06:00
Kevin Lange
b83fb0de13 Oops 2012-02-05 17:43:32 -06:00
Kevin Lange
9b5e26164f Do a better job of running check-reqs 2012-02-05 17:40:19 -06:00
Kevin Lange
2e8144493d Bootsplash testing (launches terminal afterwards) 2012-02-03 18:16:47 -06:00
Kevin Lange
119bcf6913 Remove bootloader.
We'll get back to this eventually, right now it's just cluttering the
repository, so get rid of it.
2012-01-29 16:07:15 -06:00
Kevin Lange
fd77e36013 Add bin/uname, fix disk buidling
Disk will now rebuild when userspace/*.c are updated.
Make sure you build in userspace/ first!
2012-01-28 17:10:03 -06:00
Kevin Lange
c9d5e735ed Getting ready for thread support 2012-01-28 17:06:07 -06:00
Kevin Lange
c65e458c50 Stop building binaries out of loader/
This is what userspace/ is for; consequentally, all userspace
applications now depend on the full toolchain and will build using the C
library.
2012-01-28 16:19:57 -06:00
Kevin Lange
6eb0045419 Add a target to update version.o 2012-01-27 18:47:59 -06:00
Kevin Lange
41fb7c0f9f ctags 2012-01-27 01:38:08 -06:00
Kevin Lange
339b82e10c [massive commit] Userspace terminal.
Completely removes:
* The kernel terminal (both VGA and graphical)
* The kernel ANSI parser (obviously)
* kgets() function
* Dozens of other functions that were made useless

Adds:
* Userspace terminal that should work (relatively) well
* Keyboard device driver (implemented with a "pipe" object)
* Stabalized interrupt interface
* `clear` uses the c library
* All panic screens and kprintf() output goes to the serial line ONLY
* The kernel boots directly into /bin/terminal (no arguments, unless you
  want to add them (such as -f))
2012-01-25 00:19:52 -06:00
Kevin Lange
ed31c2cbea Drop serial output from standard terminal 2012-01-23 12:36:59 -06:00
Kevin Lange
7de2ca9bd1 Per-user tmp files 2012-01-18 19:52:11 -06:00
Kevin Lange
edebb12573 [misc] Boot logging to screen 2011-12-26 19:23:58 -06:00
Kevin Lange
c0f45e0b7f VESA mode switching support.
BIOS execution is provided through the `v8086` module, which provides
software emulation of an 8086 processor. It is not currently working
with some BIOSes and may (read: probably will be) replaced with another
emulator (x86emu comes to mind) at some point in the near future. In the
meantime, the default video mode for QEMU works with this and it's
enough to get us on real VESA instead of fake VBE. The `bochs` module
will be renamed in a future commit. Userspace programs have been
adjusted to work at bitrates other than 32 *POORLY*. If you write pixels
left-to-right, they should work fine. They only work with 24-bpp
otherwise, and then you need to be careful of what pixels you are
writing when, or you will overwrite things in other pixels.

You may pass a commandline argument like the following to set display
modes:

  vid=vesa,1024,768

Or for stranger modes under QEMU or Bochs, use the bochs VBE
initializer:

  vid=bochs,1280,720

Note that the address of the linear framebuffer is still found via
hackish probing instead of PCI or trusting the VBE information, so if
you have things in the wrong memory ranges (0xE0000000+), be prepared to
have them get read.

Once again, this entire commit is a massive hack. I am happy that it
worked, and I will continue to make it less hacky, but in the meantime,
this is what we've got.

Happy holidays.
2011-12-25 00:40:40 -06:00
Kevin Lange
b8d8140530 QEMU may default to 128MB, that's bad, we need at least 256 2011-12-15 20:34:57 -06:00
Kevin Lange
67343548a7 Only mount hard disk if requested 2011-12-14 22:30:46 -06:00
Kevin Lange
8c548c0db0 Restructure directory tree for kernel modules 2011-12-14 22:15:47 -06:00
Kevin Lange
d7e5cb2556 [build] That entire rule was unused... 2011-12-01 01:09:12 -06:00
Kevin Lange
f3a52d272a Move all of the ramdisk support into the hard disk 2011-11-18 14:45:19 -06:00
Kevin Lange
b2b8185494 Load wallpaper from file on disk 2011-11-18 14:38:27 -06:00
Kevin Lange
3c0b30b5ee Wallpapers in the gits and by default 2011-11-17 19:01:14 -06:00