Skip to content

Instantly share code, notes, and snippets.

View milesrout's full-sized avatar

Miles Rout milesrout

View GitHub Profile

Keybase proof

I hereby claim:

  • I am milesrout on github.
  • I am milesrout (https://keybase.io/milesrout) on keybase.
  • I have a public key ASB4vus1fC33TdrjMv_Hei3QwfDQl5e4f2PgApb8QWRuiQo

To claim this, I am signing this object:

@milesrout
milesrout / 000-dcpu16e
Last active October 29, 2017 04:35 — forked from MadMockers/gist:6365941
DCPU-16e 1.3
DCPU-16e Specification
Version 1.3
=== SUMMARY ====================================================================
* 16 bit words
* 8 banks of 0x10000 words of ram, numbered 0-7
* 8 registers (A, B, C, X, Y, Z, I, J)

DCPU-16E GAT/LAT:

The reason that the DCPU-16e supports both a global access table (GAT) and a local access table (LAT) is that the DCPU-16e supports multiple memory banks. As such, the global access table provides universal access restrictions (that is, entries apply to every memory bank) while the local access table entries that apply just to the memory bank that the local access table is on. Every memory bank has one local access table.

The DCPU-16e has eight memory banks numbered 000 to 111. There are three ways to use access tables. Firstly, you can simply not use them. This essentially disables the kernel/user mode distinction. If this is done, the INT and RFI instructions behave as they do on the DCPU-16. This is good for learning, but is quite insecure. Secondly, you can choose to only use the global access table. This means that the same access rules are applied to all memory banks equally. Thirdly, you can use both global and local access tables. Note that the local access table

;;; as
;;;
;;; an assembler for the DCPU-16 assembly language
;;;
;;; accepts a file of no more than 512 words indicating the sectors on disk that hold a particular file.
;;; then reads those sectors in the order given, treating them as assembler source
;;; then assembles said source to produce a DCPU-16 binary.
;;; the supported binary format is an image that can be loaded directly from a disk by a bootloader:
;;; it contains an 'initial sector' which is written to the first part of the disk and that loads the rest
;;; of the binary.
namespace std {
template< class... >
using void_t = void;
namespace experimental {
struct nonesuch {
nonesuch() = delete;
~nonesuch() = delete;
nonesuch(nonesuch const&) = delete;
void operator=(nonesuch const&) = delete;
int successor(int x) {
return x + 1;
}
future<int> successor_async(int x) {
promise<decltype(x + 1)> p;
thread([] {
p.set_value(x + 1);
}).detach();
return p.get_future();
Procedural Task/Quest Generation
1. Generate world
2. Populate world
3. Generate tasks
Generate World
1. Elevation
- Perlin noise?
bool operator<(const Version& other) {
if (major < other.major)
return true;
if (minor < other.minor)
return true;
if (revision < other.revision)
return true;
if (build < other.build)
return true;
return false;
#[macro_use]
mod macros {
#[macro_export]
macro_rules! prop {
(($($t:tt)*)) => (prop!($($t)*));
(T) => (Proposition::True);
(F) => (Proposition::False);
(!$e:tt) => (Proposition::Not(box prop!($e)));
($e:tt ^ $f:tt) => (Proposition::And(box prop!($e), box prop!($f)));
($e:tt v $f:tt) => (Proposition::Or(box prop!($e), box prop!($f)));
@milesrout
milesrout / results
Last active December 30, 2015 03:45
PROPOSITIONS
miles@laptop:~/Projects/tableaux $ rustc test.rs && ./test
T
F
~(T)
~(F)
(T) ^ (T)
(T) v (T)
(T) -> (T)
((T) v (T)) ^ (T)
True