aboutsummaryrefslogtreecommitdiffstats
path: root/atk16_schasm/bootstrap.scm
blob: 09bfbb9014ba2f1abccfe14eeaf97961bfdbd628 (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)))