-
Notifications
You must be signed in to change notification settings - Fork 0
/
TODO
55 lines (39 loc) · 2.07 KB
/
TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#######################################################################
#
# The Road To Hardware
#
#######################################################################
DONE - Decide whether the emulator prints decimal or hex numbers.
The emulator prints everything in hex except for the register
number which is decimal. That exception is purely because
registers are referenced in assembly by their decimal number.
DONE - Whatever endianess is decided upon, needs to be enforced in the
emulator, assembler and fs utilities. (Chose little endian)
DONE - Option for assembler to begin PC at certain value.
The --base-address option was added to the assembler for this.
DONE - Assembler should export labels to ABI file so others can
reference it. The --export-symbols option has been added to
and you can specify a symbol file to dump symbols to.
DONE - Determine sane offsets/sizes for the memory layout. I.e. placement and
size of kernel, kernel's stack, mmap I/O region, standard library, etc.
DONE - Figure out how conditional branches and the flags register will work.
Debugger Improvements
DONE + Render bottom of file centered on screen better.
+ Load label symbols for easier liner breakpoints.
+ Tab completion in the shell.
+ Run command files for frequently executed commands.
WIP - Implement malloc and free in the standard library.
+ Need to implement coalescing with neighbors in free().
+ Write a set of unit tests to excerise malloc() and free().
WIP - Kernel should use malloc and free to spawn new tasks.
Three major decisions need to be made:
+ Word vs. byte addressable memory?
+ Memory mapped IO vs. IO Registers to interface with timers / SPI?
+ Signed arithmetic and signed relative jumps?
Implement the FS library and possibly use it in the "boot" loader.
Finish interrupt implementation in the emulator and add a task switcher
interrupt handler to the kernel.
Figure out exactly how SPI will work.
Port to a microcontroller to begin testing with real peripherals.
Pick LCD and figure out an SPI interface.
Begin hardware implementation.