]> git.sur5r.net Git - cc65/commitdiff
Added support for the Oric atmos (with some help by Debrune Jérôme
authorcuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Mon, 3 Jun 2002 20:23:15 +0000 (20:23 +0000)
committercuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Mon, 3 Jun 2002 20:23:15 +0000 (20:23 +0000)
<jede@oric.org>)

git-svn-id: svn://svn.cc65.org/cc65/trunk@1297 b7a2c559-68d2-44c3-8de9-860c34a00d81

libsrc/Makefile
libsrc/atmos/Makefile [new file with mode: 0644]
libsrc/atmos/crt0.s [new file with mode: 0644]

index b7fb8001060f5a74d8d2d132c3e455a36cd7b716..3fb344c8c727fae4e01e0e6c1752a46ca1547df4 100644 (file)
@@ -12,13 +12,14 @@ AR = ../src/ar65/ar65
 
 # List of all targets
 ALLTARGETS =   apple2lib       \
-               atarilib        \
-               c64lib          \
-               c128lib         \
+               atarilib        \
+               atmoslib        \
+               c64lib          \
+               c128lib         \
                cbm510lib       \
                cbm610lib       \
-               geoslib         \
-               petlib          \
+               geoslib         \
+               petlib          \
                plus4lib
 
 #-----------------------------------------------------------------------------
@@ -60,6 +61,22 @@ atarilib:
            $(AR) a atari.lib $$i/*.o;\
        done
 
+#-----------------------------------------------------------------------------
+# Oric Atmos
+
+atmoslib:
+       for i in atmos common runtime; do \
+           CC=$(CC) \
+           AS=$(AS) \
+           CFLAGS="-Osir -g -T -t atmos -I../../include" \
+                   AFLAGS="-t atmos -I../../asminc" \
+           $(MAKE) -C $$i || exit 1; \
+       done
+       mv atmos/crt0.o atmos.o
+       for i in atmos common runtime; do \
+           $(AR) a atmos.lib $$i/*.o;\
+       done
+
 #-----------------------------------------------------------------------------
 # C64
 
diff --git a/libsrc/atmos/Makefile b/libsrc/atmos/Makefile
new file mode 100644 (file)
index 0000000..454edd9
--- /dev/null
@@ -0,0 +1,20 @@
+#
+# makefile for CC65 runtime library
+#
+
+.SUFFIXES: .o .s .c
+
+%.o:           %.c
+       @$(CC) $(CFLAGS) $<
+       @$(AS) -o $@ $(AFLAGS) $(*).s
+
+%.o:   %.s
+       @$(AS) -g -o $@ $(AFLAGS) $<
+
+OBJS =  crt0.o
+
+all:   $(OBJS)
+
+clean:
+       @rm -f $(OBJS)
+
diff --git a/libsrc/atmos/crt0.s b/libsrc/atmos/crt0.s
new file mode 100644 (file)
index 0000000..5955fd9
--- /dev/null
@@ -0,0 +1,88 @@
+;
+; Startup code for cc65 (Oric version)
+;
+; By Debrune Jérôme <jede@oric.org> and Ullrich von Bassewitz <uz@cc65.org>
+;
+; This must be the *first* file on the linker command line
+;
+
+       .export         _exit
+       .import         initlib, donelib
+       .import         push0, _main, zerobss
+       .import         __RAM_START__, __RAM_SIZE__     ; Linker generated
+
+
+; ------------------------------------------------------------------------
+; Define and export the ZP variables for the Oric runtime
+
+       .exportzp       sp, sreg, regsave
+       .exportzp       ptr1, ptr2, ptr3, ptr4
+       .exportzp       tmp1, tmp2, tmp3, tmp4
+       .exportzp       regbank, zpspace
+
+.zeropage
+
+zpstart        = *
+sp:            .res    2       ; Stack pointer
+sreg:          .res    2       ; Secondary register/high 16 bit for longs
+regsave:       .res    2       ; slot to save/restore (E)AX into
+ptr1:          .res    2
+ptr2:          .res    2
+ptr3:          .res    2
+ptr4:          .res    2
+tmp1:          .res    1
+tmp2:          .res    1
+tmp3:          .res    1
+tmp4:          .res    1
+regbank:       .res    6       ; 6 byte register bank
+
+zpspace        = * - zpstart           ; Zero page space allocated
+
+.code
+
+; ------------------------------------------------------------------------
+; Actual code
+
+; Clear the BSS data
+
+       jsr     zerobss
+
+; Save system stuff and setup the stack
+
+               tsx
+               stx     spsave          ; save system stk ptr
+
+       lda     #<(__RAM_START__ + __RAM_SIZE__)
+       sta     sp
+       lda     #>(__RAM_START__ + __RAM_SIZE__)
+               sta     sp+1            ; Set argument stack ptr
+
+; Call module constructors
+
+       jsr     initlib
+
+; Pass an empty command line
+
+               jsr     push0           ; argc
+       jsr     push0           ; argv
+
+       ldy     #4              ; Argument size
+               jsr     _main           ; call the users code
+
+; Call module destructors. This is also the _exit entry.
+
+_exit: jsr     donelib         ; Run module destructors
+
+; Restore system stuff
+
+       ldx     spsave
+       txs
+
+; Back to BASIC
+
+       rts
+
+.bss
+spsave:        .res    1
+
+