From 17441047cd3cc534d9e25795dba1f3942004f603 Mon Sep 17 00:00:00 2001 From: jespergravgaard Date: Sat, 8 Aug 2020 11:07:53 +0200 Subject: [PATCH] Extended display list sample code. --- src/main/kc/target/atari2600.tgt | 4 ++-- src/main/kc/target/atarixl.tgt | 4 ++-- src/test/kc/examples/atarixl/helloxl.c | 9 ++++++--- src/test/ref/examples/atarixl/helloxl.asm | 4 ++-- src/test/ref/examples/atarixl/helloxl.log | 20 ++++++++++---------- src/test/ref/examples/atarixl/helloxl.sym | 4 ++-- 6 files changed, 24 insertions(+), 21 deletions(-) diff --git a/src/main/kc/target/atari2600.tgt b/src/main/kc/target/atari2600.tgt index c0fedf97d..ef09a9dde 100644 --- a/src/main/kc/target/atari2600.tgt +++ b/src/main/kc/target/atari2600.tgt @@ -2,10 +2,10 @@ "extension": "a26", "link": "atari2600.ld", "cpu": "MOS6502X", - "emulator": "stella", "zp_reserve": [ "0x00..0x7f" ], "encoding": "screencode_atari", "defines": { "__ATARI2600__": 1 - } + }, + "emulator": "stella" } \ No newline at end of file diff --git a/src/main/kc/target/atarixl.tgt b/src/main/kc/target/atarixl.tgt index d822224d7..7e9444a83 100644 --- a/src/main/kc/target/atarixl.tgt +++ b/src/main/kc/target/atarixl.tgt @@ -2,9 +2,9 @@ "extension": "xex", "link": "atarixl.ld", "cpu": "MOS6502X", - "emulator": "atari800 -xl", "encoding": "screencode_atari", "defines": { "__ATARIXL__": 1 - } + }, + "emulator": "atari800 -xl" } \ No newline at end of file diff --git a/src/test/kc/examples/atarixl/helloxl.c b/src/test/kc/examples/atarixl/helloxl.c index b4f39bc46..881b41c2b 100644 --- a/src/test/kc/examples/atarixl/helloxl.c +++ b/src/test/kc/examples/atarixl/helloxl.c @@ -17,13 +17,16 @@ void main() { } // Message to show -char TEXT[] = "hello XT world! "; +char TEXT[] = "HELLO atari 8BIT" + "Demonstrates ANTIC display list" + ; // ANTIC Display List Program // https://en.wikipedia.org/wiki/ANTIC char DISPLAY_LIST[] = { 0x70, 0x70, 0x70, // 3* BLK 8 (0x70) 8 blank lines - 0x47, TEXT, // LMS 7, TEXT (0x47) Load memory address and set to charmode 7 (16/20/24 chars wide, 16 lines per char) + 0x47, TEXT, // LMS 7, TEXT (0x47) Load memory address and set to charmode 7 (16/20/24 chars wide, 16 lines per char) + 0x70, // BLK 8 (0x70) 8 blank lines + 0x02, // 2, TEXT (0x02) Charmode 2 (32/40/48 chars wide, 8 lines per char) 0x41, DISPLAY_LIST // JVB DISPLAY_LIST (0x41) jump and wait for VBLANK }; - diff --git a/src/test/ref/examples/atarixl/helloxl.asm b/src/test/ref/examples/atarixl/helloxl.asm index e8d13aeb8..94023d045 100644 --- a/src/test/ref/examples/atarixl/helloxl.asm +++ b/src/test/ref/examples/atarixl/helloxl.asm @@ -48,8 +48,8 @@ main: { .segment Data // Message to show .encoding "ascii" - TEXT: .text @"hello\$00\$38\$34\$00world\$01\$00" + TEXT: .text @"\$28\$25\$2c\$2c\$2f\$00atari\$00\$18\$22\$29\$34\$24emonstrates\$00\$21\$2e\$34\$29\$23\$00display\$00list" .byte 0 // ANTIC Display List Program // https://en.wikipedia.org/wiki/ANTIC - DISPLAY_LIST: .byte $70, $70, $70, $47, TEXT, $41, DISPLAY_LIST + DISPLAY_LIST: .byte $70, $70, $70, $47, TEXT, $70, 2, $41, DISPLAY_LIST diff --git a/src/test/ref/examples/atarixl/helloxl.log b/src/test/ref/examples/atarixl/helloxl.log index 70bd346d6..56a946ac8 100644 --- a/src/test/ref/examples/atarixl/helloxl.log +++ b/src/test/ref/examples/atarixl/helloxl.log @@ -138,10 +138,10 @@ SYMBOL TABLE SSA (byte) ATARI_POKEY_WRITE::SKREST (byte) ATARI_POKEY_WRITE::STIMER (byte) ATARI_POKEY_WRITE::UNUSED -(const byte*) DISPLAY_LIST[] = { (byte) $70, (byte) $70, (byte) $70, (byte) $47, <(const byte*) TEXT, >(const byte*) TEXT, (byte) $41, <(const byte*) DISPLAY_LIST, >(const byte*) DISPLAY_LIST } +(const byte*) DISPLAY_LIST[] = { (byte) $70, (byte) $70, (byte) $70, (byte) $47, <(const byte*) TEXT, >(const byte*) TEXT, (byte) $70, (byte) 2, (byte) $41, <(const byte*) DISPLAY_LIST, >(const byte*) DISPLAY_LIST } (const nomodify byte**) SDLST = (byte**)(number) $230 (const nomodify byte*) SDMCTL = (byte*)(number) $22f -(const byte*) TEXT[] = (byte*) "hello XT world! "sa +(const byte*) TEXT[] = (byte*) "HELLO atari 8BITDemonstrates ANTIC display list"sa (void()) __start() (label) __start::@1 (label) __start::@2 @@ -361,11 +361,11 @@ main: { .segment Data // Message to show .encoding "ascii" - TEXT: .text @"hello\$00\$38\$34\$00world\$01\$00" + TEXT: .text @"\$28\$25\$2c\$2c\$2f\$00atari\$00\$18\$22\$29\$34\$24emonstrates\$00\$21\$2e\$34\$29\$23\$00display\$00list" .byte 0 // ANTIC Display List Program // https://en.wikipedia.org/wiki/ANTIC - DISPLAY_LIST: .byte $70, $70, $70, $47, TEXT, $41, DISPLAY_LIST + DISPLAY_LIST: .byte $70, $70, $70, $47, TEXT, $70, 2, $41, DISPLAY_LIST REGISTER UPLIFT POTENTIAL REGISTERS Statement [0] *((const nomodify byte*) SDMCTL) ← (byte) $21 [ ] ( [ ] { } ) always clobbers reg byte a @@ -449,11 +449,11 @@ main: { .segment Data // Message to show .encoding "ascii" - TEXT: .text @"hello\$00\$38\$34\$00world\$01\$00" + TEXT: .text @"\$28\$25\$2c\$2c\$2f\$00atari\$00\$18\$22\$29\$34\$24emonstrates\$00\$21\$2e\$34\$29\$23\$00display\$00list" .byte 0 // ANTIC Display List Program // https://en.wikipedia.org/wiki/ANTIC - DISPLAY_LIST: .byte $70, $70, $70, $47, TEXT, $41, DISPLAY_LIST + DISPLAY_LIST: .byte $70, $70, $70, $47, TEXT, $70, 2, $41, DISPLAY_LIST ASSEMBLER OPTIMIZATIONS Removing instruction jmp __b1 @@ -567,10 +567,10 @@ FINAL SYMBOL TABLE (byte) ATARI_POKEY_WRITE::SKREST (byte) ATARI_POKEY_WRITE::STIMER (byte) ATARI_POKEY_WRITE::UNUSED -(const byte*) DISPLAY_LIST[] = { (byte) $70, (byte) $70, (byte) $70, (byte) $47, <(const byte*) TEXT, >(const byte*) TEXT, (byte) $41, <(const byte*) DISPLAY_LIST, >(const byte*) DISPLAY_LIST } +(const byte*) DISPLAY_LIST[] = { (byte) $70, (byte) $70, (byte) $70, (byte) $47, <(const byte*) TEXT, >(const byte*) TEXT, (byte) $70, (byte) 2, (byte) $41, <(const byte*) DISPLAY_LIST, >(const byte*) DISPLAY_LIST } (const nomodify byte**) SDLST = (byte**) 560 (const nomodify byte*) SDMCTL = (byte*) 559 -(const byte*) TEXT[] = (byte*) "hello XT world! "sa +(const byte*) TEXT[] = (byte*) "HELLO atari 8BITDemonstrates ANTIC display list"sa (void()) main() (label) main::@1 @@ -638,9 +638,9 @@ main: { .segment Data // Message to show .encoding "ascii" - TEXT: .text @"hello\$00\$38\$34\$00world\$01\$00" + TEXT: .text @"\$28\$25\$2c\$2c\$2f\$00atari\$00\$18\$22\$29\$34\$24emonstrates\$00\$21\$2e\$34\$29\$23\$00display\$00list" .byte 0 // ANTIC Display List Program // https://en.wikipedia.org/wiki/ANTIC - DISPLAY_LIST: .byte $70, $70, $70, $47, TEXT, $41, DISPLAY_LIST + DISPLAY_LIST: .byte $70, $70, $70, $47, TEXT, $70, 2, $41, DISPLAY_LIST diff --git a/src/test/ref/examples/atarixl/helloxl.sym b/src/test/ref/examples/atarixl/helloxl.sym index 75efabc1e..7f524f179 100644 --- a/src/test/ref/examples/atarixl/helloxl.sym +++ b/src/test/ref/examples/atarixl/helloxl.sym @@ -99,10 +99,10 @@ (byte) ATARI_POKEY_WRITE::SKREST (byte) ATARI_POKEY_WRITE::STIMER (byte) ATARI_POKEY_WRITE::UNUSED -(const byte*) DISPLAY_LIST[] = { (byte) $70, (byte) $70, (byte) $70, (byte) $47, <(const byte*) TEXT, >(const byte*) TEXT, (byte) $41, <(const byte*) DISPLAY_LIST, >(const byte*) DISPLAY_LIST } +(const byte*) DISPLAY_LIST[] = { (byte) $70, (byte) $70, (byte) $70, (byte) $47, <(const byte*) TEXT, >(const byte*) TEXT, (byte) $70, (byte) 2, (byte) $41, <(const byte*) DISPLAY_LIST, >(const byte*) DISPLAY_LIST } (const nomodify byte**) SDLST = (byte**) 560 (const nomodify byte*) SDMCTL = (byte*) 559 -(const byte*) TEXT[] = (byte*) "hello XT world! "sa +(const byte*) TEXT[] = (byte*) "HELLO atari 8BITDemonstrates ANTIC display list"sa (void()) main() (label) main::@1