애플소프트 베이직
보이기
원저자 | Marc McDonald, Ric Weiland |
---|---|
발표일 | 1977년 |
안정화 버전 | 애플소프트 II
/ 1978년 |
운영 체제 | 애플 II 시리즈 |
종류 | 마이크로소프트 베이직 |
상태 | 미지원 |
애플소프트 베이직(Applesoft BASIC)은 정수 베이직에 이어 두 번째로 애플 2 컴퓨터에 내장된 베이직 프로그래밍 언어로 마이크로소프트가 공급했다.
역사와 기능
[편집]애플은 48KB 램의 애플 2 컴퓨터에 적재할 새로운 베이직을 찾고 있었고 알테어 베이직으로 성공한 마이크로소프트를 선택했다. 애플은 10KB 어셈블리어 베이직을 "애플소프트"란 이름으로 계약하였다. 어셈블리어 코드를 공유하였기 때문에 코모도어 베이직과 같은 다른 6502 기반 컴퓨터의 베이직 구현과 매우 흡사했다. 행 번호가 있었고 각 행은 공백 기호가 필요하지 않았으며 반복문은 매우 느렸다. 그럼에도 애플소프트 베이직은 이전의 열악한 정수 베이직보다 더 많은 기능을 제공하였다.
- 원자적인 문자열. 문자열은 더 이상 C언어와 같이 문자형의 배열이 아니었다. 대신에 자바나 스킴과 같이 메모리 수거 객체를 사용했다. 이것은 문자열 배열의 사용이 가능하게 했다. DIM A$(10)은 문자열 배열의 10개짜리 동적 배열 자료 구조, 즉 벡터가 되었다.
- 다차원 배열
- 8비트 지수와 31비트 유효수를 가지는 단정밀도 부동소수점 변수. 삼각법의 사용이 가능했다.
- 고해상도 영상
- 수치형과 문자열의 변환을 위해 CHR$, ASC, STR$, VAL 함수 제공.
- LET 문이 부차적으로 가능했다.
- 사용자 지정 함수: DEF FN문을 이용하고, 파라메터는 한 개만 제공.
- PEEK와 POKE문을 이용해서 메모리 직접 제어 가능.
- 명령어는 대문자만 사용이 가능하며 (문자열에는 소문자도 사용 가능), 행 번호를 다시 정렬해주는 RENUM 기능은 없다.
게임
[편집]그러나 몇 가지 이유로 애플소프트 베이직으로 만들어진 액션 게임은 거의 없었다.
- 당시에는 제한된 메모리와 CPU 클록을 조심스럽게 사용하던 시대였기 때문에, 게임같은 속도에 민감한 프로그램을 실시간 인터프리터로 작성하는 것을 비효율적인 일로 여겼다.
- 애플소프트 베이직은 산술 연산을 위해 정수 대신 실수를 사용하였다. 이것이 프로그램 수행에 불필요한 오버헤드의 원인이 되어, 전체 프로그램의 효율을 떨어뜨렸다. 모든 정수형 수치는 산술 연산을 위해 실수형으로 변환되었고 계산 후에 정수형 수치로 변환되었다. 마이크로소프트는 이를 결코 최적화하지 않았다.
- 비트맵 대신에 모양 구성표(영어: Shape Table)만 제공되었다. 영상 하단에 4줄의 텍스트가 붙는 "하드웨어 분할 화면" 이외에 텍스트와 그래픽을 동시에 출력할 방법이 없었다. 128KB의 메모리를 가졌던 애플 2e와 애플 2c의 베이직 인터프리터도 여분의 메모리나 배정밀도 그래픽을 지원하지 않았고 애플2GS의 16 색상도 지원하지 않았다. (비글 브로스는 이 문제의 해결을 위해 기계어 코드를 제공했다.)
- 프로그램의 각 행은 연결 리스트에 저장되어서 Goto의 계산에 O(n) (선형) 시간이 걸렸다.
- 음향에 관한 기능을 제공하지 않았다.
- 소스 비공개 운동이 일어났다. 소프트웨어 개발사들은 인터프리터 소스보다 컴파일된 바이너리를 수정하기 어렵다는 것을 인지했다.
주요 게임
[편집]Hello World
[편집]애플소프트 베이직의 Hello World는 다음과 같다.
10 PRINT "HELLO, WORLD"
애플소프트 베이직만의 형태를 살려서 프로그램을 짜면 다음과 같다.[3]
10 TEXT:HOME 20 ?"HELLO WORLD"