* device/lib/printf_large.c: pointer was converted to generic pointer for mcs51 model...
[fw/sdcc] / device / lib / gbz80 / crt0.s
index eb015280ea44f56e557bfb86031dcc953691831e..814b43ed2cdc8b1916ca88366acac5dc1fc54534 100644 (file)
@@ -1,62 +1,68 @@
-       ;; Generic crt0.s for a Z80
-       .globl  __main
-
-       .area _HEADER (ABS)
-       ;; Reset vector
-       .org    0
-       jp      init
-
-       .org    0x08
-       reti
-       .org    0x10
-       reti
-       .org    0x18
-       reti
-       .org    0x20
-       reti
-       .org    0x28
-       reti
-       .org    0x30
-       reti
-       .org    0x38
-       reti
-
-       .org    0x100
-       jp      0x150
-               
-       .org    0x150
+        ;; Generic crt0.s for a GBZ80
+        .globl  _main
+
+        .area   _HEADER (ABS)
+        ;; Reset vector
+        .org    0
+        jp      init
+
+        .org    0x08
+        reti
+        .org    0x10
+        reti
+        .org    0x18
+        reti
+        .org    0x20
+        reti
+        .org    0x28
+        reti
+        .org    0x30
+        reti
+        .org    0x38
+        reti
+
+        .org    0x100
+        jp      0x150
+
+        .org    0x150
 init:
-       di
-       ;; Stack at the top of memory.
-       ld      sp,#0xdfff        
+        di
+        ;; Stack at the top of memory.
+        ld      sp,#0xdfff
+
+        ;; Setup global data
+        call    gsinit
 
-       ;; Use _main instead of main to bypass sdcc's intelligence
-       call    __main
-       jp      _exit
+        ;; Use _main instead of main to bypass sdcc's intelligence
+        call    _main
+        jp      _exit
 
-       ;; Ordering of segments for the linker.
-       .area   _CODE
-       .area   _DATA
+        ;; Ordering of segments for the linker.
+        .area   _HOME
+        .area   _CODE
+        .area   _GSINIT
+        .area   _GSFINAL
 
+        .area   _DATA
+        .area   _BSS
+        .area   _HEAP
+
+        .area   _CODE
 __clock::
-       ld      a,#2
-       rst     0x00
-       ret
-       
-_getsp::
-       ld      hl,#0
-       add     hl,sp
-       ret
-
-__printTStates::       
-       ld      a,#3
-       rst     0x00
-       ret
-               
+        ld      a,#2
+        rst     0x08
+        ret
+
 _exit::
-       ;; Exit - special code to the emulator
-       ld      a,#1
-       rst     0x00
+        ;; Exit - special code to the emulator
+        ld      a,#0
+        rst     0x08
 1$:
-       halt
-       jr      1$
+        halt
+        jr      1$
+
+        .area   _GSINIT
+gsinit::
+
+        .area   _GSFINAL
+        ret