--- /dev/null
+/* Active objects (Threads/Processes/Actors)*/
--- /dev/null
+/* Boot loader and environment interface */
+
+/* get the ID of the cpu on which the caller is executing */
+Int Boot_GetCpuId(void);
+
+/* atomic operations */
+// test and set
+// increment
+// and
+// or
+
+/* initialize the module */
+void Boot(void);
\ No newline at end of file
--- /dev/null
+/* Heap and Garbage Collector */
+
+//PROCEDURE RegisterCandidates(adr, size: LONGINT);
+//PROCEDURE CheckCandidates;
+
+//PROCEDURE CollectGarbage(root: PTR);
+//VAR obj: RootObject;
+//BEGIN
+//rootList := NIL; Mark(root);
+//REPEAT
+//REPEAT
+//WHILE rootList # NIL DO
+//obj := Get(rootList);
+//obj.FindRoots (* calls Mark and RegisterCandidates *)
+//END;
+//IF numCandidates # 0 THEN CheckCandidates END
+//UNTIL (numCandidates = 0) & (rootList = NIL);
+//CheckFinalizedObjects
+//UNTIL rootList = NIL;
+//Sweep
+//END CollectGarbage;
+
--- /dev/null
+/* Low-level interrupts */
+
+TYPE
+State = RECORD ... END; (* processor state *)
+Handler = PROCEDURE (VAR state: State);
+PROCEDURE InstallHandler(h: Handler; int: INTEGER);
+
+PROCEDURE EnableInterrupt(int: INTEGER);
+PROCEDURE DisableInterrupt(int: INTEGER);
+PROCEDURE InitInterrupts; (* initialize interrupt handling *)
+
+TYPE
+ExceptionState = RECORD ... END; (* additional state *)
+PROCEDURE GetExceptionState(VAR int: State; VAR exc: ExceptionState);
\ No newline at end of file
--- /dev/null
+/* Portable kernel interface */
--- /dev/null
+/* Fine-grained locks */
--- /dev/null
+/* Virtual address space */
+
+void Memory_GetHeapAddr(LongInt* beg, LongInt* end, LongInt* first, LongInt* free);
+void Memory_SetHeapAddr(LongInt* end);
+
+
+typedef struct {
+ longint low;
+ longint high;
+} Memory_Stack;
+
+void Memory_NewStack(Memory_Stack* stack, LongInt* sp);
+void Memory_DisposeStack(Memory_Stack* stack);
+void Memory_ExtendStack(Memory_Stack* stack, LongInt addr);
+
+
+//PROCEDURE MapPhysical(phys, size: LONGINT; VAR virt: LONGINT);
+//PROCEDURE UnmapPhysical(virt, size: LONGINT);
+//PROCEDURE PhysicalAdr(virt, size: LONGINT): LONGINT;
+
+//PROCEDURE InitBootPage(start: PROCEDURE; VAR phys: LONGINT);
+//PROCEDURE InitMemory; (* initialize paging *)
--- /dev/null
+/* Modules and types */
--- /dev/null
+/* Serial console output (debugging) */
\ No newline at end of file
--- /dev/null
+/* Multiple processors */
\ No newline at end of file
--- /dev/null
+#include "Boot.h"
+#include "Memory.h"
+#include "Processors.h"
+
+int main(int argc, char** argv)
+{
+ Boot();
+ Memory();
+ // ...
+ Processors();
+ return 0;
+}
\ No newline at end of file