터보 베이직 XL

Turbo-BASIC XL
터보 베이직 XL
Turbo-BASIC XL-1.5.png
Turbo-BASIC XL 1.5 부팅 화면
원저작자프랭크 오스트로프스키
초기 릴리즈1985년 12월, 36년 전(1985년-12년)
기입처6502 어셈블리
플랫폼Atari 8비트 패밀리

Turbo-BASIC XL은 Atari 8비트 패밀리 가정용 컴퓨터용 BASIC 프로그래밍 언어의 고급 버전입니다.Atari 8비트 시스템에 탑재된 Atari BASIC의 호환 슈퍼셋입니다.Turbo-Basic XL은 프랭크 오스트로프스키에 의해 개발되어 독일 컴퓨터 잡지 Happy Computer 1985년 12월호에 게재되었습니다.400/800 모델의 버전은 프로스트 베이직 1.4로 출시되었습니다.다른 DOS 시스템에서 작동하는 여러 수정 버전이 다른 저자에 의해 공개되었습니다.

Turbo-Basic XL은 Atari BASIC보다 실행을 대폭 개선합니다.Turbo-BASIC에 로드된 Atari BASIC 프로그램은 변경 없이 일반적으로 약 3배 빠르게 실행됩니다.Turbo-Basic XL 컴파일러는 바이너리 실행 파일을 생성하여 프로그램 성능을 Atari BASIC보다 약 10배 더 빠르게 만들었습니다.Turbo-Basic XL에는 확장 에디터, 명명된 프로시저 지원,WHILE...ENDWHILE및 이와 유사한 블록 구성 및 기본 하드웨어에 대한 액세스를 추가함으로써 DOS를 종료하지 않고도 연결된 플로피 드라이브를 작동할 수 있게 되었습니다.

Ostrowski는 곧 GFA Systemtechnik GmbH(당시 Integrential Hydrailik으로 알려짐)에 취직하여 Turbo-Basic XL을 Atari ST의 GFA BASIC으로 개조하여 플랫폼 상에서 가장 인기 있는 BASIC 중 하나가 되었습니다.

배경

1979년 출시된 이후 8비트 패밀리는 일반적으로 ROM 카트리지에 Atari BASIC 버전을 포함하거나 이후 기계에서는 내장 ROM에 내장되어 출하되었습니다.이 버전의 BASIC에는 그래픽스나 사운드 등 시스템의 고급 기능에 부분적으로 액세스할 수 있는 많은 커스텀 명령어가 포함되어 있습니다.David Ahl의 Creative [1]Computing 벤치마크의 오리지널 버전에서 마이크로컴퓨터 BASIC 목록의 맨 아래쪽에 있는 것으로 악명이 높았습니다.

공식 아타리 베이직의 저조한 실적은 더 나은 성능 또는 더 많은 명령어를 가진 서드파티 베이직 통역 시장을 이끌었다. 중에는 Atari가 판매하는 Microsoft BASIC의 공식 포트, Optimized Systems Software가 출시한 개량판 등이 포함되어 있습니다.Optimized Systems Software는 계약 하에 오리지널 Atari BASIC을 작성했습니다.다양한 벤더의 Atari BASIC 컴파일러도 몇 개 있었습니다.

Turbo-Basic XL은 1985년 12월에 타이프인 프로그램으로 처음 발표된 이 목록에 늦게 등록되었습니다.인터프리터 버전과 컴파일러 버전 모두 제공된다는 점에서 독특했습니다.여기에는 XL 시리즈 머신과 이후 XE 시리즈에서 사용할 수 있는 확장 메모리를 활용할 수 있는 코드가 포함되어 있습니다.이는 원래 400/800 시스템에서는 실행할 수 없음을 의미하며, 이로 인해 Ostrowski는 아타리 DOS 2.0에 연결된 Frost BASIC ("Frank Ostrowski"의 줄임말)로 알려진 포트를 만들었다.

내부 디스크 관련 명령어는 특정 버전의 DOS와 관련되어 있습니다.다양한 버전의 DOS에 대한 다수의 포트를 사용할 수 있게 되었습니다.

성능

