애플 도스

Apple DOS
애플 도스
Apple DOS.png
Hello World 프로그램을 실행하는 Apple 컴퓨터
개발자애플 컴퓨터
기록 위치조립[1]
OS 제품군애플 도스
작업 상태중단됨
소스 모델폐쇄원
초기 릴리즈1978; 44년 전 (1998년)
최신 릴리즈3.3 / 1980; 42년 전 (1998년)
커널형모놀리스 커널
면허증Apple 소프트웨어 라이센스 계약

애플 DOS는 1978년 말부터 1983년 초까지 애플 II 시리즈 마이크로컴퓨터디스크 운영체제 제품군이다.1983년에 ProDOS로 대체되었다.애플 DOS는 DOS 3.1, DOS 3.2, DOS 3.3의 세 가지 주요 릴리즈를 가지고 있다. 이 세 가지 릴리즈 각각은 두 번째, 사소한 "버그 픽스" 릴리즈가 뒤따랐지만, 애플 DOS 3.2의 경우에만 마이너 릴리즈가 자체 버전 번호인 애플 DOS 3.2.1을 받았다.가장 잘 알려져 있고 가장 많이 사용된 버전은 1980년과 1983년 출시된 애플 DOS 3.3이다.애플 DOS 3.1이 출시되기 전, 애플 사용자들은 데이터 저장과 검색을 위해 오디오 카세트 테이프에 의존해야 했다.

버전 이력

애플컴퓨터가 1977년 4월 애플2를 선보였을 때 새 컴퓨터에는 디스크 드라이브나 디스크 운영체제(DOS)가 없었다.애플의 공동 창업자인 스티브 워즈니악이 그해 말 디스크 II 컨트롤러를 디자인했고, DOS를 쓸 수 있었다고 믿었지만, 그의 공동 창업자인 스티브 잡스는 이 작업을 아웃소싱하기로 결정했다.회사는 디지털리서치 CP/M 활용을 검토했지만 워즈니악은 사용이 간편한 운영체제를 추구했다.1978년 4월 10일 애플은 셰퍼드슨 마이크로시스템스와 도스(DOS)를 작성해 35일 이내에 납품하는 1만3000달러 계약을 체결했다.애플은 세부 사양을 제시했고, 초기 애플 직원 랜디 위긴튼은 셰퍼드슨이 펀치 카드미니컴퍼터로 운영체제를 작성하면서 셰퍼드슨의 폴 러플턴과 긴밀히 협력했다.[2]

애플 DOS 1, 2는 없었다.0.1에서 2.8까지의 버전은 개발 중에 연속적으로 열거된 개정판으로, 빌드 1에서 28까지라고 불릴 만도 했다.애플 도스 3.0은 버전 2.8로 개칭된 이슈로 버그 때문에 공개되지 않았다.애플은 3.2 출시 전까지 공식 문서를 발표하지 않았다.[3][4]

애플 DOS 3.1은 애플 II가 도입된 지 1년이 조금 넘은 1978년 6월에 공개되어 애플 컴퓨터의 최초의 디스크 기반 운영체제가 되었다.나중에 버그 픽스가 출시되어 문제를 해결했다.MASTER CREATEApple DOS 마스터(부팅 가능) 디스크를 생성하는 데 사용된 유틸리티:빌트인INIT명령은 디스크를 생성한 디스크와 메모리의 양이 적어도 동일한 시스템에서만 부팅할 수 있는 디스크를 생성했다. MASTER CREATE모든 메모리 구성으로 Apple에서 부팅되는 DOS 자동 재배치 버전을 포함.

애플 DOS 3.2는 애플 II의 후속 제품인 애플 II 플러스에 내장된 컴퓨터 부팅 방법의 변화를 반영하기 위해 1979년에 출시되었다.새로운 펌웨어에는 "Autostart ROM"이라는 이름을 붙이면서 시스템 전원이 켜질 때 자동으로 디스크 컨트롤러를 찾아 부팅하는 자동 시작 기능이 포함되었다.[citation needed] 그 후 DOS 3.2.1은 1979년 7월에 약간의 사소한 버그 수정으로 출시되었다.[5]

