ca65 V2.12.0 - (C) Copyright 1998-2005 Ullrich von Bassewitz Main file : chameleon_test.asm Current file: chameleon_test.asm 000000r 1 000000r 1 .include "basicloader.asm" 000000r 2 .code 000000r 2 000000r 2 rr rr .word basicLoader 000002r 2 basicLoader: 000002r 2 ; 2014 SYS(2080):PW.SOFT. 000002r 2 16 08 DE 07 .byte $16, $08, $de, $07, $9e, $28, $32, $30 000006r 2 9E 28 32 30 00000Ar 2 38 30 29 3A .byte $38, $30, $29, $3a, $50, $57, $2E, $53 00000Er 2 50 57 2E 53 000012r 2 4F 46 54 2E .byte $4F, $46, $54, $2E, $00, $00, $00, $00 000016r 2 00 00 00 00 00001Ar 2 00 00 00 00 .byte $00, $00, $00, $00, $00, $00, $00 00001Er 2 00 00 00 000021r 2 000021r 1 .include "chameleon_test_chars.asm" 000021r 2 .segment "DATA3800" 000000r 2 000000r 2 00 00 00 00 .repeat (32*8) 000004r 2 00 00 00 00 000008r 2 00 00 00 00 000100r 2 .byte $00 000100r 2 .endrep 000100r 2 000100r 2 characters: 000100r 2 00 00 00 00 .byte $00, $00, $00, $00, $00, $00, $00, $00 000104r 2 00 00 00 00 000108r 2 18 18 18 18 .byte $18, $18, $18, $18, $00, $00, $18, $00 ; 33 ! 00010Cr 2 00 00 18 00 000110r 2 66 66 66 00 .byte $66, $66, $66, $00, $00, $00, $00, $00 000114r 2 00 00 00 00 000118r 2 66 66 FF 66 .byte $66, $66, $FF, $66, $FF, $66, $66, $00 00011Cr 2 FF 66 66 00 000120r 2 18 3E 60 3C .byte $18, $3E, $60, $3C, $06, $7C, $18, $00 000124r 2 06 7C 18 00 000128r 2 62 66 0C 18 .byte $62, $66, $0C, $18, $30, $66, $46, $00 00012Cr 2 30 66 46 00 000130r 2 3C 66 3C 38 .byte $3C, $66, $3C, $38, $67, $66, $3F, $00 000134r 2 67 66 3F 00 000138r 2 06 0C 18 00 .byte $06, $0C, $18, $00, $00, $00, $00, $00 00013Cr 2 00 00 00 00 000140r 2 0C 18 30 30 .byte $0C, $18, $30, $30, $30, $18, $0C, $00 000144r 2 30 18 0C 00 000148r 2 30 18 0C 0C .byte $30, $18, $0C, $0C, $0C, $18, $30, $00 00014Cr 2 0C 18 30 00 000150r 2 00 66 3C FF .byte $00, $66, $3C, $FF, $3C, $66, $00, $00 000154r 2 3C 66 00 00 000158r 2 00 18 18 7E .byte $00, $18, $18, $7E, $18, $18, $00, $00 00015Cr 2 18 18 00 00 000160r 2 00 00 00 00 .byte $00, $00, $00, $00, $00, $18, $18, $30 000164r 2 00 18 18 30 000168r 2 00 00 00 7E .byte $00, $00, $00, $7E, $00, $00, $00, $00 00016Cr 2 00 00 00 00 000170r 2 00 00 00 00 .byte $00, $00, $00, $00, $00, $18, $18, $00 000174r 2 00 18 18 00 000178r 2 00 03 06 0C .byte $00, $03, $06, $0C, $18, $30, $60, $00 00017Cr 2 18 30 60 00 000180r 2 3C 66 6E 76 .byte $3C, $66, $6E, $76, $66, $66, $3C, $00 000184r 2 66 66 3C 00 000188r 2 18 18 38 18 .byte $18, $18, $38, $18, $18, $18, $7E, $00 00018Cr 2 18 18 7E 00 000190r 2 3C 66 06 0C .byte $3C, $66, $06, $0C, $30, $60, $7E, $00 000194r 2 30 60 7E 00 000198r 2 3C 66 06 1C .byte $3C, $66, $06, $1C, $06, $66, $3C, $00 00019Cr 2 06 66 3C 00 0001A0r 2 06 0E 1E 66 .byte $06, $0E, $1E, $66, $7F, $06, $06, $00 0001A4r 2 7F 06 06 00 0001A8r 2 7E 60 7C 06 .byte $7E, $60, $7C, $06, $06, $66, $3C, $00 0001ACr 2 06 66 3C 00 0001B0r 2 3C 66 60 7C .byte $3C, $66, $60, $7C, $66, $66, $3C, $00 0001B4r 2 66 66 3C 00 0001B8r 2 7E 66 0C 18 .byte $7E, $66, $0C, $18, $18, $18, $18, $00 0001BCr 2 18 18 18 00 0001C0r 2 3C 66 66 3C .byte $3C, $66, $66, $3C, $66, $66, $3C, $00 0001C4r 2 66 66 3C 00 0001C8r 2 3C 66 66 3E .byte $3C, $66, $66, $3E, $06, $66, $3C, $00 0001CCr 2 06 66 3C 00 0001D0r 2 00 00 18 00 .byte $00, $00, $18, $00, $00, $18, $00, $00 0001D4r 2 00 18 00 00 0001D8r 2 00 00 18 00 .byte $00, $00, $18, $00, $00, $18, $18, $30 0001DCr 2 00 18 18 30 0001E0r 2 0E 18 30 60 .byte $0E, $18, $30, $60, $30, $18, $0E, $00 0001E4r 2 30 18 0E 00 0001E8r 2 00 00 7E 00 .byte $00, $00, $7E, $00, $7E, $00, $00, $00 0001ECr 2 7E 00 00 00 0001F0r 2 70 18 0C 06 .byte $70, $18, $0C, $06, $0C, $18, $70, $00 0001F4r 2 0C 18 70 00 0001F8r 2 3C 66 06 0C .byte $3C, $66, $06, $0C, $18, $00, $18, $00 0001FCr 2 18 00 18 00 000200r 2 000200r 2 ; Uppercase 000200r 2 1C 22 2E 2A .byte $1C, $22, $2E, $2A, $2E, $20, $1C, $00 ; @ 000204r 2 2E 20 1C 00 000208r 2 18 3C 66 7E .byte $18, $3C, $66, $7E, $66, $66, $66, $00 ; A 00020Cr 2 66 66 66 00 000210r 2 7C 66 66 7C .byte $7C, $66, $66, $7C, $66, $66, $7C, $00 ; B 000214r 2 66 66 7C 00 000218r 2 3C 66 60 60 .byte $3C, $66, $60, $60, $60, $66, $3C, $00 ; C 00021Cr 2 60 66 3C 00 000220r 2 78 6C 66 66 .byte $78, $6C, $66, $66, $66, $6C, $78, $00 ; D 000224r 2 66 6C 78 00 000228r 2 7E 60 60 78 .byte $7E, $60, $60, $78, $60, $60, $7E, $00 ; E 00022Cr 2 60 60 7E 00 000230r 2 7E 60 60 78 .byte $7E, $60, $60, $78, $60, $60, $60, $00 ; F 000234r 2 60 60 60 00 000238r 2 3C 66 60 6E .byte $3C, $66, $60, $6E, $66, $66, $3C, $00 ; G 00023Cr 2 66 66 3C 00 000240r 2 66 66 66 7E .byte $66, $66, $66, $7E, $66, $66, $66, $00 ; H 000244r 2 66 66 66 00 000248r 2 3C 18 18 18 .byte $3C, $18, $18, $18, $18, $18, $3C, $00 ; I 00024Cr 2 18 18 3C 00 000250r 2 1E 0C 0C 0C .byte $1E, $0C, $0C, $0C, $0C, $6C, $38, $00 ; J 000254r 2 0C 6C 38 00 000258r 2 66 6C 78 70 .byte $66, $6C, $78, $70, $78, $6C, $66, $00 ; K 00025Cr 2 78 6C 66 00 000260r 2 60 60 60 60 .byte $60, $60, $60, $60, $60, $60, $7E, $00 ; L 000264r 2 60 60 7E 00 000268r 2 63 77 7F 6B .byte $63, $77, $7F, $6B, $63, $63, $63, $00 ; M 00026Cr 2 63 63 63 00 000270r 2 66 76 7E 7E .byte $66, $76, $7E, $7E, $6E, $66, $66, $00 ; N 000274r 2 6E 66 66 00 000278r 2 3C 66 66 66 .byte $3C, $66, $66, $66, $66, $66, $3C, $00 ; O 00027Cr 2 66 66 3C 00 000280r 2 7C 66 66 7C .byte $7C, $66, $66, $7C, $60, $60, $60, $00 ; P 000284r 2 60 60 60 00 000288r 2 3C 66 66 66 .byte $3C, $66, $66, $66, $66, $3C, $0E, $00 ; Q 00028Cr 2 66 3C 0E 00 000290r 2 7C 66 66 7C .byte $7C, $66, $66, $7C, $78, $6C, $66, $00 ; R 000294r 2 78 6C 66 00 000298r 2 3C 66 60 3C .byte $3C, $66, $60, $3C, $06, $66, $3C, $00 ; S 00029Cr 2 06 66 3C 00 0002A0r 2 7E 18 18 18 .byte $7E, $18, $18, $18, $18, $18, $18, $00 ; T 0002A4r 2 18 18 18 00 0002A8r 2 66 66 66 66 .byte $66, $66, $66, $66, $66, $66, $3C, $00 ; U 0002ACr 2 66 66 3C 00 0002B0r 2 66 66 66 66 .byte $66, $66, $66, $66, $66, $3C, $18, $00 ; V 0002B4r 2 66 3C 18 00 0002B8r 2 63 63 63 6B .byte $63, $63, $63, $6B, $7F, $77, $63, $00 ; W 0002BCr 2 7F 77 63 00 0002C0r 2 66 66 3C 18 .byte $66, $66, $3C, $18, $3C, $66, $66, $00 ; X 0002C4r 2 3C 66 66 00 0002C8r 2 66 66 66 3C .byte $66, $66, $66, $3C, $18, $18, $18, $00 ; Y 0002CCr 2 18 18 18 00 0002D0r 2 7E 06 0C 18 .byte $7E, $06, $0C, $18, $30, $60, $7E, $00 ; Z 0002D4r 2 30 60 7E 00 0002D8r 2 1C 10 10 10 .byte $1C, $10, $10, $10, $10, $10, $1C, $00 ; [ 0002DCr 2 10 10 1C 00 0002E0r 2 40 20 10 08 .byte $40, $20, $10, $08, $04, $02, $01, $00 ; \ 0002E4r 2 04 02 01 00 0002E8r 2 1C 04 04 04 .byte $1C, $04, $04, $04, $04, $04, $1C, $00 ; ] 0002ECr 2 04 04 1C 00 0002F0r 2 08 14 22 00 .byte $08, $14, $22, $00, $00, $00, $00, $00 ; ^ 0002F4r 2 00 00 00 00 0002F8r 2 00 00 00 00 .byte $00, $00, $00, $00, $00, $00, $00, $7F ; _ 0002FCr 2 00 00 00 7F 000300r 2 ; Lower case 000300r 2 10 08 00 00 .byte $10, $08, $00, $00, $00, $00, $00, $00 ; ` 000304r 2 00 00 00 00 000308r 2 00 00 3C 06 .byte $00, $00, $3C, $06, $3E, $66, $3E, $00 00030Cr 2 3E 66 3E 00 000310r 2 00 60 60 7C .byte $00, $60, $60, $7C, $66, $66, $7C, $00 000314r 2 66 66 7C 00 000318r 2 00 00 3C 60 .byte $00, $00, $3C, $60, $60, $60, $3C, $00 00031Cr 2 60 60 3C 00 000320r 2 00 06 06 3E .byte $00, $06, $06, $3E, $66, $66, $3E, $00 000324r 2 66 66 3E 00 000328r 2 00 00 3C 66 .byte $00, $00, $3C, $66, $7E, $60, $3C, $00 00032Cr 2 7E 60 3C 00 000330r 2 00 0E 18 3E .byte $00, $0E, $18, $3E, $18, $18, $18, $00 000334r 2 18 18 18 00 000338r 2 00 00 3E 66 .byte $00, $00, $3E, $66, $66, $3E, $06, $7C 00033Cr 2 66 3E 06 7C 000340r 2 00 60 60 7C .byte $00, $60, $60, $7C, $66, $66, $66, $00 000344r 2 66 66 66 00 000348r 2 00 18 00 38 .byte $00, $18, $00, $38, $18, $18, $3C, $00 00034Cr 2 18 18 3C 00 000350r 2 00 06 00 06 .byte $00, $06, $00, $06, $06, $06, $06, $3C 000354r 2 06 06 06 3C 000358r 2 00 60 60 6C .byte $00, $60, $60, $6C, $78, $6C, $66, $00 00035Cr 2 78 6C 66 00 000360r 2 00 38 18 18 .byte $00, $38, $18, $18, $18, $18, $3C, $00 000364r 2 18 18 3C 00 000368r 2 00 00 66 7F .byte $00, $00, $66, $7F, $7F, $6B, $63, $00 00036Cr 2 7F 6B 63 00 000370r 2 00 00 7C 66 .byte $00, $00, $7C, $66, $66, $66, $66, $00 000374r 2 66 66 66 00 000378r 2 00 00 3C 66 .byte $00, $00, $3C, $66, $66, $66, $3C, $00 00037Cr 2 66 66 3C 00 000380r 2 00 00 7C 66 .byte $00, $00, $7C, $66, $66, $7C, $60, $60 000384r 2 66 7C 60 60 000388r 2 00 00 3E 66 .byte $00, $00, $3E, $66, $66, $3E, $06, $06 00038Cr 2 66 3E 06 06 000390r 2 00 00 7C 66 .byte $00, $00, $7C, $66, $60, $60, $60, $00 000394r 2 60 60 60 00 000398r 2 00 00 3E 60 .byte $00, $00, $3E, $60, $3C, $06, $7C, $00 00039Cr 2 3C 06 7C 00 0003A0r 2 00 18 7E 18 .byte $00, $18, $7E, $18, $18, $18, $0E, $00 0003A4r 2 18 18 0E 00 0003A8r 2 00 00 66 66 .byte $00, $00, $66, $66, $66, $66, $3E, $00 0003ACr 2 66 66 3E 00 0003B0r 2 00 00 66 66 .byte $00, $00, $66, $66, $66, $3C, $18, $00 0003B4r 2 66 3C 18 00 0003B8r 2 00 00 63 6B .byte $00, $00, $63, $6B, $7F, $3E, $36, $00 0003BCr 2 7F 3E 36 00 0003C0r 2 00 00 66 3C .byte $00, $00, $66, $3C, $18, $3C, $66, $00 0003C4r 2 18 3C 66 00 0003C8r 2 00 00 66 66 .byte $00, $00, $66, $66, $66, $3E, $0C, $78 0003CCr 2 66 3E 0C 78 0003D0r 2 00 00 7E 0C .byte $00, $00, $7E, $0C, $18, $30, $7E, $00 0003D4r 2 18 30 7E 00 0003D8r 2 0C 10 10 20 .byte $0C, $10, $10, $20, $10, $10, $0C, $00 ; { 0003DCr 2 10 10 0C 00 0003E0r 2 08 08 08 08 .byte $08, $08, $08, $08, $08, $08, $08, $00 ; | 0003E4r 2 08 08 08 00 0003E8r 2 30 08 08 04 .byte $30, $08, $08, $04, $08, $08, $30, $00 ; } 0003ECr 2 08 08 30 00 0003F0r 2 00 00 30 49 .byte $00, $00, $30, $49, $06, $00, $00, $00 ; ~ 0003F4r 2 06 00 00 00 0003F8r 2 FF FF FF FF .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; $7F 127 Solid block 0003FCr 2 FF FF FF FF 000400r 2 ; .byte $00, $00, $00, $00, $00, $00, $00, $00 000400r 2 000400r 1 .code 000021r 1 4C rr rr jmp main 000024r 1 000024r 1 COREID = $04 000024r 1 ORGCFGENA = $10 ; Startup value of CFGENA 000024r 1 ORGCFGTUR = $11 ; Startup value of CFGTUR 000024r 1 ORGCFGREG = $12 ; Startup value of CFGREG 000024r 1 STRINGL = $f9 000024r 1 STRINGH = $fa 000024r 1 COLOR = $fb 000024r 1 COLORL = $fc 000024r 1 COLORH = $fd 000024r 1 CURSORL = $fe 000024r 1 CURSORH = $ff 000024r 1 REGENPOS = $0400 000024r 1 CHARPOS = $3800 000024r 1 RASTER = $D012 000024r 1 VIC_VMCB = $D018 000024r 1 VERIDX = $D0A8 000024r 1 VERDAT = $D0A9 000024r 1 CFGTUR = $D0F3 000024r 1 CFGREG = $D0FA 000024r 1 CFGDIS = $D0FD 000024r 1 CFGENA = $D0FE 000024r 1 CFGRTI = $D0FF 000024r 1 COLORRAM = $D800 000024r 1 000024r 1 BANK_RAM = 0 000024r 1 BANK_VIC = 1 000024r 1 BANK_SID = 2 000024r 1 BANK_CFG = 3 000024r 1 BANK_MMU = 4 000024r 1 BANK_UNK = 5 000024r 1 000024r 1 DEF_COLOR = 14 000024r 1 GRN_COLOR = 5 000024r 1 RED_COLOR = 2 000024r 1 000024r 1 .macro SPACES nr 000024r 1 ldx #nr 000024r 1 jsr print_spaces 000024r 1 .endmacro 000024r 1 000024r 1 .macro STRING addr 000024r 1 ldx #addr 000024r 1 jsr printstr 000024r 1 .endmacro 000024r 1 000024r 1 .macro BANK_RESULT bank_a, print_a 000024r 1 ldx #bank_a 000024r 1 lda #>print_a 000024r 1 jsr printhex 000024r 1 lda #REGENPOS 0005FAr 1 85 FF sta CURSORH 0005FCr 1 A9 00 lda #COLORRAM 000602r 1 85 FD sta COLORH 000604r 1 60 rts 000605r 1 000605r 1 000605r 1 000605r 1 printstr: 000605r 1 86 F9 stx STRINGL 000607r 1 84 FA sty STRINGH 000609r 1 A0 00 ldy #$00 00060Br 1 printstr1: 00060Br 1 B1 F9 lda (STRINGL),y 00060Dr 1 F0 0B beq printstr_e 00060Fr 1 20 rr rr jsr print_char 000612r 1 E6 F9 inc STRINGL 000614r 1 D0 F5 bne printstr1 000616r 1 E6 FA inc STRINGH 000618r 1 D0 F1 bne printstr1 00061Ar 1 printstr_e: 00061Ar 1 60 rts 00061Br 1 00061Br 1 printhex: 00061Br 1 48 pha 00061Cr 1 4A lsr 00061Dr 1 4A lsr 00061Er 1 4A lsr 00061Fr 1 4A lsr 000620r 1 20 rr rr jsr printnibble 000623r 1 68 pla 000624r 1 printnibble: 000624r 1 29 0F and #$0f 000626r 1 8E rr rr stx print_tempx 000629r 1 AA tax 00062Ar 1 BD rr rr lda hextbl,x 00062Dr 1 AE rr rr ldx print_tempx 000630r 1 4C rr rr jmp print_char 000633r 1 print_tempx: 000633r 1 00 .byte 0 000634r 1 000634r 1 redgreen: 000634r 1 48 pha 000635r 1 F0 06 beq redgreen2 000637r 1 A9 02 lda #RED_COLOR 000639r 1 redgreen1: 000639r 1 85 FB sta COLOR 00063Br 1 68 pla 00063Cr 1 60 rts 00063Dr 1 redgreen2: 00063Dr 1 A9 05 lda #GRN_COLOR 00063Fr 1 D0 F8 bne redgreen1 000641r 1 redgreen_hex: 000641r 1 20 rr rr jsr redgreen 000644r 1 20 rr rr jsr printhex 000647r 1 A9 0E lda #DEF_COLOR 000649r 1 85 FB sta COLOR 00064Br 1 60 rts 00064Cr 1 00064Cr 1 print_spaces: 00064Cr 1 20 rr rr jsr space 00064Fr 1 CA dex 000650r 1 D0 FA bne print_spaces 000652r 1 60 rts 000653r 1 space: 000653r 1 A9 20 lda #$20 000655r 1 print_char: 000655r 1 8C rr rr sty print_tempy 000658r 1 A0 00 ldy #$00 00065Ar 1 91 FE sta (CURSORL),y 00065Cr 1 A5 FB lda COLOR 00065Er 1 91 FC sta (COLORL),y 000660r 1 E6 FE inc CURSORL 000662r 1 E6 FC inc COLORL 000664r 1 D0 04 bne print_char_e 000666r 1 E6 FF inc CURSORH 000668r 1 E6 FD inc COLORH 00066Ar 1 print_char_e: 00066Ar 1 AC rr rr ldy print_tempy 00066Dr 1 60 rts 00066Er 1 print_tempy: 00066Er 1 00 .byte 0 00066Er 1