From 33863aa52e61a802bceae234b9c5915529e83f9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=A4rkl?= Date: Sun, 9 Mar 2025 17:36:06 +0100 Subject: [PATCH] Add emulateme for PIC baseline --- pic/Makefile | 4 ++++ pic/emulateme.pic16f505.elf | Bin 0 -> 5587 bytes pic/emulateme.pic16f505.hex | 25 +++++++++++++++++++++++++ pic/emulateme.tinymem.c | 26 ++++++++++++++++++++++++++ 4 files changed, 55 insertions(+) create mode 100644 pic/Makefile create mode 100644 pic/emulateme.pic16f505.elf create mode 100644 pic/emulateme.pic16f505.hex create mode 100644 pic/emulateme.tinymem.c diff --git a/pic/Makefile b/pic/Makefile new file mode 100644 index 0000000..d040690 --- /dev/null +++ b/pic/Makefile @@ -0,0 +1,4 @@ + +emulateme.%.elf: emulateme.tinymem.c + xc8-cc -O0 -mcpu=$(notdir $*) -o $@ $< + rm *.o *.sdb *.sym *.lst *.rlf *.s *.d *.p1 *.cmf *.hxl diff --git a/pic/emulateme.pic16f505.elf b/pic/emulateme.pic16f505.elf new file mode 100644 index 0000000000000000000000000000000000000000..301016bf48f9942626fc44e99f7408b6c66a2b6a GIT binary patch literal 5587 zcmb_gU2Ggz6+U-o*B*PVcpV2CLJ2NOXrRjOI!;n2j?>sC)TV34!6X;~S!Q>~_GG=g z!_3%@iy-hoDGxvr5E5!1S~)^VRS8x6NC+W;l$Q#G`ojaLLa2y`1PM?8At4^ZckayW z+}xNZMO^FdIp6ueKQnW$FPtcSSO_sdQA^P;NkshX+lc125@mo7&;XgVmvYogSJKzh zpCzCAQ?H2Kw2{8qwUI7Rv4`caL(-diP9%s@EPqLep1+G+&o{~Fd|!4~Hl3aCxg;h! z_GUkj{b2TJ)}y`@$9OIB7c$!4;BgrqBd~ZROJ+(+hiQANh`jU2yOB!v^lK|cbzAM^>(AD&X4yPpE}IXS7tE%49={Ko8)?ce zQ95-cbz#dN1i@|$x^;8HY{9Z+u9%+r2}w()W7bXE#MGC|W#5&*fmN-Smz;!OZjm2Y zUeJ~(O6cI}G=s={$+q0cS+a^=i7V|T4)x1cP;mmEmIJ%t7DF-^k|Cw-(9`%V`2l`mR;A%f*BpOxXR*R+qiNKF{Nw ztXR#uv}8uwF(a**;cSyKne=Nl8ZAyyirpl`Zjxa)$*^0g?PgVc8M)f3*-%XK#4&Z6 zj;z67@WNsjys***PZj{V%pcWSisF=_IHf2~DT-5y;xLsZfy#=aIHh>Z+U(77@;T{I zZ4WS+!&1nG5#`LvpjwcUGN+!^;PFcmu1U?Vdh0F^)@4Cdh|84YM(Y<_MfA99c}}oS z>~XwquTv~%zP$;?$7Y@=wpC8TmG=*mXZvX2+g(0>@f*p0ol7 ziyGCSN!zvQ=E(2Vtia;*gK!SK^>R5L06#Ey1P|+2wX4Zs!@-q3djT>(@SNsi#qxQ7 zgn$c8va2#T1U}SmQbO6ct98s*{332s`8H04Fh{p;cQUKseht4DIL$INw%-%7ZCupw z2xBGQ2~9t%;ZJJzbq#+GIR1ig{-=OVwn1b3HP9Z3Li{c8-3opNylVfvhOYu=75ndL z`X2$S@qP-d=DQBO1)Uq$^NWye<2S%fMgw5|P1Zyc%J?6E$61EP_%<`j{B^_kBFoTN z{|=6&=yz)PVGS2Gd|1Qd8ZK%0w1&@Wcu~WyhSxRxB@KU7!Q{9i)|oS|od|E%C^z&8~9L*TzC_+?H1Yv5vA z-$8FGxQ{wW^od-@9PVP><(@H))k5Z^zAdF^g-YR%mXdpB z+NpZ2>XPFQOwX3a#s}snh6g5E4cA$=y@A!Ce6ffvQ)szC;e2(t;5yZU-&*miwqK|o zK3oXTCk5a2s#dL*uM#zr_^A^3`-%U>!fD_3{KCR=%X6$|p=PfZJm*QLSqN-DC{&!L zFEiVX6&zgchMh+pgNGIl77ylqswf$M_kYePkKrpWvV1zpBKVDcKjXURyq(5?hRcJ8 zc;b#BXtXfKH|{&Z+nu<;X|6Zy1}7Aci}XsWt4Y zB12yWHpnQF`6@VhjATZLca9`z^wxNelT>QCUX)ON? zxXt9R{TKN#Qr&648 zyGVIx_~wUPtdj*Bc)y+VQ}%-4Apl;GO8P9e?Q011M*X zw#Qz@?gn_aE4H->!?L(O=C8tz>(tv32x2>?Y{yh@V-SS-!hPDH-KBy8)|~cx~|#%dkfZM6T3CdE{#*;!%+;C zd_}W+1a?oW1`+>lP<0x<54-0!vBMM)|Ld~dFn@BvBLPF+Yf=Vq5iEE1Z+dCJeET(>(KSQ&fK{%jrIQlYk>`f literal 0 HcmV?d00001 diff --git a/pic/emulateme.pic16f505.hex b/pic/emulateme.pic16f505.hex new file mode 100644 index 0000000..73bd3ac --- /dev/null +++ b/pic/emulateme.pic16f505.hex @@ -0,0 +1,25 @@ +:1000000064002500A304040AA405A3044809A3046A +:100010003000A3044909A3043100A3044A09A3043E +:100020003200A3044B09A3043300A3044C09A30426 +:100030003400A3044D09A3043500A3044E09A3040E +:100040003600A3044F09A3043700A3045009A304F6 +:100050003800A3045109A3043900A3045209A304DE +:100060003A00A3045309A3043B00A3045409A304C6 +:100070003C00A3045509A3043D00A3045609A304AE +:100080003E00A3045709A3043F006400A3043D0BF2 +:10009000510853084D0877085808140851085F089C +:1000A00045086C0817087F086E0878087F081C0848 +:0400B000A304000B9A +:1001D00068000402A4027F0EE201000858084108EA +:1001E0006E08790843086F086C086F087508720874 +:1001F00059086F0875084C0869086B0865080008FD +:10020000A404C404710073001302D0012400A304E9 +:10021000E909A3042F00300CA404C404D301240072 +:100220000F02A001300CA404C404D3012400000276 +:10023000A404C404B101010CF301100C93000307E2 +:10024000220B230B040B580C91014306280B290B9E +:100250002A0B3C0B720011022F00300CD20124003B +:100260000F02A001010CA404C404F201100C9200BE +:1002700003073B0B3C0B2B0B0008020CA404C4042B +:10028000380018023000A3045809A304A304020A8A +:00000001FF diff --git a/pic/emulateme.tinymem.c b/pic/emulateme.tinymem.c new file mode 100644 index 0000000..7c81b4f --- /dev/null +++ b/pic/emulateme.tinymem.c @@ -0,0 +1,26 @@ +#include +#define LEN 0x10 + +static const uint8_t parity_ref = 0x58; +static char seckrit[LEN] = { 0x51, 0x53, 0x4d, 0x77, 0x58, 0x14, 0x51, 0x5f, 0x45, 0x6c, 0x17, 0x7f, 0x6e, 0x78, 0x7f, 0x1c }; + +uint8_t decrypt(const char *key) { + uint8_t parity = 0; + for (uint8_t i = 0; i < LEN; i++) { + seckrit[i] ^= key[i]; + parity ^= seckrit[i]; + } + if (parity != parity_ref) { + return 0; + } + for (uint8_t i = 0; i < LEN; i++) { + seckrit[i] ^= parity; + } + return 1; +} + +int main(int argc, const char *argv[]) { + const char *key = "AnyColourYouLike"; + decrypt(key); + return 0; +}