애플 DOS 3.3은 1980년에 출시되었다.그것은 3.2 릴리즈의 다양한 기능을 향상시키는 동시에 가용 플로피 디스크 스토리지에서도 많은 이득을 얻을 수 있게 해준다; 디스크 컨트롤러의 새로운 P5A/P6A PROM은 더 높은 밀도로 데이터를 읽고 쓸 수 있게 하여, 13 섹터(3.25 KiB) 대신 디스크 트랙당 16 섹터(4KiB)의 데이터를 저장할 수 있게 되어, 용량이 11개에서 증가되었다.디스크 측면당 3.75KB ~ 140KB – 이 중 16KB는 DOS 3.3 포맷 디스크에서 파일 시스템 오버헤드와 DOS 복사본에 사용되며, 사용자 프로그램과 데이터에 124KB가 남는다.그러나 DOS 3.3은 역호환성이 아니며 DOS 3.2 디스크를 읽거나 쓸 수 없다.이 문제를 해결하기 위해 애플 컴퓨터는 "MUFFIN"이라는 유틸리티를 출시하여 애플 DOS 3.2 파일과 프로그램을 버전 3.3 디스크로 마이그레이션했다.애플은 결코 다른 방향으로 복사하는 유틸리티를 제안하지 않았다.Apple DOS 3.3 파일을 버전 3.2 디스크로 다시 마이그레이션하기 위해 누군가가 "NIFFUM" 유틸리티를 작성했다.또한 파일을 복사 II Plus와 같은 상업적 유틸리티(Copy II Plus와 같은)도 있다.또한 릴리즈 3.3은 컴퓨터에 언어 카드(RAM 확장) 또는 펌웨어 카드가 있는 경우 Integer BASIC과 Appleoft BASIC을 전환하는 기능을 향상시킨다.

기술적 세부사항

애플 DOS 3.1 디스크는 트랙당 13개 섹터의 데이터를 사용하며, 각 섹터는 256 B이다.디스크 측면당 35개의 트랙을 사용하며, 사용자가 디스크를 뒤집지 않는 한 플로피 디스크의 한쪽 면에만 접근할 수 있다.이를 통해 사용자에게 측면당 총 저장용량은 113.75KB이며, 이 중 약 10KB가 DOS 자체와 디스크 디렉토리를 저장하는 데 사용되어 사용자 프로그램용으로 약 100KB가 남는다.

운영체제의 첫 번째 레이어는 "읽기/쓰기 트랙 섹터"를 나타내는 RWTS라고 불린다.이 계층은 선로 탐색, 섹터 읽기 및 쓰기, 디스크 포맷을 위한 서브루틴으로 구성된다.이 위에 File Manager라는 API가 구축되어 있으며, 파일 열기, 닫기, 읽기, 쓰기, 삭제, 잠금(즉, 쓰기 방지), 잠금 해제(즉, 쓰기 실행) 및 파일 이름 변경, 파일 구조 무결성 확인 등의 기능을 구현하고 있다.디스켓에 파일을 나열할 수 있는 카탈로그 기능, DOS와 함께 사용할 디스크를 포맷하는 「init」 기능, DOS의 사본을 처음 3개 트랙에 저장, 이 디스크를 부팅할 때 자동으로 시작되는 스타트 프로그램(보통 HELLO라고 함)을 저장하는 「init」 기능도 있다.File Manager API 위에는 기기의 BASIC 인터프리터에 후크되어 모든 디스크 명령을 가로채는 메인 DOS 루틴이 구현된다.BLOAD, BSAVE, BRUN을 제공하여 이진 실행 파일을 저장, 로드 및 실행한다.기본 프로그램에는 LOAD, RUN, SAVE가 제공되며, BASIC 및 DOS 명령으로 구성된 텍스트 기반 배치 파일을 실행할 수 있는 EXEC가 제공되었다.마지막으로 카탈로그 목록의 문자로 식별되는 네 가지 유형의 파일이 존재한다.

파일 형식은 "R", "S" 및 추가 "A"와 "B"의 네 가지가 추가되는데, 이 중 어느 것도 완전히 지원되는 것은 없다.DOS는 카탈로그 목록에만 이러한 유형을 인식하며 이러한 유형의 파일을 직접 조작할 수 있는 방법은 없다."R" 유형은 다시 연결 가능한 이진 실행 파일에 대해 일부 용도를 찾았다.일부 프로그램은 "S" 유형을 데이터 파일로 지원한다.

$03D0–03 범위의 콜 벡터 표FF는16 프로그램이 시스템 메모리에 로드되는 모든 곳에서 DOS를 찾을 수 있도록 한다.예를 들어, BASIC CLI에 연결된 DOS가 작동을 멈추면 위치 $03D016 (97610)를 호출하여 다시 초기화할 수 있으므로 기존의 "3D0G"("3D0 go") 명령을 사용하여 시스템 모니터에서 BASIC으로 복귀할 수 있다.

