{"id":21002864,"url":"https://github.com/mobluse/zx81-mob","last_synced_at":"2025-12-28T15:23:43.323Z","repository":{"id":16597645,"uuid":"19352125","full_name":"mobluse/zx81-mob","owner":"mobluse","description":"Programs for ZX81. Mostly in BASIC.","archived":false,"fork":false,"pushed_at":"2022-06-08T00:58:17.000Z","size":85,"stargazers_count":8,"open_issues_count":0,"forks_count":1,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-01-20T10:09:47.208Z","etag":null,"topics":["basic","sinclair","zx81"],"latest_commit_sha":null,"homepage":"df.lth.se.orbin.se/~mikaelb/sinclair/zx81/","language":"BASIC","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mobluse.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}},"created_at":"2014-05-01T17:33:05.000Z","updated_at":"2024-11-24T12:35:02.000Z","dependencies_parsed_at":"2022-09-24T08:40:48.812Z","dependency_job_id":null,"html_url":"https://github.com/mobluse/zx81-mob","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mobluse%2Fzx81-mob","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mobluse%2Fzx81-mob/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mobluse%2Fzx81-mob/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mobluse%2Fzx81-mob/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mobluse","download_url":"https://codeload.github.com/mobluse/zx81-mob/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243419128,"owners_count":20287806,"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","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":["basic","sinclair","zx81"],"created_at":"2024-11-19T08:20:38.441Z","updated_at":"2025-12-28T15:23:43.276Z","avatar_url":"https://github.com/mobluse.png","language":"BASIC","funding_links":[],"categories":[],"sub_categories":[],"readme":"zx81-mob\n========\n\nPrograms for ZX81. Mostly in BASIC.\n\nThese programs where converted by [p2txt.c](https://github.com/mobluse/zx81-mob/blob/master/converters/p2txt.c) to [ZXText2P](http://freestuff.grok.co.uk/zxtext2p/)-format. I've not tested if the programs in bas-files can be converted back to p-files. The programs\nwith machine-code in REM-statements will not run.\n\nAbout LICENSE: Only the patch-files to the original files are covered by this license, except for files that are completely my own -- they have the LICENSE for the whole program and not just for the changes. The whole patched file is shown here but you can generate the patch. In the case there are original files they can be found on various sites e.g. http://www.atariarchives.org/morebasicgames/ and have their licenses. \n\nThere is an App-Store for ZX81 here:  \nhttp://www.df.lth.se.orbin.se/~mikaelb/sinclair/zx81/\n\n\n## A ZX81 App Store in English \nHere are applications, documents, and emulators for the Sinclair ZX81 personal\ncomputer.\n\nThe Sinclair ZX81 is presented in Swedish in the file zx81_beckman.pdf . \nA unique advantage with the ZX81 is that it only has 8 KB ROM (including 4 KB \nfor floating point and 0.5 KB for 8x8 characters) and four integrated circuits (IC): CPU, ROM, RAM, and a \ncustom made (which, however, can be built using standard circuits). Nowadays \nyou can build a ZX81 emulator (AX81) with just a single chip computer (AVR) as\na single IC. In the mob-i-l_zx81.pdf there is a collection of articles from \nmagazines, but also some documents and drawings I produced myself in the \nearly 80's.\n\nIn the catalog mob-i-l and subdirectories are programs in the form of P-files \nthat I developed or ported from software for other computers. There are also \nsome programs of unknown origin. Almost all programs were written in the early\n80's. \n\nIn the catalog mob-i-l/zx_forth_scr are \"screens\" (i.e., blocks of software code\nin FORTH). It is difficult to run ZX FORTH programs in emulators, but you can, \nin more advanced emulators, load the screens to addresses in memory and compile \nthem there. \n\nIn the catalog yc are programs that come from the magazine Your Computer. \nThe articles from which apps are coming can be found in a file that you \nfind via http://en.wikipedia.org/wiki/Your_Computer_(British_magazine) .\n\nHowever, all applications were entered by me except editor in the \nmob-i-l/zx_forth_scr-directory and programs in the artic-directory. In many \ncases there are png files with a picture of program listing or screenshots. \n\nAn emulator, Zed Ex, for Android phones and surf boards are located in the \ndirectory android but it is better to download it from Google Play if you have \nthis service on your Android because then you get updates automatically (but \nsome cheaper surf boards does not have access to Google Play). \n\nIn the Android Opera Mini browser click on the P-files to download them to the\nphone/surf board. Then you can, with a file manager, move the files from the \ndownload directory (e.g. download) to a directory you yourself have created on\nthe SD card, such as one named zx81. In the ZX81 emulator Zed Ex you load an\napp by pressing the Menu button and then click Load and select a P-file and \nsometimes it starts automatically. If the program doesn't start automatically \nyou usually press R on the on-screen keyboard (which writes RUN) and then press\nNEW LINE. Sometimes the program is started with GOTO 0 in order that you should\nnot delete data stored in variables. \n\nAnother emulator is EightyOne for Windows but it works on Linux with Wine, and\nprobably also in Mac OS X using Wine. EightyOne is here:  \nhttps://sourceforge.net/projects/eightyone-sinclair-emulator/. There is also a newer version of this which \ncan be found via the forum: https://www.sinclairzxworld.com/. \n\nThere is an emulator for Linux: sz81: http://sz81.sourceforge.net/. When you \nget the emulator you also get xz81 which is the one I usually tend to run\nin Linux because it is energy efficient. There is a Debian package for xz81 in \nthe directory ubuntu if you do not want to compile. \n\nThere are also ZX81 emulators for most other OSes, such as MS-DOS, \nMac OS 7, etc. \n\nAnother forum for the ZX81 is nntp:comp.sys.sinclair which can be read on \nhttps://groups.google.com/g/comp.sys.sinclair. \n\nI bought the ZX81 in kit form in December 1981 after months of waiting, when I \nwas 15. In the fall of 1981 I attended a course in BASIC programming with \nABC80 in my elementary school (i.e. freely chosen work/student's choice).\nIn the beginning at home I had to sit on the floor in front of the family \ntelevision, but after a few months I could afford a used 12-inch black and \nwhite TV. \n\nAs secondary memory the ZX81 doesn't use hard drives, floppy disks or flash \nmemory, but a cassette player. All programs in this app store are sampled from \ncassettes. I have a similar app-store for ABC80 here:  \nhttp://www.df.lth.se.orbin.se/~mikaelb/abc/80/. \n\nWith the ZX81 both a short Swedish and complete English manual was included\nand the English is here: \nhttps://worldofspectrum.net/pub/sinclair/books/z/ZX81BASICProgramming.pdf.\n\nI recommend anyone who knows English well enough to read the book. You don't \nlearn much unnecessary things and the BASIC functions are available in SQL, \nwhich all software developers have to know anyway. However, do not memorize\nthe details of the memory layout, and the system variables, since they are \nobviously different in current systems.\n\nAlternatively, you can bet on reading the manual for the ZX Spectrum (the \nsuccessor to the ZX81), which is also available in more languages and has same\nauthor (Steven Vickers) but the Spectrum is a more advanced computer \n(16 KB ROM with floating point) than the ZX81. The same author has also written\nthe manual for the Forth computer Jupiter Ace (8 KB ROM with floats, but not \nsin, log, \u0026c.) and has developed parts of the ROMs to the computers (and in \nsome cases the whole). The predecessor ZX81: ZX80 (4 KB ROM, and no floating \npoint), seems to have an interesting manual, but it is written by another \nauthor. \n\nThere is a video course for the ZX Spectrum, which probably is also useful for\nthose who want to learn ZX81:  \nMasterClass - Sinclair ZX Spectrum: Introduction to Programming Level 1 \u0026 2: \nhttps://youtu.be/DnoGvOghf7U https://worldofspectrum.org/software?id=0013467\n\nNowadays you can develop software for the ZX81 also in C with the compiler \nz88dk, but it requires a another computer. It's probably still the case that \nthe only high-level language except BASIC that can be used on the ZX81 is \nForth. Forth is much faster than BASIC and facilitates the development of \nlarge programs. The fastest programs are written in assembly (i.e. machine \nlanguage) but they are harder to develop in the same computer they run on, \nbecause they can lead to serious errors requiring restart - in addition, each \nprocessor family has its own assembly language. The processor (CPU) of the \nZX81 is the Z80 which is a development of the 8080. A more recent development \nof the 8080 is the 8088 and the 8086 which were developed into 80186 (V30), \n80286, 80386 (i386), 80486 (i486), Pentium \u0026c. Z80 is also used in, graphing \ncalculators TI-82 STATS, TI-83 and TI-84 Plus. Obviously, one can make \nenergy-efficient devices with the Z80, but the ZX81 is difficult to run in an\nenergy-efficient way without it becoming meaningless because the graphics \n(i.e. the television image) is generated by the CPU.\n\n\nSincerely,  \n// Mikael O. Bonnier, [@mobluse](https://twitter.com/mobluse) on Twitter,   \n// http://www.df.lth.se.orbin.se/~mikaelb/\n\n\n## A ZX81 App-Store in Swedish\nHär finns program, dokument och en emulator för datorn Sinclair ZX81.\n\nSinclair ZX81 presenteras på svenska i filen zx81_beckman.pdf. En unik fördel\nmed ZX81 är att den bara har 8 KB ROM (inklusive 4 KB för flyttal och 0,5 KB för 8x8 tecken) och \nfyra integrerade kretsar (IC): CPU, ROM, RAM och en specialtillverkad (som dock \nkan byggas upp av standardkretsar). Numera kan man bygga en ZX81-emulator \n(AX81) med bara en enchipsdator (AVR) som enda IC. I mob-i-l_zx81.pdf finns \nen samling artiklar från tidskrifter men även en del dokument och ritningar jag\nproducerade själv i början av 80-talet.\n\nI katalogen mob-i-l och underkataloger finns program i form av P-filer \nsom jag själv utvecklat eller portat från program till andra datorer. \nDär finns även en del program med okänt ursprung. Nästan alla program där \nskrevs i början av 80-talet.\n\nI katalogen mob-i-l/zx_forth_scr finns \"skärmar\" (d.v.s. block med \nprogramkod i FORTH). Det är besvärligt att köra ZXFORTH-program i emulatorer\nmen man kan i mer avancerade emulatorer ladda skärmar till valfria adresser i\nminnet och kompilera dem där.\n\nI katalogen yc finns program som kommer från tidningen Your Computer. Artiklarna\nsom programmen kommer ifrån finns att läsa i ett arkiv man hittar via\nhttp://en.wikipedia.org/wiki/Your_Computer_(British_magazine) .\n\nDock är alla program inskrivna av mig utom editor i \nmob-i-l/zx_forth_scr-katalogen och programmen i artic-katalogen. \nI många fall finns png-filer med en bild på programlistningen eller \nskärmdumpar.\n\nEn emulator, Zed Ex, för Android-telefoner och -surfplattor finns i katalogen \nandroid men det är bättre att hämta denna från Google Play om man har denna\ntjänst i sin Android ty då får man uppdateringar automatiskt (men vissa \nbilligare surfplattor har ej tillgång till Google Play).\n\nMan kan i Android med webbläsaren Opera Mini klicka på P-filerna för att ladda\nner dem till telefonen/surfplattan. Sedan kan man med en filhanterare flytta\nfilerna från nedladdningskatalogen (t.ex. download) till en katalog man själv\nskapat på SD-kortet, t.ex. med namnet zx81. I ZX81-emulatorn Zed Ex laddar\nman program genom att trycka på Meny-knappen och sedan klicka på Load och\nvälja en P-fil som laddas och ibland startas automatiskt. Om programmet\ninte startar automatiskt skall man oftast trycka på R på skärmtangentbordet\n(vilket skriver RUN) och därefter trycka på NEW LINE. Ibland skall program\nstartas med GOTO 0 för att man inte skall radera data som finns i variabler.\n\nEn annan emulator är EightyOne för Windows men den fungerar i Linux med Wine\noch förmodligen också i Mac OS X med Wine. EightyOne finns här:\nhttps://sourceforge.net/projects/eightyone-sinclair-emulator/. Det finns även en nyare version av denna som \nman kan hitta via forumet: https://www.sinclairzxworld.com/.\n\nDet finns en emulator för Linux: sz81: http://sz81.sourceforge.net/. På\nköpet får man då emulatorn xz81 vilken är den jag oftast brukar köra i\nLinux eftersom den är energisnål. Det finns ett Debian-paket för xz81 i \nkatalogen ubuntu om man inte själv vill kompilera.\n\nDet finns även ZX81-emulatorer för de flesta andra OS, t.ex. MS-DOS, \nMac OS 7 m.fl.\n\nEtt annat forum för ZX81 är nntp:comp.sys.sinclair som bl.a. kan läsas på\nhttps://groups.google.com/g/comp.sys.sinclair.\n\nJag köpte ZX81 som byggsats i december 1981 efter flera månaders kö när jag \nvar 15 år. Jag gick sedan hösten 1981 en kurs i BASIC-programmering med\nABC80 på min grundskola (d.v.s. s.k. fritt valt arbete/elevens val).\nI början fick jag sitta på golvet framför familjens TV, men efter några\nmånader fick jag råd med en begagnad 12-tums svartvit TV.\n\nSom sekundärminne använde man inte hårddiskar, disketter eller flashminne,\nutan kassettbandspelare. Alla programmen i denna app-butik är samplade från \nkassetter. Jag har en liknande app-store för ABC80 här:\nhttp://www.df.lth.se.orbin.se/~mikaelb/abc/80/.\n\nMed ZX81 följde både en kortare svensk och fullständigare engelsk manual \noch den engelska finns bl.a. här: \nhttps://worldofspectrum.net/pub/sinclair/books/z/ZX81BASICProgramming.pdf.\nDen svenska här:\nhttp://www.df.lth.se.orbin.se/~mikaelb/sinclair/zx81/introduktion_till_zx81_basic.pdf\n\nJag rekommenderar alla som kan engelska någerlunda väl att läsa den boken. \nMan lär sig inte så mycket onödigt och BASIC-funktionerna finns i SQL, \nvilket alla programutvecklare ändå måste kunna. Dock behöver man inte memorera \ndetaljerna om minneslayouten och systemvariablerna, ty de är naturligtvis \nannorlunda på aktuella system.\n\nAlternativt kan man satsa på att läsa manualen till ZX Spectrum (efterföljaren\ntill ZX81) som även finns på svenska och har samma författare (Steven Vickers)\nmen Spectrum är en mer avancerad dator (16 KB ROM med flyttal) än ZX81. Samma \nförfattare har även skrivit manualen till Forth-datorn Jupiter Ace (8 KB med\nflyttal men ej t.ex. sin, log o.s.v.) samt har utvecklat delar av ROM:en till \ndatorerna (och i vissa fall hela). Föregångaren till ZX81: ZX80 (4 KB ROM och \nutan flyttal), har troligen också en intressant manual men den är skriven av \nen annan författare.\n\nDet finns en videokurs för ZX Spectrum som troligen även är nyttig för dem\nsom vill lära sig ZX81:\nMaster Class - Sinclair ZX Spectrum: Introduction to Programming Level 1 \u0026 2:\nhttps://worldofspectrum.org/software?id=0013467.\n\nNumera kan man utveckla program för ZX81 även i C med kompilatorn Z88DK, men\ndet kräver en annan dator. Det är nog fortfarande så att det enda \nhögnivåspråket förutom BASIC som man kan använda i ZX81 är Forth. Forth är\nmycket snabbare än BASIC och underlättar utvecklingen av stora program.\nDe snabbaste programmen skrivs dock i assembler (d.v.s. maskinspråk) men de \när svårare att utveckla i samma dator som de körs på, bl.a. eftersom de kan \nleda till svåra fel som kräver omstart -- dessutom har varje processorfamilj\nsitt eget assemblerspråk. Processorn (CPU) i ZX81 är Z80 vilken är en utveckling\nav 8080. En senare utveckling av 8080 är 8088 och 8086 vilken utvecklats till \n80186 (V30), 80286, 80386 (i386), 80486 (i486), Pentium o.s.v. Z80 används\näven i t.ex. grafräknarna TI-82 STATS, TI-83 och TI-84 Plus. Tydligen kan\nman göra strömsnåla apparater med Z80, men ZX81 är svår att köra energisnålt\nutan att det blir meningslöst eftersom grafiken (d.v.s. TV-bilden) genereras \nav CPU:n.\n\n\nMvh,  \n// Mikael O. Bonnier, [@mobluse](https://twitter.com/mobluse) på Twitter,  \n// http://www.df.lth.se.orbin.se/~mikaelb/index-sve.html\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmobluse%2Fzx81-mob","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmobluse%2Fzx81-mob","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmobluse%2Fzx81-mob/lists"}