From c8ed8cdf9e21d1d5f622dd930e5bb5c1e8371369 Mon Sep 17 00:00:00 2001 From: Zack Buhman Date: Sat, 9 Dec 2023 16:14:21 +0800 Subject: [PATCH] maple: add maple_bus_commands.h --- maple_bus_commands.h | 210 +++++++++++++++++++++++++++++ regs/gen/maple_commands.py | 160 ++++++++++++++++++++++ regs/maple_bus_commands.csv | 71 ++++++++++ regs/maple_bus_commands.ods | Bin 0 -> 17203 bytes regs/maple_bus_ft0.ods | Bin 0 -> 11666 bytes regs/maple_bus_ft6.ods | Bin 0 -> 11785 bytes regs/maple_bus_ft6_key_mapping.ods | Bin 0 -> 16782 bytes 7 files changed, 441 insertions(+) create mode 100644 maple_bus_commands.h create mode 100644 regs/gen/maple_commands.py create mode 100644 regs/maple_bus_commands.csv create mode 100644 regs/maple_bus_commands.ods create mode 100644 regs/maple_bus_ft0.ods create mode 100644 regs/maple_bus_ft6.ods create mode 100644 regs/maple_bus_ft6_key_mapping.ods diff --git a/maple_bus_commands.h b/maple_bus_commands.h new file mode 100644 index 0000000..fce4be1 --- /dev/null +++ b/maple_bus_commands.h @@ -0,0 +1,210 @@ +#include +#include + +#include "type.h" + +namespace device_request { + constexpr uint32_t command_code = 0x1; +} + +namespace all_status_request { + constexpr uint32_t command_code = 0x2; +} + +namespace device_reset { + constexpr uint32_t command_code = 0x3; +} + +namespace device_kill { + constexpr uint32_t command_code = 0x4; +} + +namespace device_status { + constexpr uint32_t command_code = 0x5; + + struct data_fields { + uint8_t device_id[16]; + uint8_t destination_code[1]; + uint8_t connection_direction[1]; + uint8_t product_name[30]; + uint8_t license[60]; + uint8_t low_consumption_standby_current[2]; + uint8_t maximum_current_consumption[2]; + }; + + static_assert((sizeof (struct data_fields)) == 112); +} + +namespace device_all_status { + constexpr uint32_t command_code = 0x6; + + template + struct data_fields { + uint8_t device_id[16]; + uint8_t destination_code[1]; + uint8_t connection_direction[1]; + uint8_t product_name[30]; + uint8_t license[60]; + uint8_t low_consumption_standby_current[2]; + uint8_t maximum_current_consumption[2]; + uint8_t free_device_status[N]; + }; + + static_assert((sizeof (struct data_fields<0>)) == 112); +} + +namespace device_reply { + constexpr uint32_t command_code = 0x7; +} + +namespace data_transfer { + constexpr uint32_t command_code = 0x8; + + template + struct data_fields { + uint8_t data[N]; + }; + + static_assert((sizeof (struct data_fields<0>)) == 0); +} + +namespace get_condition { + constexpr uint32_t command_code = 0x9; + + struct data_fields { + uint8_t function_type[4]; + }; + + static_assert((sizeof (struct data_fields)) == 4); +} + +namespace get_media_info { + constexpr uint32_t command_code = 0xa; + + struct data_fields { + uint8_t function_type[4]; + uint8_t pt[4]; + }; + + static_assert((sizeof (struct data_fields)) == 8); +} + +namespace block_read { + constexpr uint32_t command_code = 0xb; + + struct data_fields { + uint8_t function_type[4]; + uint8_t pt[1]; + uint8_t phase[1]; + uint8_t block_no[2]; + }; + + static_assert((sizeof (struct data_fields)) == 8); +} + +namespace block_write { + constexpr uint32_t command_code = 0xc; + + template + struct data_fields { + uint8_t function_type[4]; + uint8_t pt[1]; + uint8_t phase[1]; + uint8_t block_no[2]; + uint8_t written_data[N]; + }; + + static_assert((sizeof (struct data_fields<0>)) == 8); +} + +namespace get_last_error { + constexpr uint32_t command_code = 0xd; + + struct data_fields { + uint8_t function_type[4]; + uint8_t pt[1]; + uint8_t phase[1]; + uint8_t block_no[2]; + }; + + static_assert((sizeof (struct data_fields)) == 8); +} + +namespace set_condition { + constexpr uint32_t command_code = 0xe; + + template + struct data_fields { + uint8_t function_type[4]; + uint8_t write_in_data[N]; + }; + + static_assert((sizeof (struct data_fields<0>)) == 4); +} + +namespace ft4_control { + constexpr uint32_t command_code = 0xf; + + template + struct data_fields { + uint8_t function_type[4]; + uint8_t ft4_data[N]; + }; + + static_assert((sizeof (struct data_fields<0>)) == 4); +} + +namespace ar_control { + constexpr uint32_t command_code = 0x10; + + template + struct data_fields { + uint8_t function_type[4]; + uint8_t data[N]; + }; + + static_assert((sizeof (struct data_fields<0>)) == 4); +} + +namespace function_type_unknown { + constexpr uint32_t command_code = 0xfe; +} + +namespace command_unknown { + constexpr uint32_t command_code = 0xfd; +} + +namespace transmit_again { + constexpr uint32_t command_code = 0xfc; +} + +namespace file_error { + constexpr uint32_t command_code = 0xfb; + + struct data_fields { + uint8_t function_error_code[4]; + }; + + static_assert((sizeof (struct data_fields)) == 4); +} + +namespace lcd_error { + constexpr uint32_t command_code = 0xfa; + + struct data_fields { + uint8_t function_error_code[4]; + }; + + static_assert((sizeof (struct data_fields)) == 4); +} + +namespace ar_error { + constexpr uint32_t command_code = 0xf9; + + struct data_fields { + uint8_t function_error_code[4]; + }; + + static_assert((sizeof (struct data_fields)) == 4); +} + diff --git a/regs/gen/maple_commands.py b/regs/gen/maple_commands.py new file mode 100644 index 0000000..d67595a --- /dev/null +++ b/regs/gen/maple_commands.py @@ -0,0 +1,160 @@ +from dataclasses import dataclass +from typing import Union +import sys + +from sh7091 import read_input +from sh7091 import headers +from generate import renderer + +@dataclass +class CommandNamespace: + name: str + issuing_right: set[str] + command_code: int + data_size: int + +def command_namespace(namespace: CommandNamespace, + data_fields: list[tuple[str, tuple[int, str]]]): + yield f"namespace {namespace.name} {{" + yield f"constexpr uint32_t command_code = {hex(namespace.command_code)};" + + if namespace.data_size == (0, None): + assert data_fields == [] + # do nothing + else: + length, variable = namespace.data_size + + yield "" + + if variable is not None: + assert variable.lower() == "n" + yield "template " + + yield "struct data_fields {" + + for field_name, field_size in data_fields: + const, var = field_size + if var is None: + yield f"uint8_t {field_name}[{const}];" + elif const == 0: + assert var == "n" + yield f"uint8_t {field_name}[{var.upper()}];" + else: + yield f"uint8_t {field_name}[{const} + {var.upper()}];" + + yield "};" + + yield "" + + if variable is not None: + assert variable == "n" + yield f"static_assert((sizeof (struct data_fields<0>)) == {length});" + else: + yield f"static_assert((sizeof (struct data_fields)) == {length});" + + yield "}" + yield "" + +def parse_data_size(data_size, base, multiple) -> tuple[int, str]: + def parse_term(s): + try: + return int(s, base) * multiple + except ValueError: + div = s.split("/") + if len(div) == 1: + # this must be a variable + assert multiple == 1, s + a, = div + return a + elif len(div) == 2: + # this must be a variable divided by a number + a, b = div + b = int(b, 10) + assert b == multiple + return a + else: + assert False, div + + _terms = data_size.split("+") + terms = tuple(parse_term(term) for term in _terms) + if len(terms) == 1: + term, = terms + if type(term) == str: + return (0, term) + elif type(term) == int: + return (term, None) + else: + assert False, (_terms, terms) + elif len(terms) == 2: + assert type(terms[0]) == int + assert type(terms[1]) == str + return terms + else: + assert False, (_terms, terms) + +def new_aggregator(): + last_name = None + namespace = None + data_fields = [] + all_names = set() + + def process_row(row): + nonlocal last_name + nonlocal namespace + nonlocal data_fields + + if row["name"] == "": + assert all(v == "" for v in row.values()), row + return + + if row["name"] != last_name: + if namespace is not None: + yield namespace, data_fields + else: + assert data_fields == [] + assert row["name"] != "" + last_name = row["name"] + issuing_right = set(row["issuing_right"].split(", ")) + assert all(s in {"host", "peripheral"} for s in issuing_right), row + assert issuing_right != set(), issuing_right + data_size = parse_data_size(row["data_size"], 16, 4) + + namespace = CommandNamespace( + name = row["name"], + issuing_right = issuing_right, + command_code = int(row["command_code"], 16), + data_size = data_size, + ) + data_fields = [] + # fall through + + assert last_name is None or row["name"] == last_name, (row["name"], last_name) + if row["data_field"] != "": + assert row["data_field_size"] != "" + data_fields.append(( + row["data_field"], + parse_data_size(row["data_field_size"], 10, 1) + )) + + def terminate(): + nonlocal namespace + nonlocal data_fields + if namespace is not None: + yield namespace, data_fields + + def process(rows): + for row in rows: + yield from process_row(row) + yield from terminate() + + return process + +input_file = sys.argv[1] +rows = read_input(input_file) +process = new_aggregator() + +render, out = renderer() +render(headers()) +for namespace, data_fields in process(rows): + render(command_namespace(namespace, data_fields)) +sys.stdout.write(out.getvalue()) diff --git a/regs/maple_bus_commands.csv b/regs/maple_bus_commands.csv new file mode 100644 index 0000000..e3700de --- /dev/null +++ b/regs/maple_bus_commands.csv @@ -0,0 +1,71 @@ +"name","issuing_right","command_code","data_size","data_field","data_field_size" +"device_request","host","0x01","0x00",, +,,,,, +"all_status_request","host","0x02","0x00",, +,,,,, +"device_reset","host","0x03","0x00",, +,,,,, +"device_kill","host","0x04","0x00",, +,,,,, +"device_status","peripheral","0x05","0x1c","device_id",16 +"device_status",,,,"destination_code",1 +"device_status",,,,"connection_direction",1 +"device_status",,,,"product_name",30 +"device_status",,,,"license",60 +"device_status",,,,"low_consumption_standby_current",2 +"device_status",,,,"maximum_current_consumption",2 +,,,,, +"device_all_status","peripheral","0x06","0x1c+n/4","device_id",16 +"device_all_status",,,,"destination_code",1 +"device_all_status",,,,"connection_direction",1 +"device_all_status",,,,"product_name",30 +"device_all_status",,,,"license",60 +"device_all_status",,,,"low_consumption_standby_current",2 +"device_all_status",,,,"maximum_current_consumption",2 +"device_all_status",,,,"free_device_status","n" +,,,,, +"device_reply","peripheral","0x07","0x00",, +,,,,, +"data_transfer","peripheral","0x08","n/4","data","n" +,,,,, +"get_condition","host","0x09","0x01","function_type",4 +,,,,, +"get_media_info","host","0x0a","0x02","function_type",4 +"get_media_info",,,,"pt",4 +,,,,, +"block_read","host","0x0b","0x02","function_type",4 +"block_read",,,,"pt",1 +"block_read",,,,"phase",1 +"block_read",,,,"block_no",2 +,,,,, +"block_write","host","0x0c","0x02+n/4","function_type",4 +"block_write",,,,"pt",1 +"block_write",,,,"phase",1 +"block_write",,,,"block_no",2 +"block_write",,,,"written_data","n" +,,,,, +"get_last_error","host","0x0d","0x02","function_type",4 +"get_last_error",,,,"pt",1 +"get_last_error",,,,"phase",1 +"get_last_error",,,,"block_no",2 +,,,,, +"set_condition","host","0x0e","0x01+n/4","function_type",4 +"set_condition",,,,"write_in_data","n" +,,,,, +"ft4_control","host","0x0f","0x01+n/4","function_type",4 +"ft4_control",,,,"ft4_data","n" +,,,,, +"ar_control","host","0x10","0x01+n/4","function_type",4 +"ar_control",,,,"data","n" +,,,,, +"function_type_unknown","peripheral","0xfe","0x00",, +,,,,, +"command_unknown","peripheral","0xfd","0x00",, +,,,,, +"transmit_again","host, peripheral","0xfc","0x00",, +,,,,, +"file_error","peripheral","0xfb","0x01","function_error_code",4 +,,,,, +"lcd_error","peripheral","0xfa","0x01","function_error_code",4 +,,,,, +"ar_error","peripheral","0xf9","0x01","function_error_code",4 diff --git a/regs/maple_bus_commands.ods b/regs/maple_bus_commands.ods new file mode 100644 index 0000000000000000000000000000000000000000..abd09bd2cac20401c14a357a10846ed82f420449 GIT binary patch literal 17203 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 F{{S%w!kGX7 literal 0 HcmV?d00001 diff --git a/regs/maple_bus_ft0.ods b/regs/maple_bus_ft0.ods new file mode 100644 index 0000000000000000000000000000000000000000..55a72af76df041218461edbd2af218097eff5868 GIT binary patch literal 11666 zcmb_?2UJtr)^3zu1VK6o3Q8A5dKU!|5a}({0HOELt4fz9D7{JVASHB&RO!7}=_T|K zs(}aR{$9_y*K_{&#&|PhkF1rw=C|gWbMLvc=lT@o(9lT$0Biu@HgB+ozm?#74gdgf zeO&znur{{_JG$9{L3Val=0+e#b6XouXB%S?a$R=V`KkuIbFHo--3VDvIg0h zn}8vX91g}Ny&rpRd>`NT+ZFK#_f0(I#K3T1?y9j!{mL7liNSf0Ks?tN{!v{iGk-I6 zWU2TC_k4Io;x>q;Bcv?1NtMTlg*DS{EBu zLH!v2NBsC!{pIP*t_cVcg?jp?Q33mx`0W+p*f_Ld&&-j_o>YQ;i#R44N{;Z)AKZ@b ziH6Jy<$W&01yw3H1XkXQeET#E=T(=Vqc2VEYq>V=7=)5wQ`+|8H-m;@-*gd!J+|=v ziMb&B>=nK54PSP2eCIu*&D?j4+?|Ho_U9Qs86-W~QP`{#cDr1=;OM`kTr8<@mb7}> zmtlJLVXfkTPEEQ*Q4R~c;@E5m;|2iWiv|Gv>kjyx`~J8a!HysfS8J;<6?xl?$0YT; zB~Rz{nkE=;Y5K`}Xl|z|YfPzbKB7Nja~dyYFp@pnCCAUy7c8vaYvaFaIXxzBx+HgI+5%m|iQ4fzah6Fb8Rbu5;)%A+>7 zky3~de$-9h0HqPbsN3~+3cz?+Y*J)8vz>r$?${K!y(8C(uA#AOe*cyt%GS@#<$mjr z3!4RewQlEcg=&<x9FNQ;l}JJD1Uy0_e^l6tc5#7IRQ zu-Bw`yIx`eU+K^OaD2EFCv7DIR?TGRW{!$~>%(M_ya6tb3t%#2W%BQei83pWrId-+ zOE6=B#PC*jb6Urc7HdaT5cDD)tzR{^RMtf zS(1S)z64=Xv^YOmB2?xWh#ngoTOC!IpFmhmu=lO1%4IMi3w{3;b(EBqr4-C&l=Yi( zmitqm@Z@Tx>?d~*@u`ADzXnuJ2`P*4H*VNX%}Q#T>01^|L*;|D2)Fic!Z1Kc#8Ks- z%gRcKI=K;+g6w3o7Fy2WRv(LV|8$3EBp>jz<}+xHAjziep+vWDZq{Nz9^dFY)6@XG ze%WbBHf36TmN-zsFo^iBF)cUw_VP?uHBQd*tulnCywjz*WRW%&w1&1m>}OsP-s+u8cI2OrK_c%6gU zvTQKDN((tEra6@IpKaRG4iy)5_1;J^)hyLv9Tr_lq{>&Di&bH<4vFLm2*6T%gm{}# zLPxwiBlZAInhkhoC3!{GEl1LdvEI_}@QaE`P)X_N_7tvLt9jmW{ZbnI3EL2<%3K@Z zc$Qq6arKoVj7IL$ruVxdC`3csx!vE+eYgj62XnAmHwg6NDOWH>Iy>>%Y8R1ZEYr^9 zL3PTULr~dNdgtBF@5H`~W~wS2v?V#P4?3Ir9_}{wLX-B^NTuc{*!b?r95rLYRD%3O zItql6`|O*lu&hYZsbyrUkNl1vVHBLLkwRGH(~f&G$%|%@uMDcE z=J3yFv%wFeB=FQBC9j!yaFjA9D@wOG(rH+uSz6*#S{-VXLp`6dVd~=00N2}%iu4>T zr0+1VA@)9*ssZkb1$Oj)qvsdaV&_P0mcM146a|i;D0I{kjMUZPPALq-Amktec*ohL zQAX7)un^^1TB|nwaHB3ubt#W~#%YAR@&MGKRS)7~@!P-{#p!@Tx|}#VjCym9Oulhd zn<}xgxDw;WkKP&T4;bqAGkYMYbhMJ|PC<{q-Jn4>+Qb6Cr6VKZ@;d3xz4adtsL7@+ zRlmp=?fK<4#|G!~o|RSS2L*qZ38-NIbQfXNXr9!<)BN&W42PcHF=yijpA1Roc!TJ) z5LCi=H11Y6ixN)%2ZPcgV;8^1UN5>$NAbSK-5qq=`db!FvP0jt*(0B?rMdUU)zmmh zPc^)nx>y7nBwyB8roJ2ZHwJ@DI%23~s zlJqH7FPYZwBJ~2oeCpNUqpwqmCEsrU*j_R{cj1N+D?K)*g=mhyka#H1)a$WHOL==PmuhzwR#iPH(jxUAuoBw`9B$kq)cK=4JpdN006j{{^@y*dzITEj&4?9$aQL;1#VoWc9P3R*fYg9AT&m~ z7|5g?jn!;z!L5MoHZihL$xcZYrF$C!8~WlYWj5V?gHEqMNP4bC?1~;lcD0Rq1tbf< zq@+L15>7@hMneR(GAnS-67K4ItnG{*B;rLqV15@8Cke-2oiX}xha%r`Zpx)oruu0q-fio|_6mo~T3Jyfp=_hb*FU-rehOJk-R z%^YOjA%`d2p4^23om(7f^!2Sv;P=%I*_jg8F&3`m{ioXns!P_r34QfUoTQ zAwes3?9yV~gmSEJXP!WMWeA z2#Fw@)Ra5M_rTewk0Pb#vaugtHyPLrpeHb=Gz&dYK)sC_c``s^g?V2dP5(euBp6dP z7!WSIqCI9PUuyWCfzFWmEw_(Qe9Q*>illquM!LC{EsoY&X)&p&&tBsj5*gyJvQ|pN zipl(H`56f1CmLC&W2wo_^`Q6%ODeBA{IlfmJrhqdg6MOpF$j#sERz;!j}FH5E$%Ot zSF_6DiG5!SRscybbNbrHh7+{uPO0Dw;tmW-DD^;tx`L_iDi3@~mLO=ym7B|FXT*9? zrRBv+mCuTBa>m{d%m4C?GWX)l8yzbydUAHlfW4Ni^GD3s=cP?KSh_jc zzylAK9t?s~;?i4&h3!iBXoGu~2oy6}yXL#08!Bf*VJqUDjY{F4Rz1&_^ErnbnRJU6XfUAuAK3XFP-R~2_;5+lE?_|K2 z3vEI6AG&)*EPv{vil}N$F&@iG{-k{1f#9pca%zhVKE@z)7eZjHB7qTC!XUz*|D3px6>t?(G8 zf8v6@tYz?Yg5_hm2!*Rtix*3-1J<2VPdbdv;hvhkiRC2P;jmX63HooUTBw7Dq9@dC zaKb%?Wi9iGqf-Mc)YR931>p5D-2j-hhs^G{ei<{~G|d!|@}1}i&|YbesnRJ1CZS$f zOFS)!AT{!Bhgxg^g7JrigbQ)iL#EEa?*xJNft+uJX_{wcW)=yKn^1Zu`?x|D84I~ORTw53UppWv<12@Iz^`BtZGy1J5aI2tRQ(h*r(Gt%xy+4aB(Q}Wt4lwde z7RBB@Bs!&B=z2&O!<|ndmB8FGV5kwf4VwI{Ip^_)mr0c7mR!dEyxrIFts2%H{%4E6 zj?`5Ic{R++y!_cb@4g@MV7Dub@#;W;lXH65ky=vi_Y(S#pC59&?w`D5XBd=>+>Cya zaf&tYV}PtUczvV(EL!=Qej{$-N8$Yko80NWGlMK*#e?T8@6ms(Z8pLLzP!a$=cbu} zC7268km`{!jvx^PKok%bkLkwh#BL&Jy@nU!Onu`_Il~0iQ}>_FN$`0Fd3!!|uJq`i zAY;kc+~vwK$H;{(%{UpTFZKpFULsp`mW+Dw zA$Yh!yWs<6_KugXN(URG(kWnBMglHXKyc;=R^CEM#2j(o3iXHqaZi5)QY~|S zH`;zp&b3QsaKmKwA&fMHhztMHl&dhMA?M@A?ZG;Sw;FFWFVEk6!0pRc&(EO7Th9812L>;UpE zC-qD4aC35UTHwd(eK{EC_u>$I4_*{BfqTQ`i<$#Yx)pgrO8d|t?4cFn9?>SRk07*I ztsOWARD+&`?v2?Ic)+XD%h?QedlKPqUHyw(H<)l$Bpo}qsGo^`=Y$RW*tgn8tBL!} zC)6dhO?_Y;3?S$FPF8S6o@P*gnt5I|(7k@w7kZ=Y-mV~3JQ*`N9v z-R*NOhBFv_!!xZu>X)xb|0--lK;Aq#G9T2DEMmEf+I za_ZmrK9*f`xfGu{(7%3aCR?YiUtj_N3jg@jye<+zz>bdQHl}|(H@AV>F6ja^KJyBL zOYoHN5$B|)VIi!d+y>1RlWy%dxrO&Z9~CQ7z0u67oIVdrY{UnirTZ-(!}efHrx9vz z!fEe=#hS>WA32q`u?=Hg#ZvS~UOgAR&^sTzfG72sG~#K~+GhX^y?gGh8R7{Of8(;O zLGSmpzn5Mu1wd%w`2xzwT(lqfxq1{L9bDKR#uOEPh=?VJVyuA*^dgo{OJYTQ~TID|ReqL<8Bg*UU zISpp8O*mgSPH9MjK@D=fuC(^eB1U2lMpN zcWQy9(R&JB5u68~sfVgoH|F-x*89n83RC$MsCNCu37)!c84(tLu9CxTKP6-lWxx+8 zo^N>^8aPJ~8>#}j0d+PcWP-Js->hxPx#9QByKNoLaCY;V_W=Rg){9R>LX16Y%@@0n zXx$x&#uwfl&&AxTEcBkUaU9d7(bA_{0{Rz<56Jx(UuY6|cJIHPHNh(&ojgpb4!lLD zJwmXMgpP$?iGzdxHtMqD2ml4VcUIzNu>3T7Bd(>jW?s@Z27R3T!H$X#zm0(3J#4$8 zUUPIgAuMPACuyc%Nnv-~tOH(pqOE<^B_B+<(JD*a{l2KU`+%DYJY<1P>BLl$*p7hSqDcNm;FB)=N!?Z{PE4fJ_uH+G zniQtpa*vJknh4R4nIoUJw$r|DHc8{%UNCwd^8nx1?2Uc3rApwv4>$1Q%T}|V;8Gbk zSK_iEKekszHQA7h!F1;D=ta=<`y6WBKgYV+Z`xS6VZ7JXWqJnur2fg^GH*gw99}72 zU^C5gaY{|Gyi2!jj7NkK?DL~9R9a$DCR_^ntt4m|W5Pf8CLHH^1sPR#>>FR)?+mYN z0X6g+d(C_5w2gHDlIrH(+6UMy#=+!t^_bfj1cxN6Xzcl>;>*Fk8Xpo>o&?ii7w0n_ zG9Jr;u?a?pmwk99mZ$SiUY3-)C zjbjrB>o`Q})2DW*l#^M0tyh`Oa^C~qXnL0p zt+p7N%IFJ&M+GK*1^RAm&(P@j6O4Tj*0|`1U~$WTD^!bw7pX|qsHJxzkcvvyDxREo zOS7@cN|0(B5*q5dGel)R(Oc(fg}j9wjWArgvE*Rt&mC}WxXrzg^O%z&Sp!ySqXNXb zp*8BUlrlesXswsu43l~E59hN2|8ah>uwwl5_c)77_hW`m89R=wlT~F< z)vQ2YUx#I#ZJVAC$NU9%jWZU5$^3K&(K))UobbR0^3Oh2Msf_Z^MGL@D(Wt1p0oSM zfTTV5RV0rD%*Fah%}P7tHm1q&y0$WX;0Ij|_l#1IlTZxnF?#`|Kr193)FoRz=@}+#}VP`icNyE(BskwBGA6g$rvYoCRax<_El*OK*ew$=jzKu@s+C7jT<-c z@bK>3xkF7&&A`CG#>U3Y%`Ge}{QUWIIXO8M6%`;5Xk=t$Wo6~y;Naom;p^)g5)u*> z6_u2fl$n`XP*6}&QBhY{*V59`)zvjTJUl%;y|lChhr1=uVB%+wJUiMv`G!%qTs$AK2xGkU@@^4k=BLp zb;`*fzgOhGs_x96VrI74t!TE7g39IOPSbH0@LKnS(#>;t2KXzBv8j2J-;K>@R=IlcLH@{rT!_ZGjhrGhvl3+B;M5`?*< znI1kv86uVAaW0OQb>~H1iC@-ekIM8U+NnpsH|MJgEAK+4D+NhVk17l3CkRANu!k%+ z-=digdBK#_O1^TZC(kW*Gve!`@$OoREKmw@Klu(4NA8=3aF%!I+HOSfNaH=}XD4AZ zyK;U@)%4T5XI;YeievF|sIzY|;y3$4v{F+IX_1~z$P#3BXV}NXB+!16Lb;o%w?~i3 ziw2*aqFK)r$A+>vZXT!WC^+P;@eU&s z&G<%GK54}{?xIV_5C&#xKdsml_SLN?h9)4~&WXz}5({@1U%N{-2u$kj$&J2W##wD6 z)yp)6+}GKCP%k)g+2$@P*EUV-tD0uF=5?@oZuDcpdQj8vj=Q@#f4Li;)V&!e)KEHC zh@zIleLq^*HflA8&%${dWvi{rQD$K)e4+-G4|7Y^p)GgzO?lXx zUzwfD2)XTAqi{(-y?~c7KUMB!;=}sh>wxXL~rxOm#GM7(KBa$19{INHW?1#Gs zd&0Ex`eB!cOs6Gca;Nii%(rIy`%G?f_bgMc+C=wS%iD@WiBa1MYeZi-x#W)P{i{%w zu8PCwTqPcsx>3V9{p00g=ro01L8d9Y=MvU+107q5@sXIPXH*EzME4RE6gA|`t!FSd zW`GLviDP&Kx4X~WFm*Dtg0NvlW|c$M-S*RDcDul4!fP<%`??!%PGrh>mxrksFX%~u z9t>T(Qk{PDHGQ%gwe%TORO30#Q3;{gOhFAj&wQF>PTLa*wNy<}0P@KYv$tVpvtz`z zEAcR^`o`+Vyj!z2h#@WaNgd%3kauEPd~SBDMpm|F@(O!C)In%e2t^W@f9F*5{Yr?h z0t0u7AkH>dVpEl2+%xSv!acoHg4n!bBFeo<8?j)brOl2x&y_V*OuoWTIvjY2z)2c2 z{nC-hi?-w};rynLtjx#S9`|?0Q%vXHgS4UX6r=eX4TF<~eXDA=#fYmfE%q1drI8k^ z0^F8}YFxF%1R+*@tIy;Cj6sI`!KW1^i%79V(+x8dRC6`T8*Y%|f9`HeQfIyykD-wA zPN1UQGY>reAk=Gq&MIbg`m36#$PoW(?_f{azWjz(91Bg%nQmH6_V`>}maGawzRMM) zcQm=x<)t7wKjjlS*%K*cs|;?+U+b{29sHo&wx2CD&I(x&=ek;5pov$?VY)q8qMlfO z)uax_>d{Wil;=UO2iWo^B6`UozE@c)KCchFmN+b`cZna`^Ifh1dqYDrx_Ku(%``;T znoHVbkV3MqKlIy+{CHEQM|ZdrHAv4+JGtrJvLb6`jNQmELVOC66>P>%g86#8M&hIC zlF99Xj7%jBI#B)O-gEvb?|fFJteV)#Nfi-6nIuWMolWc7n7-iP86KS86w{SYgyADw z1HDo;hXq@QE$1)Vvo^_~WMNbY+2Yrt4MDtmj1eh7^+9$>3-N`*-K{?Y^M6 zvZ&pTO*1-p_$FgB>CAUlE(OY`vNK#zj-5S)6|JutleN;DtS-js^$jm{;66bAI=W(H zPSXY7H-wK%CY>e9+9z!J8*skEj&@MPQcV6EUpir*{Ccz!E`K9vNfop zG4k%fNzWo=hHVj&x*@IE?JdK_O zYJexF+<~zG>OC?NCJ3$I+kISBT5GnPLU~{S;Y-XvSctp;!n?&s&pIPU&d!;i$uVui zM$h60kElF)Rs)TV5qmFvijdKH9+&EH>3JYLQ8cWA>zL&(T(ZCh!@v`+z&j&1`wMqUM+ztn`ME;fw8ygd#W zpx)a_o6KJh?ZFl(0U#ceNGek{W8=rtqa0tKFE^s}_{@T@JY zDUImFO$+de8-i-#i(|pI{x$k3hqu%+4wS;q?2b?$vh@=IV`!@~Jcv%6nfsLPgLw~< zFmrfAUO+bB^4qEPsRu}BAKLuEczL`{HORJiE~4P})p+Y!kE+p^n+y$7J8fkbvsoqj zh>3cVDuvdnb2Zg?nO&p<%p%lNe-j~_ssoI?U(XPX+w2Sgm)j2eRFfW_hwRS)b{Q)53T$rFZFx0JP1$(pCmx?q_ldY~_7XalsOdEv zyL*jRI-wzkliSU_aXTl!obj!8m%1!U*@*9sUU=(8inz|u==ZJLMlX`g#hR4sF)`*X zXHC)hAi$|Km#+Lh=q7Q&w^qk3QDMnZSn(?>6MN%c;l4AYXO>$YI0F%Vs~VQ5$8+kJ z=v$%)It$b~5FSf7c2-uKBqZkzuGEEhH-t079$#jU_3IZPomeBFrv`&3&@n=oI^1;b z9bB}07O4O52IMs8bR6h2oSPGCiF!AT6&@d9;dML;^l@tD3C=?jj;*!;FGU(u;kL;& zoAP*D!^xP?i>rMaP53Yz_Bb&Q=@S(H6`%W*jT?GF__+HDK59lRD{!U zX%`{k^7gOSiORQu`qrQuTXzw*{bR=k8Wt$t+dr5`2h;5};ri#RYnG@Dn$@p!Ty*1S z`swysXygB5PqpYw(1Ln-R%Wy ztdaMPX*^fjBP?wgFjs{85F$!0pY7a%dQa@cdNK6(ubNt*f`OM#fBcsy>1i<{k6xu0 z(KqrgKwdg;{5TKU+tMImBIJ@AHm|QX;uE5+bHwU_6(Q?T>8Gnx=MnmT(w$$HlLpXM zu`E!CE8Lhz9Ob7elRHwbnELXM=^jz>aW*rwNXQrVV)dx^kJ+}egeCjU)(e{ykS}P} zRN8UZe(oZgXqPxBPS^WRC>zoI0?FuYXMAhDYDG9_K5MhR|=@H<(s>5YdX~ z;`U*S0(lDc{7j>h<~=*CPU%J5zZp54;MW^fx)Y`F#`R{^y=k~^(?$!m$?Q?Oe&L(0 z$Bvi-DmfURJj;jpFaJ2ul@gZ$^AF~WwS%lC7`-^y9t$8d7hrKrjK~dA> z+V+e2?@8n)-%`SkO>Za8=DCa#8J5vfA9alv-n43{oZ#K^xK#7`GV2W8AO)fYFIVJt z`NS1Z2do4Q6&Qb%9DN=&B1;E=+Cm6l9@sX}$dAvme-*C#oE$jZ8kU^&wB2;%y)04+ zJqIvIAl)Tn8)_}lhn-4Dt4iq6PJnFM~Cz`X%gG!CN zK@0Voe2eoT^A|U-YZWKjZ|-wlk#^Y8uWJ=IZju20o)~!@pI`EmCi$OQzeZe@D*oI7 zs9yE{i3s`E+5fD1O@;g=p;yiS#Q85`jsJ!8 zC*tJa<6M`5eu?mJaDEXf{~qP9*4Y0B<*zsLEjHF>|m`9-w+zeSn<4azU#<=>aE0{m+;K(B{CN@o)ciA-?V5%7OTw?x)D=JY z4^HBLYWsUT2T(;YDWwJAiDa1uaXWq%XRPn E0G>g{j{pDw literal 0 HcmV?d00001 diff --git a/regs/maple_bus_ft6.ods b/regs/maple_bus_ft6.ods new file mode 100644 index 0000000000000000000000000000000000000000..c4c51d545f5f8c936dd9008c1c8d34e40d06a0ee GIT binary patch literal 11785 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 YRRttiT{0XTHtfd|W^`~wo__m(0J_@+ivR!s literal 0 HcmV?d00001