Mercurial > micro-tote
changeset 3:755951b7ec90
First creep
| author | Radomir Dopieralski <sheep-devel@sheep.art.pl> |
|---|---|
| date | Tue, 01 Dec 2015 00:28:57 +0100 |
| parents | c4895760a38b |
| children | 010d229c6d6d |
| files | tote.hex tote.py |
| diffstat | 2 files changed, 376 insertions(+), 205 deletions(-) [+] |
line wrap: on
line diff
--- a/tote.hex Mon Nov 30 23:48:59 2015 +0100 +++ b/tote.hex Tue Dec 01 00:28:57 2015 +0100 @@ -11935,192 +11935,301 @@ :10E9B000910D0000C91F0100C52F01003D34010069 :04E9C000650D0000E1 :020000040003F7 -:10E000004D509C0B696D706F7274206D6174680A5D +:10E000004D507B12696D706F7274206D6174680A77 :10E01000696D706F7274207374727563740A0A6626 :10E02000726F6D206D6963726F62697420696D70C3 -:10E030006F7274206932630A0A0A646566205F732E -:10E040006F6C76655F747269616E676C6528612CB0 -:10E0500020622C2063293A0A2020202022222243F9 -:10E06000616C63756C61746520616E20616E676CB4 -:10E0700065206F66206120747269616E676C65202F -:10E080007573696E6720746865206C6177206F66B0 -:10E0900020636F73696E65732E2222220A2020206E -:10E0A00020612C20622C2063203D20616273286156 -:10E0B000292C206162732862292C206162732863F5 -:10E0C000290A2020202069662061202B2062203C24 -:10E0D0002063206F722061202B2063203C2062206F -:10E0E0006F722062202B2063203C20613A0A20209E -:10E0F00020202020202072616973652056616C7594 -:10E10000654572726F722822496D706F7373696210 -:10E110006C6520747269616E676C653A2025722C9B -:10E120002025722C2025722220252028612C206297 -:10E130002C206329290A20202020636F73203D2092 -:10E14000666C6F61742861202A2A2032202B20629D -:10E15000202A2A2032202D2063202A2A203229201A -:10E160002F202832202A2061202A2062290A2020FC -:10E17000202072657475726E206D6174682E616303 -:10E180006F7328636F73290A0A0A646566205F6EDD -:10E190006F726D28612C2062293A0A2020202022EB -:10E1A000222243616C63756C61746520746865201C -:10E1B0006C656E677468206F662061207665637495 -:10E1C0006F722E2222220A2020202072657475721E -:10E1D0006E206D6174682E737172742861202A2A12 -:10E1E0002032202B2062202A2A2032290A0A0A63A0 -:10E1F0006C617373204C65673A0A2020202023202D -:10E200004C656E67746873206F66206C6567207359 -:10E2100065676D656E74732C20696E206D6D0A20C4 -:10E22000202020636F7861203D2020313220202083 -:10E230002023206265747765656E207468652068A8 -:10E24000697020616E6420746865206B6E65650A74 -:10E250002020202066656D7572203D2034322020FC -:10E26000202023206265747765656E2074686520C0 -:10E270006B6E656520616E642074686520616E6BED -:10E280006C650A202020207469626961203D20337A -:10E29000382E35202023206265747765656E2074E2 -:10E2A000686520616E6B6C6520616E6420746865C2 -:10E2B00020666F6F740A2020202062617365203D04 -:10E2C0002020323120202020232066726F6D2074A0 -:10E2D00068652063656E746572206F6620626F6486 -:10E2E000790A0A20202020646566205F5F696E69D4 -:10E2F000745F5F2873656C662C206869705F736556 -:10E3000072766F2C206B6E65655F736572766F2C0D -:10E3100020616E6B6C655F736572766F2C20785F21 -:10E320006469722C20795F646972293A0A2020207E -:10E33000202020202073656C662E736572766F73C3 -:10E34000203D20286869705F736572766F2C206BA2 -:10E350006E65655F736572766F2C20616E6B6C65A0 -:10E360005F736572766F290A2020202020202020EC -:10E3700073656C662E785F646972203D20785F64F7 -:10E3800069720A202020202020202073656C662ED0 -:10E39000795F646972203D20795F6469720A202088 -:10E3A0002020202020205351525432203D206D61E6 -:10E3B00074682E737172742832290A20202020205C -:10E3C00020202073656C662E78203D202873656CB4 -:10E3D000662E636F7861202B2073656C662E6665F0 -:10E3E0006D757229202F2053515254320A2020205B -:10E3F000202020202073656C662E79203D20287314 -:10E40000656C662E636F7861202B2073656C662EB9 -:10E4100066656D757229202F2053515254320A209F -:10E420002020202020202073656C662E7A203D203D -:10E430002D73656C662E74696269610A0A2020205A -:10E4400020646566206D6F76655F746F2873656CF8 -:10E45000662C20783D4E6F6E652C20793D4E6F6E98 -:10E46000652C207A3D4E6F6E65293A0A20202020C7 -:10E47000202020202222224D6F766520746865209E -:10E48000666F6F7420746F207468652073706563A5 -:10E49000696669656420706F696E742E0A0A2020AF -:10E4A000202020202020496620616E79206F662080 -:10E4B00074686520636F6F7264696E617465732040 -:10E4C0006973204E6F6E652C206E6F206D6F7665C0 -:10E4D0006D656E742077696C6C20626520646F6E68 -:10E4E0006520696E20746861740A20202020202035 -:10E4F0002020617869732E0A2020202020202020EF -:10E500002222220A20202020202020206966207834 -:10E51000206973204E6F6E653A0A2020202020204B -:10E5200020202020202078203D2073656C662E78E6 -:10E530000A2020202020202020696620792069736D -:10E54000204E6F6E653A0A202020202020202020B7 -:10E5500020202079203D2073656C662E790A2020CA -:10E560002020202020206966207A206973204E6FA9 -:10E570006E653A0A20202020202020202020202004 -:10E580007A203D2073656C662E7A0A202020202098 -:10E5900020202066203D205F6E6F726D28782C2031 -:10E5A0007929202D2073656C662E636F78610A20AF -:10E5B0002020202020202064203D205F6E6F726D7F -:10E5C00028662C207A290A2020202020202020695B -:10E5D000662064203E2073656C662E66656D7572DC -:10E5E000202B2073656C662E74696269613A0A207B -:10E5F00020202020202020202020207261697365A7 -:10E600002056616C75654572726F7228224F757461 -:10E61000206F6620726561636822290A202020200D -:10E6200020202020686970203D206D6174682E6173 -:10E6300074616E3228792C2078290A20202020202D -:10E640002020206B6E6565203D205F736F6C7665C2 -:10E650005F747269616E676C652873656C662E669F -:10E66000656D75722C20642C2073656C662E746940 -:10E6700062696129202D206D6174682E6174616E5C -:10E6800032282D7A2C2066290A20202020202020C4 -:10E6900020616E6B6C65203D205F736F6C76655FEB -:10E6A000747269616E676C652873656C662E666549 -:10E6B0006D75722C2073656C662E74696269612CAD -:10E6C0002064290A0A202020202020202068697048 -:10E6D000203D206D6174682E6465677265657328DE -:10E6E00068697029202D2034350A20202020202020 -:10E6F00020206B6E6565203D206D6174682E646519 -:10E700006772656573286B6E6565290A2020202075 -:10E7100020202020616E6B6C65203D206D61746847 -:10E720002E6465677265657328616E6B6C65292060 -:10E730002D2039300A2020202020202020666F72D2 -:10E7400020736572766F2C20616E676C6520696E30 -:10E75000207A69702873656C662E736572766F73A4 -:10E760002C20286869702C206B6E65652C20616EEA -:10E770006B6C6529293A0A202020202020202020A7 -:10E780002020206932632E777269746528307830D2 -:10E7900034203C3C20312C0A202020202020202026 -:10E7A00020202020202020202020202020207374C2 -:10E7B000727563742E7061636B28273C4242662732 -:10E7C0002C20736572766F2C20302C206D6174685C -:10E7D0002E72616469616E7328616E676C652929A8 -:10E7E000290A202020202020202073656C662E78A6 -:10E7F000203D20780A202020202020202073656CD6 -:10E80000662E79203D20790A2020202020202020FB -:10E8100073656C662E7A203D207A0A0A202020201B -:10E82000646566206D6F76655F62792873656C66D6 -:10E830002C2064783D302C2064793D302C20647A83 -:10E840003D30293A0A202020202020202022222288 -:10E850004D6F76652074686520666F6F74206279ED -:10E8600020746865207370656369666965642061FA -:10E870006D6F756E742E2222220A20202020202007 -:10E88000202073656C662E6D6F76655F746F2873DC -:10E89000656C662E78202B2064782C2073656C665E -:10E8A0002E79202B2064792C2073656C662E7A20BB -:10E8B0002B20647A290A0A202020206465662072B1 -:10E8C0006F746174655F62792873656C662C20646F -:10E8D000656772656573293A0A2020202020202070 -:10E8E00020222222526F7461746520746865206C46 -:10E8F00065672061726F756E64207468652063655A -:10E900006E746572206F662074686520626F64792A -:10E9100020686F72697A6F6E74616C6C792E222236 -:10E92000220A202020202020202072616469616E4C -:10E9300073203D206D6174682E72616469616E732D -:10E940002864656772656573290A202020202020CD -:10E95000202078203D2073656C662E78202B207354 -:10E96000656C662E626173650A20202020202020BD -:10E970002079203D2073656C662E79202B207365ED -:10E980006C662E626173650A2020202020202020E2 -:10E990006E78203D2078202A206D6174682E636F88 -:10E9A000732872616469616E7329202D2079202A91 -:10E9B000206D6174682E73696E2872616469616E7E -:10E9C0007329202D2073656C662E626173650A20A1 -:10E9D000202020202020206E79203D2078202A2011 -:10E9E0006D6174682E73696E2872616469616E73FB -:10E9F00029202B2079202A206D6174682E636F7383 -:10EA00002872616469616E7329202D2073656C66BC -:10EA10002E626173650A202020202020202073654B -:10EA20006C662E6D6F76655F746F286E782C206E25 -:10EA300079290A0A0A636C61737320526F626F74DA -:10EA40003A0A20202020646566205F5F696E697441 -:10EA50005F5F2873656C66293A0A202020202020F9 -:10EA6000202073656C662E6C656773203D205B0A01 -:10EA70002020202020202020202020204C656728D6 -:10EA800020322C2020312C20302C202D312C202005 -:10EA900031292C0A20202020202020202020202066 -:10EAA0004C65672820352C2020342C20332C202D39 -:10EAB000312C202D31292C0A20202020202020201C -:10EAC000202020204C65672820382C2020372C203F -:10EAD000362C2020312C202D31292C0A20202020DA -:10EAE00020202020202020204C65672831312C2038 -:10EAF00031302C20392C2020312C202031292C0A97 -:10EB000020202020202020205D0A0A2020202064B0 -:10EB10006566206D6F76655F62792873656C662C1B -:10EB20002064783D302C2064793D302C20647A3D7F -:10EB300030293A0A2020202020202020666F7220D1 -:10EB40006C656720696E2073656C662E6C656773F3 -:10EB50003A0A2020202020202020202020206C6520 -:10EB6000672E6D6F76655F6279286478202A206C45 -:10EB700065672E785F6469722C206479202A206C86 -:10EB800065672E795F6469722C20647A290A0A0A03 -:10EB9000726F626F74203D20526F626F7428290A71 -:10EBA0000000000000000000000000000000000065 +:10E030006F7274206932630A696D706F7274206D3B +:10E040006963726F6269740A0A0A646566205F73A5 +:10E050006F6C76655F747269616E676C6528612CA0 +:10E0600020622C2063293A0A20202020612C206283 +:10E070002C2063203D206162732861292C2061627D +:10E08000732862292C206162732863290A202020CA +:10E090002069662061202B2062203C2063206F7263 +:10E0A0002061202B2063203C2062206F72206220A0 +:10E0B0002B2063203C20613A0A20202020202020B1 +:10E0C0002072616973652056616C75654572726F67 +:10E0D000722822496D706F737369626C6520747267 +:10E0E00069616E676C653A2025722C2025722C20A0 +:10E0F00025722220252028612C20622C20632929CA +:10E100000A20202020636F73203D20666C6F6174AD +:10E110002861202A2A2032202B2062202A2A20321D +:10E12000202D2063202A2A203229202F2028322047 +:10E130002A2061202A2062290A202020207265746A +:10E1400075726E206D6174682E61636F7328636FE2 +:10E1500073290A0A0A646566205F6E6F726D286112 +:10E160002C2062293A0A2020202072657475726E74 +:10E17000206D6174682E737172742861202A2A20C0 +:10E1800032202B2062202A2A2032290A0A0A636CB4 +:10E19000617373204C65673A0A2020202023204CAD +:10E1A000656E67746873206F66206C6567207365A1 +:10E1B000676D656E74732C20696E206D6D0A20206A +:10E1C0002020636F7861203D2020313220202020E4 +:10E1D00023206265747765656E20746865206869C0 +:10E1E0007020616E6420746865206B6E65650A201E +:10E1F00020202066656D7572203D2034322020205D +:10E200002023206265747765656E20746865206BD5 +:10E210006E656520616E642074686520616E6B6C4C +:10E22000650A202020207469626961203D2033380E +:10E230002E35202023206265747765656E20746812 +:10E240006520616E6B6C6520616E6420746865206A +:10E25000666F6F740A2020202062617365203D2064 +:10E2600020323120202020232066726F6D207468B8 +:10E27000652063656E746572206F6620626F6479D5 +:10E280000A0A20202020646566205F5F696E697439 +:10E290005F5F2873656C662C206869705F736572B8 +:10E2A000766F2C206B6E65655F736572766F2C20C0 +:10E2B000616E6B6C655F736572766F2C20785F643E +:10E2C00069722C20795F646972293A0A2020202023 +:10E2D0002020202073656C662E736572766F732024 +:10E2E0003D20286869705F736572766F2C206B6EB5 +:10E2F00065655F736572766F2C20616E6B6C655F10 +:10E30000736572766F290A20202020202020207338 +:10E31000656C662E785F646972203D20785F646961 +:10E32000720A202020202020202073656C662E7920 +:10E330005F646972203D20795F6469720A20202041 +:10E34000202020202073656C662E686F6D65203D4F +:10E35000202873656C662E636F7861202B207365AF +:10E360006C662E66656D757229202F206D6174684C +:10E370002E737172742832290A2020202020202038 +:10E380002073656C662E78203D2073656C662E6860 +:10E390006F6D650A202020202020202073656C6688 +:10E3A0002E79203D2073656C662E686F6D650A209E +:10E3B0002020202020202073656C662E7A203D20AE +:10E3C0002D73656C662E74696269610A0A202020CB +:10E3D00020646566206D6F76655F746F2873656C69 +:10E3E000662C20782C20792C207A293A0A202020AB +:10E3F000202020202066203D205F6E6F726D2878DF +:10E400002C207929202D2073656C662E636F78612E +:10E410000A202020202020202064203D205F6E6FD5 +:10E42000726D28662C207A290A20202020202020A6 +:10E430002069662064203E2073656C662E66656DDB +:10E440007572202B2073656C662E74696269613A5F +:10E450000A202020202020202020202020726169F6 +:10E4600073652056616C75654572726F7228224F14 +:10E470007574206F6620726561636822290A202006 +:10E48000202020202020686970203D206D61746864 +:10E490002E6174616E3228792C2078290A20202080 +:10E4A00020202020206B6E6565203D205F736F6CFF +:10E4B00076655F747269616E676C652873656C66FA +:10E4C0002E66656D75722C20642C2073656C662E2B +:10E4D000746962696129202D206D6174682E6174F0 +:10E4E000616E32282D7A2C2066290A2020202020D7 +:10E4F000202020616E6B6C65203D205F736F6C7611 +:10E50000655F747269616E676C652873656C662EF1 +:10E5100066656D75722C2073656C662E7469626910 +:10E52000612C2064290A0A20202020202020206835 +:10E530006970203D206D6174682E64656772656541 +:10E54000732868697029202D2034350A2020202066 +:10E55000202020206B6E6565203D206D6174682E43 +:10E5600064656772656573286B6E6565290A20208E +:10E57000202020202020616E6B6C65203D206D6185 +:10E5800074682E6465677265657328616E6B6C656F +:10E5900029202D2039300A2020202020202020660C +:10E5A0006F7220736572766F2C20616E676C6520C8 +:10E5B000696E207A69702873656C662E7365727651 +:10E5C0006F732C20286869702C206B6E65652C2079 +:10E5D000616E6B6C6529293A0A20202020202020BA +:10E5E00020202020206932632E77726974652830DC +:10E5F000783034203C3C20312C0A20202020202060 +:10E60000202020202020202020202020202020200A +:10E610007374727563742E7061636B28273C424279 +:10E6200066272C20736572766F2C20302C206D614C +:10E6300074682E72616469616E7328616E676C65BF +:10E640002929290A202020202020202073656C669B +:10E650002E78203D20780A202020202020202073A2 +:10E66000656C662E79203D20790A2020202020200C +:10E67000202073656C662E7A203D207A0A0A2020BD +:10E680002020646566206D6F76655F62792873650A +:10E690006C662C2064783D302C2064793D302C2031 +:10E6A000647A3D30293A0A2020202020202020733F +:10E6B000656C662E6D6F76655F746F2873656C662A +:10E6C0002E78202B2064782C2073656C662E7920A0 +:10E6D0002B2064792C2073656C662E7A202B2064A5 +:10E6E0007A290A0A2020202064656620726F7461EE +:10E6F00074655F62792873656C662C206465677247 +:10E70000656573293A0A202020202020202072618C +:10E710006469616E73203D206D6174682E7261645E +:10E7200069616E732864656772656573290A2020C4 +:10E7300020202020202078203D2073656C662E78D4 +:10E74000202B2073656C662E626173650A20202081 +:10E75000202020202079203D2073656C662E7920B2 +:10E760002B2073656C662E626173650A2020202061 +:10E77000202020206E78203D2078202A206D617492 +:10E78000682E636F732872616469616E7329202D2E +:10E790002079202A206D6174682E73696E28726159 +:10E7A0006469616E7329202D2073656C662E626129 +:10E7B00073650A20202020202020206E79203D2013 +:10E7C00078202A206D6174682E73696E28726164E6 +:10E7D00069616E7329202B2079202A206D6174686D +:10E7E0002E636F732872616469616E7329202D2016 +:10E7F00073656C662E626173650A202020202020DC +:10E80000202073656C662E6D6F76655F746F286E61 +:10E81000782C206E792C2073656C662E7A290A0A72 +:10E820000A636C61737320526F626F743A0A20201E +:10E830002020646566205F5F696E69745F5F28737E +:10E84000656C66293A0A202020202020202073654C +:10E850006C662E6C656773203D205B0A20202020AB +:10E8600020202020202020204C65672820322C20CA +:10E8700020312C20302C202D312C202031292C0A25 +:10E880002020202020202020202020204C656728C8 +:10E8900020352C2020342C20332C202D312C202DE1 +:10E8A00031292C0A20202020202020202020202058 +:10E8B0004C65672820382C2020372C20362C20202F +:10E8C000312C202D31292C0A20202020202020200E +:10E8D000202020204C65672831312C2031302C201D +:10E8E000392C2020312C202031292C0A20202020D6 +:10E8F000202020205D0A0A20202020646566206DEB +:10E900006F76655F62792873656C662C2064783D4C +:10E91000302C2064793D302C20647A3D30293A0A2D +:10E920002020202020202020666F72206C65672028 +:10E93000696E2073656C662E6C6567733A0A2020D9 +:10E94000202020202020202020206C65672E6D6F45 +:10E9500076655F6279286478202A206C65672E7856 +:10E960005F6469722C206479202A206C65672E7997 +:10E970005F6469722C20647A290A0A2020202064AE +:10E98000656620726F746174655F62792873656C67 +:10E99000662C2064656772656573293A0A20202019 +:10E9A0002020202020666F72206C656720696E2011 +:10E9B00073656C662E6C6567733A0A2020202020F0 +:10E9C000202020202020206C65672E726F746174D7 +:10E9D000655F62792864656772656573290A0A0A4A +:10E9E000636C6173732043726565703A0A2020205E +:10E9F000207370656564203D20310A20202020733B +:10EA00007472696465203D2031340A20202020730F +:10EA100068696674203D20380A20202020736869C8 +:10EA200066745F7374657073203D20320A20202065 +:10EA30002072616973655F6C6567203D2031300A23 +:10EA40002020202072616973655F73746570732084 +:10EA50003D20330A202020206E6578745F6C656746 +:10EA6000203D20280A202020202020202028322C71 +:10EA700020302C20332C2031292C202020232066EC +:10EA80006F72776172640A202020202020202028C5 +:10EA9000312C20332C20302C2032292C20202023F4 +:10EAA000206261636B776172640A2020202020203D +:10EAB000202028312C20322C20332C2030292C20CF +:10EAC00020202320636C6F636B776973650A2020B5 +:10EAD00020202020202028332C20302C20312C20D6 +:10EAE00032292C2020202320636F756E7465722DCF +:10EAF000636C6F636B776973650A20202020202088 +:10EB0000202028322C20332C20312C2030292C207E +:10EB1000202023206C6566740A20202020202020DD +:10EB20002028332C20322C20302C2031292C20205E +:10EB300020232072696768740A20202020290A0A8D +:10EB400020202020646566205F5F696E69745F5FC6 +:10EB50002873656C662C20726F626F74293A0A20E4 +:10EB60002020202020202073656C662E726F626F3B +:10EB700074203D20726F626F740A202020202020B4 +:10EB8000202073656C662E73686966745F78203D1B +:10EB900020300A202020202020202073656C662E43 +:10EBA00073686966745F79203D20300A2020202038 +:10EBB0002020202073656C662E6F6E5F67726F7504 +:10EBC0006E64203D206C69737428726F626F742EBE +:10EBD0006C656773290A202020202020202073657F +:10EBE0006C662E6478203D20300A202020202020D2 +:10EBF000202073656C662E6479203D20310A202028 +:10EC000020202020202073656C662E726F74617442 +:10EC1000696F6E203D20300A2020202020202020F7 +:10EC200073656C662E737072656164203D20300AD6 +:10EC300020202020202020206C6567203D20726F3E +:10EC4000626F742E6C6567735B305D0A2020202034 +:10EC50002020202073656C662E68656967687420C3 +:10EC60003D206C65672E74696269610A0A20202064 +:10EC700020646566206D6F76652873656C66293A39 +:10EC80000A2020202020202020666F72206C6567DB +:10EC900020696E2073656C662E6F6E5F67726F758C +:10ECA0006E643A0A202020202020202020202020CE +:10ECB0006C65672E6D6F76655F746F286C65672E67 +:10ECC00078202D2073656C662E6478202A206C6570 +:10ECD000672E785F646972202A2073656C662E73D4 +:10ECE000706565642C0A2020202020202020202010 +:10ECF00020202020202020202020202020206C6583 +:10ED0000672E79202D2073656C662E6479202A2069 +:10ED10006C65672E795F646972202A2073656C6662 +:10ED20002E73706565642C0A20202020202020206E +:10ED300020202020202020202020202020202020D3 +:10ED40002D73656C662E686569676874290A2020D2 +:10ED5000202020202020202020206C65672E726F2C +:10ED6000746174655F6279282D73656C662E726FAD +:10ED7000746174696F6E202A206C65672E785F64F9 +:10ED80006972202A206C65672E795F646972202F72 +:10ED90002032290A0A2020202064656620737465C9 +:10EDA000702873656C662C206C6567293A0A2020F0 +:10EDB0002020202020206478203D20286C65672EAC +:10EDC000785F646972202A2073656C662E736869A7 +:10EDD0006674202D2073656C662E73686966745F97 +:10EDE0007829202F2073656C662E73686966745FBE +:10EDF00073746570730A20202020202020206479FD +:10EE0000203D20286C65672E795F646972202A2076 +:10EE100073656C662E7368696674202D2073656C4B +:10EE2000662E73686966745F7929202F2073656C7C +:10EE3000662E73686966745F73746570730A202048 +:10EE4000202020202020666F722073746570206956 +:10EE50006E2072616E67652873656C662E736869D3 +:10EE600066745F7374657073293A0A20202020202D +:10EE700020202020202020726F626F742E6D6F760C +:10EE8000655F62792864782C2064792C2030290A07 +:10EE900020202020202020202020202073656C6648 +:10EEA0002E73686966745F78202B3D2064780A2091 +:10EEB000202020202020202020202073656C662E1A +:10EEC00073686966745F79202B3D2064790A20207D +:10EED000202020202020202020207969656C640AD1 +:10EEE000202020202020202073656C662E6F6E5F0E +:10EEF00067726F756E642E72656D6F7665286C65CE +:10EF000067290A2020202020202020666F7220738D +:10EF100074657020696E2072616E67652873656C18 +:10EF2000662E72616973655F7374657073293A0A3E +:10EF30002020202020202020202020206C65672EEB +:10EF40006D6F76655F627928302C20302C207365D8 +:10EF50006C662E72616973655F6C6567290A202093 +:10EF6000202020202020202020207969656C640A40 +:10EF700020202020202020206C65672E6D6F766574 +:10EF80005F746F280A2020202020202020202020AD +:10EF900020286C65672E686F6D65202B2073656C6B +:10EFA000662E73686966745F78202B2073656C66C3 +:10EFB0002E6478202A0A20202020202020202020B3 +:10EFC00020202073656C662E737472696465292035 +:10EFD0002A206C65672E785F646972202B20736528 +:10EFE0006C662E7370726561642C0A2020202020CC +:10EFF00020202020202020286C65672E686F6D65FA +:10F00000202B2073656C662E73686966745F7920A7 +:10F010002B2073656C662E6479202A0A202020201C +:10F0200020202020202020202073656C662E737401 +:10F030007269646529202A206C65672E795F64698E +:10F0400072202B2073656C662E7370726561642C60 +:10F050000A20202020202020202020202073656CE2 +:10F06000662E72616973655F6C6567202A2073651F +:10F070006C662E72616973655F7374657073202DA1 +:10F080002073656C662E6865696768740A202020A5 +:10F090002020202020290A20202020202020207924 +:10F0A00069656C640A202020202020202079696571 +:10F0B0006C640A2020202020202020666F7220739C +:10F0C00074657020696E2072616E67652873656C67 +:10F0D000662E72616973655F7374657073202D208D +:10F0E00031293A0A20202020202020202020202002 +:10F0F0006C65672E6D6F76655F627928302C2030E5 +:10F100002C202D73656C662E72616973655F6C656A +:10F1100067290A202020202020202020202020795C +:10F1200069656C640A202020202020202073656CF3 +:10F13000662E6F6E5F67726F756E642E617070659C +:10F140006E64286C6567290A20202020202020205A +:10F150007969656C640A0A20202020646566207243 +:10F16000756E2873656C662C207374657073293A0C +:10F170000A20202020202020206C65675F696E64B3 +:10F180006578203D20300A20202020202020206685 +:10F190006F72207374657020696E2072616E67658E +:10F1A000287374657073293A0A20202020202020BB +:10F1B00020202020206C6567203D20726F626F74D4 +:10F1C0002E6C6567735B6C65675F696E6465785DFF +:10F1D0000A202020202020202020202020666F725E +:10F1E000206672616D6520696E2073656C662E7392 +:10F1F000746570286C6567293A0A20202020202039 +:10F200002020202020202020202073656C662E6D79 +:10F210006F766528290A2020202020202020202009 +:10F220002020202020206D6963726F6269742E7324 +:10F230006C656570283230290A202020202020208B +:10F2400020202020206C65675F696E646578203D12 +:10F250002073656C662E6E6578745F6C65675B30D5 +:10F260005D5B6C65675F696E6465785D0A0A0A724A +:10F270006F626F74203D20526F626F7428290A00FC :0400000500011C6D6D :00000001FF
--- a/tote.py Mon Nov 30 23:48:59 2015 +0100 +++ b/tote.py Tue Dec 01 00:28:57 2015 +0100 @@ -2,10 +2,10 @@ import struct from microbit import i2c +import microbit def _solve_triangle(a, b, c): - """Calculate an angle of a triangle using the law of cosines.""" a, b, c = abs(a), abs(b), abs(c) if a + b < c or a + c < b or b + c < a: raise ValueError("Impossible triangle: %r, %r, %r" % (a, b, c)) @@ -14,7 +14,6 @@ def _norm(a, b): - """Calculate the length of a vector.""" return math.sqrt(a ** 2 + b ** 2) @@ -29,23 +28,12 @@ self.servos = (hip_servo, knee_servo, ankle_servo) self.x_dir = x_dir self.y_dir = y_dir - SQRT2 = math.sqrt(2) - self.x = (self.coxa + self.femur) / SQRT2 - self.y = (self.coxa + self.femur) / SQRT2 + self.home = (self.coxa + self.femur) / math.sqrt(2) + self.x = self.home + self.y = self.home self.z = -self.tibia - def move_to(self, x=None, y=None, z=None): - """Move the foot to the specified point. - - If any of the coordinates is None, no movement will be done in that - axis. - """ - if x is None: - x = self.x - if y is None: - y = self.y - if z is None: - z = self.z + def move_to(self, x, y, z): f = _norm(x, y) - self.coxa d = _norm(f, z) if d > self.femur + self.tibia: @@ -65,17 +53,15 @@ self.z = z def move_by(self, dx=0, dy=0, dz=0): - """Move the foot by the specified amount.""" self.move_to(self.x + dx, self.y + dy, self.z + dz) def rotate_by(self, degrees): - """Rotate the leg around the center of the body horizontally.""" radians = math.radians(degrees) x = self.x + self.base y = self.y + self.base nx = x * math.cos(radians) - y * math.sin(radians) - self.base ny = x * math.sin(radians) + y * math.cos(radians) - self.base - self.move_to(nx, ny) + self.move_to(nx, ny, self.z) class Robot: @@ -91,5 +77,81 @@ for leg in self.legs: leg.move_by(dx * leg.x_dir, dy * leg.y_dir, dz) + def rotate_by(self, degrees): + for leg in self.legs: + leg.rotate_by(degrees) + + +class Creep: + speed = 1 + stride = 14 + shift = 8 + shift_steps = 2 + raise_leg = 10 + raise_steps = 3 + next_leg = ( + (2, 0, 3, 1), # forward + (1, 3, 0, 2), # backward + (1, 2, 3, 0), # clockwise + (3, 0, 1, 2), # counter-clockwise + (2, 3, 1, 0), # left + (3, 2, 0, 1), # right + ) + + def __init__(self, robot): + self.robot = robot + self.shift_x = 0 + self.shift_y = 0 + self.on_ground = list(robot.legs) + self.dx = 0 + self.dy = 1 + self.rotation = 0 + self.spread = 0 + leg = robot.legs[0] + self.height = leg.tibia + + def move(self): + for leg in self.on_ground: + leg.move_to(leg.x - self.dx * leg.x_dir * self.speed, + leg.y - self.dy * leg.y_dir * self.speed, + -self.height) + leg.rotate_by(-self.rotation * leg.x_dir * leg.y_dir / 2) + + def step(self, leg): + dx = (leg.x_dir * self.shift - self.shift_x) / self.shift_steps + dy = (leg.y_dir * self.shift - self.shift_y) / self.shift_steps + for step in range(self.shift_steps): + robot.move_by(dx, dy, 0) + self.shift_x += dx + self.shift_y += dy + yield + self.on_ground.remove(leg) + for step in range(self.raise_steps): + leg.move_by(0, 0, self.raise_leg) + yield + leg.move_to( + (leg.home + self.shift_x + self.dx * + self.stride) * leg.x_dir + self.spread, + (leg.home + self.shift_y + self.dy * + self.stride) * leg.y_dir + self.spread, + self.raise_leg * self.raise_steps - self.height + ) + yield + yield + for step in range(self.raise_steps - 1): + leg.move_by(0, 0, -self.raise_leg) + yield + self.on_ground.append(leg) + yield + + def run(self, steps): + leg_index = 0 + for step in range(steps): + leg = robot.legs[leg_index] + for frame in self.step(leg): + self.move() + microbit.sleep(20) + leg_index = self.next_leg[0][leg_index] + robot = Robot()