부트로더

애플 DOS 로딩 과정에는 일련의 매우 작은 프로그램들이 포함되는데, 각각의 프로그램들은 체인의 다음 프로그램으로 제어권을 넘기기 전에 로딩 과정을 몇 단계 앞당긴다.

  • 원래 애플 II ROM은 디스크 부팅을 전혀 지원하지 않았다.전원을 켤 때 시스템 모니터 프롬프트가 표시된다.모니터와 정수 베이직 모두 지정된 슬롯에 있는 프린터 드라이버로 인쇄를 리디렉션하는 명령을 가지고 있으므로, 디스크에서 부팅하는 기존의 방법은 일반적으로 슬롯 6에 설치된 디스크 인터페이스 카드에 명령 6 Control-P(ML 모니터에서) 또는 PR#6(BASIC에서)를 사용하여 "인쇄"를 시작하도록 명령하는 것이었다.모니터 또는 BASIC이 다음 프롬프트 문자를 발행할 때 컴퓨터는 디스크 카드의 ROM 루틴을 호출하여 "인쇄"한 다음 부팅 순서를 진행하게 된다. (입력 리디렉션을 유사한 끝으로 사용할 수 있다.)또는 ML 모니터에서 슬롯 번호를 입력하여 C600G를 입력하여 컨트롤러의 부팅 코드를 직접 호출할 수 있다.
  • 애플 II 플러스가 도입될 때 각 확장 슬롯(7번 슬롯부터 1번 슬롯까지 아래쪽으로 작동)을 스캔하여 부팅 가능한 확장 카드 ROM을 자동으로 호출하는 기능이 포함되었다.
  • 확장 카드 ROM 부트 코드는 읽기/쓰기 암을 트랙 0으로 이동하고 해당 트랙의 섹터 0에서 256바이트를 읽으려고 시도하여 컨트롤러의 드라이브 1에서 부팅을 시도한다. (읽을 수 있는 디스크가 없는 경우, 드라이브는 한 개가 제공되고 드라이브 도어가 닫힐 때까지 무한정 회전한다.)
  • 섹터 0에는 ROM 부팅 코드(프로세스에서 섹터 0을 다시 읽는 섹터)의 일부를 사용하여 컴퓨터가 트랙 0의 섹터 0~9를 메모리로 읽도록 지시하는 작은 프로그램이 포함되어 있다.
  • 전체 RWTS 코드를 포함하여 트랙 0의 섹터 1~9에 있는 프로그램은 나머지 DOS를 포함하는 트랙 1과 2를 로딩한다.시스템 마스터 디스크에서는 컴퓨터의 RAM 구성을 결정하고 Apple II의 메인 메모리($BFFF16)의 최대 48KB 제한까지 DOS를 시스템 메모리로 재배치하는 코드도 포함되어 있다.
  • DOS가 메모리에 로드되면 DOS 프로그램 코드에 표시된 대로 시동 프로그램을 로드하고 실행하려고 시도한다.이것은 일반적으로 HELLO(또는 다른 이름)라는 BASIC 언어 프로그램이지만 DOS는 실행 가능한 이진 파일과 같은 다른 유형의 프로그램을 시작 시 실행하도록 수정할 수 있다.화면에 나타난 오른쪽 괄호(]는 Appleoft BASIC 시작 프로그램이 로딩 중임을 사용자에게 알리는 표시인 반면, 큰 기호(>)는 정수 BASIC 프로그램이 로딩 중임을 나타낸다. (이것은 이 시점에서 초기화되고 있는 각 BASIC 버전에 대한 프롬프트들이다.)
  • 그러면 시작 프로그램이 실행을 시작한다.

정수 BASIC 및 Appleoft BASIC 지원

원래의 Apple II는 원래 Apple BASIC으로 알려진 ROM에 BASIC 통역을 포함하였고, 나중에 Integer BASIC으로 알려졌다.이 언어의 변수는 -32,768 ~ +32,767(16비트 이진수 값) 범위의 정수만 처리할 수 있으며 부동 소수점 번호는 지원되지 않는다.애플은 마이크로소프트에 부동 소수점 처리가 가능한 애플소프트 베이직 개발을 의뢰했다.[6]Appleoft BASIC은 Integer BASIC 프로그램을 실행할 수 없어 일부 사용자들이 BASIC로의 업그레이드를 거부하게 한다.

