From 8224a04545e3458e5e705c6a853ee81d0ff1b54c Mon Sep 17 00:00:00 2001 From: equant Date: Sat, 18 Sep 2021 22:50:44 -0700 Subject: [PATCH] C conversion of weather example WIP --- .../apple2-cc65/obj/apple2/apple2idiot.d | 4 + .../apple2-cc65/obj/apple2/apple2idiot.o | Bin 0 -> 3907 bytes examples/weather/apple2-cc65/obj/apple2/foo.d | 4 + examples/weather/apple2-cc65/obj/apple2/foo.o | Bin 0 -> 2656 bytes .../apple2-cc65/obj/apple2/inputline.d | 4 + .../apple2-cc65/obj/apple2/inputline.o | Bin 0 -> 17048 bytes .../weather/apple2-cc65/obj/apple2/main.d | 4 + .../weather/apple2-cc65/obj/apple2/main.o | Bin 0 -> 3537 bytes .../weather/apple2-cc65/obj/apple2/menu.d | 4 + .../weather/apple2-cc65/obj/apple2/menu.o | Bin 0 -> 2637 bytes .../weather/apple2-cc65/obj/apple2/screen.d | 4 + .../weather/apple2-cc65/obj/apple2/screen.o | Bin 0 -> 5363 bytes .../weather/apple2-cc65/src/apple2idiot.c | 49 +++ .../weather/apple2-cc65/src/apple2idiot.h | 10 + examples/weather/apple2-cc65/src/foo.o | Bin 0 -> 4125 bytes examples/weather/apple2-cc65/src/globals.h | 17 + examples/weather/apple2-cc65/src/inputline.c | 148 ------- examples/weather/apple2-cc65/src/inputline.h | 6 - examples/weather/apple2-cc65/src/main.c | 113 +++-- examples/weather/apple2-cc65/src/main.h | 10 - examples/weather/apple2-cc65/src/main.o | Bin 0 -> 3944 bytes examples/weather/apple2-cc65/src/menu.c | 389 ++---------------- examples/weather/apple2-cc65/src/menu.h | 101 +---- examples/weather/apple2-cc65/src/screen.c | 86 ---- examples/weather/apple2-cc65/src/screen.h | 20 - examples/weather/apple2-cc65/weather.apple2 | Bin 0 -> 5088 bytes examples/weather/apple2-cc65/weather.dsk | Bin 0 -> 143360 bytes 27 files changed, 188 insertions(+), 785 deletions(-) create mode 100644 examples/weather/apple2-cc65/obj/apple2/apple2idiot.d create mode 100644 examples/weather/apple2-cc65/obj/apple2/apple2idiot.o create mode 100644 examples/weather/apple2-cc65/obj/apple2/foo.d create mode 100644 examples/weather/apple2-cc65/obj/apple2/foo.o create mode 100644 examples/weather/apple2-cc65/obj/apple2/inputline.d create mode 100644 examples/weather/apple2-cc65/obj/apple2/inputline.o create mode 100644 examples/weather/apple2-cc65/obj/apple2/main.d create mode 100644 examples/weather/apple2-cc65/obj/apple2/main.o create mode 100644 examples/weather/apple2-cc65/obj/apple2/menu.d create mode 100644 examples/weather/apple2-cc65/obj/apple2/menu.o create mode 100644 examples/weather/apple2-cc65/obj/apple2/screen.d create mode 100644 examples/weather/apple2-cc65/obj/apple2/screen.o create mode 100644 examples/weather/apple2-cc65/src/apple2idiot.c create mode 100644 examples/weather/apple2-cc65/src/apple2idiot.h create mode 100644 examples/weather/apple2-cc65/src/foo.o create mode 100644 examples/weather/apple2-cc65/src/globals.h delete mode 100644 examples/weather/apple2-cc65/src/inputline.c delete mode 100644 examples/weather/apple2-cc65/src/inputline.h delete mode 100644 examples/weather/apple2-cc65/src/main.h create mode 100644 examples/weather/apple2-cc65/src/main.o delete mode 100644 examples/weather/apple2-cc65/src/screen.c delete mode 100644 examples/weather/apple2-cc65/src/screen.h create mode 100644 examples/weather/apple2-cc65/weather.apple2 create mode 100644 examples/weather/apple2-cc65/weather.dsk diff --git a/examples/weather/apple2-cc65/obj/apple2/apple2idiot.d b/examples/weather/apple2-cc65/obj/apple2/apple2idiot.d new file mode 100644 index 0000000..e726769 --- /dev/null +++ b/examples/weather/apple2-cc65/obj/apple2/apple2idiot.d @@ -0,0 +1,4 @@ +obj/apple2/apple2idiot.o: src/apple2idiot.c src/globals.h src/apple2idiot.h + +src/apple2idiot.c src/globals.h src/apple2idiot.h: + diff --git a/examples/weather/apple2-cc65/obj/apple2/apple2idiot.o b/examples/weather/apple2-cc65/obj/apple2/apple2idiot.o new file mode 100644 index 0000000000000000000000000000000000000000..d030d4beb6da14be7207192272a7a53f09050752 GIT binary patch literal 3907 zcmZ9OdsI}{6~@oLGYoJM{YJ;X4lh~+fo2KtJ?dqRhtMBxYm9~F%f8VgoTE#WL`|WS^s`YvgY~mbKl4(Jxv8HoRbNRnrc$q8>DAKffA#9PjcLd<=J#Su zg)Y*I`H%XzRu052%QdI>$KW1=dkoM`2kq98TCy43n^tv-&T6f$Wl62)BqCldk2%#XPdAGc&Wm+%~1zr?*QLv9K_MwGG7Q!jOcm*1Ze2`r7 zhHl>{{engPNoy@CbJ09kD=m2;X@3KSw^?`_EscE4FLqsb$(HNXdsGjWJ*peUMw<*f zktG>WE9^w3tk88SazElUJ26Popjz$3aB1Zin1Xl_)-2+E>Oy=-n`S9_n@Zu-<2Kc6 zFOR&%eS5WJkn~cYRGlFwF`^~g*w&BHPjmFsthu2zw%nl3vJ>f&#V<4$&Ch8rO=+yV zwv2?c(oUqxN+X|H@9V=SuH+@4m*>QmU1n#$(Z?1MN4gJdvN2FL)N+iooYM^EG*4if z@i_4D$PdCOgP^YJ&gn|%9IVP={ce17Bk!WS(FYLeHFm-yYnXnB*$jV0Gua)xJc zCYjw!s{yyaL06?p3%cyU(e8j6ihe^iyw!{iJ3+g$nzQxm)EsNSY!bUn{mt+xz9z-u9sJo0g1EW zO*D*itf$oWN-ZX?h04UlnVPcXwdBN8vDXIdwE+bebY5EteT1_gNzVQ#oF0onkT zwBE~hLUkk)eY$Z}PZk})4ziG(NaEa4Ga5T99H0dV-c$7A_p*gh69EHE5D!);yg&m$ zuNi7BU;{=x`n%CgHAXB0Rd!EJQzi7K(;I2|q+IH(vC8vejgfL|)F!J$qe)hgGGI+o z&bIDTuCWT0E3F5m+;vX2G+7TwxhLzYoRNe2BwrS5f+lXrpbLU_X(wfQ&a|4LnKA2r zDNjl3mFyk0)_Co(0^4{p79Em?15##Z%ur)EjFoy=$1IsHsp<@agLlVFndqvh>{e^&F0C(?C2D>m zY1w+%KhWbe<~BJ3@+XwPCC9+X13G|wELa1z0eF@**U9ZLo~GPI?jh@8e@=In4`3;R% z$WA!=p4FcRfM3x46}c6540xaM&&eZXD~j`xyUX}d$V-%8L7FP?-;^)XK2GMsxk!1K zd>qD~C8xif&4Z364`_D&nQ13Ghv*ee1C%`kQ_Sg~|zpxPe{=ES1S z#ZFgOd&nPd33tYeVg=34v@-7sf01v7cZ#>ZsXG$y_9B|%8`<2fsm+Z3KWD|d+_7k= zEmc1;XLAVGCMUAd9q;J!0e+wqnCk9|M}2@FCx(*^=G0(UG#rVyrUqm2XnQD<8f@!~clK=c1e@DJ@n$<14LL2r7ANjx z1h+)P@ep=`#miowM$dmTb!P)u`Yy8k1s9W8FO0Hg5Qnmrq0gx&?fZt zRe^p#YP#FwP7lK}vXpfZPT{XkZaF=9DRo!X%&qp+*37L~Ug4^&t8+u7t*)-ESz0l_ L+P$Pc5HRL{Iw)YZ literal 0 HcmV?d00001 diff --git a/examples/weather/apple2-cc65/obj/apple2/foo.d b/examples/weather/apple2-cc65/obj/apple2/foo.d new file mode 100644 index 0000000..102f8bc --- /dev/null +++ b/examples/weather/apple2-cc65/obj/apple2/foo.d @@ -0,0 +1,4 @@ +obj/apple2/foo.o: src/foo.c src/globals.h src/foo.h + +src/foo.c src/globals.h src/foo.h: + diff --git a/examples/weather/apple2-cc65/obj/apple2/foo.o b/examples/weather/apple2-cc65/obj/apple2/foo.o new file mode 100644 index 0000000000000000000000000000000000000000..93dfd48b277d48d95c4021f66ec59bceb182a482 GIT binary patch literal 2656 zcmb`H+f!3l6vo%u34t6??gbGc2r6PjNVuqlq7kA{14M3KDuzP{7YRvvPJ%$M9PG{3 z*50h0_MziLr`qX5XWE(m1+|_2FP*;iwd>nznQ_{ej?C=e{=T*LT6>?v&Y9Xwo8?3_ zE2CJ(ii}bjn=*n0MBmAtSLvywR~^QMSjiiqwo(G`P8CORu|%<)IwrCcZP z|9I<$$K_V4t!~i#y}G>L_h9DND$ie1euN${tLsec<6gt@axbZ`nWMx%u;1&Hu^*Wj zGBKSwj7$qMEy&CpPASh5-{U^-5O4EVtL#nOM|_tp@9<8B+NM3)y zO&n#`fuAJ6th=2;HxIgb(5KsQ+}y1*)!5f1>(v(iH|&zrF!y6so#B*l9V***^6kh( z@H7#9?hEjZc=|@&uM_K&*eNM5Gsttu&lrx2XLNoDzQJ&IbAzr=z^AcOTIY*U-?p<~ z8}bW=qj*8*OW}L4e~+%uz*oXo>b!ya5cUrt<24*+FL5oOC0^z#@6fi3xQh5&E+oFe zDMX9C!-y6W-{*70clatwM-68ekLspJ(X)hufCJ9Xohi{teGkj8#nTD(@lg2X>Sn_6dw2 z76C?qsef7WsA37VPZ1~3?=kwI`hguq5A8lA1bu*3eyIPAWz;@JOrzgp^g;ClJBoO^ zjEMZCSSk68@or!?Be8a>W+lI)0bV2?0>Z%PKZrm@ff2q!JPb?#0{}fl8I;B#)PF<1 zq7;w|#{|_ON>RCL2n!Wnf)*sWTGO{#&ow7 zjj0+wq;fUt8Sdb5Rm}sgx^%s&;>$d$D)|UEs0x0;wbnS#1w5ksEv}zg)!}DDu3%NM zm_7IiHOY~_VK#ZcL~6IGiOc19L>qeqw1iJgC9n!qmC5JmGSpSz9eE_8SAaLQ+}6CI zS&VR5krc$BUI*#{c>zQ-Q1VL`zO9*p)PEo%R0G#_Ne*%jSOMP9!4Dob#sh{C{Su%q zuop-IX`ltT0yN2>WuOdpAMg?|4}1mCI`}-W3wTR!(+z0=H?=6z~_3+E}Xg){u;0sNXVdZsIyROP@BMWKpuDvr~{gTL%{pG;Vk64T3&*D z8Q9YPQ_XYYsSnXx+TYRq7y-HnUH~d_zk+1Ml>bUBAd@8 ziu7c!ZxqI@` zBI%s9oU{wt?d8p6LA0YI6ahQC3$l4RjYo6cBS*2bA!Is^YlgvKsBkWmN##>H?YcEP zJ@!({T<=7UDM!^)(6gGC;8FL$*kHsnJ~kMh47*NEOt>M6E=9)2V&O9p_vlnKO7u4z CQfbxz literal 0 HcmV?d00001 diff --git a/examples/weather/apple2-cc65/obj/apple2/inputline.d b/examples/weather/apple2-cc65/obj/apple2/inputline.d new file mode 100644 index 0000000..90b24c1 --- /dev/null +++ b/examples/weather/apple2-cc65/obj/apple2/inputline.d @@ -0,0 +1,4 @@ +obj/apple2/inputline.o: src/inputline.c src/screen.h src/menu.h + +src/inputline.c src/screen.h src/menu.h: + diff --git a/examples/weather/apple2-cc65/obj/apple2/inputline.o b/examples/weather/apple2-cc65/obj/apple2/inputline.o new file mode 100644 index 0000000000000000000000000000000000000000..042d2846e4dd58b6612b40ef29948d3b6b2e409a GIT binary patch literal 17048 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 literal 0 HcmV?d00001 diff --git a/examples/weather/apple2-cc65/obj/apple2/main.d b/examples/weather/apple2-cc65/obj/apple2/main.d new file mode 100644 index 0000000..8a09481 --- /dev/null +++ b/examples/weather/apple2-cc65/obj/apple2/main.d @@ -0,0 +1,4 @@ +obj/apple2/main.o: src/main.c src/globals.h src/menu.h src/apple2idiot.h + +src/main.c src/globals.h src/menu.h src/apple2idiot.h: + diff --git a/examples/weather/apple2-cc65/obj/apple2/main.o b/examples/weather/apple2-cc65/obj/apple2/main.o new file mode 100644 index 0000000000000000000000000000000000000000..3e9ba001d482e21ce837587167f641704dcd0420 GIT binary patch literal 3537 zcmchZYg<&;701`wbAtmY2#AW6AqmmYaG3!SNhARolsIx9L{X2!Fu+upnal;1#0x`A zG|@I1fv8Pl?A5kOo3=0dzAxIoicdd4pT6h^XrF$8uKzks3@BfalO9&>BINEF1In;zwVFT+)>f(|I?X2S9u#fL zFz>N=l~#=C@E(lpwhAS@8&QWEgv(Z;lrM`M^M@Mfw+cnvkK8h=P|Rgy9uvO_ zztJlAxKaI2StN)*kr{XR9v2tNg<9hrGQFtLD}FWafIos7M^Iy|_~@!kilMsOTs#2h zw%&IEl`UvxujxJBCjN>iAUy$%V;Das<8IyuzY~RbY8giJN0IMCzEAzvv9GnduQm~J zEt$U)yNUm420xQqx|}X-20fbeZ%GoH%wJmhIpU}0fJ|~J!{)%O=G;Kefmz83@Hldk zngfPS(#hFCP7*mmei1oxh(rern{FrPx5(*6P8+`?wLCRfH3 zU9z8Wm7`g!npM#3aU`8c59Y6{;<}@_6Oj@qmSFxNXMV5FKZN;~GvA3=$UcpNPRl_t zybFGjRq${T>bbM2o;zAksiU`F^-7^P?dUm?Y0ST+_1tpmu@MQOo)GG(!+f)XSCzO9 z^Y7~(eG|H`dlW}SaXml}aiXjEdB|+2@P?#(!2zqVg#*N2@?MJzTU3$vB5TPil<^X7 z_JB9v?SagD%*`nGo4Yk5zX>;M(&Z1ppTzPfvHTmGmVZN+?{}8pL~^kodKqW=P9!5i z?t)&IKHdxPtFicM=-u6ST6y7pb6;y)_o3E1E9(3iZ<~Wzb`9}D;GA|F|~8b zgfgW}D!Y`VJk0gPLqG%=1jd0;;3QBFNJreqkHiQm`;|S)h%&4kSJo>@8Q}`zVW1D_ z0mgw4P!AArmv9i2#9bmc1A$li=V)QRLw@t4{;E{ z$NK-xQYoX0nB~JHfA7k#3ehVh0fHr8H#SsZIyl9xX1_3PnmJWkxo~VvK2E1^aeRZD zy828Lr_2?vX_Sn!W;f56qDfQBZ*auy;#axR?36RqZ+5VY%S;Won3@r@oe%PEQ_W+( z%bjf{q3S79#g}-=RPufk*lV`&DPj+wao^(!U*7!(HvU!ow11!ZEph6ez3MM}-s8Ia z@=0ix_?}fm9Ay^sJF70@A25G_PtxaHR4$9#340!>1Qw-H6$Vbj{T^^b)=u;`a9zz+ zrJQHEBA~BGCdd!Em?c0HP>$d*EcuZkdaT2(Fpnd629TFj_?~hB=228VE$6gpDN`+Nn{)d0Nb!Z4>hU&{ZM%kfimFd>c6YB5a>-L`Y}K)U>A@Ft^j^u7x0P7{sJcL1$O|qG| z&Se5X5NHG18(Q+&OiOk?nu)jIHZ9TYVj>x9Sx6=4rZdrGY`%Fh8Y{8wvGJbK@yM`k zd+ls)CXw{ovvcuW)@P?PiDYipXU7&Y*;vMB&!uvyiS<Q!FU0Ud64^qkoTRY@alA@6i5 twUCT^Wk*EHeR!xZlyEH^^T3XVHBMTjSda>90|DxBjGU7e*l}*`xXEI literal 0 HcmV?d00001 diff --git a/examples/weather/apple2-cc65/obj/apple2/menu.d b/examples/weather/apple2-cc65/obj/apple2/menu.d new file mode 100644 index 0000000..de1c812 --- /dev/null +++ b/examples/weather/apple2-cc65/obj/apple2/menu.d @@ -0,0 +1,4 @@ +obj/apple2/menu.o: src/menu.c src/globals.h src/menu.h + +src/menu.c src/globals.h src/menu.h: + diff --git a/examples/weather/apple2-cc65/obj/apple2/menu.o b/examples/weather/apple2-cc65/obj/apple2/menu.o new file mode 100644 index 0000000000000000000000000000000000000000..beccebd0d48a83e85a9339d5fd24092ac4df5e5d GIT binary patch literal 2637 zcmb`I*>hAy6vof#*)IXIfgu4hQ6dSDOeO(B5=h9#Vg?dI!VWh#lOYV5jeBRZ$(9>e z6h%cv+_9v@Dj$3ipL|u{w0yAq4}7xx2Pi#XM=Di5TBfRh{e9=$K7IQ3%w%*vW0erm zn2Z%Nrev&^F)!nHFVVP#o?3^%}Cq&{IDBL12qA$K)L zkQqT{L}#`lQ;SS3GE;`Til>Ml@ZQjYMJcnF_#R&l9fZD&Ck`2|pAX4e#p~fK3^&LX zP$v!7$0v!$cn_(2#OFvoAl^iLlNZ?FMYVu~h}QAzy2lyA_414koInj9yia@`m%;ZL zuEBjee+=G1-qHRHd@K5G)!Uud(Pyw-kFlt@M@OF|{)(gUQBps8r2|>D&u~4wkN8jJ zccl%_(iBsEue3=Er%3L^?8tW(JLr=97V4ox?!p41{9q~(Jfe7 zW4Ix%ff~b^#&r3snsq3+nK;dz%g67;MGq|d0sUwW{Zyi#O5#7*gfelFE%GES93UcY z(XYqCRwa17CHTlr|01caRL`oOcsFk(?gW-q1MGjsC9M4)aT@g=V>eVMu&fMN;?u=) ztZk%NDcDuOeS)c%9fIMIWa{vLoT#UODv2=S2l>P#3!jn`uT?W0&kbdx<#ttQhrKeixQG) zBTxpUf%0PZ(;29Xz)NxkV z`mYPY*LCnC%`5_)z+2is4LJumz&kp4UKEwX9|ziiUKw;(r{B{oMf7bgcR^kORsn-D zXeU$-m;_1y`QIa413af?9&#L*0r$M&8-e$=-wxRUtOXK41~>=Q07;-2 z*Z^DtCV&rgg;~fwz)Ii+9ozwF05`R-6-BM^uV`;VzM)b%*kv%J3Hq$G66GZCo}o;Mdo=aGG|^$B{PX4bHcV}4#|0Y zEW60W!TU3LJDG5NjZSht;fpmjwY2(j1?k7HIqR2ZoLn<9O+A{uV033-Jey4wQhDv# zG+XhoC0*(%>bIPfHQVCt9qjA(4-fWrk92!_jvn A<^TWy literal 0 HcmV?d00001 diff --git a/examples/weather/apple2-cc65/obj/apple2/screen.d b/examples/weather/apple2-cc65/obj/apple2/screen.d new file mode 100644 index 0000000..f8c2dda --- /dev/null +++ b/examples/weather/apple2-cc65/obj/apple2/screen.d @@ -0,0 +1,4 @@ +obj/apple2/screen.o: src/screen.c + +src/screen.c: + diff --git a/examples/weather/apple2-cc65/obj/apple2/screen.o b/examples/weather/apple2-cc65/obj/apple2/screen.o new file mode 100644 index 0000000000000000000000000000000000000000..3e86681233d083c2c26674af3614ebc5c7286b03 GIT binary patch literal 5363 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 cxExn*VWC@zXMEn+(FHj- +#include +#include +#include + +#include "globals.h" +#include "apple2idiot.h" + +unsigned char read_data(unsigned char address) { + gotoxy(0,2); + printf("read_data()"); +} + +unsigned char write_data(unsigned char address, unsigned char byte_to_write) { + printf("%d [%c]\n", address, byte_to_write); + POKE(address, byte_to_write); + //for (i=0;i<8;i++) + //{ + //p = PEEK(0xC200+i); + //printf("(%u) -> %d, %c\n", 0xC200+i, p, p); + //} + //cursor(1); + //p = cgetc(); + //gotoxy(0, SIZE_Y-5); + //printf("You said: %c\n", p); +} + +unsigned char* write_string_to_ram(char* string_to_send, unsigned char address) { + unsigned char i, p, c; + unsigned char size = strlen(string_to_send); + gotoxy(0,2); + if (string_to_send[size-1] == '\n') { + string_to_send[size-1] = 0; + } + //printf("write_string_to_ram()"); + for (i=0; i=bm%! z)w$Btg@`|!6rCcXRJ1c_(`bK2J7y&+vJr)$H^Ft_Pr+9e(NPCcmO&Ikr>_`s24NJU zR`_M$8N`2qVKDc6xpniJ%`no`7x@GJFU+hi^RFlVmYe-$?tuSJ$_|PC<;@ZLXMV2G z*n!0N6$i#i zea2>ZBd0y+@ z4(Eo!y&bx=5QOCfJ4oH)M29RV0ezJ%+A+0bN^LcVVVRtc?kPas{ah8P8=O_;++-lB zEw*WGt0Mlp!L_g+vlTd|(aG7Jq?~MMi~?`4z0;{S`HI|PXpE|OWlAn|aLT#i1j?v6 zq3xoakYv|Fvbwd9p2m>2F2G9X3(#9!5RxesKo|0P6ooy!OBWTPD2D` zRIGK=tZYuxtc=k!yM56fIEB1Ci;)!Pg0N}F;N9ZNS=qEoSlIcKuPQ-K~2K|T^ zfLlB~E0Y?AHrb5}F;IqW1BSV8Hf3g_XwABsE!QIfqT;1Z_AmIDBZGAMZ7|(U5dXrR_z_zNF@C6tV&nqx0F!eu5 zp7f}fzF#9W%Xm+rQ&gA0wxVRXTM~dy0j=sq{ogPseZNL1mGPcJr>HK0ZAGdy3%9T4*x$#|b&dYG8VR!kYQ6WNVj#1z|^yJW1}7>jx5gtEdp@bp_| z;NVkxq`Z?1y%y0eWJxXvrTd?ra-?<`_M9GA`!;cN*qUW47%oA%Y9p(xTVyNQAUz^m z$gX#woyqg;4WasZ?kpS^zOt&3%UiJ;dTy=sWU-`I`((K!>*eHvF)~$=LvO0+N=lKP z6v}D^JkO6)evY+`U6^ zPj)fgQH`0!N;N4!GZm{lsy(BaRRnej6LT~Mo zH^nkQ?K};I-wdKXmjo-{(Sd9VqP^F2)HEfjyoWlNNR?E*IL5eO*4u*BAL{Jk5ed>a zbWr!MCijwD<$GGUf1v45Im)O;{2yqeb6xtC|50puUt8V3l0dzAS4Vx1H68n*rml7= zPkBpl&#++HZ*;;pCP8Map#8qKhCb6YTQ1+_hU0(GQLqV-D*UDn>f=&gaz?PINzmFT z=>q(6L2%^fn#PVukn52d{zy9m&EnYb>q4pEZ?$#m7n;U*BSU49sQHsfDiho-MstbC zA%JrJURMY1Y4Wa#SN1>$Z?s4+r*osLRTaiv&ozt+}?Pcou)arlsN-3l?kcZaab_*oM7n%!HS>h$`QO!mFh`|wd)&#RiEpG-$Xza0zcNq z!AF`VzoV%I=M>STbjbO(b{ap@G+ZqM_Ft6D?kn1=eNWSYo0>ZAXzKmGru{QgSXd{h z4v}?XWyKXM3iw-F%;`p#r`@bKr{)roc*2yZ-m^0hK1Ud(Z9)e?&aLw2;7|6EXb z&L25ri7&5u1R4dJ1ez_Y@u)|jQJ_hnxw0Vyy99kUzU%>=l#*pD+=OB2jj0O@UN~e1sh$9H7~nF zvcR_xUJAz7SA(w@Di)81Bd?kaW;-8Ta4o)cxhRn3>P=a+g;wG#YdAmbzNE4SRul1n z&8NvO7+YI+=n%pd4W0`|V|HJX9f817&>vk}Pw_ofwpGk8zF_wyInB2mj3m4f%sLoL z^DW?(tos(1!jWK_Z$9cjKZ0zZKWcTw!WV+ZWxHuywwl&qx4X%0T+Tw|NJed`&vjL6 zYTde;z-_l_T(jX;##S3spBvF81NzovD0hd(UfX<7s`TjE@-*3&6HETJwq$>grGIR| zYnvDw=snVF^i57$L^x)>6Jz7OhrE{2so`NdV~~BXVYk*BX-r0j9mhmggUUiP9d1<( zZbut*xbYWJ{v{Gw(d^JpF#1r2`1lu@4V{CQhqw@21kO$)Dgl#8^1}&VOGv~O$X9}^ zMdP1n9oPlWjn;@JXK4$#4Xp#Yx@@9O=q~79v;pXYXq^~;5VdlEzK(Vnxk3Ci8bxj# zdKCYRC&ANb$KV|YpG5Pcb`J48^kgpn9YcqqL#ST@ub|0s7=xccJCC-GCTGeeupCow zqh><^^jq><_`#5TdFr$1nuPkC(ns}orEaN`=$4501a2wJ^R|@TmGHL0rSD1jfxvz7 eJ`(k@sCx -#include -#include -#include -#include "screen.h" -#include "menu.h" - - -unsigned char ibuf[100]; -static unsigned char allowme[256]; - - -unsigned char ptoa(unsigned char p) { - unsigned char a = p; - - if (p >= 192) { - if (p >= 224) { - if (p == 255) { - a = 126; - } else { - a -= 64; - } - } else { - a -= 96; - } - } - return(a); -} - -void printbuf(unsigned char x, unsigned char y, unsigned char width, unsigned char *buffer) { - gotoxy(x, y); - PrintLeftString(buffer, width); - sprintf("%c", buffer); -} - - -unsigned char inputline(unsigned char x, unsigned char y, unsigned char width, - unsigned char maxlen, unsigned char *buffer, unsigned char *allowed) { - unsigned char offset = 0, pos = 0; - unsigned char len, i, c; - - pos = len = strlen(buffer); - if (len > maxlen) { - pos = len = maxlen; - buffer[pos] = 0; - } - if (len >= width) { - offset += len - width + 1; - pos -= offset; - } - printbuf(x, y, width, buffer + offset); - cursor(1); - - while (1) { - - gotoxy(0, 1); - cprintf("pos = %2d, offset = %2d, len = %2d", pos, offset, len); - gotoxy(x + pos, y); - switch (c = cgetc()) { - - default: - c = ptoa(c); - if (allowme[c] && len < maxlen) { - ++len; - memmove(buffer + pos + offset + 1, buffer + pos + offset, strlen(buffer + pos + offset) + 1); - buffer[pos + offset] = c; - buffer[len] = 0; - printbuf(x, y, width, buffer + offset); - } - - // fall through - - case CH_CURS_RIGHT: - if (pos + offset < len) { - if (pos < width - 1) { - pos += 1; - } else if (len > offset + pos) { - offset += 1; - if (offset + pos == len) { - cputsxy(x + width - 1, y, " "); - } - printbuf(x, y, width, buffer + offset); - } - } - break; - - case CH_CURS_LEFT: - if (pos > 0) { - pos -= 1; - } else if (offset > 0) { - offset -= 1; - printbuf(x, y, width, buffer + offset); - } - break; - - case 3: // stop - len = 0; - // fall through - - case 13: // return - ClearBox(width, 1, x, y); - cursor(0); - return(len); - break; - - case 20: // del - if (pos || offset) { - if (pos) { - pos -= 1; - } else { - offset -= 1; - } - i = offset + pos; - while (buffer[i]) { - buffer[i] = buffer[i+1]; - ++i; - } - --len; - if (offset + pos == len) { - cputsxy(x + pos, y, " "); - } else if (len - offset < width) { - cputsxy(x + len - offset, y, " "); - } - printbuf(x, y, width, buffer + offset); - } - break; - - case 19: // home - if (pos || offset) { - pos = offset = 0; - printbuf(x, y, width, buffer + offset); - } - break; - - case 147: // clear - pos = offset = len = 0; - buffer[0] = 0; - ClearBox(width, 1, x, y); - break; - - } - - } -} diff --git a/examples/weather/apple2-cc65/src/inputline.h b/examples/weather/apple2-cc65/src/inputline.h deleted file mode 100644 index 2152be4..0000000 --- a/examples/weather/apple2-cc65/src/inputline.h +++ /dev/null @@ -1,6 +0,0 @@ -extern unsigned char ibuf[]; - - -unsigned char inputline(unsigned char x, unsigned char y, unsigned char width, - unsigned char maxlen, unsigned char *buffer, unsigned char *allowed); - diff --git a/examples/weather/apple2-cc65/src/main.c b/examples/weather/apple2-cc65/src/main.c index c0ab72d..3ab5c98 100644 --- a/examples/weather/apple2-cc65/src/main.c +++ b/examples/weather/apple2-cc65/src/main.c @@ -1,81 +1,60 @@ #include #include -#include +#include #include -//#include -//#include -//#include -//#include -//#include -//#include - -#include "main.h" -#include "inputline.h" +#include "globals.h" +#include "menu.h" +#include "apple2idiot.h" unsigned char i = 0; char p; char text[20]; -//unsigned char menuEntries[8][4] = {"HLP", "END", "SEL", "REF", "CPY", "REN", "MDR", "DEL"}; -//unsigned char menuEntries[MENU_LENGTH][MENU_WORD_LENGTH] = {"CHANNEL", "MISC"}; - -// Writes the menu bar at the top of the screen -// which is scaled to the current screen size. -void writeMenuBar(void) -{ - static unsigned char i, x; - - //cclearxy(0, bottom, size_x); - cclearxy(0, 0, SIZE_X); - - for(i = 0; i < MENU_LENGTH; i++){ - //x = i*5; - x = (MENU_WORD_LENGTH + 1) * i; - revers(1); - //gotoxy(x, bottom); cputc('1' + i); - gotoxy(x, 0); cputc('1' + i); - revers(0); - //cputsxy(x + 1, bottom, menuEntries[i]); - cputsxy(x + 1, 0, menuEntries[i]); - } - revers(0); -} - void main(void) { - //screensize(&size_x, &size_y); - clrscr(); - writeMenuBar(); - //cvlinexy(0,1,size_x); - gotoxy(0, 1); - chline(SIZE_X); - gotoxy(0, 3); - //printf("Screensize is %d by %d\n", size_x, size_y); - printf("Hello, world!\n"); - for (i=0;i<8;i++) - { - p = PEEK(0xC200+i); - printf("(%u) -> %d, %c\n", 0xC200+i, p, p); + unsigned char key; + + while (key != ASCII_0) { // Last menu item should be Quit + clrscr(); + drawMenuBar(); + //cvlinexy(0,1,size_x); + //fancy_hline(0,2); + //fputs("enter some text: ", stdout); + //fflush(stdout); /* http://c-faq.com/stdio/fflush.html */ + //fgets(text, sizeof text, stdin); + //printf("\ntext = \"%s\"", text); + //revers(1); + gotoxy(0,SIZE_Y-1); + printf("Selection:"); + cursor(1); + //revers(0); + //p = cgetc(); + key = toupper(cgetc()); + gotoxy(0,SIZE_Y-3); + printf("cgetc() -> \"%c\"", key); + + switch((int)key) { + case ASCII_0: + printf("QUIT!"); + break; + case ASCII_1: + printf("COUNTRY!"); + write_string_to_ram("US", 0xC202); + break; + case ASCII_2: + printf("City: "); + fgets(text, sizeof text, stdin); + write_string_to_ram(text, 0xC202); + break; + case ASCII_3: + printf("UPDATE!"); + break; + default: + printf("DEFAULT!"); + break; + } + } - cursor(1); - p = cgetc(); - gotoxy(0, SIZE_Y-5); - printf("You said: %c\n", p); - //inputline(1, 17, 38, 53, ibuf, NULL); - //gotoxy(1, 17); - //printf("YO: %c\n", ibuf); - //cursor(1); - //p = cgetc(); - fputs("enter some text: ", stdout); - fflush(stdout); /* http://c-faq.com/stdio/fflush.html */ - fgets(text, sizeof text, stdin); - printf("\ntext = \"%s\"\n", text); - //printf("YO: %c\n", ibuf); - printf("Press any key to exit."); - cursor(1); - p = cgetc(); - } - diff --git a/examples/weather/apple2-cc65/src/main.h b/examples/weather/apple2-cc65/src/main.h deleted file mode 100644 index 38eb1d4..0000000 --- a/examples/weather/apple2-cc65/src/main.h +++ /dev/null @@ -1,10 +0,0 @@ -#define MENU_LENGTH 3 -#define MENU_WORD_LENGTH 7 - -#define SIZE_X 40 -#define SIZE_Y 24 - -//unsigned char menuEntries[MENU_LENGTH][MENU_WORD_LENGTH] = {"HLP", "END", "SEL", "REF", "CPY", "REN", "MDR", "DEL"}; -unsigned char menuEntries[MENU_LENGTH][MENU_WORD_LENGTH] = {"CHANNEL", "MESSAGE", "END"}; - -//unsigned char ibuf[100]; diff --git a/examples/weather/apple2-cc65/src/main.o b/examples/weather/apple2-cc65/src/main.o new file mode 100644 index 0000000000000000000000000000000000000000..6f6c6bdc0079c74ab14ce8276812719e3ec6a8ff GIT binary patch literal 3944 zcmcInNl;ta6}|U;4M<`}fB_pm*bFitAu)Ku3?!4RGiLGaV1V=*_$k~>aJ{4l~k6g%C;BTW|e!M+SutTdly&TbIv{YzNh=& z|N1g3_Y#pZV!BO49*J# zB)bsV#IF{1N*)ozP-^I3&mO(+FpMJpbJb|%@Aahv=BKwl^OpV1I~w`iRgUagR|V+b z)n3p)t13aCk5z&GSX~WzHgF8|mj_$}{?)PC|5S`duGD=byS%F$f09|I=^?X<5}V3* z)tz$*l6u;vF3!X1n|J37L9s|RZ^NQ(cTNe4rPO(CDY0xy!6H@Kh%RnK7dMJktUQ$?g&BnWL=cIQYCGnvbnN$E{VGEz^JT9eX; z%Cqdsl?f7mrcUeT_%eol-W=Cm#k#9l7C!YV2iB8n)fKz0*!B7m)Jc`-f}snB=w~V> zvy=#8YUi>{U6Q{(r#PmXl4_wKCY>11pPrB8pJX__z)8%>&Z%ZQ zh(A#N4)>uFB)+XK&3WYkn4vyaeZ=#8nK%uw0GT5&p(20;U>~5pZ7ALR!pp)-=3B~9 z71#sB09k+^Kmd#Tv8g~7pwl#z3CIAFfE|FY>cWfWJrs0$9?Il1*jd2MO(+OhfW4#C zgt`dOstKwYkOAmaC`m+DsFGDB_DcXZ|Id(>kDR3{R#n6!oFtwA3h%zmS1ZjCF%#6hC`ILJif^z@P4W#}o%c>iP4EpRg)`jFeX5t= zWTm>fNZs60L0;t+72tC`t2)`mRjQreV4w1FTJ2b>l^5heYvxLxQYU$lBdU?tZEexP zTGhZcD&|zjd4t%-V>VB*-LQYcs{asg)ES->ec|X8!Ef15n(@@MnCA~=7PlJpi$2GP z#{Ehe94FE(#@R!IxQDxH9?9ENemig-kdtzS`HMj|K}uiISw&-bW$G_Iht)(toROoK zD3_@VE8+|v$~m4=4fXN?r02t3z<~79gfERqm{C0+l3q+{U`&~S&X9q_gzP07P87Rg zdK<=v-%WOX#?V1>upBgGfSfpO$WAK2kwdnV3+E2$Bey<$=vMOJ4nQ_jA#MZYNh-p< zfNZ4VFK!631}f2a<&k2tQP~%FrT8(QsII5SY*qoADuJiGz?KSNTRHG_8L*=i=q~|w z6$3*>z#b2<&s|SH=5a^8Tr8fshiqG1T3#VGRR2SE@M30DUP)ZG1FYHtR=g*D#KEru zn;+=Jf2gVBeNEjSDN!dto?oJ`qqFT}U7PNLozuGgT}@qa)GH^@Iu7X=1RCGf)w4b< zNWwWb094=Cet!%6eK<`S;PD@7f3RI{G@ts3PDUPUy7UejT70O~%s{*P1ZhlyHjtM- z(T$Ve(A1fQcVZP-c%Us`Hx`7j!~E|c={MS+`;MkFL3qPhVEd_dMtk5~K&Kz8hAk9} zr+@_sV6`6|G05^ez}iWma}8MZk=|u&4@qMHJB(k1=HKeV!Z$Sqdc~9HOW-o9_D*yT ze4vYcXW)NZ>z)raoxdRt4FP_wjoBV7SZD#3oJM~eAc*`*2e3Ddjq94B3xBQ`O`Jwz zcAzr^_&tDrq>DpcC{8WHnFidIA~)Ovo(!OI7qb3qz}BDXHJ4lA9|J7G_Iyj*p}Jw|%w{BQ1@JL}NM+#*prZb#p z`?`#tafCJ5*HgPX(UeNZ64`ZUIM0q~Je`TAo#8w?Hj>%o-o7)OXM0q(i8{i0iteT} zNwjKqq^-MFI^zuI*|RQpc0arsk0q?a@JoqjEgkvF6)UlODUvP>|4*_b?pPw5j#(KM zj;V0U9?n{OS$i1Iuic-C-Ls4Xr)eD6CD^pjbajP#je}CHf}&JjT{aGiOq*Vml0%3% zH10XptY}7_(UG~)F~{QE=?EU-hnPw)ajA2FtA$(DDEo>o%kRB>Bfau9lRx?l`Q@;K<&VSy(QeU2!X?55@`qu$ zXs_sM;Tqv`@s5kGmoOziDbXU~lQ>>V)FB*@2uXCfh9?-@oXSb{k)ldDsVe#}GGT>k literal 0 HcmV?d00001 diff --git a/examples/weather/apple2-cc65/src/menu.c b/examples/weather/apple2-cc65/src/menu.c index 6ab61f0..6e86764 100644 --- a/examples/weather/apple2-cc65/src/menu.c +++ b/examples/weather/apple2-cc65/src/menu.c @@ -1,354 +1,35 @@ -/* - -Menu handling - -*/ - - -#include -#include -#include -#include -#include "menu.h" -#include "screen.h" - - -unsigned char menu_bc = 1; /* border color */ -unsigned char menu_tc = 7; /* title color */ -unsigned char menu_nc = 13; /* normal item color */ -unsigned char menu_ic = 5; /* inactive item color */ - -unsigned char menu_xpos = 5; /* default menu position */ -unsigned char menu_ypos = 2; - - -void DrawItem(Item *item, unsigned char xpos, unsigned char ypos, unsigned char current); - - -Menu *NewMenu(void) { - register Menu *menu; - - if ((menu = malloc(sizeof(*menu))) == NULL) { - return(NULL); - } - menu->visible = 0; - menu->numitems = 0; - menu->current = 0; - menu->xpos = menu_xpos; - menu->ypos = menu_ypos; - menu->width = 0; - menu->height = 0; - menu->title = NULL; - menu->firstitem = NULL; - return(menu); -} - - -void SetMenuTitle(Menu *menu, unsigned char *title) { - unsigned char l; - - menu->title = title; - if ((l = strlen(title)) > menu->width) { - menu->width = l; - } -} - - -signed char AddMenuItem(Menu *menu, unsigned char id, ItemState state, unsigned char *name) { - register Item *item; - int l; - - if (id == MENU_CANCEL) { /* 0 is reserved for cancelling */ - return(-1); - } - if (menu->numitems == 0) { - if ((menu->firstitem = malloc(sizeof(*item))) == NULL) { - return(-1); - } - item = menu->firstitem; - item->prev = NULL; - } else { - item = menu->firstitem; - while (item->next) { - item = item->next; - } - if ((item->next = malloc(sizeof(*item))) == NULL) { - return(-1); - } - item->next->prev = item; - item = item->next; - } - item->next = NULL; - item->id = id; - item->name = name; - item->state = state; - ++(menu->numitems); - if ((l = strlen(name)) > menu->width) { - menu->width = l; - } - if (menu->numitems > menu->height) { - menu->height = menu->numitems; - } - return(0); -} - - -signed char DelMenuItem(Menu *menu, unsigned char id) { - register Item *item; - - if (menu->numitems) { - item = menu->firstitem; - while (item) { - if (item->id == id) { - if (menu->firstitem == item) { - menu->firstitem = item->next; - item->next->prev = NULL; - free(item); - } else { - item->prev->next = item->next; - item->next->prev = item->prev; - free(item); - } - --(menu->numitems); - return(0); - } - item = item->next; - } - } - return(-1); -} - - -signed char SetItemState(Menu *menu, unsigned char id, ItemState state) { - register Item *item; - - if (menu->numitems) { - item = menu->firstitem; - while (item) { - if (item->id == id) { - item->state = state; - return(0); - } - item = item->next; - } - } - return(-1); -} - - -void ShowMenu(Menu *menu) { - if (menu->visible == 0) { - menu->visible = 1; - DrawMenu(menu); - } -} - - -void HideMenu(Menu *menu) { - if (menu->visible) { - menu->visible = 0; - DrawMenu(menu); - } -} - - -Item *FindItemNumber(Menu *menu, unsigned char itemnum) { - Item *item; - - item = menu->firstitem; - while (itemnum) { - if (item->next) { - item = item->next; - --itemnum; - } else { - return(NULL); - } - } - return(item); -} - - -Item *FindItem(Menu *menu, unsigned char id) { - Item *item; - - item = menu->firstitem; - while (item->id != id) { - if (item->next) { - item = item->next; - } else { - return(NULL); - } - } - return(item); -} - - -signed char SelectMenu(register Menu *menu) { - unsigned char c; - register Item *item; - - if ((item = FindItemNumber(menu, menu->current)) == NULL) { - return(-1); - } - if (menu->visible == 0) { - return(-1); - } - while(c = cgetc()) { - switch (c) { - case 27: - case 3: - return(MENU_CANCEL); - case '\r': - case '\n': - if (item->state == ISTATE_NORMAL) { - return(item->id); - } - break; - /* - case CH_CURS_DOWN: - if (menu->current + 1 < menu->numitems) { - DrawItem(item, menu->xpos + 1, menu->ypos + menu->current + 3, 0); - item = item->next; - ++(menu->current); - DrawItem(item, menu->xpos + 1, menu->ypos + menu->current + 3, 1); - } - break; - case CH_CURS_UP: - if (menu->current > 0) { - DrawItem(item, menu->xpos + 1, menu->ypos + menu->current + 3, 0); - item = item->prev; - --(menu->current); - DrawItem(item, menu->xpos + 1, menu->ypos + menu->current + 3, 1); - } - break; - */ - } - } -} - - -void DestroyMenu(Menu *menu) { - Item *item; - Item *next; - - if (menu->numitems) { - item = menu->firstitem; - while (item) { - next = item->next; - free(item); - item = next; - } - } - free(menu); -} - - -void DrawItem(Item *item, unsigned char xpos, unsigned char ypos, unsigned char current) { - unsigned char c; - - gotoxy(xpos, ypos); - if (current) { - revers(1); - } - if (item->state == ISTATE_NORMAL) { - c = textcolor(menu_nc); - cprintf(item->name); - } else { - c = textcolor(menu_ic); - cprintf(item->name); - } - textcolor(c); - revers(0); -} - - -signed char DrawMenu(register Menu *menu) { - unsigned char l = 0; - Item *item; - - if (menu->numitems == 0) { - return(-1); - } else { - if (menu->title == NULL) { - return(-1); - } else { - if (menu->visible) { - textcolor(menu_bc); - DrawBox(menu->width+2,menu->height+4,menu->xpos,menu->ypos); - gotoxy(menu->xpos + 1, menu->ypos + 1); - textcolor(menu_tc); - cprintf(menu->title); - item = menu->firstitem; - while (item) { - DrawItem(item, menu->xpos + 1, menu->ypos + l + 3, menu->current == l ? 1 : 0); - item = item->next; - ++l; - } - } else { - ClearBox(menu->width+2,menu->height+4,menu->xpos,menu->ypos); - } - } - } -} - - -/* Ask if user is sure */ -unsigned char AskAreYouSure(Menu *menu) { - unsigned char x, y, sx, sy; - - screensize(&sx, &sy); - - if ((x = menu->xpos + 3) + 15 > sx) { - x = sx - 16; - } - if ((y = menu->ypos + menu->current + 4) + 3 > sy) { - y = sy - 3; - } - - textcolor(menu_bc); - DrawBox(17, 3, x, y); - ClearBox(15, 1, x + 1, y + 1); - textcolor(menu_nc); - cputsxy(x + 1, y + 1, "Are you sure? "); - - while (1) { - cursor(1); - sx = cgetc(); - cursor(0); - switch (sx) { - - case 'y': - case 'Y': - ClearBox(17, 3, x, y); - return(1); - break; - - case 'n': - case 'N': - ClearBox(17, 3, x, y); - return(0); - break; - - default: - break; - - } - } -} - - -/* Display message, wait for enter */ -void DisplayMessage(unsigned char *message) { - unsigned char l = strlen(message); - - textcolor(menu_bc); - DrawBox(l + 2, 5, 20 - (l>>1) - (l & 1), 10); - ClearBox(l, 3, 21 - (l>>1) - (l & 1), 11); - textcolor(menu_nc); - cputsxy(21 - (l>>1) - (l & 1), 11, message); - revers(1); - cputsxy(18, 13, " OK "); - revers(0); - while (cgetc() != 13); - ClearBox(l + 2, 5, 20 - (l>>1) - (l & 1), 10); -} +#include +#include +#include +#include + +#include "globals.h" +#include "menu.h" + +#define MENU_LENGTH 4 +#define MENU_WORD_LENGTH 8 +unsigned char menuEntries[MENU_LENGTH][MENU_WORD_LENGTH] = {"Country", "City", "Update", "Quit"}; + +void drawMenuBar() { + static unsigned char i; + static unsigned char x_offset; + + x_offset = 0; + + cclearxy(0, 0, SIZE_X); + gotoxy(0,0); + for(i = 0; i < MENU_LENGTH; i++){ + //printf("%d, %d, %d\n", i, strlen(menuEntries[i]), x_offset); + revers(1); + gotoxy(x_offset, 0); cputc('1' + i); + revers(0); + cputsxy(x_offset + 1, 0, menuEntries[i]); + x_offset += strlen(menuEntries[i]) + 1; + } + revers(0); +} + +void fancy_hline(unsigned char x, unsigned char y) { + gotoxy(x,y); + printf("<><>-------------------------------<><>\n"); +} diff --git a/examples/weather/apple2-cc65/src/menu.h b/examples/weather/apple2-cc65/src/menu.h index 3f10a2a..4c430a9 100644 --- a/examples/weather/apple2-cc65/src/menu.h +++ b/examples/weather/apple2-cc65/src/menu.h @@ -1,94 +1,7 @@ -/* - -Menu handling - -*/ - -#define CH_CURS_UP 0x0B -#define CH_CURS_DOWN 0x0A - -#define MENU_CANCEL 0 - -#define MENU_YES 1 -#define MENU_NO 0 - - -extern unsigned char menu_bc; /* border color */ -extern unsigned char menu_tc; /* title color */ -extern unsigned char menu_nc; /* normal item color */ -extern unsigned char menu_ic; /* inactive item color */ - -extern unsigned char menu_xpos; /* default menu position */ -extern unsigned char menu_ypos; - -typedef enum itemstates { - ISTATE_NORMAL, - ISTATE_INACTIVE -} ItemState; - -typedef struct item { - struct item *next; - struct item *prev; - unsigned char id; - unsigned char *name; - ItemState state; -} Item; - -typedef struct menu { - unsigned char visible; - unsigned char numitems; - unsigned char current; - unsigned char xpos; - unsigned char ypos; - unsigned char width; - unsigned char height; - unsigned char *title; - Item *firstitem; -} Menu; - - -/* Set menu colors */ -#define SetMenuColors(BC, TC, NC, IC) \ - menu_bc = (BC); \ - menu_tc = (TC); \ - menu_nc = (NC); \ - menu_ic = (IC); - -/* Set default menu position */ -#define SetMenuDefaultPosition(XPOS, YPOS) \ - menu_xpos = (XPOS); \ - menu_ypos = (YPOS); - -/* Initialize an empty menu. */ -Menu *NewMenu(void); - -/* Deallocate menu resources. */ -void DestroyMenu(Menu *menu); - -/* Set the title. */ -void SetMenuTitle(Menu *menu, unsigned char *title); - -/* Add an item to the menu. id is the value that SelectMenu will return, which must not be 0. */ -signed char AddMenuItem(Menu *menu, unsigned char id, ItemState state, unsigned char *name); - -/* Delete an item from the menu. */ -signed char DelMenuItem(Menu *menu, unsigned char id); - -/* Set item state to normal or inactive. */ -signed char SetItemState(Menu *menu, unsigned char id, ItemState state); - -/* Display the menu on the screen. */ -void ShowMenu(Menu *menu); -signed char DrawMenu(Menu *menu); - -/* Erase the menu from the screen. */ -void HideMenu(Menu *menu); - -/* Let the user choose a menu item. ShowMenu() first. */ -signed char SelectMenu(Menu *menu); - -/* Ask if user is sure */ -unsigned char AskAreYouSure(Menu *menu); - -/* Display message, wait for enter */ -void DisplayMessage(unsigned char *message); +#ifndef _FOO_H +#define _FOO_H + +void fancy_hline(unsigned char x, unsigned char y); +void drawMenuBar(void); + +#endif diff --git a/examples/weather/apple2-cc65/src/screen.c b/examples/weather/apple2-cc65/src/screen.c deleted file mode 100644 index 1b04e55..0000000 --- a/examples/weather/apple2-cc65/src/screen.c +++ /dev/null @@ -1,86 +0,0 @@ -/* - -Screen handling - -*/ - -#include -#include - - -static unsigned char screen_bgc; -static unsigned char screen_borderc; -static unsigned char screen_textc; - -static unsigned char *spaces = " "; - - -/* initialize screen mode */ -void InitScreen(unsigned char *title, unsigned char border, unsigned char bg, unsigned char text) { - screen_borderc = bordercolor(border); - screen_bgc = bgcolor(bg); - screen_textc = textcolor(text); - clrscr(); - revers(1); - cprintf(title); - revers(0); -} - - -/* restore basic screen mode */ -void ExitScreen(void) { - bordercolor(screen_borderc); - bgcolor(screen_bgc); - textcolor(screen_textc); - clrscr(); -} - - -/* Draw petscii box */ -void DrawBox(unsigned char xsize, unsigned char ysize, unsigned char xpos, unsigned char ypos) { - /* Top line */ - gotoxy(xpos,ypos); - cputc(CH_ULCORNER); - chline(xsize - 2); - cputc(CH_URCORNER); - - /* Vertical line, left side */ - cvlinexy(xpos, ypos + 1, ysize - 2); - - /* Bottom line */ - cputc(CH_LLCORNER); - chline(xsize - 2); - cputc(CH_LRCORNER); - - /* Vertical line, right side */ - cvlinexy(xpos + xsize - 1, ypos + 1, ysize - 2); -} - - -/* Clear screen area */ -void ClearBox(unsigned char xsize, unsigned char ysize, unsigned char xpos, unsigned char ypos) { - unsigned char *s; - unsigned char line; - - s = spaces + 80 - xsize; - for (line = 0; line < ysize; ++line) { - gotoxy(xpos, ypos + line); - cprintf(s); - } -} - - -/* print maxlen leftmost chars of string */ -void PrintLeftString(unsigned char *string, unsigned char maxlen) { - unsigned char c; - - if ((c = strlen(string)) <= maxlen) { - cputs(string); - cputs(spaces + 80 + c - maxlen); - } else { - c = string[maxlen]; - string[maxlen] = 0; - cputs(string); - string[maxlen] = c; - } -} diff --git a/examples/weather/apple2-cc65/src/screen.h b/examples/weather/apple2-cc65/src/screen.h deleted file mode 100644 index 4e67efc..0000000 --- a/examples/weather/apple2-cc65/src/screen.h +++ /dev/null @@ -1,20 +0,0 @@ -/* - -Screen handling - -*/ - -/* Initialize screen mode, set title and colors */ -void InitScreen(unsigned char *title, unsigned char border, unsigned char bg, unsigned char text); - -/* Restore basic screen mode */ -void ExitScreen(void); - -/* Draw petscii box */ -void DrawBox(unsigned char xsize, unsigned char ysize, unsigned char xpos, unsigned char ypos); - -/* Clear screen area */ -void ClearBox(unsigned char xsize, unsigned char ysize, unsigned char xpos, unsigned char ypos); - -/* print maxlen leftmost chars of string */ -void PrintLeftString(unsigned char *string, unsigned char maxlen); diff --git a/examples/weather/apple2-cc65/weather.apple2 b/examples/weather/apple2-cc65/weather.apple2 new file mode 100644 index 0000000000000000000000000000000000000000..a2e49b97ea773c5a17bc0838f11b4565958d5bce GIT binary patch literal 5088 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 S8K5(#8BXVghd2cdq5lCo6jwn2 literal 0 HcmV?d00001 diff --git a/examples/weather/apple2-cc65/weather.dsk b/examples/weather/apple2-cc65/weather.dsk new file mode 100644 index 0000000000000000000000000000000000000000..8d996a5f7239a23ce09f01b0d79886a3ad7e3996 GIT binary patch literal 143360 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 literal 0 HcmV?d00001