{"id":24370520,"url":"https://github.com/aap/pdp6","last_synced_at":"2025-04-10T17:53:55.846Z","repository":{"id":145552708,"uuid":"45269800","full_name":"aap/pdp6","owner":"aap","description":"PDP-6 Emulator","archived":false,"fork":false,"pushed_at":"2022-02-13T19:53:42.000Z","size":2443,"stargazers_count":51,"open_issues_count":9,"forks_count":5,"subscribers_count":12,"default_branch":"master","last_synced_at":"2023-03-25T20:48:26.340Z","etag":null,"topics":["computer-history","emulation","fpga","pdp-6","retrocomputing","simulation","verilog"],"latest_commit_sha":null,"homepage":"","language":"C","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/aap.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}},"created_at":"2015-10-30T18:40:17.000Z","updated_at":"2024-04-14T16:44:25.755Z","dependencies_parsed_at":"2024-04-14T16:44:24.181Z","dependency_job_id":"a145aa97-50af-4ce6-8349-e28d1818c805","html_url":"https://github.com/aap/pdp6","commit_stats":null,"previous_names":[],"tags_count":0,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aap%2Fpdp6","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aap%2Fpdp6/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aap%2Fpdp6/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aap%2Fpdp6/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aap","download_url":"https://codeload.github.com/aap/pdp6/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248262434,"owners_count":21074308,"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":["computer-history","emulation","fpga","pdp-6","retrocomputing","simulation","verilog"],"created_at":"2025-01-19T04:35:38.687Z","updated_at":"2025-04-10T17:53:55.828Z","avatar_url":"https://github.com/aap.png","language":"C","readme":"# PDP-6 Emulator\n\nThis project aims to revive the PDP-6 computer by DEC.\n\nI started by writing a very low level emulator in C based on\nthe schematics. Later I also wrote an accurate verilog simulation\nthat also works on an FPGA.\n\nBoth are driven by a virtual front panel but the plan is to create\na replica of the original panel.\n\nThe maintenance manual has flow charts, schematics and explanations:\n[Volume1](http://bitsavers.trailing-edge.com/pdf/dec/pdp6/F-67_166instrManVol1_Sep65.pdf)\n[Volume2](http://bitsavers.trailing-edge.com/pdf/dec/pdp6/F-67_166instrManVol2_Sep65.pdf)\n\n![Screenshot of the front panel](https://raw.githubusercontent.com/aap/pdp6/master/art/screenshot.png)\n\n## C Emulator\n\nThe code is more or less a transcription of the schematics into C.\nThis means you will not understand it unless you're familiar with the maintenance manual.\nPulses are represented as functions, when a pulse triggers another pulse\nit does so by the `pulse` function which queues a pulse in a list\nof pulses that are to happen, sorted chronologically.\nBetween pulses that happen at different times\nvarious things are done like checking external pulses and advancing the\nsimulation state.\nThe timing is not yet 100% accurate but it's pretty close.\n\n### Building\n\nThe supplied makefile assumes gcc (there are flags to silence some stupid warnings).\nOtherwise you need SDL and pthread.\n\n### Running\n\nThe cpu (apr), console tty, paper tape and punch,\nthe data control and DECtape are implemented.\n340 display is also sort of working.\nThe panel is missing the repeat delay knobs,\nbut the functionality is implemented.\n\n## File tree\nNB: not up to date\n \n```\nemu\tthe C emulator\nemu/main_panel.c\tmain file for emulator with panel simulation\nemu/main_serial.c\tmain file for emulator with panel over serial line\nemu/emu.c\ttop level emulator code\nemu/cmd.c\tcommand line interface\nemu/apr.c\tArithmetic Processor 166 emulation\nemu/mem.c\tcore and fast memory emulation\nemu/tty.c\tTeleprinter 626 emulator\nemu/pt.c\tPaper tape reader 760 and punch 761 emulation\nemu/dc.c\tData Control 136 emulation\nemu/dt.c\tDECtape 551 and 555 emulation\nemu/netmem.c\tnetwork protocol for shared memory\nemu/util.c\tvarious utility functions\nemu/util.h\nemu/test_*.c\ttest code, not too important anymore\nemu/pdp6.h\tmain header\nemu/args.h\targument parsing\nemu/elements.inc\tpanel definition\nemu/cmds.txt\tcommand line interface documentation\nemu/init.ini\temulator init file\nemu/mem_*\tcore memory backing store\n\ntools\ntools/dtr2dta.c\tconvert between raw (dtr) and simh (dta) DECtape format\ntools/mkpty.c\tmake a pty and connect to the controlling tty\ntools/mkpty33.c\tas above but try to pretend an ASR33\ntools/as6.c\tan assembler, roughly modeled on MACRO\ntools/ld6.c\ta loader of relocatable files\ntools/pdp6bin.h\ntools/pdp6common.c\tuseful functions for PDP-6 code\ntools/pdp6common.h\ntools/rel.c\tI have no recollection of this code\ntools/reltest.c\told test code to create a REL file\ntools/test.s\told test code for the assembler/linker\ntools/test2.s\ntools/ptdump.c\tprint a paper tape file in octal\ntools/dtdump.c\tprint dtr DECtape\n\ncode\trandom code for the PDP-6, mostly testing\ncode/bootstrap.txt\ta list of boot loaders\ncode/dtboot.s\t\tloads the first block from a DECtape\ncode/main.s\t\trandom entry\ncode/tty.s\t\ttty character IO\n\npanel\tstand alone panel with lots of duplicate code\n\nart\timage files for the panel\n\nmisc\tnothing important\n```\n\n## To do\n\n- repeat and maint. switches on panel\n- improve timing\n- do more tests\n- ...\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faap%2Fpdp6","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faap%2Fpdp6","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faap%2Fpdp6/lists"}