Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Arduino Altair 8800 Simulator

Componenten en benodigdheden

Arduino Mega 2560
× 1
Arduino Due
Arduino Mega of Due zijn vereist, niet beide!
× 1
LED (generiek)
× 36
Transistor-NPN voor algemeen gebruik
× 36
Weerstand 10k ohm
× 36
Weerstand 150 ohm
× 36
Mini-tuimelschakelaar SPDT Aan-Aan
Voor 16 adresschakelaars (SW15-0) plus aan/uit-schakelaar
× 17
Momentschakelaar SPDT (On)-Off-(On)
Voor functieschakelaars (RUN/STOP/EXAMINE...)
× 8
Metalen plaat voor achterkant van frontpaneel
× 1
SparkFun Bluetooth-modem - BlueSMiRF Zilver
Optioneel. Door dit aan te sluiten op de Arduino TX/RX-pinnen, kan elke bluetooth-computer of telefoon fungeren als een seriële terminal voor de geëmuleerde Altair.
× 1
microSD-kaart met SD-kaartadapter
Optioneel. Alleen nodig voor emulatie van schijfstations, wat niet vereist is om de simulator te laten werken.
× 1

Apps en online services

Arduino IDE
Arduino DueFlashStorage-bibliotheek
De Arduino Due heeft geen EEPROM voor permanente opslag, maar met deze bibliotheek kunnen gegevens worden opgeslagen op de -chip-flashgeheugen. Alles wat is opgeslagen, wordt verwijderd wanneer de Arduino opnieuw wordt geflitst!
Arduino Due soft_uart-bibliotheek
Een software UART-implementatie waarmee alle pinnen als seriële interface kunnen worden gebruikt (vergelijkbaar met de SoftwareSerial-bibliotheek van andere Arduino-platforms). De bestanden uit deze bibliotheek zijn opgenomen in de simulatorbron omdat ik enkele kleine wijzigingen moest aanbrengen om ze in de simulator te integreren.

Over dit project

Als je dit zou willen bouwen, maar niet van het idee houdt om helemaal opnieuw te beginnen, kijk dan eens naar Chris Davis' Altair-Duino-kit die komt met alle componenten, een PCB, een behuizing en een voorgeprogrammeerde Arduino Due!

Hier zijn enkele foto's van anderen die dit project hebben gebouwd en het hun eigen hebben gemaakt:

  • Alan Lowther vond een mooie metalen behuizing voor zijn versie en een Raspberry Pi aangesloten voor input/output en spraaksynthese.
  • Martin Zumr heeft een heel mooi uitziende doos gemaakt, helemaal van hout.
  • Chris Davis ( kb0wwp) heeft een . gemaakt PCB en een mooie zaak.
  • Justin Davis heeft een . gemaakt Altair schild voor de Arduino Due.

Als iemand anders zijn creatie wil delen, laat het me dan weten en ik zal het hier posten. Ik zou graag de verscheidenheid aan versies zien die mensen bedenken!

Lange tijd heb ik gedacht dat het cool zou zijn om een ​​Altair 8800-computer te hebben om mee te spelen. Maar werkende vintage Altairs zijn zeldzaam en daarom duur, en kosten gemakkelijk $ 1500 - $ 2500 als ze al beschikbaar zijn. Er zijn een aantal andere opties, zoals altairclone.com, maar dat kost nog steeds $600, wat voor mij te veel is om uit te geven aan een computer die - hoewel erg cool - van beperkt nut zal zijn. Gelukkig heeft Mike Douglas, de maker van de Altair Clone, alle oude documenten en software die hij heeft opgespoord en gebruikt bij het maken van de kloon, beschikbaar gesteld aan de gemeenschap. Dankzij Mike's werk is er een schat aan informatie over de interne werking van de Altair en zijn meest populaire randapparatuur gemakkelijk beschikbaar.

Op een gegeven moment keek ik naar de specificaties van de Arduino Mega 2560 en begon ik me af te vragen of het genoeg I/O-pinnen zou hebben om gewoon de LED's en schakelaars van het Altair-voorpaneel aan te sluiten en mijn eigen emulatorsoftware te schrijven. Blijkt dat de Arduino Mega precies . heeft het juiste aantal I/O-pinnen. Dus ik moest gewoon mijn eigen Altair-kloon maken.

