{"id":18513177,"url":"https://github.com/tomzox/st_assembly","last_synced_at":"2026-02-25T07:44:03.389Z","repository":{"id":154044381,"uuid":"213692476","full_name":"tomzox/ST_assembly","owner":"tomzox","description":"A painting progam and a text editor/IDE I wrote for my Atari-ST in MC-68000 assembly in 1986-1988","archived":false,"fork":false,"pushed_at":"2019-11-04T17:32:13.000Z","size":651,"stargazers_count":4,"open_issues_count":1,"forks_count":2,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-04-22T17:07:46.356Z","etag":null,"topics":["assembly-language","atari-st","mc68000","paint-application","text-editor"],"latest_commit_sha":null,"homepage":"","language":"Assembly","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tomzox.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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-10-08T16:14:51.000Z","updated_at":"2024-01-11T05:50:05.000Z","dependencies_parsed_at":null,"dependency_job_id":"288add79-00a3-44f9-bf30-96f1cba1949c","html_url":"https://github.com/tomzox/ST_assembly","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/tomzox/ST_assembly","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomzox%2FST_assembly","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomzox%2FST_assembly/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomzox%2FST_assembly/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomzox%2FST_assembly/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tomzox","download_url":"https://codeload.github.com/tomzox/ST_assembly/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomzox%2FST_assembly/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29814346,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-25T05:36:42.804Z","status":"ssl_error","status_checked_at":"2026-02-25T05:36:31.934Z","response_time":61,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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-language","atari-st","mc68000","paint-application","text-editor"],"created_at":"2024-11-06T15:36:44.766Z","updated_at":"2026-02-25T07:44:03.320Z","avatar_url":"https://github.com/tomzox.png","language":"Assembly","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Assembly programs for Atari-ST\n\nI'm sharing a bitmap painting program and a text editor/IDE which I wrote for my\nAtari-ST in MC-68000 assembly mainly between 1986-1988. The original purpose for\nwriting these was for learning about the new platform (especially the GEMDOS CP/M\nclone, about graphical user-interface design in general and the rich AES/VDI\nlibraries in particular) as well as for my own use.\n\nI don't expect these programs to be useful for more than satisfying historical interest these days.\nI started the effort for creating this page mainly for rediscovering myself what I created 30\nyears ago, but also for brushing-up my assembly skills. The repository\ncontains the original sources written in the 80s, but in case of TH-paint the\nlatest version is partially reworked, which was unavoidable for getting to\nunderstand at all what the sparsely commented code was doing. (Please don't\nassume even the latest version reflects my current coding style though. I\nwrote these programs before I ever used a structured programming language.)\n\n## TH-Paint\n\n![Screenshot](images/screenshot_paint.png)\n\nThis is a basic bitmap-based painting program. It offers all the usual drawing\ntools, such as pencil, brush, straight lines \u0026 rectangles - some neat variants\nand extensions are available via the \"Attributes\" menu though. Naturally the\nprogram also offers selecting areas of the images, and then moving these, or\nperforming transformations.  (Currently only mirroring and zooming\ntransformations are implemented.) The program contains a printer driver for the\n_Gemini Star_ dot matrix printer.\n\nThe program is described in detail in the [TH-Paint documentation](docs/paint.md)\n\n## Text editor (IDE)\n\n![Screenshot](images/screenshot_editor.png)\n\nThis is an editor based on the GEMDOS VT-52 emulation, which means it's a pure\ntext-based application without GUI. The text editor is the central part, but I\nintegrated almost everything that I needed for development, thus creating\nwhat's called today an \"Integrated Development Environment\" (IDE).\n\nThe screenshot above shows the starting message on top of the screen. Then the\ncurrent directory is listed and a 3-line text file is loaded and listed. Then\nit demonstrates what \"line based editing means\" by showing how the first text\nline with number 10 is moved to 25 and what the result looks like. (Note the\nsymbols visible at line ends are the line-feed and carriage-return characters.)\n\nThe program is described in detail in the [Text Editor documentation](docs/editor.md)\n\n## Notes\n\nIn case you wonder \"Why in Assembly and not in C?\": The short answer is I\nsimply didn't have a C compiler yet, but coming from an 8-bit system (see my\n[VIC-20 games repository](https://github.com/tomzox/vic20_games)) I\nknew assembly well and was interested in learning it for a 32-bit CPU.  Some\nassembly would have been required anyway to get acceptable performance for\ngraphics operations (after all the CPU still was clocked only at 8 MHz). I\nreused some of the code written here in later C projects.\n\nFor specifications I used the books \"ATARI ST GEM\" covering AES/VDI, \"ATARI ST\nIntern\" covering GEMDOS, BIOS and chipset, and \"Das Prozessor Buch zum 68000\"\ncovering 68k instruction set and architecture. All of these were released by Data\nBecker.\n\nThe resource files `fa_en.rsc` and `fa_de.rsc` (containing definition of the\nmenu and dialog boxes) were originally created using the DRI Resource Editor.\nFor current updates I used the freely available tool \"Interface\" (by Gerd\nHoeller, version 2.33 released 03.10.1994). Unfortunately the tools do not\nsupport multiple columns of menu entries as used in the \"Shapes\" menu, so I\nadditionally used a hex-editor to patch X/Y coordinates of those menu entries.\n\nThe assembly code was originally written for the \"GST 68000 Macro Assembler\nA246V040\". I still found a mention in a\n[review of ST assemblers](https://www.atarimagazines.com/startv1n1/STAssemblers.html)\nbut otherwise the company seems to have disappeared and no documentation is to\nbe found anywhere on the Internet. Fortunately the assembly syntax seems to be\nthe official Motorola syntax and thus supported by many other assemblers such as\n[vasm](http://sun.hasenbraten.de/vasm/). Only the macros used for AES and VDI\nsystem calls are not portable. Therefore I added a little Perl script `asm_macro.pl`\nthat generates assembly code for these specific macros.\n\n## Building the programs\n\nTo build the software simply type \"make\".\n\nPre-requisite for building is [vasm](http://sun.hasenbraten.de/vasm/)\nconfigured for CPU=m68k SYNTAX=mot. Since vasm does not come with a linker, the\nassembly source modules are all concatenated to single files for assembling \u0026\nimmediately creating TOS binaries.\n\nFor running the generated executables I used [HATARI](https://hatari.tuxfamily.org/).\nPre-requisite is a [TOS image](https://www.google.com/search?q=Atari+TOS-1.04)\n\nTH-Paint supports both English and German language in the GUI. Default is English.\nFor switching to German, copy resource file `src_paint/fa_de.rcs` to `fa.rcs` in\nthe same directory the executable is in.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftomzox%2Fst_assembly","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftomzox%2Fst_assembly","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftomzox%2Fst_assembly/lists"}