)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1000000,"name":"Nico Huber","email":"nico.h@gmx.de","username":"icon","avatars":[{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"94a966ee2d9b62f42e858e34ddb7a1004477072d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"5bc7f40b_759442a7","updated":"2025-10-17 15:31:25.000000000","message":"bit     SF600Plus-G2     SF100\n     0          CS2         IO2/CS2\n     1          IO1           IO1\n     2           -            IO3\n     3          IO2           IO4","commit_id":"59bf1b2a3c4acce9940aa0c5fd90e3c5cbae4872"},{"author":{"_account_id":1000000,"name":"Nico Huber","email":"nico.h@gmx.de","username":"icon","avatars":[{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"033d502f9e04b0a8d656a04095243b344604fe5a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"eee79af7_93db7c6b","updated":"2025-11-18 19:48:39.000000000","message":"Hi Vincent, nice you joined 😀","commit_id":"d9f6484f3b70bf0d6214ff7f1d957ee7f5bef60e"},{"author":{"_account_id":1000023,"name":"Vincent Fazio","email":"vfazio@gmail.com","username":"vfazio","avatars":[{"url":"https://www.gravatar.com/avatar/c1ac81a6d79dd86cff15f75de8bf3530.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/c1ac81a6d79dd86cff15f75de8bf3530.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/c1ac81a6d79dd86cff15f75de8bf3530.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/c1ac81a6d79dd86cff15f75de8bf3530.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"4fabf0d21e0f456ae16ebecb0c90134e7aaeafe9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"ac4a3dfc_e4384ff7","updated":"2025-11-18 17:00:19.000000000","message":"Random drive by comment.\n\nThe changes here look similar to what we did in house to get things working but we only had a couple of chips to test against.","commit_id":"d9f6484f3b70bf0d6214ff7f1d957ee7f5bef60e"}],"dediprog.c":[{"author":{"_account_id":1000023,"name":"Vincent Fazio","email":"vfazio@gmail.com","username":"vfazio","avatars":[{"url":"https://www.gravatar.com/avatar/c1ac81a6d79dd86cff15f75de8bf3530.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/c1ac81a6d79dd86cff15f75de8bf3530.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/c1ac81a6d79dd86cff15f75de8bf3530.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/c1ac81a6d79dd86cff15f75de8bf3530.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"4fabf0d21e0f456ae16ebecb0c90134e7aaeafe9","unresolved":true,"context_lines":[{"line_number":281,"context_line":"\t */"},{"line_number":282,"context_line":"\tint ret;"},{"line_number":283,"context_line":"\tif (protocol(dp_data) \u003e\u003d PROTOCOL_V2) {"},{"line_number":284,"context_line":"\t\tconst unsigned int target_io_leds \u003d (leds ^ 7) \u003c\u003c 8 | 0x9;"},{"line_number":285,"context_line":"\t\tret \u003d dediprog_write(dp_data-\u003ehandle, CMD_SET_IO_LED, target_io_leds, 0, NULL, 0);"},{"line_number":286,"context_line":"\t} else {"},{"line_number":287,"context_line":"\t\tunsigned int target_leds;"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"dabf757a_f94cd112","line":284,"updated":"2025-11-18 17:00:19.000000000","message":"The `dediprog_ios` enum looks like it was made for `CMD_SET_IO_LED`, is there benefit to using a hardcoded `0x9` vs ORing `IO1 | IO4`?","commit_id":"d9f6484f3b70bf0d6214ff7f1d957ee7f5bef60e"},{"author":{"_account_id":1000000,"name":"Nico Huber","email":"nico.h@gmx.de","username":"icon","avatars":[{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"ba42b99f5a43bd060e2d7b69ce4f04f8963937a9","unresolved":false,"context_lines":[{"line_number":281,"context_line":"\t */"},{"line_number":282,"context_line":"\tint ret;"},{"line_number":283,"context_line":"\tif (protocol(dp_data) \u003e\u003d PROTOCOL_V2) {"},{"line_number":284,"context_line":"\t\tconst unsigned int target_io_leds \u003d (leds ^ 7) \u003c\u003c 8 | 0x9;"},{"line_number":285,"context_line":"\t\tret \u003d dediprog_write(dp_data-\u003ehandle, CMD_SET_IO_LED, target_io_leds, 0, NULL, 0);"},{"line_number":286,"context_line":"\t} else {"},{"line_number":287,"context_line":"\t\tunsigned int target_leds;"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"d8f17668_8061cd7b","line":284,"in_reply_to":"171ffc32_2ebcec6a","updated":"2025-11-19 11:33:43.000000000","message":"\u003e Ah, OK. So it seems mostly to avoid a \"misnomer\" situation where someone will read `IO1 | IO4` and think \"That\u0027s not correct because SF600 has no IO4\"?\n\nYes. Albeit SF600 has more GPIOs, I haven\u0027t figured out how to control them.\n\n\u003e That seems to imply that `dediprog_ios` is actually `sf100_dediprog_ios`?\n\nFor some very early hardware revision, probably, yes. There is generally little\nconsistency w/ Dediprog 😞\n\n\u003e\n\u003e Using a magic `0x9` seems fine, hopefully this conversation in the review helps explain it.\n\n👍 (sorry messed this up earlier)","commit_id":"d9f6484f3b70bf0d6214ff7f1d957ee7f5bef60e"},{"author":{"_account_id":1000000,"name":"Nico Huber","email":"nico.h@gmx.de","username":"icon","avatars":[{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"e0325b301bafc97094569d0483d66cbda360363f","unresolved":false,"context_lines":[{"line_number":281,"context_line":"\t */"},{"line_number":282,"context_line":"\tint ret;"},{"line_number":283,"context_line":"\tif (protocol(dp_data) \u003e\u003d PROTOCOL_V2) {"},{"line_number":284,"context_line":"\t\tconst unsigned int target_io_leds \u003d (leds ^ 7) \u003c\u003c 8 | 0x9;"},{"line_number":285,"context_line":"\t\tret \u003d dediprog_write(dp_data-\u003ehandle, CMD_SET_IO_LED, target_io_leds, 0, NULL, 0);"},{"line_number":286,"context_line":"\t} else {"},{"line_number":287,"context_line":"\t\tunsigned int target_leds;"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"171ffc32_2ebcec6a","line":284,"in_reply_to":"5c6c453d_f6951c08","updated":"2025-11-19 11:12:13.000000000","message":"Comment removed by: Nico Huber; Reason: Gerrit messed with thumbs-up unicode","commit_id":"d9f6484f3b70bf0d6214ff7f1d957ee7f5bef60e"},{"author":{"_account_id":1000023,"name":"Vincent Fazio","email":"vfazio@gmail.com","username":"vfazio","avatars":[{"url":"https://www.gravatar.com/avatar/c1ac81a6d79dd86cff15f75de8bf3530.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/c1ac81a6d79dd86cff15f75de8bf3530.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/c1ac81a6d79dd86cff15f75de8bf3530.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/c1ac81a6d79dd86cff15f75de8bf3530.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"8459cf6dfea6cf81dc2a0f7c5fe7df8415d576f5","unresolved":true,"context_lines":[{"line_number":281,"context_line":"\t */"},{"line_number":282,"context_line":"\tint ret;"},{"line_number":283,"context_line":"\tif (protocol(dp_data) \u003e\u003d PROTOCOL_V2) {"},{"line_number":284,"context_line":"\t\tconst unsigned int target_io_leds \u003d (leds ^ 7) \u003c\u003c 8 | 0x9;"},{"line_number":285,"context_line":"\t\tret \u003d dediprog_write(dp_data-\u003ehandle, CMD_SET_IO_LED, target_io_leds, 0, NULL, 0);"},{"line_number":286,"context_line":"\t} else {"},{"line_number":287,"context_line":"\t\tunsigned int target_leds;"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"5c6c453d_f6951c08","line":284,"in_reply_to":"918c6d65_eac3e4c1","updated":"2025-11-18 20:52:19.000000000","message":"Ah, OK. So it seems mostly to avoid a \"misnomer\" situation where someone will read `IO1 | IO4` and think \"That\u0027s not correct because SF600 has no IO4\"?\n\nThat seems to imply that `dediprog_ios` is actually `sf100_dediprog_ios`?\n\nUsing a magic `0x9` seems fine, hopefully this conversation in the review helps explain it.","commit_id":"d9f6484f3b70bf0d6214ff7f1d957ee7f5bef60e"},{"author":{"_account_id":1000000,"name":"Nico Huber","email":"nico.h@gmx.de","username":"icon","avatars":[{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"033d502f9e04b0a8d656a04095243b344604fe5a","unresolved":true,"context_lines":[{"line_number":281,"context_line":"\t */"},{"line_number":282,"context_line":"\tint ret;"},{"line_number":283,"context_line":"\tif (protocol(dp_data) \u003e\u003d PROTOCOL_V2) {"},{"line_number":284,"context_line":"\t\tconst unsigned int target_io_leds \u003d (leds ^ 7) \u003c\u003c 8 | 0x9;"},{"line_number":285,"context_line":"\t\tret \u003d dediprog_write(dp_data-\u003ehandle, CMD_SET_IO_LED, target_io_leds, 0, NULL, 0);"},{"line_number":286,"context_line":"\t} else {"},{"line_number":287,"context_line":"\t\tunsigned int target_leds;"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"918c6d65_eac3e4c1","line":284,"in_reply_to":"dabf757a_f94cd112","updated":"2025-11-18 19:48:39.000000000","message":"I had that first. It turned out, however, that there is no consistent mapping.\nEven for the SF100, IO1 and IO2 are reversed. SF600 seems to have a different\nmapping (what I measured below). And I found a note in Dediprog documentation\nthat suggests very old hardware had a 1:1 mapping. So as long as the magic `9`\nworks, I guess that\u0027s less confusing. Hence also:\nhttps://review.sourcearcade.org/c/flashprog/+/353\n\n    bit  SF600Plus-G2  SF100\n    \n     0       CS2      IO2/CS2\n     1       IO1        IO1\n     2        -         IO3\n     3       IO2        IO4","commit_id":"d9f6484f3b70bf0d6214ff7f1d957ee7f5bef60e"}]}