Het gebruik van de Arduino Mega om de simulator te besturen werkte prima en was eenvoudig in te stellen, maar de emulatie werkt op slechts ongeveer 25% van de snelheid van Altair en kan slechts 6 KB geëmuleerd RAM-geheugen bieden (hoewel dat vroeger veel zou zijn geweest ). De permanente opslagcapaciteit (voor het opslaan van programma's/gegevens die in de simulator zijn gemaakt) is ook beperkt, aangezien de EEPROM van de Mega slechts 4 KB kan bevatten.

De Arduino Due heeft voldoende geheugen om een ​​volledige 64 KB geëmuleerd RAM-geheugen te ondersteunen en werkt veel sneller dan de Mega. Bovendien kan de Due tijdens runtime gegevens opslaan in het flashgeheugen. Dat maakt het mogelijk om elk deel van de 512K-flitser die niet door de simulator zelf wordt gebruikt voor permanente opslag te gebruiken.

Met behulp van de Due heb ik nu een Altair 8800-simulator die op ongeveer de oorspronkelijke snelheid draait, 64K geëmuleerd RAM-geheugen biedt, veel Altair-software bevat en nog steeds 32K semi-permanente opslag kan bieden om programma's en gegevens in de emulator te laden en op te slaan.

Mijn doel voor dit project was om bij het werken met de simulator zo dicht mogelijk bij het "echte" Altair 8800-gevoel te komen. Dat houdt onder meer in dat de lampjes op het voorpaneel het echte gedrag zoveel mogelijk weerspiegelen. Een criterium daarvoor was dat het mogelijk zou moeten zijn om het "Kill-the-Bit"-spel op het frontpaneel te spelen - en dat is:

Het blijkt dat de simulatie waar genoeg is voor het origineel dat zelfs de Altair 8800-muziekdemo werkt. Merk op dat dit afhankelijk is van een AM-radio die de elektromagnetische interferentie oppikt die wordt gegenereerd door het circuit van Altair!

Vroeger bracht Processor Technology een klein uitbreidingsbord uit voor de Altair (slechts een paar condensatoren en weerstanden) met bijbehorende software die van de Altair een (voor die tijd) respectabel muzieksysteem maakte. Dezelfde toevoegingen kunnen worden gedaan aan de Simulator (zie de documentatie) waarmee deze de melodieën kan afspelen die destijds voor het muzieksysteem zijn gemaakt. Hier is een voorbeeld:

Een andere historisch belangrijke uitbreiding van de Altair was de Cromemco Dazzler grafische kaart. Met behulp van een software- of hardware-extensie kan de Simulator dat bord ook emuleren:

Nog een andere software/hardware-uitbreiding stelt de Simulator in staat om de Processor Technology VDM-1 grafische kaart te emuleren:

Natuurlijk bezit ik uiteindelijk geen originele Altair, dus alle informatie over hoe het werkt moest uit documenten en video's komen (zie dankbetuigingen hieronder). Er kunnen enkele kleine verschillen zijn, maar al met al denk ik dat het het oorspronkelijke gedrag vrij goed reproduceert. Een bekend (en opzettelijk) verschil is het HLDA-statuslampje:op het origineel geeft het aan dat de CPU heeft erkend dat het is gestopt door een extern apparaat. Deze functionaliteit wordt nooit gebruikt in de simulator, dus hier geeft het aan dat een bestand (serial/tape capture/replay) momenteel geopend is.

Hoogtepunten

  • Reproduceert nauwkeurig het gedrag van de voorpaneelelementen van Altair.
  • Loopt op ongeveer dezelfde snelheid als de originele Altair 8800 (bij gebruik van Arduino Due) of 25% originele snelheid bij gebruik van Arduino Mega.
  • Geëmuleerde RAM-grootte is 64KB (Due) of 6K (Mega)
  • Een aantal Altair-programma's zijn inbegrepen en kunnen eenvoudig in de emulator worden geladen, waaronder Pong, Altair 4K BASIC (het eerste Microsoft-product), Altair extended BASIC, MITS Programming System II (alleen Due), Altair Time Sharing BASIC ( stelt meerdere gebruikers in staat om BASIC tegelijkertijd te gebruiken).
  • BASIC- en Assembler-voorbeeldprogramma's zijn opgenomen in de emulatorsoftware en kunnen eenvoudig in BASIC/Assembler worden geladen.
  • Emuleert één 88-SIO-, 88-2SIO- en 88-ACR-kaart (interface voor audiocassetterecorder). Elk gesimuleerd serieel apparaat kan worden toegewezen aan de seriële interface van een Arduino. Standaard zijn de twee meest voorkomende (88-SIO en 88-2SIO poort 1) toegewezen aan de belangrijkste seriële poort van de Arduino op 115200 baud 8n1, die toegankelijk is via de USB-kabel. Ik raad aan om een ​​serieel-naar-Bluetooth-dongle aan te sluiten op de RX/TX seriële pinnen. Op die manier kan elk Bluetooth-apparaat dienen als een terminal voor de Altair.
  • Op de Arduino Due kunnen zowel de seriële hoofdinterface (USB) als de Serial1-interface (pins 18/19) tegelijkertijd worden gebruikt.
  • Gegevens die naar elk serieel apparaat (inclusief de ACR-tape) worden verzonden, kunnen worden vastgelegd en afgespeeld in maximaal 256 bestanden die worden bewaard in de lokale opslag van de Arduino (EEPROM of FLASH).
  • De cassette-interface ondersteunt het gebruik van de CSAVE/CLOAD-commando's in de uitgebreide BASIC (ondersteuning is automatisch zonder tussenkomst van de gebruiker). Geweldig voor het ontwikkelen van uw eigen BASIC-programma's!
  • Emuleert een Cromemco Dazzler grafische kaart (heeft wat extra hardware/software nodig, zie hier)
  • Emuleert een VDM1-videoterminalbord met processortechnologie (heeft wat extra hardware/software nodig, zie hier)
  • Emuleert tot 16 88-DCDD-schijven (4 in standaardconfiguratie). Diskdrive-emulatie is optioneel, maar vereist het aansluiten van een SD-kaart op de SPI-header van de Arduino. Alleen ondersteund bij gebruik van Arduino Due.
  • Emuleert een 88-HDSK harde-schijfcontroller met maximaal 4 harde-schijfeenheden aangesloten (1 in standaardconfiguratie) en 4 platters per eenheid.
  • Emuleert een 88-RTC-VI-bord met realtime klok en vectorinterruptverwerking. Dit maakt het mogelijk om Altair Time Sharing Basic te gebruiken.
  • 256-byte pagina's aan geheugen kunnen permanent worden opgeslagen en weer in het geheugen worden geladen. Dit biedt een eenvoudige manier om programma's op te slaan die zijn ingevoerd via de schakelaars op het voorpaneel.
  • Veel instellingen kunnen eenvoudig worden gewijzigd via de geïntegreerde configuratie-editor.

Houd er bij het gebruik van de Due rekening mee dat alles dat in de simulator is vastgelegd of opgeslagen, wordt gewist als u een nieuwe versie van de schets uploadt naar de Due. Dit komt omdat opgeslagen gegevens worden opgeslagen in flash-geheugen dat wordt gewist bij het uploaden van een nieuwe schets (de Due heeft geen EEPROM voor permanente opslag). Als er een SD-kaart is aangesloten op de Due, worden opgeslagen gegevens op de SD-kaart opgeslagen. In dat geval gaan er geen gegevens verloren bij het uploaden van een nieuwe schets.

Documentatie

Aangezien de simulator precies hetzelfde werkt als de Altair 8800, biedt de originele Altair-documentatie (gemakkelijk te vinden op Google) alle informatie die nodig is om de schakelaars op het voorpaneel te bedienen.

De simulator bevat echter wel een aantal extra functies en ingebouwde software voor de Altair die toegankelijk zijn via de AUX1/AUX2 schakelaars op het frontpaneel (deze waren inbegrepen maar niet gebruikt op de originele Altair). Die functionaliteit wordt uitgelegd in een apart document dat ik heb opgeschreven tijdens het ontwikkelen van de software voor de Simulator. Het document is vele pagina's lang en de informatie die erin staat zou deze pagina overweldigen, dus raadpleeg het Documentation.pdf-bestand in de bronrepository.

Bouwinstructies

Een doel was om zo min mogelijk ondersteuningscircuits te gebruiken. Zowel de Arduino Mega als de Due hebben voldoende I/O-pinnen om alle frontpaneelelementen direct te bedraden. De enige extra circuits die nodig zijn, zijn de transistors en weerstanden om de 36 LED's aan te sturen (als de LED's rechtstreeks op de uitgangspinnen van de Aruino waren aangesloten en er te veel tegelijkertijd zouden worden ingeschakeld, zou de totale stroom de limieten van de Arduino overschrijden).

