{"id":21954872,"url":"https://github.com/thefox/i8086emu","last_synced_at":"2025-08-21T14:05:47.652Z","repository":{"id":57067969,"uuid":"138472718","full_name":"TheFox/i8086emu","owner":"TheFox","description":"An Intel 8086 CPU Emulator written in pure PHP.","archived":false,"fork":false,"pushed_at":"2020-03-23T19:56:28.000Z","size":305,"stargazers_count":28,"open_issues_count":3,"forks_count":1,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-23T12:05:51.132Z","etag":null,"topics":["emulator","intel-8086","mit-license","php","php7","x86"],"latest_commit_sha":null,"homepage":"https://fox21.at","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TheFox.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG-v0.md","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":"2018-06-24T10:27:38.000Z","updated_at":"2025-04-19T21:31:23.000Z","dependencies_parsed_at":"2022-08-24T14:54:08.871Z","dependency_job_id":null,"html_url":"https://github.com/TheFox/i8086emu","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/TheFox%2Fi8086emu","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheFox%2Fi8086emu/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheFox%2Fi8086emu/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheFox%2Fi8086emu/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TheFox","download_url":"https://codeload.github.com/TheFox/i8086emu/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250430584,"owners_count":21429324,"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":["emulator","intel-8086","mit-license","php","php7","x86"],"created_at":"2024-11-29T07:26:25.842Z","updated_at":"2025-04-23T12:06:20.226Z","avatar_url":"https://github.com/TheFox.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Intel 8086 CPU Emulator\n\nAn Intel 8086 CPU Emulator written in pure PHP.\n\n## Project Outlines\n\nThe project outlines as described in my blog post about [Open Source Software Collaboration](https://blog.fox21.at/2019/02/21/open-source-software-collaboration.html).\n\n- The main purpose of this software is to emulate the Intel 8086 CPU using pure PHP.\n- The features should not go beyond Intel's features and functions. So the features of this software are limited to those of the Intel 8086 CPU.\n- This list is open. Feel free to request features.\n\n## Compile the BIOS\n\nRun `make bios/bios`.\n\n## TTY\n\nIn order to have a TTY for the in- and output you can specify `--tty \u003cpath\u003e`. This will start a `socat` subprocess to create an interface between PHP and TTY. The TTY then can be accessed using `screen`.\n\nOptional, to use a different installation path for the `socat` binary you can specify `--socat \u003cpath\u003e`.\n\n1. Install `socat`.\n2. Open a shell and run `./bin/screen.sh`.\n3. Open another shell and run `./bin/run.sh`.\n\n## Terms\n\n- `Byte` - 8 bit, one single character.\n- `Word` - 16 bit, or 2 Byte.\n\n## 8086 Resources\n\n- [Wikipedia: Intel 8086](https://en.wikipedia.org/wiki/Intel_8086)\n- [Wikipedia: Processor Register](https://en.wikipedia.org/wiki/Processor_register)\n- [Wikipedia: FLAGS Register](https://en.wikipedia.org/wiki/FLAGS_register)\n- [Wikipedia: Parity Flag](https://en.wikipedia.org/wiki/Parity_flag)\n- [Wikipedia: Word](https://en.wikipedia.org/wiki/Word_(computer_architecture))\n- [8086 opcodes](http://www.mlsite.net/8086/)\n- [StackExchange: Emulate an Intel 8086 CPU](https://codegolf.stackexchange.com/questions/4732/emulate-an-intel-8086-cpu)\n- [x86 Registers](http://www.eecg.toronto.edu/~amza/www.mindsec.com/files/x86regs.html)\n- [Encoding x86 Instructions](https://www-user.tu-chemnitz.de/~heha/viewchm.php/hs/x86.chm/x86.htm)\n- [Encoding x86 Instruction Operands, MOD-REG-R/M Byte](http://www.c-jump.com/CIS77/CPU/x86/X77_0060_mod_reg_r_m_byte.htm)\n- [X86 Assembly/X86 Architecture](https://en.wikibooks.org/wiki/X86_Assembly/X86_Architecture)\n- [X86-64 Instruction Encoding](http://wiki.osdev.org/X86-64_Instruction_Encoding)\n- [OUT -- Output to Port](https://pdos.csail.mit.edu/6.828/2010/readings/i386/OUT.htm)\n- [MDA, CGA, HGC, EGA, VGA, SVGA, TIGA](https://www.tu-chemnitz.de/informatik/RA/news/stack/kompendium/vortraege_98/grafik/adaptertypen.html) (German)\n- [8086/88 Assembler Befehlsreferenz](http://www.i8086.de/asm/8086-88-asm.html) (German)\n- [X86 Opcode and Instruction Reference](http://ref.x86asm.net/coder32.html)\n- [Understanding Intel Instruction Sizes](https://www.swansontec.com/sintel.html)\n\n## More Resources\n\n- [How To Write a Computer Emulator](https://fms.komkon.org/EMUL8/HOWTO.html)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthefox%2Fi8086emu","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthefox%2Fi8086emu","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthefox%2Fi8086emu/lists"}