아타리 조립기 편집기

Atari Assembler Editor
아타리 조립기 편집기
원본 작성자캐슬린 오브라이언
개발자셰퍼드슨 마이크로시스템스
초기 릴리즈1981; 41년 전 (1998년)
플랫폼아타리 8비트
크기8KB
유형조립자
면허증독점 소프트웨어

아타리 조립기 편집기(Atari Assembler/Editor로 표기되기도 한다)는 1981년 주식회사 아타리가 출시한 ROM 카트리지 기반 개발 시스템이다.아타리 8비트 가정용 컴퓨터 제품군의 6502 프로그램을 편집, 조립디버그하는 데 사용된다.아타리 베이직(Atari BASIC)을 집필한 셰퍼드슨 마이크로시스템스의 캐슬린 오브라이언(Kathleen O'Brien)이 프로그래밍했으며, 조립러 에디터는 그 언어와 많은 디자인 개념을 공유한다.

조립 시간이 느려서 카트리지는 더 큰 프로그램에 사용하기 어렵다.매뉴얼에서 아타리는 아타리 베이직(Atari BASIC)의 속도를 높이기 위해 서브루틴을 쓰기 위한 도구로 Assembler Editor를 추천했다.[1]아타리 매크로 조립기는 매크로와 같은 더 나은 성능과 더 많은 기능을 가진 대안으로 제공되었지만 디스크 기반이고 복사 방지된 것이며 편집기나 디버거를 포함하지 않았다.권고에도 불구하고, 상업용 소프트웨어는 이스턴 프런트(1941년),[2] 화성의 동굴,[3] 갈라하드와 성배,[4] 키드 그리드와 같은 게임들을 이용하여 작성되었다.[5]

원본 조립기 편집기의 소스 코드는 이를 기반으로 EASMD를 출하한 Optimized Systems Software에 라이센스가 부여되었다.

개발

조립사 편집자는 셰퍼드슨 마이크로시스템스의 캐슬린 오브라이언이 썼다.이 회사는 마이크로소프트 6502 BASIC을 8KB ROM에 장착하는 것을 돕기 위해 Atari에 의해 고용되었는데, Atari의 프로그래머들이 어려움을 겪고 있었다.그 대신 빌 윌킨슨은 완전히 새로운 버전의 BASIC을 설계할 것을 제안했고, BASIC은 Atari BASIC이 되었다.[6]

주로 오브라이언의 남편인 폴 러플턴에 의해 아타리 베이직(Atari BASIC)이 집필되는 동안 오브라이언은 어셈블러 편집기에서 일했다.[6]그것은 코드를 펀치 테이프 기계에 펀치하고, 테이프를 EPROM 버너로 실행한 다음, 아타리 800에서 결과 ROM을 테스트하는 방법으로 작성되었다.카트리지는 아타리 베이직 이전에 완성되었고 오브라이언은 그 프로젝트의 일부분에도 시간을 보냈다.[6]

셰퍼드슨의 작업의 일환으로, 아타리 컴퓨터의 운영체제플로팅 포인트 수학 기능을 포함한 다수의 공통 루틴이 통합되었다.이것들은 오브라이언이 쓴 것인데,[6] 오브라이언은 그녀가 작업한 최초의 부동 소수점 수학 코드였다.주요 기능의 낮은 성능은 아타리 베이직과 조립러 편집기 모두에 영향을 미쳤으며 윌킨슨이 자주 쓰는 주제였다.[7]

세부 사항

조립기 편집기는 8KB 카트리지에 2-통과 6502 조립기 입니다.소스 코드와 객체 코드가 동시에 메모리에 저장될 수 있으므로 디스크나 테이프 드라이브에 액세스하지 않고도 결과 코드를 반복적으로 편집, 조립 및 실행할 수 있다.[8]

편집

카트리지가 EDIT 모드에서 시작한다.프로그래머는 조립 소스의 라인을 아타리 BASIC같은 편집기에 입력한다.소스 텍스트에는 줄 번호가 앞에 붙어야 하며, 그렇지 않으면 명령으로 해석된다.Atari BASIC과 마찬가지로, Assembler Editor에는 다음이 포함되었다.ENTER파일을 하나의 더 큰 프로그램 목록으로 결합하는 데 사용할 수 있는 명령.Atari BASIC과 달리 Assembler Editor에는 자동으로 간격띄우기 라인 번호를 만들고 라인 번호를 새로 매겨 일괄 삭제하는 명령어가 다수 포함되어 있었다.편집자 역시 a를 가지고 있었다.FIND라벨로 작업할 때 매우 유용했던 [9]명령어

지시사항은 메모리에 저장되는 순서대로 나열되어 있다.지침의 시작점은 다음과 같이 지정된다.*=예를 들어, 특별한 "6페이지"에 배치하기 위한 코드는 라인으로 접두사가 될 것이다.*= $0600.[10] 변수 이름은 특정 위치를 가리키도록 할당할 수 있으며, 이는 종종 증가와 결합되었다.*= *+1오프셋을 테이블로 직접 인코딩하는 것.[11]

다음 지시사항의 값은 일반적으로 "이 메모리 주소의 값"으로 해석되었지만, 실제 숫자 값은 다음과 같은 해시를 추가하여 "즉시 연산자"로 제공할 수 있었다.LDA #12, 십진수 값 12로 축전지를 로드한다.16진수는 달러 표시로 표시되었고LDA #$12축전지에 12 16진수 또는 18진수를 적재할 수 있다.괄호를 사용한 간접 주소 지정 지원LDA ($600)위치 값 $600,$601을 사용하여 16비트 주소를 생성한 다음 해당 위치에서 찾은 값으로 축전지를 로드할 수 있다.[12]

매뉴얼에서 조회할 수 있는 숫자 코드로 오류가 보고되며, 총 50여 개의 코드가 있다.[13]

조립하다

코드는 언제든지 다음을 입력하여 조립할 수 있다.ASM편집자에게 [14]명령하다

조립자 편집자는 플랫폼에서 가장 느린 조립자로 널리 조롱받았다.이 중 상당 부분은 셰퍼드슨 마이크로시스템즈(Shepardson Microsystems)가 작성했던 아타리 베이직(Atari BASIC)과 편집자 코드를 상당 부분 공유했기 때문이다.아타리 BASIC은 아타리의 운영 체제에서 이진 코딩 십진법(BCD) 루틴을 사용하는 코드의 숫자 상수를 내부 표현으로 변환하는 데 사용되는 매우 느린 루틴으로 악명이 높았다.이것은 모든 숫자, 심지어 줄 번호까지도 BCD로 변환되어야 한다는 것을 의미했다.이상하게도, 그것은 또한1E2합법적인 [15]번호였죠

디버그

디버거, 정말 모니터가 와 함께 입력되어 있다.BUG명령하다[16]X명령은 EDIT 모드로 돌아간다.[17]디버거는 레지스터와 메모리 위치, 코드 추적, 한 단계 및 분해를 보고 변경할 수 있다.[18]

예시 코드

다음은 조립자 편집기용으로 작성된 헬로월드의 6502 코드다.

10 ; HELLOYello.ASM 20 ; --------- 30 ; 40 ; 이 아타리 조립 프로그램 50 ­ "Hello World"를 인쇄할 독자 60 ; 화면에 메시지 보내기 70 ; 0100 ; CIO가 동일시하는 사항 0110 ; =========== 0120     *=  $0340   ;IOCB의 시작 0130 IOCB 0140 ; 0150 IHID *= *+1    ;장치 핸들러 0160 ICDNO *= *+1    ;장치 번호 0170 ICCOM *= *+1    ;I/O 명령 0180 아이씨스타 *= *+1    ;I/O 상태 0190 ICBAL *= *+1    ;LSB 버퍼 추가기 0200 ICBAH *= *+1    ;MSB 버퍼 추가기 0210 ICPTL *= *+1    ­LSB 퍼트 루틴 0220 ICPTH *= *+1    ;MSB 퍼트 루틴 0230 ICBLL *= *+1    ;LSB 버퍼 렌 0240 ICBLH *= *+1    ;MSB 버퍼 렌 0250 ICAX1 *= *+1    ;AUB BYTE 1 0260 ICAX2 *= *+1    ;AUB BYTE 1 0270 ; 0280 GETREC = 5      ;문자 기록 가져오기 0290 PUTREC = 9      ;문자 기록 입력 0300 ; 0310 CIOV =  $E456   ;CIO 진입 벡터 0320 러나드 = $02E0   ; 실행 주소 0330 EOL   = 9억 달러     ;선 끝 0340 ; 0350 ; CIO를 위한 설정 0360 ; ------------- 0370     *= $0600 0380 시작 LDX #0    ;IOCB 0 0390     LDA #PUTREC ;완전 출력 0400     STA ICCOM,X 이슈 CMD 0410     LDA #MSG&255 ;MSG의 낮은 바이트 0420     STA ICBAL,X ; ICBAL로 0430     LDA #MSG/256 ;HIGH 바이트 0440     STA ICBAH,X ; ICB 진입아. 0450     LDA #0      ;MSG 길이 0460     STA ICBLH,X ; 높은 바이트 0470     LDA #$FF    ;255자 길이 0480     STA ICBLL,X ; 낮은 바이트 0490 ; 0500 ; CIO에게 연락하여 인쇄 0510 ; ----------------- 0520     JSR CIOV    ;Call CIO 0530     RTS         ;도스 종료 0540 ; 0550 ; 우리의 메시지 0560 ; ----------- 0570 MSG .BYTE "Hello WO WORLD!",EOL 0580 ; 0590 ; INIT RUN 주소 0600 ; ---------------- 0610     *=  러나드 0620     .WORD 시작 0630     .END 

이러한 명령은 대화형으로 입력하여 코드를 조립하고 디버거를 입력하며 프로그램을 실행한 후 디버거를 종료할 수 있다.

ASM BUG G600 X

레거시

셰퍼드슨이 아타리에게 어셈블러 에디터와 아타리 베이직스를 전달한 직후, 주인인 밥 셰퍼드슨은 1인 회사로 복귀하기로 결정했다.[19]오브라이언, 러플턴, 윌킨슨은 아타리 제품 개발을 지속하기 위해 자체 회사인 Oss(Optimized Systems Software)를 설립했다.그들은 그들이 일괄적으로 작성한 BASIC, Assembler Editor, Atari DOS원본 코드를 라이선스했다.[20]

1981년에 OSS는 플로피 디스크EASMD인 Assembler Editor의 개선된 버전을 발표했다.EASMD는 1982년에 MAC/65로 대체되었다.MAC/65는 플랫폼에서 가장 빠른 조립자 중 한 명이었다.[15]MAC/65의 성능 개선의 상당 부분은 아타리 베이직의 경우와 같이 입력된 코드 라인을 토큰화하여 조립 시간에 필요한 작업량을 줄인 결과물이다.[8]

조립러 에디터는 아타리에서 계속 판매되고 있으며, 1980년대 후반 10달러 또는 5달러까지 가격이 떨어지면서 인기가 높아졌다.[21]

참고 항목

참조

인용구

  1. ^ 매뉴얼 1981, 페이지 63.
  2. ^ Crawford, Chris (1982). Source Code for Eastern Front (1941). The ATARI Program Exchange.
  3. ^ The Creative Atari: Dog Daze and Caverns of Mars. 1983.
  4. ^ Crockford, Douglas (1982). Galahad and the Holy Grail Manual (PDF). The ATARI Program Exchange.
  5. ^ Ellison, Peter (April 1984). "Interview: Arti Haroutunian". ROM (5): 8.
  6. ^ a b c d 2015년 인터뷰.
  7. ^ Wilkinson, Bill (February 1985). "INSIGHT: Atari". Compute!. p. 139.
  8. ^ a b 헤이그 2009.
  9. ^ 매뉴얼 1981 페이지 15.
  10. ^ 설명서 1981, 페이지 7,31.
  11. ^ 매뉴얼 1981, 페이지 31.
  12. ^ 설명서 1981, 페이지 10-12.
  13. ^ 설명서 1981, 페이지 43-44.
  14. ^ 매뉴얼 1981, 페이지 25.
  15. ^ a b Wetmore 1983, 페이지 29.
  16. ^ 설명서 1981, 페이지 35.
  17. ^ 설명서 1981, 페이지 41.
  18. ^ 설명서 1981, 페이지 35-41.
  19. ^ 윌킨슨 1982, 페이지 vi.
  20. ^ 윌킨슨 1982년, vi-vi.
  21. ^ Ratcliff, Matthew (20 November 1989). "Atari Assembler Editor Reference".

참고 문헌 목록

외부 링크