도스 3.3은 애플소프트 BASIC이 Apple II Plus의 ROM에서 표준일 때 출시되었기 때문에, 애플은 두 개의 BASIC 통역사를 오가는 것을 지원하도록 설계했다.정수 BASIC은 Apple II의 언어 카드에 있는 RAM에 로딩되며(있는 경우), BASIC에서 FP 또는 INT를 입력하면 사용자는 두 버전 중 하나를 전환할 수 있다.

사양

1980년 이후 애플이 불운한 애플 III 컴퓨터와 SOS 운영체제(OS)에 힘을 집중하면서 애플 DOS는 정체기에 접어들었다.애플 DOS의 두 버전은 여전히 DOS 3.3으로 불리고 있지만, 버그 수정과 새로운 애플 IIe 모델에 대한 더 나은 지원을 통해 1983년 초와 중반에 출시되었다.

타사 패치가 없으면 애플 DOS는 5.25인치 디스크 II 드라이브에서 실행 중인 플로피 디스크만 읽을 수 있고 하드 디스크 드라이브, 가상 RAM 드라이브 또는 3.5인치 플로피 디스크 드라이브와 같은 다른 미디어에는 액세스할 수 없다.Apple DOS 디스크(특히 단일 섹터로 제한되었던 자유 섹터 맵)의 구조는 코드 거의 모든 부분을 다시 작성하지 않고는 드라이브당 한 번에 400KB 이상을 사용할 수 없는 구조로, Apple DOS가 1983년 이 반복 작업을 포기했던 주된 이유다.ProDOS로 완전히 대체되었다.

ProDOS는 5.25인치 디스크용 DOS 3.3의 16 섹터 로우 레벨 포맷을 유지하지만, 최대 32MB의 장치에 적합한 새로운 하이 레벨 포맷을 도입하여 그 시대의 하드 디스크와 3.5인치 플로피에 적합하다.II Plus의 모든 Apple 컴퓨터는 DOS 3.3과 ProDOS를 모두 실행할 수 있으며, ProDOS는 ProDOS를 사용하기 위해 "Language Card" 메모리 확장이 필요한 Plus이다. e 및 이후 모델에는 언어 카드 하드웨어가 내장되어 있으므로 ProDOS를 바로 실행할 수 있다.ProDOS에는 Apple DOS 디스크에서 파일을 복사하는 소프트웨어가 포함되어 있다.그러나, ProDOS의 개선이 필요하지 않은 많은 사람들(그리고 그것의 훨씬 더 높은 메모리 공간을 좋아하지 않는 사람들)은 1983년 이후에도 Apple DOS나 그것의 복제품 중 하나를 계속 사용했다.모든 플로피 디스크에 부팅 가능한 OS를 저장한다는 애플 규약은 사용자가 어떤 OS를 소유하든 상용 소프트웨어를 사용할 수 있다는 것을 의미한다.DOS라는 프로그램.MASTER는 사용자가 더 큰 ProDOS 볼륨에 여러 개의 가상 DOS 3.3 파티션을 가질 수 있게 해주며, 하드 디스크와 함께 많은 플로피 기반 DOS 프로그램을 사용할 수 있게 해준다.

애플은 프로DOS가 나온 직후 제3자로부터 DOS 3.3 재분배 허가를 철회했지만 DOS 3.3 재판매 독점 라이선스인 신디콤 1개사를 허가했다.[7]

상업용 게임은 보통 애플 DOS를 사용하지 않고 대신 성능뿐만 아니라 복사 보호 목적으로 자체 사용자 정의 디스크 루틴을 가지고 있었다.

성능 향상

DOS의 RWTS 루틴은 적절한 인터리빙으로 두 번의 회전으로 트랙을 읽거나 쓸 수 있다.회전 디스크의 섹터는 RWTS 루틴이 just-read 섹터를 디코딩하는 동안 읽기/쓰기 헤드 아래를 통과하며(또는 다음 번 쓰일 섹터를 인코딩하는 동안), 그리고 만약 이 누락된 섹터가 다음에 필요한 것이라면 DOS는 섹터가 다시 돌아오려면 디스크의 거의 전체 혁명을 기다려야 한다.이를 "rev를 터뜨리는 것"이라고 하며 디스크 시스템의 성능 병목 현상을 잘 이해한 것이다.이를 방지하기 위해 DOS 디스크의 섹터는 인터리브된 순서로 배열된다.[8]

0 7 e 6 d 5 c 4 b 3 a 2 9 1 8 f

나중에 ProDOS는 섹터를 다음과 같은 순서로 배열했다.[8]

