Apple ][ Emulation on an AVR Microcontroller
Total Page:16
File Type:pdf, Size:1020Kb
University of Koblenz – Landau Faculty 4 Institute of Computer Science Apple ][ Emulation on an AVR Microcontroller August 2014 Bachelor thesis to obtain the academic degree “Bachelor of Science (BSc)” Submitted by: Maximilian Strauch (Student ID: 211 201 869) Supervised by: Prof. Dr. Hannes Frey Dr. Merten Joost Fiat lux! Ehrenwörtliche Erklärung Hiermit bestätige ich, dass die vorliegende Arbeit von mir selbständig verfasst wurde und ich keine anderen als die angegebenen Hilfsmittel – insbesondere keine im Quellenver- zeichnis nicht benannten Internet–Quellen – benutzt habe und die Arbeit von mir vorher nicht in einem anderen Prüfungsverfahren eingereicht wurde. Die eingereichte schriftliche Fassung entspricht der auf dem elektronischen Speichermedium (CD-Rom). Ja Nein Mit der Einstellung der Arbeit in die Bibliothek bin ich einverstanden. ✗ Der Veröffentlichung dieser Arbeit im Internet stimme ich zu. ✗ …..…..…..…..…..…..…..…....…..…..…..…..…..…..…..…....…..…..…..…..…..…..…..….... (Ort, Datum) (Unterschrift) – I – Apple ][ Emulation on an AVR Microcontroller Abstract – The Apple ][ computer was one of the frst three completely assembled systems on the market. It was sold several million times from april 1977 to 1993. This 8 bit home computer was developed by Steve Wozniak and Steve Jobs. They paved the way for the Apple Macintosh computer and the nowadays well known brand Apple with its products. This thesis describes the implementation of a software emulator for the complete Apple ][ computer system on a single Atmel AVR microcontroller unit (MCU). The greatest challenge consists of the fact that the MCU has only a slightly higher clock speed as the Apple ][. This requires an efcient emulation of the CPU and the memory management, which will be covered later on along with the runtime environment con- trolling the emulator. Furthermore the hardware implementation into a handheld prototype will be shown. In summary this thesis presents a successful development of a portable Apple ][ emu- lator covering all aspects from software design over hardware design ending up in a prototype. Keywords: Apple ][, emulation, Atmel AVR microcontroller Emulation eines Apple ][ auf einem AVR Microcontroller Zusammenfassung – Der Apple ][ war einer der drei ersten kompletten Computersys- teme auf dem Markt. Von April 1977 an wurde er rund 16 Jahre lang mehrere Millionen mal verkauft. Entwickelt wurde dieser 8 Bit Homecomputer von Steve Wozniak und Steve Jobs. Sie ebneten damit den Weg für den Macintosh und das heute gut bekannte Unternehmen Apple. Diese Arbeit beschreibt die Implementierung eines Softwareemulators für das kom- plette Apple ][ Computersystem auf nur einem Atmel AVR Microcontroller. Die größte Herausforderung besteht darin, dass der Microcontroller nur eine geringfügig höhere Taktrate als die zu emulierende Hardware hat. Dies erfordert eine efziente Emulation der CPU und Speicherverwaltung, die nachfolgend zusammen mit der Laufzeitum- gebung für die Emulation vorgestellt wird. Weiterhin wird die Umsetzung des Emula- tors mit Display und Tastatur in Hardware näher erläutert. Mit dieser Arbeit wird die erfolgreiche Entwicklung eines portablen Apple ][ Emulators, von der Software über die Hardware bis hin zu einem Prorotypen, vorgestellt. Schlagworte: Apple ][, Emulator, Atmel AVR Microcontroller – II – Table of contents Chapter 1: Preface ................................................................................................ 5 1.1 Related work ................................................................................................................. 8 1.2 Structure ........................................................................................................................ 9 1.3 Legal thoughts .............................................................................................................. 9 1.4 Terminology ................................................................................................................ 10 Chapter 2: Essentials .......................................................................................... 11 2.1 The Apple ][ ................................................................................................................. 11 2.1.1 MOS Technology 6502 ............................................................................................. 12 2.1.2 Memory organisation .............................................................................................. 19 2.1.3 Video output ............................................................................................................ 22 2.1.4 The keyboard ........................................................................................................... 24 2.1.5 Other hardware features ........................................................................................ 25 2.1.6 Software insights: System Monitor & BASIC .......................................................... 25 2.2 Microcontrollers vs. Microprocessors ..................................................................... 26 2.3 Different architectures .............................................................................................. 27 2.3.1 Von Neumann architecture .................................................................................... 27 2.3.2 Harvard architecture ............................................................................................... 27 Chapter 3: Software implementation .............................................................. 29 3.1 Concept and basic setup ........................................................................................... 29 3.2 Emulation of the MOS 6502 CPU .............................................................................. 30 3.2.1 Requirements and exclusions ................................................................................. 30 3.2.2 Designing the emulator – a simple approach ....................................................... 32 3.2.3 Revision of the first approach................................................................................ 35 3.2.4 Internals of the instruction opcode implementations .......................................... 36 3.2.5 Identifying other retardants ................................................................................... 39 3.2.6 The memory access ................................................................................................. 40 3.2.7 First tests .................................................................................................................. 43 3.2.8 Going back to the roots ........................................................................................... 44 3.2.9 New speed measurements & summary ................................................................. 52 3.3 The emulator runtime environment ........................................................................ 53 3.3.1 The structure ............................................................................................................ 54 3.3.2 Display output of the emulator (module “Display”) ............................................. 55 3.3.3 Keyboard input (module “Keyboard”) .................................................................... 56 3.3.4 Bringing software into the emulator (module “DSK I/O”) ..................................... 58 3.3.5 Hibernation feature (module “State I/O”) .............................................................. 61 3.3.6 Sound output ........................................................................................................... 62 3.3.7 Emulator backend UI insights ................................................................................ 62 – III – Chapter 4: Hardware implementation ............................................................ 64 4.1 The “emulation” microcontroller .............................................................................. 64 4.1.1 Pinout and pin mapping ......................................................................................... 65 4.1.2 Interfacing the display ............................................................................................ 66 4.1.3 Talking to the EEPROM ............................................................................................ 69 4.1.4 The SD card and ISP connectors ............................................................................ 70 4.2 The “keyboard” microcontroller ............................................................................... 72 4.2.1 Pinout ....................................................................................................................... 72 4.2.2 Keyboard switch matrix design .............................................................................. 73 4.2.3 Software UART transmit .......................................................................................... 74 4.2.4 Possible disadvantages ........................................................................................... 75 4.3 BOM ............................................................................................................................. 75 4.4 The prototype ............................................................................................................. 77 4.5 Schematic of the prototype ...................................................................................... 78 Chapter 5: Conclusion & Outlook ....................................................................