From f6825b244a17980ef453b58a3afbf7e5a6cb0ac3 Mon Sep 17 00:00:00 2001 From: "ol.sc" Date: Tue, 28 Feb 2012 21:24:17 +0000 Subject: [PATCH] Added screen initialization on Apple GEOS. git-svn-id: svn://svn.cc65.org/cc65/trunk@5568 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- libsrc/geos-common/system/crt0.s | 42 +++++++++++++++++++++++--------- 1 file changed, 31 insertions(+), 11 deletions(-) diff --git a/libsrc/geos-common/system/crt0.s b/libsrc/geos-common/system/crt0.s index df4e9d8f9..8dba46f6d 100644 --- a/libsrc/geos-common/system/crt0.s +++ b/libsrc/geos-common/system/crt0.s @@ -5,43 +5,63 @@ ; 26.10.99, 10.3.2000, 15.8.2001, 23.12.2002 .export _exit - .export __STARTUP__ : absolute = 1 ; Mark as startup + .export __STARTUP__ : absolute = 1 ; Mark as startup .import __VLIR0_START__, __VLIR0_SIZE__ ; Linker generated - .import __STACKSIZE__ ; Linker generated + .import __STACKSIZE__, __BACKBUFSIZE__ ; Linker generated .import initlib, donelib .import callmain .import zerobss .importzp sp .include "jumptab.inc" + .include "geossym.inc" + .include "const.inc" ; ------------------------------------------------------------------------ ; Place the startup code in a special segment. .segment "STARTUP" -; Clear the BSS data +; GEOS 64/128 initializes the screen before starting an application while +; Apple GEOS does not. In order to provide identical startup conditions +; we initialize the screen here on Apple GEOS. For the same reason we set +; the pattern and dispBufferOn even on GEOS 64/128 although we don't use +; them here. + + lda #2 ; Checkerboard pattern + jsr SetPattern + lda #<(ST_WR_FORE | .MIN (ST_WR_BACK, __BACKBUFSIZE__)) + sta dispBufferOn +.ifdef __GEOS_APPLE__ + jsr i_Rectangle + .byte 0 + .byte SC_PIX_HEIGHT-1 + .word 0 + .word SC_PIX_WIDTH-1 +.endif + +; Clear the BSS data. jsr zerobss -; Setup stack +; Setup stack. lda #<(__VLIR0_START__ + __VLIR0_SIZE__ + __STACKSIZE__) + ldx #>(__VLIR0_START__ + __VLIR0_SIZE__ + __STACKSIZE__) sta sp - lda #>(__VLIR0_START__ + __VLIR0_SIZE__ + __STACKSIZE__) - sta sp+1 ; Set argument stack ptr + stx sp+1 -; Call module constructors +; Call module constructors. jsr initlib -; Push arguments and call main() +; Push arguments and call main(). cli - jsr callmain + jsr callmain ; Call module destructors. -_exit: jsr donelib ; Run module destructors +_exit: jsr donelib - jmp EnterDeskTop ; return control to the system + jmp EnterDeskTop ; Return control to the system