Moved GEOS VLIR assembler sample from 'samples' to 'testcode' because:

- It relies on include files which are not part of the cc65 distribution (but only present in the cc65 source tree).
- An upcoming GEOS VLIR C sample will obsolete it - as sample.

git-svn-id: svn://svn.cc65.org/cc65/trunk@5316 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
ol.sc
2011-12-27 00:25:17 +00:00
parent b9b6657c29
commit 6ff1d8314d
9 changed files with 117 additions and 139 deletions

3
testcode/grc/Makefile Normal file
View File

@@ -0,0 +1,3 @@
all:
grc65 vlir.grc
cl65 -t geos vlir.s vlir0.s vlir1.s vlir2.s

13
testcode/grc/vlir.grc Normal file
View File

@@ -0,0 +1,13 @@
HEADER APPLICATION "test" "TestApp" "V1.0" {
structure VLIR
dostype USR
author "Maciej Witkowiak"
info "This is just an example."
}
; maximum size for chains >=1 will be $1000
VLIR 0x1000 {
0
1
2
}

78
testcode/grc/vlir0.s Normal file
View File

@@ -0,0 +1,78 @@
; 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.ca65.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

45
testcode/grc/vlir1.s Normal file
View File

@@ -0,0 +1,45 @@
; Maciej 'YTM/Elysium' Witkowiak
; 06.06.2002
; This is the source for the loadable 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.ca65.inc"
; export names of functions that will be used in the main program
.export OVERLAY1_Function1
.export OVERLAY1_Function2
; go into OVERLAY1 segment - everything that is here will go into
; VLIR chain #1
.segment "OVERLAY1"
OVERLAY1_Function1: jmp Function1 ; jump table, not really necessary
OVERLAY1_Function2: jmp Function2
; etc.
; rodata - if this is defined in .segment "RODATA"
; it will end up in the VLIR0 part, you don't want that
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 "This is in module 1",0
line2: .byte "This is in module 1",0
; code
Function1: LoadW r0, paramString
jsr DoDlgBox
Function2: rts

36
testcode/grc/vlir2.s Normal file
View File

@@ -0,0 +1,36 @@
; Maciej 'YTM/Elysium' Witkowiak
; 06.06.2002
; This is the source for the loadable VLIR-structured program part
; similar to vlir1.s except the fact that this is chain #2
.include "../../libsrc/geos/inc/const.inc"
.include "../../libsrc/geos/inc/jumptab.inc"
.include "../../libsrc/geos/inc/geossym.inc"
.include "../../libsrc/geos/inc/geosmac.ca65.inc"
.export OVERLAY2_Function1
.export OVERLAY2_Function2
.segment "OVERLAY2"
OVERLAY2_Function1: jmp Function1
OVERLAY2_Function2: jmp Function2
; etc.
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
Function2: LoadW r0, paramString
jsr DoDlgBox
Function1: rts
line1: .byte "This is in module 2",0
line2: .byte "This is in module 2",0