From 2fa84a1b0095a02384a1782edf8b28baed1c0cb9 Mon Sep 17 00:00:00 2001 From: TMR Date: Thu, 19 May 2016 20:42:17 +0100 Subject: [PATCH] Source and binary --- binary/c64cd_screen.raw | Bin 0 -> 8192 bytes build.bat | 1 + f15_d'gamma_clone.do | Bin 0 -> 143360 bytes f15_dgamma.asm | 764 +++++++++++++++++++++++++++++++++++++ fdclone#060a00 | Bin 0 -> 13824 bytes workfiles/c64cd_screen.bmp | Bin 0 -> 54838 bytes 6 files changed, 765 insertions(+) create mode 100644 binary/c64cd_screen.raw create mode 100644 build.bat create mode 100644 f15_d'gamma_clone.do create mode 100644 f15_dgamma.asm create mode 100644 fdclone#060a00 create mode 100644 workfiles/c64cd_screen.bmp diff --git a/binary/c64cd_screen.raw b/binary/c64cd_screen.raw new file mode 100644 index 0000000000000000000000000000000000000000..58ebb5579b6e13c30c4829cee117ff01dd022e46 GIT binary patch literal 8192 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 J@Slai{|5v_P@Vt) literal 0 HcmV?d00001 diff --git a/f15_dgamma.asm b/f15_dgamma.asm new file mode 100644 index 0000000..5b85217 --- /dev/null +++ b/f15_dgamma.asm @@ -0,0 +1,764 @@ +; +; F15 D'GAMMA CLONE +; + +; Code and graphics by TMR + + +; A quick, written-from-scratch copy of the Apple II intros F-15 +; Strike Eagle by Black Bag and The Six Pack's Lantern Of D'Gamma. +; Coded for C64CrapDebunk.Wordpress.com + +; Notes: this source is formatted for the ACME cross assembler from +; http://sourceforge.net/projects/acme-crossass/ + +; build.bat will call ACME to create an assembled file but something +; like CiderPress is needed to inject the file into a bootable disk +; image. + + +; Memory Map +; $0800 - $09ff work buffers for the text effect +; $0a00 - $17fd program code/data +; $2000 - $3fff bitmap data + + +; Select an output filename + !to "fdclone#060a00",plain + + +; Yank in binary data + * = $2000 +char_data !binary "binary/c64cd_screen.raw" + + +; Constants +rd_vbl_bar = $c019 ; top bit clear means vblank + +txtclr = $c050 ; select bitmap mode +txtset = $c051 ; select text mode +mixclr = $c052 ; full screen +mixset = $c053 ; split screen (last four lines are text) + +txtpage1 = $c054 ; select text buffer 1 ($0400) +txtpage2 = $c055 ; select text buffer 2 ($0x00) + +lores = $c056 ; display low res graphics +hires = $c057 ; display high res graphics + + +; Label assignments +sine_at_1 = $50 +sine_temp = $51 + +logo_x = $52 +logo_timer = $53 +logo_count = $54 + +rnd_1 = $55 +rnd_2 = $56 + +scroll_count = $57 +scroll_timer = $58 +scroll_pos = $59 ; two bytes used + + +; Work spaces for the text effect +text_buffer = $0200 +effect_buffer = $0300 + + +; Set origin point (must be the same as the last four bytes of !to) + * = $0a00 + + +; Entry point for the code +entry sei + + +; Configure display mode + lda #$00 + sta txtclr + sta hires + sta mixset + +; Initialise the logo movement routine + lda #$00 + sta logo_x + sta logo_timer + sta logo_count + +; Clear the work spaces + ldx #$00 +work_clear lda #$20 + sta text_buffer,x + lda #$00 + sta effect_buffer,x + inx + bne work_clear + +; Reset the text + jsr scroll_reset + lda #$00 + sta scroll_count + sta scroll_timer + +; Main loop +main_loop lda rd_vbl_bar + bmi *-$03 + + +; Update the upper colour bars + lda sine_at_1 + clc + adc #$02 + sta sine_at_1 + sta sine_temp + + ldx #$00 +bar_loop_1 lda sine_temp + clc + adc #$09 + sta sine_temp + tay + lda bar_sinus,y + tay + + lda bar_data_left+$00,y + sta $2000,x + lda bar_data_right+$00,y + sta $2001,x + + lda bar_data_left+$01,y + sta $2400,x + lda bar_data_right+$01,y + sta $2401,x + + lda bar_data_left+$02,y + sta $2800,x + lda bar_data_right+$02,y + sta $2801,x + + lda bar_data_left+$03,y + sta $2c00,x + lda bar_data_right+$03,y + sta $2c01,x + + lda bar_data_left+$04,y + sta $3000,x + lda bar_data_right+$04,y + sta $3001,x + + lda bar_data_left+$05,y + sta $3400,x + lda bar_data_right+$05,y + sta $3401,x + + lda bar_data_left+$06,y + sta $3800,x + lda bar_data_right+$06,y + sta $3801,x + + lda bar_data_left+$07,y + sta $3c00,x + lda bar_data_right+$07,y + sta $3c01,x + + inx + inx + cpx #$28 + bne bar_loop_1 + +; Move one of the letters in the rolling logo + ldx logo_x + cpx #$21 + bcc *+$05 + jmp logo_move_skip + + ldy #$00 +logo_loop_1 lda $2100,x + sta $2080,x + lda $2500,x + sta $2480,x + lda $2900,x + sta $2880,x + lda $2d00,x + sta $2c80,x + lda $3100,x + sta $3080,x + lda $3500,x + sta $3480,x + lda $3900,x + sta $3880,x + lda $3d00,x + sta $3c80,x + + lda $2180,x + sta $2100,x + lda $2580,x + sta $2500,x + lda $2980,x + sta $2900,x + lda $2d80,x + sta $2d00,x + lda $3180,x + sta $3100,x + lda $3580,x + sta $3500,x + lda $3980,x + sta $3900,x + lda $3d80,x + sta $3d00,x + + lda $2200,x + sta $2180,x + lda $2600,x + sta $2580,x + lda $2a00,x + sta $2980,x + lda $2e00,x + sta $2d80,x + lda $3200,x + sta $3180,x + lda $3600,x + sta $3580,x + lda $3a00,x + sta $3980,x + lda $3e00,x + sta $3d80,x + + lda $2280,x + sta $2200,x + lda $2680,x + sta $2600,x + lda $2a80,x + sta $2a00,x + lda $2e80,x + sta $2e00,x + lda $3280,x + sta $3200,x + lda $3680,x + sta $3600,x + lda $3a80,x + sta $3a00,x + lda $3e80,x + sta $3e00,x + + lda $2300,x + sta $2280,x + lda $2700,x + sta $2680,x + lda $2b00,x + sta $2a80,x + lda $2f00,x + sta $2e80,x + lda $3300,x + sta $3280,x + lda $3700,x + sta $3680,x + lda $3b00,x + sta $3a80,x + lda $3f00,x + sta $3e80,x + + lda $2380,x + sta $2300,x + lda $2780,x + sta $2700,x + lda $2b80,x + sta $2b00,x + lda $2f80,x + sta $2f00,x + lda $3380,x + sta $3300,x + lda $3780,x + sta $3700,x + lda $3b80,x + sta $3b00,x + lda $3f80,x + sta $3f00,x + + lda $2028,x + sta $2380,x + lda $2428,x + sta $2780,x + lda $2828,x + sta $2b80,x + lda $2c28,x + sta $2f80,x + lda $3028,x + sta $3380,x + lda $3428,x + sta $3780,x + lda $3828,x + sta $3b80,x + lda $3c28,x + sta $3f80,x + + lda $2080,x + sta $2028,x + lda $2480,x + sta $2428,x + lda $2880,x + sta $2828,x + lda $2c80,x + sta $2c28,x + lda $3080,x + sta $3028,x + lda $3480,x + sta $3428,x + lda $3880,x + sta $3828,x + lda $3c80,x + sta $3c28,x + + inx + iny + cpy #$08 + beq logo_move_skip + jmp logo_loop_1 + +; Update the rolling logo effect counters +logo_move_skip ldx logo_timer + inx + cpx #$07 + bne lt_xb + + ldx logo_count + inx + stx logo_count + +logo_xp_read lda logo_x_pos,x + cmp #$ff + bne logo_xp_okay + + ldx #$00 + stx logo_count + jmp logo_xp_read + +logo_xp_okay sta logo_x + + ldx #$00 +lt_xb stx logo_timer + +; Update the lower colour bars + ldx #$00 + ldy #$26 +bar_loop_2 lda $2000,x + sta $20a8,y + lda $2400,x + sta $24a8,y + lda $2800,x + sta $28a8,y + lda $2c00,x + sta $2ca8,y + lda $3000,x + sta $30a8,y + lda $3400,x + sta $34a8,y + lda $3800,x + sta $38a8,y + lda $3c00,x + sta $3ca8,y + + lda $2001,x + sta $20a9,y + lda $2401,x + sta $24a9,y + lda $2801,x + sta $28a9,y + lda $2c01,x + sta $2ca9,y + lda $3001,x + sta $30a9,y + lda $3401,x + sta $34a9,y + lda $3801,x + sta $38a9,y + lda $3c01,x + sta $3ca9,y + dey + dey + inx + inx + cpx #$28 + bne bar_loop_2 + +; Update the text area + ldx #$00 +text_update lda text_buffer+$00,x + ora effect_buffer+$00,x + sta $0650,x + lda text_buffer+$28,x + ora effect_buffer+$28,x + sta $06d0,x + lda text_buffer+$50,x + ora effect_buffer+$50,x + sta $0750,x + lda text_buffer+$78,x + ora effect_buffer+$78,x + sta $07d0,x + inx + cpx #$28 + bne text_update + +; Fetch a character of text + ldx scroll_timer + inx + cpx #$02 + bne st_xb + + ldx scroll_count + cpx #$a0 + bcs scroll_skip + ldy #$00 +scroll_mread lda (scroll_pos),y + cmp #$ff + bne scroll_okay + jsr scroll_reset + jmp scroll_mread + +scroll_okay sta text_buffer,x + inc scroll_pos+$00 + bne *+$04 + inc scroll_pos+$01 + +scroll_skip inx + stx scroll_count + + ldx #$00 +st_xb stx scroll_timer + +; Randomly toggle some of the character inversions + jsr random + jsr random + +; Wait for the start of the screen + lda rd_vbl_bar + bpl *-$03 + + jmp main_loop + + +; Randomly select a character and invert it +random lda rnd_1 + clc + adc #$01 + eor rnd_2 + lsr + bcc *+$04 + ora #$80 + ldx rnd_2 + sta rnd_2 + stx rnd_1 + + and #$7f + lda effect_buffer+$00,x + eor #$80 + sta effect_buffer+$00,x + sta effect_buffer+$80,x + + rts + + +; Subroutine to reset the scrolling message +scroll_reset lda #scroll_text + sta scroll_pos+$01 + rts + + +; Labels for the colour bar data to make it easier to read +black_l = %00000000 +black_r = %00000000 + +purple_l = %01010101 +purple_r = %00101010 + +green_l = %00101010 +green_r = %01010101 + +blue_l = %11010101 +blue_r = %10101010 + +orange_l = %10101010 +orange_r = %11010101 + +white_l = %01111111 +white_r = %01111111 + +; Data for the colour bars (two tables for odd and even bytes) +bar_data_left !byte black_l + !byte black_l + !byte black_l + !byte black_l + !byte blue_l + !byte black_l + !byte blue_l + !byte blue_l + + !byte blue_l + !byte purple_l + !byte blue_l + !byte purple_l + !byte purple_l + !byte purple_l + !byte white_l + !byte purple_l + + !byte white_l + !byte white_l + !byte white_l + !byte orange_l + !byte white_l + !byte orange_l + !byte orange_l + !byte orange_l + + !byte green_l + !byte orange_l + !byte green_l + !byte green_l + !byte green_l + !byte black_l + !byte green_l + !byte black_l + + !byte black_l + !byte black_l + !byte black_l + !byte black_l + !byte black_l + !byte blue_l + !byte black_l + !byte blue_l + + !byte blue_l + !byte blue_l + !byte purple_l + !byte blue_l + !byte purple_l + !byte purple_l + !byte purple_l + !byte white_l + + !byte purple_l + !byte white_l + !byte white_l + !byte white_l + !byte orange_l + !byte white_l + !byte orange_l + !byte orange_l + + !byte orange_l + !byte green_l + !byte orange_l + !byte green_l + !byte green_l + !byte green_l + !byte black_l + !byte green_l + + !byte black_l + !byte black_l + !byte black_l + !byte black_l + !byte black_l + !byte black_l + !byte black_l + !byte black_l + +bar_data_right !byte black_r + !byte black_r + !byte black_r + !byte black_r + !byte blue_r + !byte black_r + !byte blue_r + !byte blue_r + + !byte blue_r + !byte purple_r + !byte blue_r + !byte purple_r + !byte purple_r + !byte purple_r + !byte white_r + !byte purple_r + + !byte white_r + !byte white_r + !byte white_r + !byte orange_r + !byte white_r + !byte orange_r + !byte orange_r + !byte orange_r + + !byte green_r + !byte orange_r + !byte green_r + !byte green_r + !byte green_r + !byte black_r + !byte green_r + !byte black_r + + !byte black_r + !byte black_r + !byte black_r + !byte black_r + !byte black_r + !byte blue_r + !byte black_r + !byte blue_r + + !byte blue_r + !byte blue_r + !byte purple_r + !byte blue_r + !byte purple_r + !byte purple_r + !byte purple_r + !byte white_r + + !byte purple_r + !byte white_r + !byte white_r + !byte white_r + !byte orange_r + !byte white_r + !byte orange_r + !byte orange_r + + !byte orange_r + !byte green_r + !byte orange_r + !byte green_r + !byte green_r + !byte green_r + !byte black_r + !byte green_r + + !byte black_r + !byte black_r + !byte black_r + !byte black_r + !byte black_r + !byte black_r + !byte black_r + !byte black_r + +; Sine curve for the bar movement +bar_sinus !byte $3d,$3d,$3d,$3d,$3d,$3d,$3d,$3d + !byte $3d,$3d,$3d,$3c,$3c,$3c,$3c,$3b + !byte $3b,$3b,$3b,$3a,$3a,$39,$39,$39 + !byte $38,$38,$37,$37,$36,$36,$35,$35 + !byte $34,$34,$33,$33,$32,$32,$31,$30 + !byte $30,$2f,$2e,$2e,$2d,$2c,$2c,$2b + !byte $2a,$2a,$29,$28,$27,$27,$26,$25 + !byte $25,$24,$23,$22,$21,$21,$20,$1f + + !byte $1e,$1e,$1d,$1c,$1b,$1b,$1a,$19 + !byte $18,$18,$17,$16,$15,$15,$14,$13 + !byte $13,$12,$11,$10,$10,$0f,$0e,$0e + !byte $0d,$0d,$0c,$0b,$0b,$0a,$0a,$09 + !byte $09,$08,$07,$07,$06,$06,$06,$05 + !byte $05,$04,$04,$03,$03,$03,$02,$02 + !byte $02,$02,$01,$01,$01,$01,$00,$00 + !byte $00,$00,$00,$00,$00,$00,$00,$00 + + !byte $00,$00,$00,$00,$00,$00,$00,$00 + !byte $00,$00,$00,$01,$01,$01,$01,$02 + !byte $02,$02,$03,$03,$03,$04,$04,$04 + !byte $05,$05,$06,$06,$07,$07,$08,$08 + !byte $09,$09,$0a,$0a,$0b,$0c,$0c,$0d + !byte $0d,$0e,$0f,$0f,$10,$11,$11,$12 + !byte $13,$13,$14,$15,$16,$16,$17,$18 + !byte $19,$19,$1a,$1b,$1c,$1c,$1d,$1e + + !byte $1f,$1f,$20,$21,$22,$22,$23,$24 + !byte $25,$25,$26,$27,$28,$28,$29,$2a + !byte $2b,$2b,$2c,$2d,$2d,$2e,$2f,$2f + !byte $30,$31,$31,$32,$32,$33,$33,$34 + !byte $35,$35,$36,$36,$37,$37,$38,$38 + !byte $38,$39,$39,$3a,$3a,$3a,$3b,$3b + !byte $3b,$3b,$3c,$3c,$3c,$3c,$3d,$3d + !byte $3d,$3d,$3d,$3d,$3d,$3d,$3d,$3d + +; X offsets for the rolling logo effect +logo_x_pos !byte $00,$fe,$08,$fe,$10,$fe,$18,$fe + !byte $20,$fe,$fe,$fe,$20,$fe,$10,$fe + !byte $00,$fe,$18,$fe,$08,$fe,$fe,$fe + !byte $10,$fe,$08,$fe,$18,$fe,$00,$fe + !byte $20,$fe,$fe,$fe,$fe,$20,$fe,$18 + !byte $fe,$10,$fe,$08,$fe,$00,$fe,$fe + !byte $fe,$20,$18,$10,$08,$00,$08,$10 + !byte $18,$20,$18,$10,$08,$00,$fe,$fe + + !byte $ff ; end of data marker + + !scr "0123456789012345678901234567890123456789" +scroll_text !scr " welcome to -=- f15 d'gamma clone -=- " + !scr " " + !scr " coding and graphics by t.m.r " + !scr " released by c64cd on the 19th may 2016 " + + !scr " based on the apple ii crack intros for " + !scr " f-15 strike eagle by black bag and " + !scr " lantern of d'gamma from the six pack " + !scr " (with a few extra c64 influences too!) " + + !scr " " + !scr " " + !scr " " + !scr " " + + !scr "this code uses $c019 to synchronise with" + !scr " the vertical blank - that may not work " + !scr "on all models of apple ii, but if anyone" + !scr "tests on real hardware i'd like to know!" + + !scr " email me at tmr.c64cd@gmail.com to say " + !scr " if the code ran, which model of a2 " + !scr " and which cards are present, please! " + !scr " " + + !scr " " + !scr " " + !scr " " + !scr " " + + !scr "c64cd alphabetically sorted greetings to" + !scr " " + !scr " 1001 crew ash and dave black bag " + !scr " borderzone dezign team " + + !scr " four horsemen of the apocalypse " + !scr "happy demomaker harlow cracking service" + !scr " mean team paul, shandor and matt " + !scr "pulse productions reset 86 rob hubbard" + + !scr " scoop stoat and tim tangent " + !scr " thalamus the commandos the gps " + !scr " the six pack we music xess yak " + !scr " " + + !scr " " + !scr " " + !scr " " + !scr " " + + !scr "and we'll finish on a quick website plug" + !scr " " + !scr " visit c64crapdebunk.wordpress.com " + !scr " because.... well, stuff! " + + !scr " " + !scr " " + !scr " " + !scr " " + + !byte $ff ; end of text marker diff --git a/fdclone#060a00 b/fdclone#060a00 new file mode 100644 index 0000000000000000000000000000000000000000..d398af68e4d3df23c45481916863641ee2ff09bc GIT binary patch literal 13824 zcmeHNYiwJ`l|Gl`x!ae>iw`BDoq2lh0!Rn7$@DdQSu`}{uFNY zM_#DB*Gif7a+}I+Ex-agt?MK%Nwmmr^NR%rmYaIJEf!cA5x0K|R83z-`=@D8z-be) zXXf&fdeo-F+DUhzxz;`N;+!*c&UentT+ij<#i^ASPprInd?gQ=M>5AV(-$F6C|L49 z!Fql5ZSsg0TTWyi`)(!tD1I9AYVj4!tHsY?K3=?p`FQb3%qNQ9#(bhUgZaT?4)cS>r!YTS%wvAE z_%!AxiUrJ1T))1qu73H_BkOHvt;as%xd05>s7@Fhq}&`0$IgCVL9 zG8m)!D1)O^pI~|$g*K)iq;QbwT@<>Q-b0~>>3tOXm_9^di0NY##+ZJT!chk8RBvN& zi0TI!#HilIpqJ`B4Em|w$6%Q1Lkz~LKE~iasvl)~JB4k0eN8vsO2dLi8pp)u{7<5xT#^5m3dl?K+y`RAd)rT1zq53$3B-QU@ z`T+_DnBGaDlj+?Qx|x2M!eOQlP#9qP2!#=*AE9uB=}8JnrV^?jU}^`|JDI9dy_>0V zsvl-*g6acI9i;jQQ%9+OgsBr$PcofQl`y@7svS&Msj4zPPSrTm6I4wweUPeyOdqA{ zDAOmXI&uBKR-AvZ9xJ*p9lyTrSZ%&Eef@=L_Iuxt%d3uy@WS-5PkJ(sVCMKmxPTKR z%Q;k5$8rvpr7q`CS@Go@Dl4&^LuCyv=TKRr%Q;lm#By$eNn|-snAEYH?_iR;oL89? zU(UywlvvIum^8SYA7s+#a(Vc8E>I%Q|7Wxr~rt9CYJ**}Ff z4mM}mKZi9AZc0DB^w{-v%WC_j6YCfLz4-$C$Kxot9Zmh16OGRDo5xozzxmYl7f#>| z9wYr;{D;=>|I4ws`;}DWIqAViKXKOL(l0%ldGv);m&U;QaUIb@b?Z!iI`ep5$$V-C zFqNQGDy2%PR7y)}npV&Xg+i~A$6M_0FKtu1g0aH z#>dCT#zsd+Muvxnh6V=*2KxK^5{bjTy*=@GcP!SWc6J^*c(CI@ds`ccwzlryckjLT zv_vA!d&A*SFc{e5_bWc1*XwC&a=TqFr^8{l+hy5ivs$edOcEwTylrpZfbH1LX0yq% z-R^KWoi3N#-Q@9jy*@?p@7WUw21DV!dz&LIE%)5JZ{PmbXq2?Iw;$*@c<@lCs&>V? zyW>4Qy@wAc`uh6&2L=X*hK7enMn*?R$HvCT$NBX5G;5QF4d;e`BeFp@Ht^5C0ho7U z-jDAHmUunBBBBC#KH_(R(;pFZW22nt>qjobBco%t&XH!>V^zE|2`Pk-o})d)-Zw;S zoes(Cm59}&_+(Lwjqf8_6`RZFAd=5U90AGibXkMM(n3PL-rhiEn1Jk&rJ!u%_157* ztBoi=5^~CAPU`KP4ta%T?boyR%bx*xq>ng zGv!OaR}O?+R>{Lx&DTVFa80C;(1lM4k!B^(#FZp@Jj9D5dV+inO_junB^)9ytnjs< z(S+n+2-|%mAmeyWDPU`s0;sx98}V=jp$JVrrMZpBUde^y$pkrtyn$X}3*g|jy=a(1 zRx}1oI5rnjOeP@t;-nev3QdKJA|&Y-YT!m^v{;dAkZ`vCfE<*4p*TVFL3?WZ$JN*S zmCS&S0<9$qbuM2-gL{PxkVUsOkUsEqS9~(z;P&kF!XcpNjp=ayG z#6uakg;3aT|38E9^0wW^ZgF=7c2{6`1$I|pcLjD=V0Q&}SK#igKxrMXr=nU^fl0jj zxlw-m=L_q{w98)vxKR3CSpiMsf2)PNB|)jM1X`4jeiG%Fk80Z6Us2MFZ~ph2|Ff>7 zzqV1n_Jem`FO;hM)l`f>;d<2QR{veXvCZe|8Q}RdDASv-7p~??g|AfG%=v%a$Yf3W zGu|T$)v{S%pK~~(kW|d%Ehwy+{8s+W%vGq#e*)%FVOn$xjY8}8a((`Z^lVqEa;s^M zUZ3UwmjxFnXLLPRqh>wQB{)}?|IDm5-vIybRQL;ue7+;3LAtHpn&2Np$)$NM%koXtkd6s)jyY$5tvEBtoACeGJ35P&Lz{@Q{}u_ zVN`z@@1+~unzZOAT3*kWvcD|PYA>Ch)h?qU{;{lS2SSKS4bqEM{M~68aZ$1W{_3!r z_S#uZTm03rr=S1D8#iA12FzJuwYqQs)1O6wj+}7Uqo$s3PGtaeB3vovbM<_N=NHg` z*RP<7mkOdR+D!rX85y@ppWs&IhHBZYzd2vCC2W5P?a$=R>C)LM{@1@GxYk;0{HF!S zeXxlN{#(l?mz&dx4+#HZ0Q7S^p1H>GALmL#|1W45LUB<-x~<+^IgbBHEeWv1t*G|A z^;^x+2>#;62a-^QhO7L|dP7lR6w7@wn){QcCDS*`i|?V;Y8vlji19^~NZ6mz{lj}_ zHc&3azZ)h`Y0*WF|4a@4RyZl{cAQu7w+;W5^>-uw(}=sZ@7=I&v4GD#+gSXc zH*nr+(8;J7|IKu zucCw;|FP8PAC84DzdNhVI*hUT%wApl{;Kw5H^5!SKgQX!rEKZ^wE~n1=Ps18nOy1O z=|U;D@%#nDlFa#v{Wk6y>e2f6!}z~#|Gi}3KZ_i*Zy#G2iY6ll{>yJ6{-YQI0eC&io}B#W z6S0&b3{}ySh`MX%uVtrWGNfV>A`=}t+Kw4H%pa|xXqd89%5j3{Z?k+(G_Pjs z<3IHgb=&^G1WRHxJ|gnH%lLor*&Xq}w*Ox+c0JYAsrsK9{`r3Y3x5axAJYE5^FLo6 zsDJ*S5%}M60tlx+2>dVMtrD8hdr3TP;Q#GHkfo3QXE#?17LJ*==>qf`wqUA#QonxE$tsYxu@M${?SRq ze|9x{6$8E;_h<_IC$ai=j+?aJqK>%J%qQ)tAZl2_xgKQmzh+zh-%#XrFZ7 z4*oyZxpn`K|M}14cT@b`x%mI!sRy>5|2OgH{%6Z$&cB9#UNd!5{BQmB-za4t(*DrE z{&PqCH3Zvn{x;V?JcIa08=8)Z`w0Oa-X^zdjz;eP;>KkHp8wIM$eYjq!o?W(0$6YG zm+H^-gp$Fnpe?h}j z0FD#I8@IcLD?=^y-=zgEiMjvh^O|+Mabxicx=OqPGk(uwQT>q`>#^A~ubsJ4$N=#3 zKYo7@=l?1O%+c43OtwmS4<7$3^+x<($(r_e3+j)dGB)!UCx3(EP4QpDAFdm&T*LeC z*!`z?{N2Le;Qcq>=KO2?dCg?w{4EbOwEwQ%|5xHapMcm0h~SFf1&n%gUYT_i(+{0J8jdmD6M?i}-Ko{=MFJC$l}} zHgJVH(#k(l<}RL|*Q~fU!UOO-gc;m*V`nbZhnW!BX^wyV{)SS`NAdgHzaF1kT=C3Z zM%ZW93fC5{{RCBfw`4T!gwt#1uX5Wzi)W{o(G#F|yui!iG5H(uy>{Q;`2Bk-!q?v% zUr>JYXFRZA<|?$tf73ntEzbYdk+zLftAFdAw{eEI`_%XwGd9*?67L_d>;|8pm>aB= zZ{hch82t3zy?;0P%QO7@+vKwk#A>mZw>=nb?EWooEClX1MA~%!Uny7W`MTnlWhwWb zhC6+6jKuq7Onk+WH2VEbc)8d9H(QUE7I<{f@Em|QY>ticYb8ieBFb|7Y(1AuC((Cn Jj`xqNzXC)6FU9}> literal 0 HcmV?d00001 diff --git a/workfiles/c64cd_screen.bmp b/workfiles/c64cd_screen.bmp new file mode 100644 index 0000000000000000000000000000000000000000..595859b213a925e132bc050e258604af90649c32 GIT binary patch literal 54838 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 literal 0 HcmV?d00001