Fix NixOS Vbox file, add TempleOS

This commit is contained in:
Ehmry - 2019-03-14 15:11:27 +01:00
parent 5cd2d62aa9
commit bfb65610a9
7 changed files with 187 additions and 8 deletions

View File

@ -1,11 +1,9 @@
.gitignore
export PKG_CONFIG_PATH
SDK_INCLUDE = $(TUP_CWD)/sdk.tup
CC = `pkg-config genode-base --variable cc`
CXX = `pkg-config genode-base --variable cxx`
LD = `pkg-config genode-base --variable ld`
AR = `pkg-config genode-base --variable ar`
export PKG_CONFIG_PATH
PKG_CONFIG = PKG_CONFIG_PATH=$PKG_CONFIG_PATH:$(SDK_DIR)/pkgconfig pkg-config
ifndef DEPOT_USER
error CONFIG_DEPOT_USER is undefined
@ -37,6 +35,8 @@ ERRATA_DIR = $(TUP_CWD)/errata
xmllint -schema $(ERRATA_DIR)/runtime.xsd --noout %f ; cp %f %o \
|> $(DEPOT_PKG_DIR)/%d/@(DEPOT_VERSION)/runtime $(DEPOT_DIR)/<runtimes>
!pkg_extra_to_depot = |> ^ CP %o^ cp %f %o |> $(DEPOT_PKG_DIR)/%d/@(DEPOT_VERSION)/%b
!raw_to_depot = |> ^ raw/%d/%b^ cp -r %f %o |> $(DEPOT_RAW_DIR)/%d/@(DEPOT_VERSION)/%b
ifndef DEPOT_KEY
@ -67,3 +67,11 @@ SIGN_CMD = gpg --detach-sign --digest-algo SHA256 --no-tty --local-user @(DEPOT_
!public_signature = |> ^ sign %b^ $(SIGN_CMD) < %f > %o |> %f.sig
endif
CC = `pkg-config genode-base --variable cc`
CXX = `pkg-config genode-base --variable cxx`
LD = `pkg-config genode-base --variable ld`
AR = `pkg-config genode-base --variable ar`
!cc = |> ^ CC %f^ $(CC) $(DEFINES) $(CXXFLAGS) $(CXXFLAGS_%e) $(CXXFLAGS_%f) -c %f -o %o |>
!ld = |> ^ LD %o^ $(LD) $(LDFLAGS) %f -o %o |>

@ -1 +1 @@
Subproject commit 6c4cb16a657f62c126df6917e06bb64b77514620
Subproject commit 434a523034d99ac3522f1a4aaf1e60fafe265703

View File

@ -10,10 +10,9 @@
</DVDImages>
</MediaRegistry>
<Hardware>
<CPU>
<CPU count="2">
<PAE enabled="true"/>
<LongMode enabled="true"/>
<X2APIC enabled="true"/>
<HardwareVirtExLargePages enabled="false"/>
</CPU>
<Memory RAMSize="1536"/>

54
runtimes/templeos/README Normal file
View File

@ -0,0 +1,54 @@
The Temple Operating System hosted in VirtualBox for NOVA
TempleOS is a free, public domain, open source, x86_64, non-preemptive
multi-tasking, multi-cored, ring-0-only, single-address-map (identity-mapped),
non-networked, PC operating system. Paging is, basically, not used.
The CIA encourages code obsfucation. They make it more complicated than
necessary. TempleOS is, literally, more simple than necessary. It is
obnoxiously simple... to the point it hurts.
This "Hello World" joke, the BMP file format and the WAV file format show that
the industry is really screwed-up! That's what TempleOS fixes. I capped the
line-of-code count at 100,000 and God said it must be perfect, so it will never
be an ugly monstrocity. It is currently 82,171 lines of unblemished code.
Backward compatibility is not promised.
Normally, failure is not an option, but since TempleOS accompanies Windows or
Linux, we exclude certain uses. There is no reason to duplicate browsing,
multimedia, desktop publishing, etc. Linux wants to be a secure, multi-user
mainframe. That's why it has file permissions. The vision for TempleOS,
however, is a modern, 64-bit Commodore 64. The C64 was a non-networked, home
computer mostly used for games. It trained my generation how to program because
it was wide open, completely hackable. The games were not multimedia works of
art, but generated by non-artist.
A troll might ask, "Why not just use DOS? It was ring-0-only and
single-address-map." DOS was 16-bit, with segmentation -- awful! TempleOS is
64-bit, flat, non-segmented and multi-cored. It has a C64-like shell with
HolyC, a dialect of C/C++, instead of BASIC. It was written from scratch, and
not even ASCII was sacred -- it has 8-bit unsigned char source code to support
European languages. Also, the source code supports binary sprite graphics.
A troll might say, "It can crash!" We used DOS for years and loved it.
Computers even had a reset switch! Just think of the power of ring-0, muhahaha!
Think of the speed and simplicity of ring-0-only and identity-mapping. It can
change tasks in half a microsecond because it doesn't mess with page tables or
privilege levels. Inter-process communication is effortless because every task
can access every other task's memory.
It's fun having access to everything. When I was a teenager, I had a book,
Mapping the Commodore 64, that told what every location in memory did. I liked
copying the ROM to RAM and poking around at the ROM BASIC's variables.
Everybody directly poked the hardware ports.
TempleOS is simpler than Linux and you can have hours of fun tinkering because
all memory and ports are accessible. Memory is identity-mapped at all times, so
you can modify any task's memory from any other task. You can access all disk
blocks, too. I had a blast using a C64 disk block editor to modify directories
to un-delete files, when I was a kid. Maybe, you want to play with a raw-block
database, or make your own file system?
http://www.templeos.org/
https://archive.org/details/TempleOS_Website_Archive

View File

@ -0,0 +1,7 @@
include_rules
: runtime |> !runtime_to_depot |> {package}
: archives |> !archives_to_depot |> {package}
: README |> !pkg_extra_to_depot |> {package}
: {package} |> !publish_pkg |>

13
runtimes/templeos/archives Executable file
View File

@ -0,0 +1,13 @@
ehmry/raw/templeos/2017-12-12
genodelabs/src/vbox5-nova/2019-02-25
genodelabs/src/base-nova/2019-02-25
genodelabs/src/libc/2019-02-25
genodelabs/src/init/2019-02-27
genodelabs/src/nit_fb/2019-02-25
genodelabs/src/libc/2019-02-25
genodelabs/src/posix/2019-02-25
genodelabs/src/zlib/2019-02-25
genodelabs/src/nit_fb/2019-02-25
genodelabs/src/libiconv/2019-02-25
genodelabs/src/stdcxx/2019-02-25
genodelabs/src/vfs/2019-02-27

98
runtimes/templeos/runtime Executable file
View File

@ -0,0 +1,98 @@
<runtime ram="768M" caps="1024" binary="init">
<requires>
<nitpicker/>
</requires>
<content>
<rom label="init"/>
<rom label="libc.lib.so"/>
<rom label="libc_pipe.lib.so"/>
<rom label="libc_terminal.lib.so"/>
<rom label="libiconv.lib.so"/>
<rom label="libm.lib.so"/>
<rom label="nit_fb"/>
<rom label="qemu-usb.lib.so"/>
<rom label="stdcxx.lib.so"/>
<rom label="TempleOS.ISO"/>
<rom label="TempleOS.vbox"/>
<rom label="timer"/>
<rom label="vfs.lib.so"/>
<rom label="virtualbox5-nova"/>
</content>
<config prio_levels="2">
<parent-provides>
<service name="Audio_out"/>
<service name="CPU"/>
<service name="LOG"/>
<service name="Nitpicker"/>
<service name="PD"/>
<service name="Report"/>
<service name="RM"/>
<service name="ROM"/>
<service name="Rtc"/>
<service name="Timer"/>
<service name="Usb"/>
<service name="Nic"/>
</parent-provides>
<default-route> <any-service> <parent/> <any-child/> </any-service> </default-route>
<default caps="100"/>
<start name="timer">
<resource name="RAM" quantum="1M"/>
<provides><service name="Timer"/></provides>
<config/>
<route>
<service name="ROM" label="platform_info">
<parent label="platform_info"/> </service>
<any-service> <parent/> </any-service>
</route>
</start>
<start name="nit_fb" priority="0">
<resource name="RAM" quantum="8M" />
<provides>
<service name="Framebuffer" /> <service name="Input" />
</provides>
<config initial_width="640" initial_height="480" />
<route>
<service name="Nitpicker"> <parent label=""/> </service>
<any-service> <parent/> </any-service>
</route>
</start>
<start name="vbox" priority="-1" caps="1000">
<binary name="virtualbox5-nova" />
<resource name="RAM" quantum="1G"/>
<exit propagate="yes"/>
<config vbox_file="TempleOS.vbox" xhci="yes" vm_name="TempleOS" capslock="ROM">
<vfs>
<dir name="dev">
<log/>
<rtc/>
</dir>
<dir name="shared">
<null/>
</dir>
<rom name="TempleOS.ISO"/>
<rom name="TempleOS.vbox"/>
</vfs>
<libc stdout="/dev/log" stderr="/dev/log" rtc="/dev/rtc"/>
</config>
<route>
<service name="Audio_out"> <parent/> </service>
<service name="ROM" label="usb_devices"> <parent label="usb_devices"/> </service>
<service name="ROM" label="capslock"> <parent label="capslock"/> </service>
<service name="ROM" label="platform_info">
<parent label="platform_info"/> </service>
<service name="Report" label="shape"> <parent label="shape"/> </service>
<any-service> <parent/> <child name="nit_fb"/> </any-service>
</route>
</start>
</config>
</runtime>