]> git.sur5r.net Git - cc65/blobdiff - libsrc/atari/crt0.s
no TGI_ERR_NO_MEM or TGI_ERR_NO_IOCB anymore: replaced by TGI_ERR_NO_RES
[cc65] / libsrc / atari / crt0.s
index 83b49334169f27a91267b66227c8ddd0106dcce0..8edc4046f09841e2d14242272a54f58864ba6409 100644 (file)
@@ -5,17 +5,17 @@
 ;      Mark Keates
 ;      Freddy Offenga
 ;      Christian Groessler
-;
-; This must be the *first* file on the linker command line
 ;
 
        .export         _exit
+        .export         __STARTUP__ : absolute = 1      ; Mark as startup
        .constructor    initsp, 26
 
        .import         initlib, donelib, callmain
                .import         zerobss, pushax
        .import         _main, __filetab, getfd
-       .import         __LOWCODE_LOAD__, __BSS_LOAD__
+       .import         __STARTUP_LOAD__, __ZPSAVE_LOAD__
+       .import         __RESERVED_MEMORY__
 .ifdef DYNAMIC_DD
        .import         __getdefdev
 .endif
 
        .segment "EXEHDR"
        .word   $FFFF
-       .word   __LOWCODE_LOAD__
-       .word   __BSS_LOAD__ - 1
+       .word   __STARTUP_LOAD__
+       .word   __ZPSAVE_LOAD__ - 1
 
 ; ------------------------------------------------------------------------
 ; Actual code
 
-       .segment        "LOWCODE"
+       .segment        "STARTUP"
 
        rts     ; fix for SpartaDOS / OS/A+
                ; they first call the entry point from AUTOSTRT and
@@ -68,10 +68,13 @@ L1: lda     sp,x
        lda     APPMHI+1
        sta     appmsav+1
 
+       sec
        lda     MEMTOP
+       sbc     #<__RESERVED_MEMORY__
        sta     APPMHI                  ; initialize our APPMHI value
-       ldx     MEMTOP+1
-       stx     APPMHI+1
+       lda     MEMTOP+1
+       sbc     #>__RESERVED_MEMORY__
+       sta     APPMHI+1
 
 ; Call module constructors
 
@@ -170,7 +173,7 @@ initsp:
        sta     sp+1
        rts
 
-       .data         
+.segment        "ZPSAVE"
 
 zpsave:        .res    zpspace
 
@@ -182,6 +185,6 @@ old_shflok: .res    1
 old_lmargin:   .res    1
 
        .segment "AUTOSTRT"
-       .word   $02E0
-       .word   $02E1
-       .word   __LOWCODE_LOAD__ + 1
+       .word   RUNAD                   ; defined in atari.h
+       .word   RUNAD+1
+       .word   __STARTUP_LOAD__ + 1