Het maken van volledige schema's voor dit project zou vervelend, repetitief zijn (36 identieke LED-drivercircuits, bedrading voor 32 schakelaars) en niet erg nuttig. Dus het schemadocument bevat in plaats daarvan gedetailleerde tabellen over welke elementen worden aangesloten op welke Arduino-pinnen en de schema's voor de individuele subcircuits (zoals LED-stuurprogramma's). Ik heb ook een Fritzing-bestand toegevoegd om de lay-out van de LED-drivercomponenten op het stripboard te tonen.

Om het voorpaneel te maken, begon ik met een scan van hoge kwaliteit van het voorpaneel van Altair (te vinden hier op www.vintage-computer.com) en liet het afdrukken in een kopieerwinkel op karton. Voor de achterkant (om schakelaars en LED's op hun plaats te houden) gebruikte ik een plaat van 22 gauge metaal, met behulp van een gewone boormachine om de gaten voor LED's en schakelaars te maken. De LED-drivercircuits zijn gesoldeerd op stukjes stripboard die direct op de LED's worden gesoldeerd, die op hun beurt op hun plaats worden gehouden door de metalen plaat.

Het voorpaneel wordt op zijn plaats gehouden en rechtop gehouden door een eenvoudige houten kist. De doos is niet zo diep als de originele Altair (omdat hij alleen het voorpaneel en Arduino hoeft te bevatten).

Om de aan/uit-schakelaar op het voorpaneel aan te sluiten, heb ik zojuist een stopcontact (hetzelfde als op de Arduino zelf) aan de doos toegevoegd, deze aangesloten op de schakelaar op het voorpaneel en van daaruit op een stekker die op de Arduino wordt aangesloten.

Bij gebruik van de Arduino Due kan emulatie van maximaal 16 88-DCDD-schijven worden ingeschakeld door een SD-kaart aan te sluiten op de SPI-poort van de Due. De laatste pagina in het Schema-document toont de vereiste bedrading in detail.

Voordat u de schets naar de Arduino Due uploadt, moet u de optimalisatie-instelling van de Arduino-compiler op "prestaties" zetten. Standaard is deze ingesteld op "grootte" (niet zeker waarom, aangezien de Due 512k flash-geheugen heeft). Laad hiervoor het bestand

c:\Users\[gebruiker]\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.9\platform.txt

in een teksteditor en verander elk voorkomen van "-Os" in "-O3". U kunt deze stap overslaan, maar dan zal de simulator aanzienlijk langzamer werken.

De simulatorsoftware kan ook op een kale Arduino (Mega of Due) draaien zonder dat er bedieningselementen op het voorpaneel zijn aangesloten. Hierdoor kunnen nogal wat van de meegeleverde programma's worden uitgevoerd (die meestal de seriële terminal gebruiken en niet de elementen op het voorpaneel). Bewerk hiervoor de config.h bronbestand en stel #define STANDALONE 1 . in (in plaats van 0). Raadpleeg het gedeelte "Foutopsporingsmogelijkheden" in de documentatie om te zien hoe u de virtuele frontpaneelelementen in die opstelling bedient. Houd er echter rekening mee dat dit niet het beoogde gebruik van de simulator is. Ik raad aan om pc-gebaseerde emulators voor alle software te gebruiken als u geen hardware op het voorpaneel wilt bouwen. De config.h source-bestand bevat een aantal schakelaars die simulatorfunctionaliteit in-/uitsluiten. De standaardinstellingen werken goed, maar als u de simulator wilt aanpassen, moet u hier beginnen.

Dankbetuigingen

Aangezien ik zelf geen Altair bezit, moest ik erop vertrouwen dat ik informatie van internet haalde. De Altair 8800 instructievideo's geproduceerd door Mike Douglas (deramp5113) van altairclone.com waren een grote hulp en zijn erg interessant om naar te kijken. Naast het produceren van de video's heeft Mike een schat aan Altair-gerelateerde hardware- en softwarehandleidingen verzameld en beschikbaar gesteld op zijn site.

(Merk op dat de video's van Mike erg nuttig zijn om ideeën op te doen over wat je met de simulator kunt doen als je hem eenmaal hebt gebouwd)

De ADEXER-tool van Martin Eberhard was van onschatbare waarde voor het op laag niveau debuggen van de ondersteuning van de harde schijf. Hij schreef ook twee bootloaders die door de simulator worden gebruikt:de combo disk bootloader (CDBL) voor het opstarten van schijven en minidisks, evenals de harddisk bootloader (HDBL) die korter en stabieler is dan het origineel.

Hoewel ik alle code, inclusief de CPU-emulatie, zelf heb geschreven, heb ik wat inspiratie gehaald uit het i8080-kernmodelproject als het erom ging de half-carry-berekening en de DAA-instructie efficiënt te implementeren.

De simulator bevat originele software voor de Altair 8800. Nog een grote dank aan Mike Douglas die talloze uren besteedde aan het zoeken, verzamelen en aan het werk krijgen van deze software en het vervolgens beschikbaar maakte op zijn website altairclone.com:

  • Altair 4K BASIC (MITS 1975)
  • Altair Extended ROM Basic (MITS 1975)
  • Altair Time Sharing Basic (MITS 1977)
  • Kill-the-Bit-spel (Dean McDaniel, 1975)
  • Pongspel met frontpaneel (Mike Douglas)
  • 'Daisy, Daisy...' muziek (Steve Dompier, 1975)
  • Muzieksysteem (processortechnologie 1977)
  • MITS Programming System II (MITS 1976)
  • Altair Turnkey Monitor (MITS 1977)
  • i8080 CPU-diagnose (Microcosm Associates, 1980)
  • i8080 CPU-trainer (Frank D. Cringle 1994, Ian Bartholomew 2009)

De disk- en harddisk-images (inbegrepen in de "disks"-submap van het bronarchief) werden ook genomen op zowel altairclone.com als deramp.com (de persoonlijke website van Mike Douglas). Deze omvatten CP/M, verschillende versies van disk BASIC, Altair DOS (inclusief Fortran) en meer. Nogmaals, Mike heeft geweldig werk geleverd door al die software te vinden en vervolgens werkende schijfkopieën te maken die door de Altair-gemeenschap kunnen worden gebruikt. Ik heb alleen een selectie van de software gebruikt, dus misschien wil je naar altairclone.com of deramp.com gaan en wat meer bekijken.

Discussieforum

Chris Davis van Altairduino.com heeft een Google-groep opgericht om Altair-Duino-gerelateerde vragen te bespreken:

https://groups.google.com/forum/#!forum/altair-duino

Voel je vrij om te bezoeken en bij te dragen aan de discussie!

Code

Arduino Altair 8800-simulatorcode
https://github.com/dhansel/Altair8800

Schema's

In plaats van volledige schema's (zeer repetitief) te geven, beschrijft dit document welke pinnen moeten worden aangesloten op welke frontpaneelelementen en biedt het schema's voor de subcircuits (zoals LED-drivercircuits) Een poging om de lay-out van het stripbord te tonen waarop de LED's zijn aangesloten naar. Het is een beetje druk, maar het zou goed genoeg moeten zijn om te zien hoe de dingen met elkaar verbonden zijn. Belangrijk is dat de componenten per led niet meer dan 5 plaatsen op het stripboard innemen. Op die manier kunnen de LED's dicht genoeg bij elkaar staan ​​om het frontpaneel op originele grootte te krijgen. ledstrip_4OVCpRyKQS.fzz

Productieproces

  1. LCD-paneel met Arduino voor Flight Simulator
  2. Arduino Spybot
  3. FlickMote
  4. Zelfgemaakte tv B-Gone
  5. Hoofdklok
  6. Vind mij
  7. Arduino Power
  8. Tech-TicTacToe
  9. Arduino Quadruped
  10. Arduino-joystick
  11. CNC-machine