0 8 1 9 2 a 3 b 4 c 5 d 6 e 7 f

섹터 0을 읽고 디코딩하면 섹터 8이 지나가기 때문에 다음 섹터인 섹터 1이 필요할 것 같은 섹터를 기다리지 않고 사용할 수 있게 된다.섹터 7을 읽을 때, 필요 없는 두 섹터인 f와 0이 섹터 8이 나오기 전에 지나가고 섹터 15를 읽을 때, 드라이브는 항상 같은 트랙에서 섹터 0에 대한 추가 혁명을 기다려야 한다.그러나 대부분의 경우 실제로 필요한 섹터 0은 차상위 트랙에 있을 것이며, 그 트랙은 막 읽은 섹터를 해독하고 섹터 0이 나오기 전에 헤드를 이동하는 데 필요한 시간을 허용하기 위해 마지막 섹터에 상대적으로 배열될 수 있다.평균적으로 풀 트랙은 디스크의 두 바퀴 회전으로 읽을 수 있다.

불행하게도 초기 DOS File Manager는 디스크 버퍼와 메인 메모리 사이에서 한 번에 하나씩 읽거나 쓰는 바이트를 파일로 복사하여 이러한 효율성을 저하시켰고, 그 결과 파일을 읽거나 쓸 때 DOS가 지속적으로 회전하는 결과를 낳았다.[9]섹터 인터리브가 변형된 디스크를 포맷할 수 있는 프로그램이 일찍부터 제공되었다. 이 디스크들은 섹터들 사이에서 데이터를 복사하는 시간을 더 많이 주어 문제를 개선시킨다.

나중에 Apple 외부의 프로그래머들은 파일의 대부분의 섹터에 대한 추가 복사본을 만들지 않기 위해 File Manager 루틴을 다시 썼다; RWTS는 전체 섹터가 전송될 때마다 디스크 버퍼에서가 아니라 메인 메모리에서 섹터를 직접 읽거나 쓰도록 지시받았다.이 기능을 제공하기 위한 초기 "패치"가 Call-A.P.P.L.E에 발표되었다.LOAD 명령의 3~5회 속도 업이 대표적이었다.

이 기능은 곧 추가 기능과 함께 Proronto-DOS, Diversi-DOS, Hyper-DOS, David-DOS와 같은 상용 제품에서 등장했지만, Apple DOS 공식 출시에서는 결코 사용되지 않았다.그러나 애플의 후속 운영체제인 ProDOS에도 유사한 기능이 채택되었다.애플 IIGS 고유의 운영 체제 GS/OS는 파일을 읽기 위해 필요하다면 읽기 헤드 아래에 우연히 지나가는 모든 섹터를 읽을 수 있는 훨씬 더 효율적인 "스크래터 읽기" 기법을 채택할 것이다.

소스 코드 릴리스

애플2가 데뷔한 지 35년이 넘은 2013년, 컴퓨터 히스토리 박물관에 의해 애플 DOS 원본 코드가 홈페이지에 공개되었다.[10]원작자인 폴 러플턴이 기증한 것이다.[11]

참조

  1. ^ Apple II DOS - 소스 코드
  2. ^ Terdiman, Daniel (2013-04-03). "The untold story behind Apple's $13,000 operating system". CNET. Retrieved April 4, 2013.
  3. ^ "Apple Computer". Laughton.com. Retrieved 2013-06-14.
  4. ^ "Apple II History » 14-DOS". Apple2History.org. Archived from the original on 2010-07-10. Retrieved 2013-06-14.
  5. ^ "Apple II History » 14-DOS". Apple2History.org. Archived from the original on 2010-07-10. Retrieved 2013-06-14.
  6. ^ Steven Weyhrich. "Apple II History Chapter 16". Archived from the original on 29 January 2009. Retrieved 2009-01-26.
  7. ^ Dean Esmay. "Even Apple Used Pirate Tools". Archived from the original on 25 July 2011. Retrieved 2011-08-11.
  8. ^ a b "About the archive formats". Retrieved 26 April 2012.
  9. ^ DOS 3.3, ProDOS & Beyond v1.3 탄환 07월 01일
  10. ^ Shustek, Len (2013-11-12). "Apple II DOS source code". ComputerHistory.org. Retrieved 2013-11-30.
  11. ^ "Apple II's 35-year-old operating system is now open to the public". November 13, 2013.

추가 읽기

  • Worth, Don; Lechner, Pieter (1981), Beneath Apple DOS, Quality Software, ISBN 0-912985-00-3

외부 링크