1;-------------------------------------------------------------------------- 2; crt0.s -Generic crt0.s for a GBZ80. 3; 4; Copyright (C) 2000, Michael Hope 5; 6; This library is free software; you can redistribute it and/or modify it 7; under the terms of the GNU General Public License as published by the 8; Free Software Foundation; either version 2, or (at your option) any 9; later version. 10; 11; This library is distributed in the hope that it will be useful, 12; but WITHOUT ANY WARRANTY; without even the implied warranty of 13; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14; GNU General Public License for more details. 15; 16; You should have received a copy of the GNU General Public License 17; along with this library; see the file COPYING. If not, write to the 18; Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, 19; MA 02110-1301, USA. 20; 21; As a special exception, if you link this library with other files, 22; some of which are compiled with SDCC, to produce an executable, 23; this library does not by itself cause the resulting executable to 24; be covered by the GNU General Public License. This exception does 25; not however invalidate any other reasons why the executable file 26; might be covered by the GNU General Public License. 27;-------------------------------------------------------------------------- 28 29 .globl _main 30 31 .area _HEADER (ABS) 32 ;; Reset vector 33 .org 0 34 jp init 35 36 .org 0x08 37 reti 38 .org 0x10 39 reti 40 .org 0x18 41 reti 42 .org 0x20 43 reti 44 .org 0x28 45 reti 46 .org 0x30 47 reti 48 .org 0x38 49 reti 50 51 .org 0x100 52 jp 0x150 53 54 .org 0x150 55init: 56 di 57 ;; Set stack pointer directly above top of memory. 58 ld sp,#0xe000 59 60 ;; Setup global data 61 call gsinit 62 63 ;; Use _main instead of main to bypass sdcc's intelligence 64 call _main 65 jp _exit 66 67 ;; Ordering of segments for the linker. 68 .area _HOME 69 .area _CODE 70 .area _GSINIT 71 .area _GSFINAL 72 73 .area _DATA 74 .area _BSS 75 .area _HEAP 76 77 .area _CODE 78__clock:: 79 ld a,#2 80 rst 0x08 81 ret 82 83_exit:: 84 ;; Exit - special code to the emulator 85 ld a,#0 86 rst 0x08 871$: 88 halt 89 jr 1$ 90 91 .area _GSINIT 92gsinit:: 93 94 .area _GSFINAL 95 ret 96