산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

Arduino Altair 8800 시뮬레이터

구성품 및 소모품

Arduino Mega 2560
× 1
Arduino Due
Arduino Mega 또는 Due 중 하나가 필요하며 둘 다 필요하지 않습니다!
× 1
LED(일반)
× 36
범용 트랜지스터 NPN
× 36
저항 10k 옴
× 36
저항 150옴
× 36
미니 토글 스위치 SPDT On-On
16개 주소 스위치(SW15-0) 및 전원 스위치용
× 17
순간 스위치 SPDT(켜기)-끄기-(켜기)
기능 스위치용(RUN/STOP/EXAMINE...)
× 8
전면 패널 뒷면용 금속 시트
× 1
SparkFun 블루투스 모뎀 - BlueSMiRF 실버
선택 사항입니다. 이것을 Arduino TX/RX 핀에 연결하면 모든 블루투스 지원 컴퓨터나 전화기가 에뮬레이트된 Altair의 직렬 터미널 역할을 할 수 있습니다.
× 1
SD 카드 어댑터가 있는 microSD 카드
선택 사항입니다. 시뮬레이터가 작동하는 데 필요하지 않은 디스크 드라이브 에뮬레이션에만 필요합니다.
× 1

앱 및 온라인 서비스

Arduino IDE
Arduino DueFlashStorage 라이브러리
Arduino Due에는 영구 저장을 위한 EEPROM이 없지만 이 라이브러리를 사용하면 on에 데이터를 저장할 수 있습니다. -칩 플래시 메모리. Arduino를 다시 플래싱하면 저장된 모든 것이 삭제됩니다!
Arduino Due soft_uart 라이브러리
모든 핀을 직렬 인터페이스로 사용할 수 있도록 하는 소프트웨어 UART 구현(SoftwareSerial 라이브러리와 유사 이 라이브러리의 파일은 시뮬레이터에 통합하기 위해 약간의 수정이 필요했기 때문에 시뮬레이터 소스에 포함되어 있습니다.

이 프로젝트 정보

이 기능을 구축하고 싶지만 처음부터 완전히 시작하는 아이디어가 마음에 들지 않으면 을 확인하십시오. Chris Davis의 Altair-Duino 키트 온다 모든 구성 요소, PCB, 케이스 및 사전 프로그래밍된 Arduino Due!

다음은 이 프로젝트를 만들고 자신의 것으로 만든 다른 사람들의 사진입니다.

<울>
  • 앨런 로우더 발견 멋진 금속 케이스 자신의 버전에 대해 입력/출력 및 음성 합성을 위해 Raspberry Pi를 연결했습니다.
  • <울>
  • Martin Zumr는 나무로 정말 멋진 상자를 만들었습니다.
  • <울>
  • 크리스 데이비스( kb0wwp)이(가) PCB 아름다운 케이스.
  • <울>
  • Justin Davis가 만든 Arduino Due용 Altair 쉴드
  • 자신의 창작물을 공유하고 싶은 사람이 있으면 알려주시면 여기에 게시하겠습니다. 사람들이 만들어내는 다양한 버전을 보고 싶어요!

    오랫동안 저는 Altair 8800 컴퓨터를 가지고 놀면 멋질 것이라고 생각했습니다. 그러나 빈티지 Altairs를 작업하는 것은 드물고 따라서 비싸며 구할 수 있다면 쉽게 $1500-$2500입니다. altairclone.com과 같은 몇 가지 다른 옵션이 있지만 여전히 600달러의 비용이 듭니다. 컴퓨터에 쓰기에는 너무 많은 비용입니다. 이 컴퓨터는 매우 훌륭하지만 사용이 제한적입니다. 고맙게도 Altair Clone의 창시자인 Mike Douglas는 그가 찾아보고 복제물을 만들 때 사용한 모든 오래된 문서와 소프트웨어를 커뮤니티에 제공했습니다. Mike의 작업 덕분에 Altair의 내부 작동과 가장 인기 있는 주변 장치에 대한 풍부한 정보를 편리하게 사용할 수 있습니다.

    어느 시점에서 나는 Arduino Mega 2560 사양을 보고 알테어 전면 패널에서 LED와 스위치를 연결하고 내 자신의 에뮬레이터 소프트웨어를 작성하기에 충분한 I/O 핀이 있는지 궁금해하기 시작했습니다. Arduino Mega가 정확히 올바른 수의 I/O 핀. 그래서 나는 나만의 Altair 클론을 만들어야 했습니다.

    Arduino Mega를 사용하여 시뮬레이터를 구동하는 것은 잘 작동했고 설정이 간단했지만 에뮬레이션은 Altair 속도의 약 25%에서만 실행되며 6KB의 에뮬레이트된 RAM만 제공할 수 있습니다. ). Mega의 EEPROM은 4KB만 보유하기 때문에 영구 저장 용량(시뮬레이터에서 생성된 프로그램/데이터 저장용)도 제한됩니다.

    Arduino Due는 64KB의 에뮬레이트된 RAM을 지원하기에 충분한 메모리를 가지고 있으며 Mega보다 훨씬 빠르게 실행됩니다. 또한 Due는 런타임에 데이터를 플래시 메모리에 저장할 수 있습니다. 따라서 시뮬레이터 자체에서 사용하지 않는 512K 플래시의 일부를 영구 저장용으로 사용할 수 있습니다.

    Due를 사용하여 이제 Altair 8800 시뮬레이터가 원래 속도로 실행되고 64K의 에뮬레이트된 RAM을 제공하며 많은 Altair 소프트웨어를 포함하고 에뮬레이터에서 프로그램과 데이터를 로드하고 저장할 수 있는 32K의 반영구적 스토리지를 제공할 수 있습니다.

    이 프로젝트의 목표는 시뮬레이터로 작업할 때 "실제" Altair 8800 느낌에 최대한 가깝게 만드는 것이었습니다. 여기에는 전면 패널 조명이 실제 동작을 최대한 반영하도록 하는 것이 포함됩니다. 이에 대한 한 가지 기준은 전면 패널에 있는 "Kill-the-Bit" 게임을 플레이할 수 있어야 한다는 것이었고, 이는 다음과 같습니다.

    시뮬레이션은 Altair 8800 음악 데모도 작동할 만큼 원본과 동일하다는 것이 밝혀졌습니다. 이것은 Altair 회로에서 생성된 전자기 간섭을 수신하는 AM 라디오에 의존한다는 점에 유의하십시오!

    예전에 Processor Technology는 Altair를 (당시에는) 존경할만한 음악 시스템으로 바꿔준 소프트웨어와 함께 Altair를 위한 작은 확장 보드(몇 개의 커패시터와 저항)를 출시했습니다. 시뮬레이터에 동일한 추가 사항을 적용할 수 있습니다(문서 참조). 이를 통해 당시 음악 시스템용으로 생성된 곡을 재생할 수 있습니다. 다음은 예입니다.

    Altair의 또 다른 역사적으로 중요한 확장은 Cromemco Dazzler 그래픽 보드였습니다. 소프트웨어 또는 하드웨어 확장을 사용하여 시뮬레이터는 해당 보드를 에뮬레이트할 수도 있습니다.

    또 다른 소프트웨어/하드웨어 확장을 통해 시뮬레이터는 프로세서 기술 VDM-1 그래픽 카드를 에뮬레이트할 수 있습니다.

    물론 결국 저는 원래 Altair를 소유하지 않았으므로 작동 방식에 대한 모든 정보는 문서와 비디오에서 가져와야 했습니다(아래 감사의 글 참조). 약간의 차이가 있을 수 있지만 전반적으로 원래 동작을 꽤 잘 재현한다고 생각합니다. 알려진(그리고 의도적인) 차이점 중 하나는 HLDA 상태 표시등입니다. 원본에서는 CPU가 외부 장치에 의해 중지되었음을 확인했음을 알립니다. 이 기능은 시뮬레이터에서 사용되지 않으므로 여기에서 파일(직렬/테이프 캡처/재생)이 현재 열려 있음을 나타냅니다.

    하이라이트

    <울>
  • Altair 전면 패널 요소의 동작을 정확하게 재현합니다.
  • <울>
  • 기본 Altair 8800(Arduino Due 사용 시) 또는 Arduino Mega 사용 시 25%의 원래 속도로 실행됩니다.
  • <울>
  • 에뮬레이트된 RAM 크기는 64KB(Due) 또는 6K(Mega)입니다.
  • <울>
  • Pong, Altair 4K BASIC(최초의 Microsoft 제품), Altair 확장 BASIC, MITS 프로그래밍 시스템 II(Due만 해당), Altair Time Sharing BASIC( 여러 사용자가 동시에 BASIC을 사용할 수 있습니다.
  • <울>
  • BASIC 및 Assembler 예제 프로그램은 에뮬레이터 소프트웨어에 포함되어 있으며 BASIC/Assembler에 쉽게 로드할 수 있습니다.
  • <울>
  • 1개의 88-SIO, 88-2SIO 및 88-ACR(오디오 카세트 레코더 인터페이스) 보드를 에뮬레이트합니다. 시뮬레이션된 각 직렬 장치는 Arduino의 직렬 인터페이스에 매핑할 수 있습니다. 기본적으로 가장 일반적인 두 개(88-SIO 및 88-2SIO 포트 1)는 USB 케이블을 통해 액세스할 수 있는 115200 baud 8n1에서 Arduino의 기본 직렬 포트에 매핑됩니다. 직렬-블루투스 동글을 RX/TX 직렬 핀에 연결하는 것이 좋습니다. 그렇게 하면 모든 블루투스 지원 장치가 Altair의 터미널 역할을 할 수 있습니다.
  • <울>
  • Arduino Due에서는 메인 직렬 인터페이스(USB)와 Serial1 인터페이스(핀 18/19)를 동시에 사용할 수 있습니다.
  • <울>
  • 각 직렬 장치(ACR 테이프 포함)로 전송된 데이터는 Arduino의 로컬 저장소(EEPROM 또는 FLASH)에 보관되는 최대 256개의 파일로 캡처 및 재생할 수 있습니다.
  • <울>
  • 카세트 인터페이스는 확장 BASIC에서 CSAVE/CLOAD 명령 사용을 지원합니다(사용자 개입 없이 자동으로 지원됨). 자신만의 BASIC 프로그램을 개발하는 데 적합합니다!
  • <울>
  • Cromemco Dazzler 그래픽 보드 에뮬레이션(일부 추가 하드웨어/소프트웨어 필요, 여기 참조)
  • <울>
  • Processor Technology VDM1 비디오 터미널 보드를 에뮬레이트합니다(일부 추가 하드웨어/소프트웨어 필요, 여기 참조)
  • <울>
  • 최대 16개의 88-DCDD 디스크 드라이브(기본 구성의 경우 4개)를 에뮬레이트합니다. 디스크 드라이브 에뮬레이션은 선택 사항이지만 SD 카드를 Arduino의 SPI 헤더에 연결해야 합니다. Arduino Due를 사용할 때만 지원됩니다.
  • <울>
  • 최대 4개의 하드 드라이브 장치(기본 구성에서 1개)가 연결된 88-HDSK 하드 드라이브 컨트롤러와 장치당 4개의 플래터를 에뮬레이트합니다.
  • <울>
  • 실시간 클록 및 벡터 인터럽트 처리로 88-RTC-VI 보드를 에뮬레이트합니다. 이를 통해 Altair Time Sharing Basic을 실행할 수 있습니다.
  • <울>
  • 256바이트 메모리 페이지를 영구 저장소에 저장하고 메모리에 다시 로드할 수 있습니다. 이것은 전면 패널 스위치를 통해 입력한 프로그램을 저장하는 간단한 방법을 제공합니다.
  • <울>
  • 통합 구성 편집기를 통해 많은 설정을 쉽게 변경할 수 있습니다.
  • Due를 사용할 때 Due에 스케치의 새 버전을 업로드하면 시뮬레이터 내에서 캡처되거나 저장된 모든 것이 지워집니다. 이는 저장된 데이터가 새 스케치를 업로드할 때 지워지는 플래시 메모리에 저장되기 때문입니다(Due에는 영구 저장을 위한 EEPROM이 없습니다). Due에 SD 카드를 연결하면 SD 카드에 저장된 데이터가 저장됩니다. 이 경우 새 스케치를 업로드할 때 데이터가 손실되지 않습니다.

    문서

    시뮬레이터는 Altair 8800과 정확히 동일하게 작동하므로 원본 Altair 설명서(Google에서 쉽게 찾을 수 있음)는 전면 패널 스위치를 작동하는 데 필요한 모든 정보를 제공합니다.

    그러나 시뮬레이터에는 전면 패널의 AUX1/AUX2 스위치를 통해 액세스할 수 있는 Altair용 여러 추가 기능과 내장 소프트웨어가 포함되어 있습니다(이는 원래 Altair에 포함되었지만 사용되지 않음). 그 기능은 시뮬레이터용 소프트웨어를 개발하면서 작성한 별도의 문서에 설명되어 있습니다. 문서가 여러 페이지에 걸쳐 포함된 정보가 이 페이지를 압도할 수 있으므로 소스 저장소의 Documentation.pdf 파일을 참조하십시오.

    빌드 지침

    한 가지 목표는 가능한 적은 지원 회로를 사용하는 것이었습니다. Arduino Mega와 Due에는 모든 전면 패널 요소를 직접 연결하기에 충분한 I/O 핀이 있습니다. 필요한 유일한 추가 회로는 36개의 LED를 구동하기 위한 트랜지스터와 저항입니다(LED가 Aruino의 출력 핀에 직접 연결되고 동시에 너무 많은 핀이 켜지면 총 전류가 Arduino의 한계를 초과할 것입니다).

    이 프로젝트의 전체 회로도를 만드는 것은 지루하고 반복적이며(36개의 동일한 LED 드라이버 회로, 32개의 스위치에 대한 배선) 그다지 도움이 되지 않습니다. 따라서 회로도 문서에는 어떤 요소가 어떤 Arduino 핀에 연결되는지에 대한 자세한 표와 개별 하위 회로(예:LED 드라이버)에 대한 회로도가 포함되어 있습니다. 스트립보드에 LED 드라이버 구성 요소의 레이아웃을 표시하기 위해 Fritzing 파일도 추가했습니다.

    전면 패널을 만들기 위해 Altair 전면 패널의 고품질 스캔(www.vintage-computer.com에서 찾을 수 있음)으로 시작하여 복사점에서 카드 스톡에 인쇄했습니다. 뒷면(실제로 스위치와 LED를 제자리에 고정하기 위해)을 위해 일반 전동 드릴을 사용하여 22게이지 금속판을 사용하여 LED와 스위치용 구멍을 만들었습니다. LED 드라이버 회로는 스트립보드 조각에 납땜되어 있으며 LED에 직접 납땜되어 금속 시트에 의해 제자리에 고정됩니다.

    전면 패널은 간단한 나무 상자로 제자리에 고정되어 있습니다. 상자는 원래 Altair만큼 깊지 않습니다(전면 패널과 Arduino만 잡아야 하기 때문에).

    전면 패널 켜기/끄기 스위치를 연결하기 위해 상자에 전원 소켓(Arduino 자체와 동일)을 추가하고 전면 패널 스위치에 연결한 다음 거기에서 Arduino에 연결하는 전원 플러그에 연결했습니다.

    Arduino Due를 사용할 때 Due의 SPI 포트에 SD 카드를 연결하여 최대 16개의 88-DCDD 디스크 드라이브를 에뮬레이션할 수 있습니다. 회로도 문서의 마지막 페이지에는 필요한 배선이 자세히 나와 있습니다.

    스케치를 Arduino Due에 업로드하기 전에 Arduino 컴파일러의 최적화 설정을 "성능"으로 전환해야 합니다. 기본적으로 "크기"로 설정되어 있습니다(Due에 512k 플래시 메모리가 있기 때문에 이유는 확실하지 않음). 이렇게 하려면 파일을 로드하세요.

    <코드>c:\Users\[사용자]\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.9\platform.txt

    텍스트 편집기로 이동하고 "-Os"의 모든 항목을 "-O3"으로 변경합니다. 이 단계를 건너뛸 수 있지만 시뮬레이터가 상당히 느리게 실행됩니다.

    시뮬레이터 소프트웨어는 전면 패널 컨트롤을 연결하지 않고도 베어본 Arduino(Mega 또는 Due)에서 실행할 수도 있습니다. 이렇게 하면 포함된 프로그램(전면 패널 요소가 아닌 대부분 직렬 터미널을 사용하는 프로그램)을 실행할 수 있습니다. 그렇게 하려면 config.h를 편집하십시오. 소스 파일 및 설정 #define STANDALONE 1 (0 대신). 해당 설정에서 가상 전면 패널 요소를 작동하는 방법을 보려면 설명서의 "디버깅 기능" 섹션을 참조하십시오. 이것은 시뮬레이터의 의도된 용도가 아님을 명심하십시오. 전면 패널 하드웨어를 구축하고 싶지 않다면 PC 기반 전체 소프트웨어 에뮬레이터를 사용하는 것이 좋습니다. config.h 소스 파일에는 시뮬레이터 기능을 포함/제외하는 여러 스위치가 포함되어 있습니다. 기본 설정은 잘 작동하지만 시뮬레이터를 조정하려면 여기에서 시작해야 합니다.

    감사의 말

    저는 Altair를 소유하고 있지 않기 때문에 인터넷에서 정보를 얻는 데 의존해야 했습니다. altairclone.com의 Mike Douglas(deramp5113)가 제작한 Altair 8800 교육용 비디오는 큰 도움이 되었고 매우 흥미롭게 보았습니다. Mike는 비디오를 제작하는 것 외에도 풍부한 Altair 관련 하드웨어 및 소프트웨어 설명서를 수집하여 자신의 사이트에서 사용할 수 있도록 했습니다.

    (Mike의 비디오는 시뮬레이터를 구축한 후 수행할 작업에 대한 아이디어를 얻는 데 매우 유용합니다.)

    Martin Eberhard의 ADEXER 도구는 하드 드라이브 지원을 낮은 수준으로 디버깅하는 데 매우 유용했습니다. 그는 또한 시뮬레이터에서 사용하는 두 가지 부트 로더, 즉 디스크 및 미니 디스크를 부팅하기 위한 콤보 디스크 부트 로더(CDBL)와 원본보다 더 짧고 안정적인 HDBL(하드 디스크 부트 로더)을 작성했습니다.

    CPU 에뮬레이션을 포함한 모든 코드를 직접 작성하는 동안 하프 캐리 계산 및 DAA 명령을 효율적으로 구현하는 것과 관련하여 i8080 코어 모델 프로젝트에서 약간의 영감을 얻었습니다.

    시뮬레이터에는 Altair 8800용 원본 소프트웨어가 포함되어 있습니다. 이 소프트웨어를 검색하고 수집하고 작동하도록 수많은 시간을 보낸 Mike Douglas에게 또 다른 큰 감사를 드립니다. <울>

  • 알테어 4K 기본(MITS 1975)
  • <울>
  • Altair 확장 ROM 기본(MITS 1975)
  • <울>
  • 알테어 시분할 기본(MITS 1977)
  • <울>
  • Kill-the-Bit 게임(Dean McDaniel, 1975)
  • <울>
  • 전면 패널을 사용한 탁구 게임(Mike Douglas)
  • <울>
  • 'Daisy, Daisy...' 음악(Steve Dompier, 1975)
  • <울>
  • 음악 시스템(Processor Technology 1977)
  • <울>
  • MITS 프로그래밍 시스템 II(MITS 1976)
  • <울>
  • Altair 턴키 모니터(MITS 1977)
  • <울>
  • i8080 CPU 진단(Microcosm Associates, 1980)
  • <울>
  • i8080 CPU 엑서사이즈(Frank D. Cringle 1994, Ian Bartholomew 2009)
  • 디스크 및 하드 디스크 이미지(소스 아카이브의 "디스크" 하위 디렉토리에 포함됨)도 altairclone.com과 deramp.com(Mike Douglas의 개인 웹 사이트)에서 가져왔습니다. 여기에는 CP/M, 다양한 버전의 디스크 BASIC, Altair DOS(Fortran 포함) 등이 포함됩니다. 다시 말하지만, Mike는 모든 소프트웨어를 찾은 다음 Altair 커뮤니티에서 사용할 수 있는 작동하는 디스크 이미지를 만드는 놀라운 일을 해냈습니다. 저는 일부 소프트웨어만 사용했으므로 altairclone.com 또는 deramp.com으로 이동하여 더 많은 것을 확인하는 것이 좋습니다.

    토론 포럼

    Altairduino.com의 Chris Davis는 Altair-Duino 관련 질문에 대한 토론을 위해 Google 그룹을 구성했습니다.

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

    자유롭게 방문하여 토론에 참여하십시오!

    <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

    코드

    Arduino Altair 8800 시뮬레이터 코드
    https://github.com/dhansel/Altair8800

    회로도

    전체 회로도(매우 반복적임)를 제공하는 대신 이 문서에서는 전면 패널 요소에 연결할 핀을 설명하고 하위 회로(예:LED 드라이버 회로)에 대한 회로도를 제공합니다. LED가 연결된 스트립보드의 레이아웃을 보여주려는 시도 에게. 조금 혼잡하지만 사물이 어떻게 연결되어 있는지보기에 충분해야합니다. 중요한 것은 각 LED의 구성 요소가 스트립보드에서 5개 이하의 공간을 차지한다는 것입니다. 이렇게 하면 전면 패널을 원래 크기로 유지할 수 있을 만큼 LED를 서로 가깝게 배치할 수 있습니다. ledstrip_4OVCpRyKQS.fzz

    제조공정

    1. 비행 시뮬레이터용 Arduino가 있는 LCD 패널
    2. Arduino 스파이봇
    3. FlickMote
    4. 수제 TV B-Gone
    5. 마스터 시계
    6. 나를 찾기
    7. Arduino Power
    8. Tech-TicTacToe
    9. Arduino Quadruped
    10. Arduino 조이스틱