From 7759a52eb0ee980efd8a1d9faa1c84af1db1368c Mon Sep 17 00:00:00 2001 From: "B. Watson" Date: Thu, 18 Feb 2016 05:16:36 -0500 Subject: use custom stripped-down crt0 for cartridge, save 65 bytes --- crt0_cart.s | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 crt0_cart.s (limited to 'crt0_cart.s') diff --git a/crt0_cart.s b/crt0_cart.s new file mode 100644 index 0000000..ec3e423 --- /dev/null +++ b/crt0_cart.s @@ -0,0 +1,72 @@ +; +; Startup code for cc65 (ATARI version) +; +; Contributing authors: +; Mark Keates +; Freddy Offenga +; Christian Groessler +; Stefan Haubenthal +; + + .export __STARTUP__ : absolute = 1 ; Mark as startup + .export _exit, start + + .import initlib, donelib + .import callmain, zerobss + .import __RESERVED_MEMORY__ + .import __RAM_START__, __RAM_SIZE__ + .include "zeropage.inc" + .include "atari.inc" + +; ------------------------------------------------------------------------ + +.segment "STARTUP" + + rts ; fix for SpartaDOS / OS/A+ + ; They first call the entry point from AUTOSTRT; and + ; then, the load address (this rts here). + ; We point AUTOSTRT directly after the rts. + +; Real entry point: + +start: + +; Clear the BSS data. + + jsr zerobss + +; Setup arg stack + lda MEMTOP + sta sp + lda MEMTOP+1 + sta sp+1 + +; Call the module constructors. + + jsr initlib + +; Set the left margin to 0. + + ldy #0 + sty LMARGN + +; Set the keyboard to upper-/lower-case mode. + + ldx SHFLOK + sty SHFLOK + +; Push the command-line arguments; and, call main(). + + jsr callmain + +; Call the module destructors. This is also the exit() entry. + +_exit: jsr donelib ; Run module destructors + +; Back to DOS. + + rts + +; *** end of main startup code + +; ------------------------------------------------------------------------ -- cgit v1.2.3