]> git.sur5r.net Git - cc65/blobdiff - testcode/lib/atari/multi-xex.s
Adds test code for the Atari (xex) linker file format.
[cc65] / testcode / lib / atari / multi-xex.s
diff --git a/testcode/lib/atari/multi-xex.s b/testcode/lib/atari/multi-xex.s
new file mode 100644 (file)
index 0000000..7957ddf
--- /dev/null
@@ -0,0 +1,63 @@
+; Multiple segment ATARI file format sample, using custom linker script.
+;
+; This sample defines a custom display-list screen with no code, writing all
+; memory areas directly.
+;
+; See the linker script (multi-xex.cfg) for the definition of memory areas and
+; segments.
+;
+; Compile with:
+;    cl65 -tatari -Cmulti-xex.cfg multi-xex.s -o prog.xex
+
+        .include        "atari.inc"
+
+        .macpack        atari
+
+; Default RUNAD is "start", export that:
+        .export         start
+
+
+; We load color values directly into registers
+        .segment        "COLOR"
+
+        .byte           $16     ; COLOR0
+        .byte           $46     ; COLOR1
+        .byte           $00     ; COLOR2
+        .byte           $6A     ; COLOR3
+        .byte           $82     ; COLOR4
+
+; We load our display list over page 6
+        .segment        "PAGE6"
+
+display_list:
+        .byte   DL_BLK8
+        .byte   DL_BLK8
+        .byte   DL_BLK8
+        .byte   DL_BLK8
+        .byte   DL_BLK8
+        .byte   DL_BLK8
+        .byte   DL_CHR20x8x2 | DL_LMS
+        .word   screen_memory
+        .byte   DL_CHR40x8x1
+        .byte   DL_JVB
+        .word   display_list
+
+screen_memory:
+        ; first text line: 20 bytes
+        scrcode   "    HeLlO wOrLd!    "
+        ; second text line, 40 bytes
+        .byte    0, 0, 0, 0, 0, 0, 0, 0,70,71,70,71,70,71,70,71,70,71,70,71
+        .byte   70,71,70,71,70,71,70,71,70,71,70,71, 0, 0, 0, 0, 0, 0, 0, 0
+
+; We write directly to the display list pointer
+        .segment        "SDLST"
+        .word   display_list
+
+; And we load our main program
+        .code
+
+.proc   start
+        ; Jump forever
+        jmp     start
+.endproc
+