{"id":19312905,"url":"https://github.com/221v/abakis_language","last_synced_at":"2026-05-14T18:32:34.448Z","repository":{"id":79764528,"uuid":"195230122","full_name":"221V/abakis_language","owner":"221V","description":"abakis macro language on top of fasm","archived":false,"fork":false,"pushed_at":"2019-07-04T12:02:38.000Z","size":959,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-24T03:45:52.689Z","etag":null,"topics":["assembly","fasm"],"latest_commit_sha":null,"homepage":null,"language":"C++","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/221V.png","metadata":{"files":{"readme":"README.md","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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-07-04T11:35:49.000Z","updated_at":"2020-05-13T08:55:15.000Z","dependencies_parsed_at":"2023-06-02T04:45:26.080Z","dependency_job_id":null,"html_url":"https://github.com/221V/abakis_language","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/221V/abakis_language","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/221V%2Fabakis_language","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/221V%2Fabakis_language/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/221V%2Fabakis_language/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/221V%2Fabakis_language/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/221V","download_url":"https://codeload.github.com/221V/abakis_language/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/221V%2Fabakis_language/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33037824,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-13T13:14:54.681Z","status":"online","status_checked_at":"2026-05-14T02:00:06.663Z","response_time":57,"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":["assembly","fasm"],"created_at":"2024-11-10T00:36:38.677Z","updated_at":"2026-05-14T18:32:34.416Z","avatar_url":"https://github.com/221V.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# abakis_language\nabakis macro language on top of fasm\n\n## i am not the author, i just save code \u0026 examples\n\nhttps://board.flatassembler.net/topic.php?t=17343\n\nhttps://board.flatassembler.net/topic.php?p=174080\n\nhttps://web.archive.org/web/20170501121221/http://m3ntal.freeiz.com:80/abakis.html\n\n\n```\nwhile c, c=*p++, endw, p-s, p--\n\n. p=a, q=b, n\u003e\u003e\u003e2\nloop n, (u32) *p++=*q++, endl\n\nloop n, c=*s++, *p++=c\n  if c=0, break, end\nendl, p--\n\nwhile c, c=*s++, *p++=c, endw, p--\n\nwhile c=d, c=*p++, d=*s++\n  if c=0, break, end\n  if d=0, break, end\nendw, p=c, p-d\n\nwhile n, x=n, x\u00261, x+'0'\n  . *p++=x, n\u003e\u003e\u003e1\nendw, *p=0\n  \n```\n\nsyntaxes\n```\nwhile c, c=*p++, endw, p-s, p--\n\n. p=a, q=b, n\u003e\u003e\u003e2\nloop n, (u32) *p++=*q++, endl\n\nwhile s\u003ce, c=*s, *s++=*e, *e--=c, endw\n\nif n=0, *p++='0', *p=0\n  return s\nend\n\nloop n, c=*s++, *p++=c\n  if c=0, break, end\nendl, p--\n\nwhile c, c=*s++, *p++=c, endw, p--\n\nwhile c=d, c=*p++, d=*s++\n  if c=0, break, end\n  if d=0, break, end\nendw, p=c, p-d\n\nwhile n, x=n, x\u00261, x+'0'\n  . *p++=x, n\u003e\u003e\u003e1\nendw, *p=0\n\nforever, c=*p++\n  if c=0, return n, end\n  . x=n, x\u003c\u003c2, n+x, n+n\n  . n-'0', n+c\nendfv\n\n```\n\nfunctions\n```\n; memory copy 32BIT\n\nfunction memory.copy, a, b, n\n  alias p=r0, q=r1\n  . p=a, q=b, n\u003e\u003e\u003e2\n  loop n, (u32) *p++=*q++, endl\nendf\n\n; text.n t - get length, # characters\n\nfunction text.n, t\n  alias p=r0, s=r1, c=r2\n  . p=t, s=p, c=1\n  while c, c=*p++, endw, p-s, p--\nendf\n\n; text.copy a, b - standard copy with\n; 0 after. return advanced address\n\nfunction text.copy, a, b\n  alias p=r0, s=r1, c=r2\n  . p=a, s=b, c=1\n  while c, c=*s++, *p++=c, endw, p--\nendf\n\n; text.copy.n a, b, n - copy with maximum\n; size specified. return \u0026\n\nfunction text.copy.n, a, b, n\n  alias p=r0, s=r1, c=r2\n  . p=a, s=b\n  loop n, c=*s++, *p++=c\n    if c=0, break, end\n  endl, p--\nendf                                               \n\n; convert 32BIT binary number to text\n\nfunction b2t, n, t\n  alias p=r0, x=r1\n  . p=t\n  if n=0, *p++='0', *p=0\n    return\n  end\n  while n, x=n, x\u00261, x+'0'\n    . *p++=x, n\u003e\u003e\u003e1\n  endw, *p=0\n  text.reverse t\nendf\n\n; convert text to 32BIT hexadecimal\n\nfunction t2h, t\n  alias p=r0, c=r1, n=r2\n  try text.skip.0 t\n  . n=0\n  forever, c=*p++\n    if c=0, return n, end\n    if c\u003c=39h, c-30h\n    else.if c\u003e=61h, c-57h\n    else, c-37h, end, n\u003c\u003c4, n+c\n  endfv\nendf\n\n; load/save memory and text\n\nfunction load.file, name\n  catch .0\n  try open name\n  try file.p=allocate file.n\n  try read file.p, file.n\n  close\n  return file.p\n  .0: flush\n  close\nendf 0\n\nfunction save.file, name, p, size\n  catch .0\n  try create name\n  try write p, size\n  close\n  return 1\n  .0: close\nendf 0\n\nfunction append.file, name, p, size\n  catch .0\n  open name\n  if false\n    try create name\n  else\n    seek 0, SEEK.END\n  end\n  try write p, size\n  close\n  return 1\n  .0: close\nendf 0\n\nfunction load.text, name\n  alias p=r0\n  catch .0\n  try open name\n  . r0=file.n, r0++\n  try file.p=allocate r0\n  try read file.p, file.n\n  close\n  . p=file.p, p+file.n, *p=0\n  return file.p\n  .0: flush\n  close\nendf 0\n\nfunction save.text, name, t\n  text.n t\n  save.file name, t, r0\nendf\n\n```\n\nexample\n```\n; EXAMPLES\n\n; ABAKIS EXAMPLE. SEE \\INCLUDE\\\n\n; print t, f, ... ; print formatted text\n\ninclude 'z.inc'\n\ninteger age=37\n\ntext t(64), name='Zia'\n\ntext f=+'Hi, %t. You are %u years old ',\\\n 'which is %hh/%bb'\n\nfunction main\n  print t, f, name, age, age, age\n  say t\nendf\n\n; ABAKIS EXAMPLE. SEE \\INCLUDE\\\n\ninclude 'z.inc'\n\ntext t(64), s(64), f='LOG.TXT'\ntext m(64)='NOItUlOVe ReLBmESsa SikaBa'\n\nfunction test.text\n  text.copy t, m\n  say t\n  text.reverse t\n  text.upper t\n  text.attach.c t, '!'\nendf\n\nfunction test.number\n  say.n 4294967295\n  say.h 0ABCDEF12h\n  say.h 0FFFFFFFFh\n  say.b 11110000111100001111b\nendf\n\nfunction test.memory\n  locals p\n  try p=allocate 33\n  memory.zero p, 33\n  memory.set p, '1234', 32\n  say p\n  destroy p\nendf 1\n\nfunction test.file\n  locals n\n  get n=text.n t\n  try create f\n  write t, n\n  close\n  try open f\n  read s, n\n  say s\n  close\n  execute f\nendf 1\n\nfunction test.io\n  test.memory\n  if false\n    say 'Memory allocation error'\n    return 0\n  end\n  test.file\n  if false\n    say 'File I/O error'\n    return 0\n  end\nendf 1\n\nfunction main\n  test.text\n  test.number\n  try test.io\nendf\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F221v%2Fabakis_language","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F221v%2Fabakis_language","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F221v%2Fabakis_language/lists"}