mirror of
https://github.com/cc65/cc65.git
synced 2024-10-31 20:06:11 +00:00
79 lines
2.7 KiB
ArmAsm
79 lines
2.7 KiB
ArmAsm
; Maciej 'YTM/Elysium' Witkowiak
|
|
; 06.06.2002
|
|
|
|
; This is the source for the main VLIR-structured program part
|
|
|
|
; include some GEOS defines
|
|
|
|
.include "../../libsrc/geos/inc/const.inc"
|
|
.include "../../libsrc/geos/inc/jumptab.inc"
|
|
.include "../../libsrc/geos/inc/geossym.inc"
|
|
.include "../../libsrc/geos/inc/geosmac.inc"
|
|
|
|
; import load addresses for all VLIR chains
|
|
; these labels are defined upon linking with ld65
|
|
|
|
.import __OVERLAYADDR__
|
|
.import __OVERLAYSIZE__
|
|
|
|
; import names of functions defined (and exported) in each VLIR part
|
|
; of your application
|
|
; here I used an OVERLAYx_ prefix to prevent name clashes
|
|
|
|
.import OVERLAY1_Function1
|
|
.import OVERLAY2_Function1
|
|
|
|
; segments "STARTUP", "CODE", "DATA", "RODATA" and "BSS" all go to VLIR0 chain
|
|
|
|
.segment "STARTUP"
|
|
; code segment for VLIR 0 chain
|
|
ProgExec:
|
|
LoadW r0, paramString ; show something
|
|
jsr DoDlgBox
|
|
|
|
MoveW dirEntryBuf+OFF_DE_TR_SC, r1
|
|
LoadW r4, fileHeader
|
|
jsr GetBlock ; load back VLIR t&s table
|
|
bnex error
|
|
|
|
lda #1
|
|
jsr PointRecord ; we want next module (#1)
|
|
LoadW r2, __OVERLAYSIZE__ ; length - as many bytes as we have room for
|
|
LoadW r7, __OVERLAYADDR__ ; all VLIR segments have the same load address
|
|
jsr ReadRecord ; load it
|
|
bnex error
|
|
jsr OVERLAY1_Function1 ; execute something
|
|
|
|
lda #2
|
|
jsr PointRecord ; next module
|
|
LoadW r2, __OVERLAYSIZE__
|
|
LoadW r7, __OVERLAYADDR__
|
|
jsr ReadRecord ; load it
|
|
bnex error
|
|
jsr OVERLAY2_Function1 ; execute something
|
|
|
|
error: jmp EnterDeskTop ; end of application
|
|
|
|
.segment "RODATA"
|
|
; read-only data segment
|
|
paramString:
|
|
.byte DEF_DB_POS | 1
|
|
.byte DBTXTSTR, TXT_LN_X, TXT_LN_2_Y
|
|
.word line1
|
|
.byte DBTXTSTR, TXT_LN_X, TXT_LN_3_Y
|
|
.word line2
|
|
.byte OK, DBI_X_0, DBI_Y_2
|
|
.byte NULL
|
|
|
|
line1: .byte BOLDON, "Hello World!",0
|
|
line2: .byte OUTLINEON,"Hello",PLAINTEXT," world!",0
|
|
|
|
.segment "DATA"
|
|
; read/write initialized data segment
|
|
counter: .word 0
|
|
|
|
.segment "BSS"
|
|
; read/write uninitialized data segment
|
|
; this space doesn't go into output file, only its size and
|
|
; position is remembered
|