Turbo-Basic의 가장 주목할 만한 특징은 속도가 극적으로 향상되었다는 것입니다. Turbo-Basic에 로드된 수정되지 않은 Atari BASIC 프로그램은 보통 3~5배 더 빠르게 실행되며 프로그램 크기가 커질수록 속도 이점이 향상됩니다.이것은 주로 원래의 Atari BASIC 코드의 잘 알려진 문제에 대한 일련의 개선 덕분입니다.

대부분의 BASIC에서 GOTO는 관련된 회선번호를 읽은 후 프로그램에서 해당 코드 행을 검색함으로써 처리되었습니다.MS에서 파생된 BASIC에서는 라인 번호는 16비트 정수와 숫자 상수로 코드 내에 원래 ASCII 형식으로 저장됩니다.라인이 같은 경우GOTO 1000이 검출되면 인터프리터는 특수 코드를 사용하여 "1000"을 16비트 형식으로 변환한 후 검색합니다.Atari BASIC은 다르게 동작하여 회선을 입력할 때 모든 숫자 상수를 6바이트 부동소수점 형식으로 변환했습니다.즉, "1000"은 더 이상 ASCII 형식이 아니므로 부동 소수점 형식에서 정수 형식으로 변환해야 합니다.이를 위한 코드는 적절하게 최적화되지 않았으며 2ms(평균 1-1.5ms) 이상 걸릴 수 있습니다.

FOR...NEXT 루프는 BASIC 프로그램의 또 다른 일반적인 구성입니다.대부분의 BASIC에서는 실행 시 FOR 부분이 발견되었을 때 소스 코드 내의 메모리 위치가 콜스택에 푸시되어 관련지어져 있는NEXT가 발견되었을 때 그 위치로 쉽게 돌아갈 수 있었습니다.알 수 없는 이유로 Atari BASIC은 FOR의 회선번호를 스택에 푸시하여 NEXT가 발생했을 때 그 회선의 코드 전체를 조사했습니다.BASIC에서는 자주 볼 수 있듯이, 대폭적인 루프가 발생한 프로그램의 경우, 이로 인해 퍼포먼스에 큰 타격을 줄 수 있습니다.

Turbo-Basic은 MS BASIC과 마찬가지로 주소를 사용하여 FOR 루프를 구현하여 MS와 거의 동일한 성능으로 루프를 실행하였고, GOTO 성능도 크게 개선하였습니다.회선번호는 해시함수로 전송되어 256행 청크로 분할되었습니다.프로그램 입력 시 이들 각 청크의 첫 번째 주소는 128 값 테이블에 저장됩니다.실행 시 회선 번호 검색이 필요한 경우 먼저 테이블에서 가장 가까운 값을 선택하고 주소를 취득한 후 그 시점부터 회선 스캔을 시작합니다.이러한 개선은 스캔 시간이 점점 더 비싸지고 있는 대형 프로그램에서 가장 두드러졌으며, 이것이 Turbo-Basic이 대형 프로그램에서 5배나 증가할 수 있는 이유입니다.

Atari BASIC의 성능 저하의 또 다른 주요 원인은 매우 느린 바이너리 코드 10진수(BCD) 부동 소수점 코드입니다.라이브러리는 별도의 2K ROM에 포함되어 BASIC 자체와는 달리 운영체제의 일부로 간주되어 급하게 작성되어 최적화되지 않았습니다.일부 루틴, 특히 곱셈 및 지수 함수는 가능한 것보다 훨씬 느렸습니다.

Turbo-Basic은 자체적인 완전한 부동소수점 라이브러리를 포함시킴으로써 이 문제를 해결했습니다.이 라이브러리는 이러한 문제의 많은 부분을 수정했을 뿐만 아니라 작은 루프를 풀어서 코드를 더욱 최적화했습니다.수학을 광범위하게 사용하는 프로그램의 경우 새로운 라이브러리는 Ahl 벤치마크 리스트의 하단에서 상단으로 Atari를 전송하여 하드웨어에서 훨씬 빠른 다수의 머신을 능가하는 획기적인 성능 향상을 실현했습니다.

신기능

Atari BASIC에 추가된 Turbo-Basic XL의 추가 기능은 다음과 같습니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ Ahl, David (November 1983). "Benchmark comparison test". Creative Computing. p. 260.

외부 링크