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