blob: 30d23240d84e8f3d9018b7f36db78c7974441ea2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
(define addr-segment-heap #x8000) ; grows up until SP
(define addr-segment-mmio #xE7F0)
(define addr-segment-sprite #xE800)
(define addr-segment-text #xF800)
;; note: sprite memory & text memory can overlap
;; since they are never used at the same time
(define addr-mmio-terminal (+ addr-segment-mmio 0))
(define addr-mmio-keyboard (+ addr-segment-mmio 1))
(define addr-mmio-graphics-mode (+ addr-segment-mmio 2))
(define graphics-disabled 0)
(define graphics-text 1)
(define graphics-sprite 2)
(at-addr #x0)
(def-label 'entrypoint
;; Set stack pointer to end of heap segment, i.e. one below addr-segment-mmio.
;; Stack grows down.
;; Heap grows up from addr-segment-heap until it meets the stack.
(%ld SP (u16 (- addr-segment-mmio 1)))
;; Set graphics mode to disabled.
(%ld R0 (u16 addr-mmio-graphics-mode))
(%st R0 (u16 graphics-disabled)))
|