From 42891b0cc45796f2038d150ac61f270a583ac8a7 Mon Sep 17 00:00:00 2001 From: yeastplume Date: Sun, 26 Sep 2021 12:03:14 +0100 Subject: [PATCH] move vic sample into new directory --- samples/vic/Makefile.vars | 7 +++ samples/vic/common/Makefile | 36 ++++++++++++++ samples/vic/common/c128-asm.cfg | 17 +++++++ samples/vic/common/header.inc | 9 ++++ samples/vic/common/macros.inc | 45 ++++++++++++++++++ samples/vic/vic_mcbmp/Makefile | 19 ++++++++ .../p128-ref-template-short.aseprite | Bin 0 -> 540 bytes .../vic/vic_mcbmp/p128-ref-template-short.png | Bin 0 -> 264 bytes .../vic/vic_mcbmp/p128-ref-template.aseprite | Bin 0 -> 623 bytes samples/vic/vic_mcbmp/p128-ref-template.png | Bin 0 -> 345 bytes samples/vic/vic_mcbmp/p128.s | 29 +++++++++++ 11 files changed, 162 insertions(+) create mode 100644 samples/vic/Makefile.vars create mode 100644 samples/vic/common/Makefile create mode 100644 samples/vic/common/c128-asm.cfg create mode 100644 samples/vic/common/header.inc create mode 100644 samples/vic/common/macros.inc create mode 100644 samples/vic/vic_mcbmp/Makefile create mode 100644 samples/vic/vic_mcbmp/p128-ref-template-short.aseprite create mode 100644 samples/vic/vic_mcbmp/p128-ref-template-short.png create mode 100644 samples/vic/vic_mcbmp/p128-ref-template.aseprite create mode 100644 samples/vic/vic_mcbmp/p128-ref-template.png create mode 100644 samples/vic/vic_mcbmp/p128.s diff --git a/samples/vic/Makefile.vars b/samples/vic/Makefile.vars new file mode 100644 index 0000000..decbc06 --- /dev/null +++ b/samples/vic/Makefile.vars @@ -0,0 +1,7 @@ +# Common emulator flags and locations +# Ensure the emulator and rom locations are for your system + +ALOEVERA = "../../../target/debug/aloevera" +C128_EMU = x128 +C128_EMU_FLAGS = +#DEBUG = -debug 9000 diff --git a/samples/vic/common/Makefile b/samples/vic/common/Makefile new file mode 100644 index 0000000..92fedac --- /dev/null +++ b/samples/vic/common/Makefile @@ -0,0 +1,36 @@ +# Common makefile include for examples +# Don't run make from this directory, run +# from subdirs + +C128_RUN = $(C128_EMU) $(C128_EMU_FLAGS) $(DEBUG) + +# Ensure ld65 and ca65 are on your path +# Assembly flags +CPU = 6502 +AS = ca65 +# Add defines, if needed (-DWHATEVER) +ASFLAGS = -g --cpu $(CPU) + +# Linker flags +LD = ld65 +#Define segments and files in config.cfg +LDFLAGS = -C ../common/c128-asm.cfg + +OBJS_$(NAME): $(NAME).o + $(LD) $(LDFLAGS) -o $(NAME).prg -m $(NAME).map $(NAME).o + +$(NAME).o: project.av $(NAME).s + $(AS) $(ASFLAGS) $(NAME).s + +run_fresh: + $(C128_RUN) + +run_asm: OBJS_$(NAME) + $(C128_RUN) -autostart $(NAME).prg + +run_bas: $(NAME).assembled.bas + $(C128_RUN) -bas $(NAME).assembled.bas + +all: OBJS_$(NAME) +clean: + rm -rf ./output *.o *.prg *.map *.av *.log *.assembled.bas *.img *.BIN *.meta diff --git a/samples/vic/common/c128-asm.cfg b/samples/vic/common/c128-asm.cfg new file mode 100644 index 0000000..30ec9e6 --- /dev/null +++ b/samples/vic/common/c128-asm.cfg @@ -0,0 +1,17 @@ +FEATURES { + STARTADDRESS: default = $1C00; +} +MEMORY { + ZP: file = "", start = $0002, size = $00FE, define = yes; + LOADADDR: file = %O, start = %S - 2, size = $0002; + MAIN: file = %O, start = %S, size = $D000 - %S; +} +SEGMENTS { + ZEROPAGE: load = ZP, type = zp, optional = yes; + LOADADDR: load = LOADADDR, type = ro; + EXEHDR: load = MAIN, type = ro, optional = yes; + CODE: load = MAIN, type = rw; + RODATA: load = MAIN, type = ro, optional = yes; + DATA: load = MAIN, type = rw, optional = yes; + BSS: load = MAIN, type = bss, optional = yes, define = yes; +} \ No newline at end of file diff --git a/samples/vic/common/header.inc b/samples/vic/common/header.inc new file mode 100644 index 0000000..ad9523c --- /dev/null +++ b/samples/vic/common/header.inc @@ -0,0 +1,9 @@ +;Basic Header +.segment "LOADADDR" + .word $1C01 + +.segment "EXEHDR" +.word next, 10 +.byte $9e, "7188", 0, 0 +.word 0, 0, 0 +next: .word 0 \ No newline at end of file diff --git a/samples/vic/common/macros.inc b/samples/vic/common/macros.inc new file mode 100644 index 0000000..2c05075 --- /dev/null +++ b/samples/vic/common/macros.inc @@ -0,0 +1,45 @@ +; adds a constant to 16 bit value +; stored at addr +.macro add_constant_16 addr, constant + clc + lda addr + adc #constant + sta addr + 1 +.endmacro + +; loop until value stored in addr equals constant +.macro loop_till_eq_16 addr, constant, loop_label + lda addr+1 + cmp #>constant ;loop until 512 reached + bne loop_label + lda addr + cmp #constant + sta addr+1 +.endmacro + +VERA_ADDR_LO = $9F20 +VERA_ADDR_MID = VERA_ADDR_LO + 1; +VERA_ADDR_HI = VERA_ADDR_LO + 2; +VERA_DATA0 = VERA_ADDR_LO + 3; +VERA_DATA1 = VERA_ADDR_LO + 4; + +.macro v_address_set addr, stride + lda #<(addr >> 16) | stride << 4 + sta VERA_ADDR_HI + lda #<(addr >> 8) + sta VERA_ADDR_MID + lda #<(addr) + sta VERA_ADDR_LO +.endmacro + diff --git a/samples/vic/vic_mcbmp/Makefile b/samples/vic/vic_mcbmp/Makefile new file mode 100644 index 0000000..d199265 --- /dev/null +++ b/samples/vic/vic_mcbmp/Makefile @@ -0,0 +1,19 @@ +include ../Makefile.vars +NAME = p128 + +project.av: p128-ref-template.png + $(ALOEVERA) create project project.av + $(ALOEVERA) -p project.av palette import cbm_palette p128-ref-template-short.png + $(ALOEVERA) -p project.av imageset import -k test_set_1 4 8 p128-ref-template-short.png + $(ALOEVERA) -p project.av imageset format -v test_set_1 cbm_palette 4 + $(ALOEVERA) -p project.av asm -f ca65 ./output/ all + $(ALOEVERA) -p project.av asm -f bin ./output/ all + +generate_resources: project.av + +generate_basic: generate_resources + cat $(NAME).bas > $(NAME).assembled.bas + +$(NAME).assembled.bas: generate_basic + +include ../common/Makefile diff --git a/samples/vic/vic_mcbmp/p128-ref-template-short.aseprite b/samples/vic/vic_mcbmp/p128-ref-template-short.aseprite new file mode 100644 index 0000000000000000000000000000000000000000..a69b4747eacb69a985da6b24438970789321dc77 GIT binary patch literal 540 zcmb1PVqkc%l##&z2ss!S85kH+fEWP;7??nU3@kudT7Wq~(|>(r1>4FBv_K4q*%iQ6 zB3V}jWJ@XtKt=eGWWdb-3=IE)fPtaI(g;YVZ`%tbyX~g|$WdV@SssJQ_ z;6E@PAOI8-6?5KBvF1CVz~Qj4cd6f<|Jy`OABA~1zj{zS;i2P)(*_B1P6(SEOp?2M zJ?4y5`lT5S?v)%Lvz=zYv9tJdts`Y-ZNbk+*X9VspX<6ktM{w_^7m`{@6{!JKVBc_ zxBpf7%oA_aH{3t};QQ55ox@-5MJ8XaXPRB=S#SPfs`fUUecH3PRx-@BVs8fkgRPWt literal 0 HcmV?d00001 diff --git a/samples/vic/vic_mcbmp/p128-ref-template-short.png b/samples/vic/vic_mcbmp/p128-ref-template-short.png new file mode 100644 index 0000000000000000000000000000000000000000..cc1edba8ca53933f22a563908f5886aa481f78d8 GIT binary patch literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sjKx9jP7LeL$-D%~1o(uw0_p$% z|94m#rElBYZ9gq^fv1CE@BVW|-65LcP7FITlL7()Dk>_bJm{>*JTia&{97LKi-3CC zJY5_^JUZV_@#Z_Az`?q(ck8+x|8rMoT#2pp^-R80sK~AMV0w$yA>m9VzX@E?!fj_V zk7)K;wC`=1FnNKSC}X3*!f!z)yB%f(ObRU$I+u>Aya*f^B65nkxpx z>>fkpz&0~!W231|$^44?r(-9W8MAe{=xZUq|2z{TK{n4FznlwX>c@)^iy zRR9t|@E;ft5CDpaiaBp@MDsNnh`3(t)_=14^Zd0_q~7v8IkMFw{CEEa@eOj$dG)N{`?;5|SK79J(eLWt8`=Ka zUzi`8d*|@PzoFMZ{QK~^p8Gxj{(9|w_J4nh-m8CN|2?ty?f&q0ztewx_pbPF{eNTr b#QX1aXQ}Gjx{~eY_>D%^p+fNH!;OSu4yZ>BKcZg=V6T^~I{kIbJx|CWdR zBA}k@o-U3d6?5L+@a1YY5OKSh{(sHlH}%_1qq4*TF7Tf#OemPr-L~TDtL47UsRsP7 zvbHtcwwu#;`f^dv^u%k|xmT3&u*_L3e&)8O#ezx9-_n<-KVb_gbC~}}O!0w8t#I~l zr*k|jb}eULa=+2N%HfyNx<3s+dUb3QX8*6YJ-d_fJXf7`@Bam!{6Eh9-zqm#{_Ds6 fp+HAb3Vy8S_x#S@@iRQe3}lq2tDnm{r-UW|A9!}3 literal 0 HcmV?d00001 diff --git a/samples/vic/vic_mcbmp/p128.s b/samples/vic/vic_mcbmp/p128.s new file mode 100644 index 0000000..3427cbf --- /dev/null +++ b/samples/vic/vic_mcbmp/p128.s @@ -0,0 +1,29 @@ +.include "../common/header.inc" + +VIC_BMP_START_ADDR = $2000 + +.code + jmp start + +.proc set_mode + lda #$3b + sta $d011 + lda #$18 + sta $d016 + rts +.endproc + +.proc load_tile + lda imageset + sta VIC_BMP_START_ADDR + rts +.endproc + +start: + jsr set_mode + jsr load_tile + rts + +.segment "RODATA" +imageset: + .include "output/imagesets/test_set_1.ca65.inc"