{"id":20214665,"url":"https://github.com/divergentclouds/metasubleq","last_synced_at":"2025-10-09T05:05:34.391Z","repository":{"id":59612960,"uuid":"412629105","full_name":"DivergentClouds/metasubleq","owner":"DivergentClouds","description":"A macroassembly language built on top of the Subleq OISC","archived":false,"fork":false,"pushed_at":"2022-09-10T21:57:05.000Z","size":36,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-09T05:05:20.562Z","etag":null,"topics":["assembler","assembly-language","macro-assembler","macros","subleq","subleq-assembly"],"latest_commit_sha":null,"homepage":"","language":"Zig","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DivergentClouds.png","metadata":{"files":{"readme":"readme.txt","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-10-01T22:07:39.000Z","updated_at":"2022-09-21T02:29:55.000Z","dependencies_parsed_at":"2022-09-25T17:00:58.256Z","dependency_job_id":null,"html_url":"https://github.com/DivergentClouds/metasubleq","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/DivergentClouds/metasubleq","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DivergentClouds%2Fmetasubleq","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DivergentClouds%2Fmetasubleq/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DivergentClouds%2Fmetasubleq/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DivergentClouds%2Fmetasubleq/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DivergentClouds","download_url":"https://codeload.github.com/DivergentClouds/metasubleq/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DivergentClouds%2Fmetasubleq/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279000741,"owners_count":26082933,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-09T02:00:07.460Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["assembler","assembly-language","macro-assembler","macros","subleq","subleq-assembly"],"created_at":"2024-11-14T06:17:29.123Z","updated_at":"2025-10-09T05:05:34.375Z","avatar_url":"https://github.com/DivergentClouds.png","language":"Zig","funding_links":[],"categories":[],"sub_categories":[],"readme":"------------\n|Metasubleq|\n------------\n-----------------------------\n|Designed by DivergentClouds|\n-----------------------------\n\n\nSubleq:\n\n Subleq is a computer architecture with only one instruction\n Due to the fact that there is only one instruction opcodes are not needed\n There is no distinction between code and data\n Code can self modify\n\n An instruction takes the form:\n   A B C\n Where the contents of address A are subtracted from the contents of address B\n   and the result is stored in address B, if the result is less than or equal\n   to 0 then branch to address C\n That is:\n   *B = *B - *A;\n   if (*B \u003c= 0) {\n\t goto C;\n   }\n\n\nMacros:\n\n Square brackets indicate a macro\n A colon after the parameters indicates macro definition\n A macro may take an arbitary number of arguments\n The format for defining a macro is [name param1 param2 ...: code]\n To access an argument use its name in the code section\n\n The format for using a macro is [name arg1 arg2 ...]\n\n The content of a macro is in its own namespace\n\n Macros may be called from within other macros\n\n Note that macros are inserted directly into your code and are not jumped to\n\n\nLabels:\n\n A label marks the address it was defined at\n To define a label type the label name followed by a colon\n For example:\n   name:\n Referencing the address of a label is done by using its name\n For example:\n  name\n\nVariables:\n\n Variables are a special case of label that are defined in curly brackets\n Variables are stored in memory directly after code\n Variables take the form of a name followed by a colon followed by 1 or more\n   values\n For example:\n   {name: value1 value2 ...}\n\n Referencing the address of a variable is done by using its name\n Variables may only be accessed within the namespace they were defined in\n Variables may be overwritten from within the namespace in which they were\n   defined\n\n\nSpecial Characters:\n\n #\n   Word size in bytes\n\n .\n   The location of the start of the current instruction in memory\n\n \u003e\n   The location of the start of the next instruction in memory\n\n \u003c\n   The location of the start of the previous instruction in memory\n\n\nExpressions:\n\n Expressions are compiletime mathematical operations\n Expressions are contained within parentheses\n\n Expressions follow regular order of operations:\n   Parentheses\n   Exponentiation\n   Multiplication/Division\n   Addition/Subtraction\n In case of ambiguity expressions are evaluated left to right\n\n Expressions may contain any value\n\n Valid operations are:\n\n   ^\n     Exponentiation\n   *\n     Multiplication\n   /\n     Integer Division (Floored)\n   +\n     Addition\n   -\n     Subtraction\n\n Example:\n\n   (\u003e + # * 3)\n   This is equal to the address of the start of the instruction after the next\n   instruction\n \nLocation Editing:\n\n An expression or number followed by a colon means that further code is\n stored starting at that location\n\nComments:\n\n Comments are started by a semicolon and last until the end of the line\n\nImports:\n\n Additional files may be imported via the ! symbol at the start of a line\n For example:\n   !name path/to/file\n\n Anything after the name on that line is counted as part of the file path\n\n Macros and global variables from that file can then be accessed as\n [name!macro arg1 arg2 ...] or name!variable\n \n Imports may not be accessed outside of the file that imported them\n\nNotes:\n\n Metasubleq is mostly whitespace insensitive\n   Imports and comments last until the end of a line and tabs are not allowed\n Metasubleq is case sensitive\n Names are of the form [_a-zA-Z][_a-zA-Z0-9]*\n\n A value is a number, label reference, variable, expression or special character\n\n Names may not collide with any other name in their own namespace\n   or the global namespace\n   (aside from variable redefinition)\n Macros are part of the global namespace\n Parameters are part of the namespace of the relevant macro\n Variables are part of the namespace they were defined in\n Label names are part of the namespace they were defined in\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdivergentclouds%2Fmetasubleq","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdivergentclouds%2Fmetasubleq","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdivergentclouds%2Fmetasubleq/lists"}