{"id":21376906,"url":"https://github.com/codesqueak/compactflashcontroller","last_synced_at":"2026-01-03T06:11:15.644Z","repository":{"id":199085013,"uuid":"678579729","full_name":"codesqueak/CompactFlashController","owner":"codesqueak","description":"An 80-BUS Compact Flash Controller Module","archived":false,"fork":false,"pushed_at":"2023-12-06T21:22:43.000Z","size":1803,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-22T21:44:35.201Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/codesqueak.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}},"created_at":"2023-08-14T22:13:57.000Z","updated_at":"2023-08-14T22:13:57.000Z","dependencies_parsed_at":null,"dependency_job_id":"4bd2a1d9-b3f1-4e9c-847f-51e3cd7202a3","html_url":"https://github.com/codesqueak/CompactFlashController","commit_stats":null,"previous_names":["codesqueak/compactflashcontroller"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codesqueak%2FCompactFlashController","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codesqueak%2FCompactFlashController/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codesqueak%2FCompactFlashController/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codesqueak%2FCompactFlashController/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/codesqueak","download_url":"https://codeload.github.com/codesqueak/CompactFlashController/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243852434,"owners_count":20358270,"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":[],"created_at":"2024-11-22T09:18:09.488Z","updated_at":"2026-01-03T06:11:15.635Z","avatar_url":"https://github.com/codesqueak.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# NAS-GEM-80 Compact Flash Card 1.2\n\nThis card is to allow a compact flash module to be used in conjunction with an 80-Bus computer\n\n## Introduction\n\nThe board is a standard 8x8 Nascom / Gemini / MAP-80 format card.  It features:\n\n1. Port selection with a base between 0x80 and 0xF0\n2. 8 bit operation in LBA mode (max 2**28 sectors, approximately 130GB )\n3. An aux power connector for adaptors\n4. Read / Write and Busy LED's\n\n## Interface - A Brief overview\n\nAddresses are offsets from the base address selected\n\n| Address | Read | Write               |\n|---------|------|---------------------|\n| 0x00 | Data | Data                |\n| 0x01 | Error Code  | Feature Select      |\n| 0x02 | Sectors to Transfer | Sectors to Transfer |\n| 0x03 | LBA 0..7 | LBA 0..7            |\n| 0x04 | LBA 8..15 | LBA 8..15           |\n| 0x05 | LBA 16..23 | LBA 16..23          |\n| 0x06 | LBA 24..27 | LBA 16..23          |\n| 0x07 | Status | Write Command       |\n\n\nThe following command sequences are sufficient to verify if a card if functional\n\n### Select 8 Bit mode\n\nAddresses are offsets from the base address selected\n\nWrite 0x01 to 0x01 - 8 bit mode\n\nWrite 0xEF to 0x07 - Set features\n\n### Set Sector Count\n\nWrite 0x01 to 0x02 - Transfer one sector\n\n### Select Sector to Read / Write\n\nWrite 0x01 to 0x03 - Select address 0x0000001\n\nWrite 0x00 to 0x04\n\nWrite 0x00 to 0x05\n\nWrite 0xE0 to 0x06\n\n### Disable Cache\n\n... otherwise your data won't stick !\n\nWrite 0x82 to 0x01 - Disable cache command\n\nWrite 0xEF to 0x07 - Set feature\n\n### Read / Write\n\nTo read use the command 0x20, to write use the command 0x30 written to 0x07 and then read/write from\nthe data port 0x00\n\nBetween each byte you should check the status port to check if the next byte should be transferred.\nHowever I have found the Z80 at 4MHz to be slow enough not to need this. YMMV\n\n## Other\n\nThe CF card timing logic was adapted from a design by Tadeuzd Pycio\n\nDetails [Here](http://www.vtsys.pl/interface-compact-flash)\n\n![PCB From JLCPCB](pcb.png)\n\n![Circuit Diagram](circuit.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodesqueak%2Fcompactflashcontroller","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcodesqueak%2Fcompactflashcontroller","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodesqueak%2Fcompactflashcontroller/lists"}