{"id":395,"date":"2025-06-12T10:28:02","date_gmt":"2025-06-12T00:28:02","guid":{"rendered":"https:\/\/www.amigaretro.com\/projects\/?p=395"},"modified":"2025-08-27T19:17:58","modified_gmt":"2025-08-27T09:17:58","slug":"agnusbuddy","status":"publish","type":"post","link":"https:\/\/www.amigaretro.com\/projects\/agnusbuddy\/","title":{"rendered":"Agnus and Buddy"},"content":{"rendered":"<p>Agnus and Buddy &#8211; a bank switching RAM expansion for the SMD2000!<\/p>\n<p>Note the change in github username and url.<\/p>\n<p><iframe loading=\"lazy\" title=\"A Buddy for Agnus - 3MB+ Chip RAM for Amiga\" width=\"1150\" height=\"647\" src=\"https:\/\/www.youtube.com\/embed\/VxmVjwb9pkY?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/p>\n<h2>Background<\/h2>\n<p>The files for this project can be found at my github<a href=\"https:\/\/github.com\/amigalisa\/Agnus-Buddy\"> https:\/\/github.com\/amigalisa\/Agnus-Buddy<\/a><\/p>\n<p>Official discussion thread can be found here <a href=\"https:\/\/www.amigaretro.com\/index.php\/topic,505.0.html\">https:\/\/www.amigaretro.com\/index.php\/topic,505.0.html<\/a>.<\/p>\n<p>About a year ago BirdHandler asked me if it was possible to expand the Amiga&#8217;s chip ram &#8220;like the BBC Micro&#8221;; that is, using bank switching.\u00a0 My answer was &#8220;of course not, it&#8217;d be done already&#8221;.\u00a0 Well, over the next few days I thought about it and decided my initial reaction was wrong, and that the Amiga could actually be expanded in this way.<\/p>\n<p>It so happened that this was shortly after I finished the SMD2000 prototype.\u00a0 On the SMD2000 the Agnus is on a separate board to the motherboard.\u00a0 This was a design decision so that the same motherboard got built regardless of which machine was the donor, and at the time I had the idea that I wouldn&#8217;t have to build a new motherboard if someone ever made an 8 MB Agnus.\u00a0 This also presented a unique opportunity &#8211; I have an Amiga that is perfect for development of a chip ram expansion!\u00a0 One thing led to another and next thing I know I was into my next project.<\/p>\n<p>After designing the PCB, having it made, and assembling it, I put the project on the shelf and pursued some other non-related projects (coming soon), until a couple of weeks ago when I saw GadgetUK&#8217;s Amber card.\u00a0 This inspired me to get it off the shelf and complete it.<\/p>\n<p>This expansion only has two switchable banks and is really only for proof of concept, but there is no reason it could not be up to 64 switchable banks in a future edition.\u00a0 It was only possible to make this card on the cheap due to the modular design of the SMD2000, although I have an idea for an A500+ version.<\/p>\n<p>Special thanks to BirdHandler for dreaming up this idea and to Retroswim who helped me with testing the card and making the video (still to come), and of course to Intangibles for making the ARB homepage.<\/p>\n<h2>The Design<\/h2>\n<p>There is nothing clever in this design. Bank switching has been around for over 50 years, but as far as I am aware it has never been applied to the Amiga.<br \/>\nA CPLD is added to the Agnus card; in the spirit of the Amiga I have named this chip Buddy, because she&#8217;s Agnus&#8217;s little buddy.\u00a0 This CPLD contains three new registers for the Amiga, one is a write only register which controls the bank switching.\u00a0 There are three instructions controllable by the register: connect a bank, connect and reset proof a bank, and disconnect all banks.\u00a0 The other two registers are read only registers (it was going to be one 16 bit register but I ran out of space on the CPLD); one reads back the current status of the expansion (i.e. which instruction and which bank is connected), and the other one reads a configuration byte from the expansion.\u00a0 I don&#8217;t want this article to be too technical, so if you want to know more details check out the github.<\/p>\n<p>The lower 1 MB of ram is always connected, and at power on AmigaOS will see an unexpaneded A500+\/A600.<\/p>\n<p>When the instruction to connect a bank is written to the register the CPLD connects a bank to the addresses where the second megabyte would be (the trapdoor expansion in the A500+\/A600).\u00a0 When it receives an instruction to connect a different bank it disconnects that bank and connects a new one.\u00a0 If the Amiga is reset the bank is disconnected.<\/p>\n<p>There is also a reset-proof instruction.\u00a0 If this is written to the register the bank stays connected during reset so the OS can detect it, turning the Amiga into a 2 mb machine.<\/p>\n<p>The register is in the address space of the custom chip registers and should be addressable by the Copper as well as the CPU.\u00a0 This means it should be able to be changed mid-frame using an instruction in the copper list.\u00a0 I don&#8217;t know anything about how to write a copper list, so I&#8217;d appreciate it if a programmer can confirm this.<\/p>\n<h2>Where to from here?<\/h2>\n<p>This section is really an appeal to the Amiga community for people who know stuff.\u00a0 I can&#8217;t make it a mature project on my own.\u00a0 That&#8217;s not to say I won&#8217;t pursue these ideas but I could certainly use some assistance getting the project matured.<\/p>\n<p>I think the next step is to make a version for a real Amiga, and probably the A500+.\u00a0 This will allow more people to access it with their existing computers, since not everyone wants to build a new computer just for a ram expansion.\u00a0 At this stage it would a small board to break out the clocks and RGA bus from one of the custom chips (one of the DIP chips would be easier than Agnus), while the rest of the expansion would be in the trapdoor.<\/p>\n<p>I&#8217;d really like to make another expansion with lots more RAM but using only one or two RAM ICs, and a new Buddy CPLD containing the RAM controller for it.<\/p>\n<p>I&#8217;d also love to see some demos or games written using all this extra chip ram. I&#8217;ve made the expansion, now it&#8217;s up to the programmers to find uses for it.<\/p>\n<p>It would be cool to incorporate the bank switching into the OS somehow. I&#8217;m not a programmer and don&#8217;t know how to do that, but I was thinking that it might be easier to write a driver for P96 than to change the (closed source) AmigaOS.<\/p>\n<h2>Challenges<\/h2>\n<p>While the concept is pretty simple, I faced a few major hurdles.\u00a0 I&#8217;ve never done a comprehensive design for a computer project before, everything up to now has been modifying or rehashing someone else&#8217;s work.\u00a0 I had only a vague idea about how RAM works, no idea about how timing inside a computer works let alone how the Amiga custom chip registers are read and written to, and I struggled to find detailed information about how to hack a register into the Amiga&#8217;s register space (probably because nobody outside Commodore has done it before).\u00a0 Before last Monday I had never written a line of Verilog and tbh I was a bit scared of it &#8211; I almost did the entire thing in discrete logic.\u00a0 I&#8217;m not scared of Verilog any more.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Agnus and Buddy &#8211; a bank switching RAM expansion for the SMD2000! Note the change in github username and url. Background The files for this project can be found at my github https:\/\/github.com\/amigalisa\/Agnus-Buddy Official discussion thread can be found here https:\/\/www.amigaretro.com\/index.php\/topic,505.0.html. About a year ago BirdHandler asked me if it was possible to expand the<a class=\"more-link\" href=\"https:\/\/www.amigaretro.com\/projects\/agnusbuddy\/\">Read more  &#10230;<\/a><\/p>\n","protected":false},"author":11,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[58,69,70],"tags":[60,81,64,71],"class_list":["post-395","post","type-post","status-publish","format-standard","hentry","category-amihardware","category-amiprojects","category-smd2000","tag-amiga","tag-chip-ram","tag-hardware","tag-smd2000"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Agnus and Buddy - Amiga Retro Brisbane Projects<\/title>\n<meta name=\"description\" content=\"Agnus and Buddy - a bank switching RAM expansion for the SMD2000!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.amigaretro.com\/projects\/agnusbuddy\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Agnus and Buddy - Amiga Retro Brisbane Projects\" \/>\n<meta property=\"og:description\" content=\"Agnus and Buddy - a bank switching RAM expansion for the SMD2000!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.amigaretro.com\/projects\/agnusbuddy\/\" \/>\n<meta property=\"og:site_name\" content=\"Amiga Retro Brisbane Projects\" \/>\n<meta property=\"article:published_time\" content=\"2025-06-12T00:28:02+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-27T09:17:58+00:00\" \/>\n<meta name=\"author\" content=\"amigalisa\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"amigalisa\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.amigaretro.com\/projects\/agnusbuddy\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.amigaretro.com\/projects\/agnusbuddy\/\"},\"author\":{\"name\":\"amigalisa\",\"@id\":\"https:\/\/www.amigaretro.com\/projects\/#\/schema\/person\/e887251905b7ac17726fe4f75d0349bc\"},\"headline\":\"Agnus and Buddy\",\"datePublished\":\"2025-06-12T00:28:02+00:00\",\"dateModified\":\"2025-08-27T09:17:58+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.amigaretro.com\/projects\/agnusbuddy\/\"},\"wordCount\":1100,\"publisher\":{\"@id\":\"https:\/\/www.amigaretro.com\/projects\/#organization\"},\"keywords\":[\"Amiga\",\"Chip Ram\",\"Hardware\",\"SMD2000\"],\"articleSection\":[\"Amiga Hardware\",\"Amiga Projects\",\"SMD2000\"],\"inLanguage\":\"en-AU\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.amigaretro.com\/projects\/agnusbuddy\/\",\"url\":\"https:\/\/www.amigaretro.com\/projects\/agnusbuddy\/\",\"name\":\"Agnus and Buddy - Amiga Retro Brisbane Projects\",\"isPartOf\":{\"@id\":\"https:\/\/www.amigaretro.com\/projects\/#website\"},\"datePublished\":\"2025-06-12T00:28:02+00:00\",\"dateModified\":\"2025-08-27T09:17:58+00:00\",\"description\":\"Agnus and Buddy - a bank switching RAM expansion for the SMD2000!\",\"breadcrumb\":{\"@id\":\"https:\/\/www.amigaretro.com\/projects\/agnusbuddy\/#breadcrumb\"},\"inLanguage\":\"en-AU\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.amigaretro.com\/projects\/agnusbuddy\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.amigaretro.com\/projects\/agnusbuddy\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.amigaretro.com\/projects\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Agnus and Buddy\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.amigaretro.com\/projects\/#website\",\"url\":\"https:\/\/www.amigaretro.com\/projects\/\",\"name\":\"Amiga Retro Brisbane Projects\",\"description\":\"Amiga was\u2026is &amp; will be \u2026 as long as we are around.\",\"publisher\":{\"@id\":\"https:\/\/www.amigaretro.com\/projects\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.amigaretro.com\/projects\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-AU\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.amigaretro.com\/projects\/#organization\",\"name\":\"Amiga Retro Brisbane Projects\",\"url\":\"https:\/\/www.amigaretro.com\/projects\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-AU\",\"@id\":\"https:\/\/www.amigaretro.com\/projects\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.amigaretro.com\/projects\/wp-content\/uploads\/2022\/09\/arb-logo.svg\",\"contentUrl\":\"https:\/\/www.amigaretro.com\/projects\/wp-content\/uploads\/2022\/09\/arb-logo.svg\",\"width\":534,\"height\":192,\"caption\":\"Amiga Retro Brisbane Projects\"},\"image\":{\"@id\":\"https:\/\/www.amigaretro.com\/projects\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.amigaretro.com\/projects\/#\/schema\/person\/e887251905b7ac17726fe4f75d0349bc\",\"name\":\"amigalisa\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-AU\",\"@id\":\"https:\/\/www.amigaretro.com\/projects\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ea9b591eaaa2e9732527e9e694e0ee20e9b62fd004d3243324832ba19264aa97?s=96&d=robohash&r=pg\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/ea9b591eaaa2e9732527e9e694e0ee20e9b62fd004d3243324832ba19264aa97?s=96&d=robohash&r=pg\",\"caption\":\"amigalisa\"},\"url\":\"https:\/\/www.amigaretro.com\/projects\/author\/gazshop\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Agnus and Buddy - Amiga Retro Brisbane Projects","description":"Agnus and Buddy - a bank switching RAM expansion for the SMD2000!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.amigaretro.com\/projects\/agnusbuddy\/","og_locale":"en_US","og_type":"article","og_title":"Agnus and Buddy - Amiga Retro Brisbane Projects","og_description":"Agnus and Buddy - a bank switching RAM expansion for the SMD2000!","og_url":"https:\/\/www.amigaretro.com\/projects\/agnusbuddy\/","og_site_name":"Amiga Retro Brisbane Projects","article_published_time":"2025-06-12T00:28:02+00:00","article_modified_time":"2025-08-27T09:17:58+00:00","author":"amigalisa","twitter_card":"summary_large_image","twitter_misc":{"Written by":"amigalisa","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.amigaretro.com\/projects\/agnusbuddy\/#article","isPartOf":{"@id":"https:\/\/www.amigaretro.com\/projects\/agnusbuddy\/"},"author":{"name":"amigalisa","@id":"https:\/\/www.amigaretro.com\/projects\/#\/schema\/person\/e887251905b7ac17726fe4f75d0349bc"},"headline":"Agnus and Buddy","datePublished":"2025-06-12T00:28:02+00:00","dateModified":"2025-08-27T09:17:58+00:00","mainEntityOfPage":{"@id":"https:\/\/www.amigaretro.com\/projects\/agnusbuddy\/"},"wordCount":1100,"publisher":{"@id":"https:\/\/www.amigaretro.com\/projects\/#organization"},"keywords":["Amiga","Chip Ram","Hardware","SMD2000"],"articleSection":["Amiga Hardware","Amiga Projects","SMD2000"],"inLanguage":"en-AU"},{"@type":"WebPage","@id":"https:\/\/www.amigaretro.com\/projects\/agnusbuddy\/","url":"https:\/\/www.amigaretro.com\/projects\/agnusbuddy\/","name":"Agnus and Buddy - Amiga Retro Brisbane Projects","isPartOf":{"@id":"https:\/\/www.amigaretro.com\/projects\/#website"},"datePublished":"2025-06-12T00:28:02+00:00","dateModified":"2025-08-27T09:17:58+00:00","description":"Agnus and Buddy - a bank switching RAM expansion for the SMD2000!","breadcrumb":{"@id":"https:\/\/www.amigaretro.com\/projects\/agnusbuddy\/#breadcrumb"},"inLanguage":"en-AU","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.amigaretro.com\/projects\/agnusbuddy\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.amigaretro.com\/projects\/agnusbuddy\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.amigaretro.com\/projects\/"},{"@type":"ListItem","position":2,"name":"Agnus and Buddy"}]},{"@type":"WebSite","@id":"https:\/\/www.amigaretro.com\/projects\/#website","url":"https:\/\/www.amigaretro.com\/projects\/","name":"Amiga Retro Brisbane Projects","description":"Amiga was\u2026is &amp; will be \u2026 as long as we are around.","publisher":{"@id":"https:\/\/www.amigaretro.com\/projects\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.amigaretro.com\/projects\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-AU"},{"@type":"Organization","@id":"https:\/\/www.amigaretro.com\/projects\/#organization","name":"Amiga Retro Brisbane Projects","url":"https:\/\/www.amigaretro.com\/projects\/","logo":{"@type":"ImageObject","inLanguage":"en-AU","@id":"https:\/\/www.amigaretro.com\/projects\/#\/schema\/logo\/image\/","url":"https:\/\/www.amigaretro.com\/projects\/wp-content\/uploads\/2022\/09\/arb-logo.svg","contentUrl":"https:\/\/www.amigaretro.com\/projects\/wp-content\/uploads\/2022\/09\/arb-logo.svg","width":534,"height":192,"caption":"Amiga Retro Brisbane Projects"},"image":{"@id":"https:\/\/www.amigaretro.com\/projects\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.amigaretro.com\/projects\/#\/schema\/person\/e887251905b7ac17726fe4f75d0349bc","name":"amigalisa","image":{"@type":"ImageObject","inLanguage":"en-AU","@id":"https:\/\/www.amigaretro.com\/projects\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/ea9b591eaaa2e9732527e9e694e0ee20e9b62fd004d3243324832ba19264aa97?s=96&d=robohash&r=pg","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ea9b591eaaa2e9732527e9e694e0ee20e9b62fd004d3243324832ba19264aa97?s=96&d=robohash&r=pg","caption":"amigalisa"},"url":"https:\/\/www.amigaretro.com\/projects\/author\/gazshop\/"}]}},"_links":{"self":[{"href":"https:\/\/www.amigaretro.com\/projects\/wp-json\/wp\/v2\/posts\/395","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.amigaretro.com\/projects\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.amigaretro.com\/projects\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.amigaretro.com\/projects\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/www.amigaretro.com\/projects\/wp-json\/wp\/v2\/comments?post=395"}],"version-history":[{"count":13,"href":"https:\/\/www.amigaretro.com\/projects\/wp-json\/wp\/v2\/posts\/395\/revisions"}],"predecessor-version":[{"id":412,"href":"https:\/\/www.amigaretro.com\/projects\/wp-json\/wp\/v2\/posts\/395\/revisions\/412"}],"wp:attachment":[{"href":"https:\/\/www.amigaretro.com\/projects\/wp-json\/wp\/v2\/media?parent=395"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.amigaretro.com\/projects\/wp-json\/wp\/v2\/categories?post=395"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.amigaretro.com\/projects\/wp-json\/wp\/v2\/tags?post=395"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}