|
Patrick Davidson
Translated by enboys
원저작자로부터 이 글의 번역에 대해 허락을 득했으며, 원저작자인 Patrick Davidson은 오래된 내용이 다소 포함되어 있으니 주의하라는 메시지를 당부했습니다.
제가 번역을 하며 오래된 내용을 조금씩 수정했습니다만, 다소 실제와 다른 오래된 내용이 있을 수 있으므로 주의해가며 읽어주시길 바랍니다.
번역물에 대한 저작권은 저에게 있습니다. ;)
- 요약 - 세세한 내용까지 필요없는 사람들을 위해!
- 계산기에 프로그램을 전송하려면 어떻게 해야하죠?
- "nostub"과 kernel-using ("doors") 프로그램의 차이점이 무엇이죠?
- 프로그램은 어떻게 실행하나요?
- "ASAP or exec string too long"라는 메시지의 에러가 뜨는데, 어떻게 해야하죠?
- 내 계산기의 하드웨어(HW)와 AMS 버전을 어떻게 알수있죠? 그리고 도대체 AMS가 뭐죠?
- 같은 TI-89라도 버전이 여러 종류가 있는데, 차이점이 각각 뭔가요?
- 커널(kernels)과 쉘(shells)이 뭔가요? 쉘(shell)과 커널(kernel)의 차이점은 뭔가요?
- 저는 어떤 커널을 써야하죠? 그리고 커널을 어떻게 사용하죠?
- 왜 PreOS가 최상의 선택이죠? 왜 DoorsOS(또는 다른 구식 커널)를 사용해선 안되죠?
- 어디서 쉘(shell)을 구할 수 있죠?
- 라이브러리(libraries)는 뭐죠? 그리고 제가 그걸 어떻게 활용할 수 있나요?
- HW2Patch와 HW3Patch는 뭔가요? 또 언제 어떻게 사용해야 하죠?
- 어디서 이전 AMS 버전들을 구할 수 있을까요?
- 프로그래머들이 AMS 를 완벽히 대체할 만한 소프트웨어(혹은 운영체제)를 만들어내는게 가능한가요?
- 내 계산기의 HW version을 바꿀 수 있나요?
- "Invalid Relocation Data in ASM Program" 라고 에러 메시지가 떠요! 어떻게 해야되죠?
- 내 계산기는 가끔씩 그냥 갑자기 꺼져요. 어떤 프로그램에 버그가 있는건가요? 어떻게 해야되죠?
- 계산기가 멈춰버리거나, 화면 맨 위에 검은색 줄이 생기면서 크래쉬가 나요. 어떻게 하죠?
- 어떻게 하면 계산기에 크래쉬가 났을 때에도 데이터들이 지워지지 않도록 보호할 수 있죠?
- "Source Guru" 변환 프로그램이 뭐죠?? 이걸 써도 괜찮을까요?
- 계산기용 어셈블리(assembly) 프로그램을 만들고 싶은데, 어떻게 해야하죠?
- 내 HW2 계산기에서 깜빡임을 멈추게 하려면 어떻게 해야하죠?
- .89k (혹는 .9xk)라는 확장자를 가진 프로그램이 필요한데, .89z (또는 .9xz) 라는 확장자를 가진 것들밖에 찾을 수가 없어요. 어떻게 해야하죠?
- 파일을 저장할 때 RAM으로 해야하나요, 아니면 archive로 해야하나요?
- .89y랑 .9xy 파일은 뭔가요? 계산기에서 ppg 종류로 나타나는 이 파일들이 뭐죠?
- 어떤 프로그램을 Voyage 200 계산기에서 실행할 수 있죠?
- TI-89 Titanium에서 TI-89용 프로그램을 실행하려면 어떤 어셈블리 프로그램이 필요한가요?
- TI-89 Titanium에서 실행이 되지 않는 프로그램이 있는데, 왜 그렇죠?
- TI-89 Titanium 이 한번 인식되었다가, 그 이후로 컴퓨터에 인식이 안돼요. 어떻하죠?
요약 - 세세한 내용까지 필요없는 사람들을 위해!
이 섹션은 TI 계산기에서 거의 모든 asm program을 작동시키기 위해 필요한 단계들을 요약하고 있다. 이 섹션 이후부터는 이것들에 대한(그리고 다양한 작은 이슈들에 대한) 보다 자세한 내용을 다룬다.
-
먼저, 어떻게 프로그램을 실행하는지 배워보자. TI-89와 TI-89 Titanium용 파일들은 .89로 시작하는 확장자를 가지고 있고, TI-92 Plus와 Voyage 200용 파일들은 .9x (특별히 Voyage 200만을 위한 소수의 파일들은 .v2로 시작하는 확장자를 가짐)로 시작되는 확장자를 가지고 있다. 명심해야 할 것은, 프로그램 파일과 같이 들어있던 데이터 파일들 역시 빼놓지말고 함께 전송해야 한다는 것이다.
계산기에 프로그램 전송하는 방법 보기
계산기에서, 프로그램을 실행하는 것은 베이직(basic)이나 어셈블리(assembly) 프로그램과 동일하다; 프로그램명을 입력하고, 괄호()를 입력한 후 enter를 누른다. 예를들면, 만약 프로그램명이 mercury 라면 mercury() 라고 입력한 후 enter를 누르면 실행된다. 만약 커널이나 인스톨(install)이 필요없는 프로그램이라면, 또 가지고 있는 계산기와 완벽히 호환되는 프로그램이라면, 이게 프로그램을 실행하기 위해 필요한 지식의 전부다.
만약 당신 프로그램명 전부가 기억나지 않는다면, var-link 메뉴에서 선택해 줄 수 있다. 또한, 프로그램들을 archive해 줄 때도, var-link 메뉴를 사용할 수 있다. 메모리를 리셋했을 경우에도 archive 메모리는 남아있기 때문에, 프로그램들을 archive 시켜놓는 것이 일반적인 최상의 보관법이다. -
다음으로, 계산기에 HW3Patch 를 인스톨(install)해보자.
HW3patch 파일을 계산기로 전송하고 한번 실행해 주는 게 전부다. HW3Patch가 모든 사람들에게 필수적인 것은 아니지만, 그렇다고 해서 이걸 필요치 않는 사람에게 어떠한 피해도 입히지 않으므로, 필요한지 아닌지 확신이 서지 않는다면, 일단 위에서 말한대로 따라서 설치하는게 좋다. 일단 한번 HW3Patch를 한번 실행해줬다면, 전송한 그 파일을 지워도 괜찮다. 왜냐하면 HW3Patch는 AMS 자체를 수정한 것이라서 심지어 계산기를 리셋한다고해도 효과가 남아있기 때문이다. 그렇지만 만약 AMS(운영체제-operating system)를 재설치했다면, HW3Patch 역시 다시 실행해주어야 한다.
(역자주:최근 판매되는 TI-89 Titanium은 HW4인 경우도 있는데, HW4일 경우 반드시 HW3Patch v1.03을 설치해야 합니다.) -
그 다음으로, 계산기에 PreOS 를 인스톨(install)해보자. 그러기 위해선, PreOS와 stdlib 파일들을 계산기에 전송한 후, 전송한 파일들을 archive 시킨 후에, PreOS를 실행하자. 이 과정들을 준수해야하며, 만약 계산기가 리셋되었다면, (PreOS를 다시 실행함으로써) 다시 인스톨(install)해 줄 필요가 있다. PreOS 역시 반드시 필수적인 것은 아니지만, 마찬가지로 설치한다고 해서 아무런 피해도 주지 않으므로, 확신이 서지 않는다면 일단 설치하도록 하자.
-
만약 가지고 있는 기종이 TI-89 Titanium 이라면, Ghostbuster 역시 인스톨(install)해주어야 하고, 모든 asm program마다(Ghostbuster 자기 자신과 위에서 언급한 HW3Path, PreOS만 제외하고) 실행해 주어야 한다. Ghostbuster 은 인수(argument)로 결과물로서 내보낼 프로그램명(program name)을 요구한다(또는 "" 을 입력하면 원본에 덮어씀); 만약 oldgame 이라는 프로그램이 있다면, ghostb("oldgame","") 라고 입력하면, 계산기는 oldgame의 수정된 버전을 원본에 덮어쓸 것이다. Ghostbuster는 TI-89 Titanium에 호환되지 않는 프로그램들을 호환되도록 수정한다. 만약 Ghostbuster로 수정하지 않았음에도 프로그램이 정상동작한다면, 그 프로그램은 굳이 GhostBuster로 수정할 필요가 없지만, 수정해 준다고해도, 어딘가 잘못되거나 하진 않는다.
- 위에서 언급한 것들을 한번 해준다면, 계산기에서 거의 대부분의 asm program 들이 정상적으로 잘 실행될 것이다. 일부 프로그램 중 하나에서 크래쉬가 났다면, TI-89/TI-89 Titanium의 경우 2nd, left, right, on 키를 동시에 눌러 계산기를 리셋한다.(TI-92 Plus/Voyage 200의 경우 2nd, hand, on 키를 동시에 누른다.) 이렇게 해도 리셋이 되지 않고 여전히 크래쉬가 난 상태라면, 배터리 하나를 뺀 후에, down과 on 키를 누른채로 다시 그 배터리 하나를 끼운다. 만약 그래도 여전히 크래쉬에서 빠져나오지 못한다면, backup battery를 포함해서 모든 battery를 제거했다가 다시 끼운다. 중요한 것은 반드시 모든 battery에 대해 동시에 수행해야 한다는 것이다.
위에서 언급한 것이 필수적인 모든 것이다. 그렇지만, 여전히 범할 수 있는 흔한 실수가 남아있기 때문에, 미리 그 실수를 피할 수 있는 방법들에 대한 목록을 준비했다.
-
DoorsOS를 사용하려고 하지말라. DoorsOS는 심각하게 구형 OS이고, 또 이걸 사용하려든다면 수많은 문제점이 생기는 엄청난 댓가를 치뤄야 할 것이다. 만약 누군가 "doors" 혹은 "doorsos" 프로그램에 대해 이야기해 줄지라도, 당신이 DoorsOS를 써야한다는 것을 의미하지 않는다. 이것은 TEOS와 (DoorOS와 TEOS만큼 구형은 아니지만) Universal OS, TitaniK, 그리고 Iceberg 역시 마찬가지이다.
-
(ASM 혹은 C로 제작된) 일반 프로그램과 플래시 어플리케이션(flash apps)을 혼동하지 말라. 플래시 어플(flash apps)을 전송할 때 메뉴 아이템이나 버튼으로 (ASM 혹은 C로 제작된) 일반 프로그램(주로 .89z 혹은 .9xz의 확장자를 가짐)을 계산기로 전송하려고 하지 말라.
(역자주 : 이 문제는 TI-Connect 대신 Graph-Link를 사용할 때, 초보들이 만나기 쉬운 문제입니다. Graph-Link 에서 프로그램을 전송할 때 플래시 어플리케이션을 전송하려고 시도하는 경우가 많은데, 그것을 지적한 것입니다. 최근엔 대부분 TI-Connect를 사용하기 때문에 이러한 착각에서 오는 문제가 일어나지 않을 듯합니다. 혹시나 해서 말씀드리지만, Graph-Link는 구식 프로그램이니 사용하지 마시고, 되도록 TI-Connect를 사용해서 어플리케이션을 전송하시길 바랍니다.) -
이전 AMS로 다운그레이드함으로써 프로그램 호환성 문제를 해결하려는 시도는 자신이 지금 무슨 행동을 하고 있는건지 똑바로 알기 전까지는 절대로 하지 말라. 그 방법은 문제점 중 일부를 고칠 수 있을지는 모른다, 하지만 일부 프로그램들은 새로운 버전의 AMS를 요구하기 때문에 이전 AMS에서 실행되지 않을수도 있다. 또 어떤 이전 AMS 버전들은 일부 기능이 빠져있을지도 모른다. 게다가, 당신이 원하는 구형 버전의 AMS를 찾는 것이 어려울수도 있고, 그 구형 버전의 AMS는 당신의 계산기에서 아예 작동하지 않을수도 있다.
- 수정을 위해서 텍스트 포맷으로 된 프로그램을 구하려고 하지 말고, 소스 코드 또한 구하지 말라.(Do not try to get programs in text format so that you can type them in, and especially don't try to get the source code to type in.) 일반적으로 오직 베이직 프로그램(basic program)만 계산기 상에서 프로그램을 짤 수 있고, 어셈블리 프로그램(assembly program)은 입력하는 것이 무척 어렵다. 당신이 입력하길 원한다 할 지라도, 소스 코드가 아닌 헥스 코드(hex code, 역자주:16진수)로 입력해야 한다.
(역자주 : asm, flash 어플에 계산기의 함수 등을 추가하는 식의 단순한 프로그램 수정은 불가능하다는 것을 말하고 있는 것 같습니다. 혹은 프로그램 수정은 초보들에겐 너무 어려운 일이라는 걸 말해주려는 듯하기도 하구요.)
계산기에 프로그램을 전송하려면 어떻게 해야하죠?
TI 계산기에 프로그램을 전송하는 방법은 여기에 자세히 설명되어 있다.
"nostub"과 kernel-using ("doors") 프로그램의 차이점이 무엇이죠?
"nostub" 프로그램은 커널(kernel)이 없어도 실행 가능한 단순한 프로그램을 말한다. 이런 프로그램들은 단순히 계산기에 전송한 후 실행하면 된다. 즉, 커널(kernel)을 먼저 인스톨할 필요가 없다.(이런 프로그램은 하나 이상의 파일로 배포되기도 하는데, 이럴 경우에는 배포된 모든 파일을 계산기로 전송해야 한다.)
"doors" 프로그램 (혹은 보다 적절한 표현으로는, "커널(kernel)" 또는 "커널기반(kernel-based)" 프로그램)은 커널(kernel)을 반드시 필요로 한다. 이런 프로그램들을 실행하려면, 당신은 먼저 계산기에 커널(kernel)을 인스톨(install)해야 한다. 또 이런 프로그램들은 대부분 라이브러리(라이브러리들과 프로그램을 연결시켜주는 역할을 커널이 담당한다)를 필요로 하기 때문에, 필요한 라이브러리가 있다면 역시 계산기로 전송해 주어야 한다. 대부분의 오래된 게임들이 커널(kernel)을 필요로 하지만, 최신 게임들과 거의 모든 비(非)게임 프로그램들은 nostub 프로그램(커널이 필요없는 프로그램)이다.
명확하게 알아두어야 할 사실이 있는데, 많은 사람들이 "쉘(shell)"이라는 단어를 전혀 다른 개념인 "커널(kernel)"과 혼동해서 사용하고 있다는 점이다.
위 두 종류의 프로그램 사용에 대한 더 자세한 내용은 아래쪽 섹션에서 다룬다.
프로그램은 어떻게 실행하나요?
만약 기종이 TI-89 Titanium 이라면, TI-89 Titanium section 을 읽는 것이, 티타늄에만 있는 특정한 문제들에 대한 정보를 얻는데 더 좋다.
nostub 프로그램을 실행하기 위해선, 계산기에 프로그램 파일을 전송한 뒤, 그 프로그램을 실행하면 된다.(만약 그 프로그램이 데이터 파일들도 포함하고 있었다면, 그 데이터 파일들 역시 같이 전송해 주어야 한다.) 그 프로그램 파일들은 컴퓨터 상에 .89z 혹은 .9xz 라는 확장자를 가지고 있고, 데이터 파일들(또는 압축된 프로그램 파일들)은 대개 .89y 혹은 .9xy 라는 확장자를 가진다. thisgame 이라는 이름을 가진 프로그램을 실행하려면, home 화면에서 thisgame() 이라고 입력한 후 enter 를 누른다. 또 이름 전체를 하나하나 입력하는 대신에 var-link 메뉴를 통해서 실행할 프로그램을 직접 선택해 줄 수도 있다. 단축키 기능도 존재하는데, 프로그램명을 kbdprgm1 으로 바꿔주면 diamond 키를 누르고 1번 키를 눌러주는 것만으로 이름을 바꾼 그 프로그램을 실행할 수 있다. (다른 숫자들에 대해서도 마찬가지로 적용된다.) 한가지 알아둘 것은 계산기는 여러 개의 폴더를 가질 수 있기 때문에, 프로그램을 실행하려면 반드시 그 프로그램이 있는 폴더에서 실행해야 한다는 점이다. (기본적으로, 처음엔 폴더가 main 폴더 하나뿐이므로 이런 문제가 일어나진 않을 것이다.)
nostub 프로그램 실행에 있어 알아둬야 할 것은 이게 전부다. 만약 커널기반(kernel-based) 프로그램을 실행하려한다면, 그 프로그램을 실행하기 전에 반드시 kernel을 인스톨(install)해야 할 것이다. 만약 커널을 사용하는(kernel-using) 프로그램을 커널없이 실행하려했다면, 그 프로그램은 단순히 아무것도 안 할 것이다(simply do nothing).
"ASAP or exec string too long"라는 메시지의 에러가 뜨는데, 어떻게 해야하죠?
만약 "ASAP or exec string to long" 라는 메시지를 보게 된다면, 당신은 지금 Texas Instrument사가 만들어 놓은 어셈블리(assembly) 프로그램 용량 제한 때문에 고통받고 있는 것이다. 이 제한은 어떤 특정한 용량 이상의 어셈블리(assembly) 프로그램이 실행되는 것을 방지한다.
만약 nostub 프로그램을 실행하려고 할 때 이런 메시지가 나타났다면, 그 용량 제한을 빠져나갈 방법을 찾아야만 할 것이다. 대부분의 nostub 프로그램들은 이런 용량 제한을 극복하는 방법으로, 작은 "launch" 혹은 "run" 프로그램들(역자주 : 일종의 로더)을 포함하고 있다. 그렇지 않다면, 당신이 할 수 있는 몇가지 일이 있다. 당신은 용량 제한을 완벽하게 제거해 줄 커널(kernel, 아래쪽 섹션에서 다루어짐)을 인스톨(install)할 수 있다. 혹은 용량 제한을 우회해서 프로그램을 실행해 줄 TTStart와 같은 또다른 프로그램을 사용할 수 있다. 마지막으로, 다른 AMS 버전으로 변경하는 방법이 있다. 만약 지금 AMS 2.03 버전이 설치되어 있다면, 현재 용량 제한은 8K 까지지만, AMS를 2.04 버전 혹은 그 이후의 것으로 변경할 경우 용량 제한을 24K 까지 증가시킬 수 있다. 만약 더 오래된 AMS 1.05(혹은 AMS 1.00)으로 변경할 경우 용량 제한은 완전히 사라진다. (역자주 : AMS를 변경하는 것은 경우에 따라 매우 위험할 수도 있습니다.)
만약 커널을 사용하는(kernel-using) 프로그램이 용량 제한을 넘게되면, 당신은 그 제한을 넘는 nostub 프로그램을 실행할 때와 같은 에러 메시지를 보게 될 것이다.(If a kernel-using program is over the size limit, then you will see the same error message as you get when you run a nostub program that is over the limit.)
내 계산기의 하드웨어(HW)와 AMS 버전을 어떻게 알수있죠? 그리고 도대체 AMS가 뭐죠?
계산기의 home 화면에서(역자주 : home 버튼을 누르면 나오는 화면), F1 메뉴로 이동한 후, About 을 선택한다. About 을 선택했을 때 나오는 박스 어디간에 "Hardware Version 2.00" 이라고 쓰여있다면, 그건 당신이 Hardware Version 2를 가지고 있다는 의미이다(흔히 줄여서 HW2라고 부른다). 만약 아무런 메시지도 볼 수 없다면, 당신은 hardware version 1 (HW1)을 가진 것이다. (역자주 : 최신 TI-89 Titanium은 HW3 혹은 HW4 입니다.)
주의해야 할 것은, 원래는 TI-92 Plus인 모든 계산기는 HW2 라는 점이다(Note that every calculator that was originally a TI-92 Plus has HW2). HW1 TI-92 PLUS를 얻기 위해선, 일반 TI-92를 구한 후에, Plus 모듈로 그걸 업그레이드하는 방법만 존재한다(You will only get a HW1 TI-92 Plus if you take a regular TI-92 and upgrade it with the Plus Module).
AMS는 계산기의 플래시롬(Flash ROM)에 설치되어 있는 TI에서 제공하는 메인 소프트웨어이다(The AMS is the main software supplied by TI that is kept in the calculator's Flash ROM). AMS는 "Advanced Mathematics Software"를 뜻한다. AMS는 여러 다른 이름으로 불리기도 하는데, 예를 들면 "TI OS", "OS", "product code", "product software", "base code", "ROM", "ROM software", "운영체제(opereating system)" 등이고, 이 외에도 비슷한 다른 표현이 더 있을 것이다. 컴퓨터로 치면 Windows 같은 존재로, 계산기의 가장 기본적인 연산 기능과 기본적인 수학 함수들, 수학적 기능들, 계산기 내의 기본적인 파일 관리 기능 등을 제공하고 있다. AMS는 계산기를 리셋했을 때 남아있는 가장 기본적인 부분이다.
최신 AMS 버전은 TI 공식 웹사이트에서 구할 수 있다.
Voyage 200 의 하드웨어는, 저장할 수 있는 플래시 롬의 사이즈만 제외하고는 본질적으로 HW2인 TI-92 Plus와 동일하다. 마찬가지로, TI-89 Titanium의 하드웨어는 TI-89와 비슷하다. 그러나, 이 계산기들은 아래에서 설명할 몇몇 추가적인 문제점을 드러낸다.
같은 TI-89라도 버전이 여러 종류가 있는데, 차이점이 각각 뭔가요?
하드웨어 버전별 차이점(HW version differences)
HW1은 TI-89의 초기 하드웨어 버전으로, 사용자가 만든 프로그램의 사이즈를 제한하는 기능은 가지고 있지 않았으며, LCD가 리프레쉬되는 매시간마다 비디오 버퍼를 읽어와 화면에 표시되는 디스플레이 방식을 사용한다.
HW2는 후기에 출시된 TI-89 들과 모든 TI-92 플러스에서 찾아볼 수 있다. HW2는 보다 성능이 향상된 하드웨어로 짐작되는데, 이러한 성능 향상은 몇몇 문제들을 일으키는 요인이 되기도 했다. 변화된 많은 것들 중에서도, 화면 표시를 할 때 일정하게 버퍼를 읽어와 표시하는 방식 대신 레지스터들이 버퍼에 기록하는 것으로 바뀌었다(Among other things, the display now doesn't scan the buffer constantly, but instead only registers writes to the buffer). 이것은 속도를 향상시켜주었지만, 오래전에 나타나 지금은 해결된 그레이스케일(grayscale) 문제를 야기시켰다(This does improve the speed but long ago caused problems for grayscale, which have now been solved).
HW3는 대개 TI-89 Titanium을 의미한다. HW3는 많은 이유에서 HW2인 TI-89를 닮아있지만, 더 많은 저장공간과 USB 포트가 추가되었다. TI에서 특별히 HW 구분법에 대해 공식적으로 언급한 것이 없기 때문에, 이전 HW2 와는 일반적으로 케이스를 통해 구분하게 된다.
HW4 역시 TI-89 Titanium을 의미하는데, HW3와 대부분 같지만, USB 2.0을 지원하고 CPU 속도가 16Mhz 로 조금더 빨라졌다.
HW2 계산기들은 HW1 계산기들보다 훨씬 빠르다. 같은 계산을 HW1과 HW2에서 동시에 수행하면 HW2는 2/3의 시간밖에 걸리지 않는다. 2분 동안 실행한 소프트웨어의 지연 루프 타이밍을 통해 나는 HW1은 9.4 Mhz, HW2는 13.1 Mhz 로 클럭을 추정할 수 있었다. 그러나, HW1 계산기의 디스플레이가 매시간 메모리 접근을 하며 10% 정도 버스 대역폭을 항상 차지하는 것으로 인해 프로세서를 느리게 할지도 모르기 때문에, 실제 프로세서 클럭은 더 빠를지도 모르겠다.
TI OS(역자주 : AMS)는 HW2일 경우, 어플리케이션과 변수들 어느 쪽이든지 모든 플래시 메모리를 사용할 수 있도록 허용하지만, HW1의 경우 변수에 대해 부분적인 메모리 사용만을 허용하기 때문에 나머지 메모리 공간은 어플리케이션만 사용할 수 있다. 그러나 이러한 제한은 Julien Muchembled이 만든 프로그램인 MaxMem을 통해 극복될 수 있다.
가장 귀찮은 문제는 일부 AMS 버전들(아래의 AMS 버전별 특징 참조)이 가지고 있는, 특정 영역에 있는 코드의 실행을 막음으로써 HW2가 프로그램들의 용량 제한을 강제하고 있는 것이다. 이것은 프로그램들에 의해 이미 해결법이 준비되어 있기에 그리 큰 문제는 아니다. 그러나 새로운 AMS 버전으로 업데이트할 때마다 HW2Patch(AMS의 용량 제한을 수정하는 프로그램, TI-89T의 경우 HW3Patch)로 패치시켜줘야 하기때문에 오래전부터 말썽을 일으키는 원인이 되었다.
마지막으로, HW2에서 타이머는 다른 비율로 실행을 방해하는데, HW1과 HW2의 속도 차이에 대해 프로그램이 설명하지 않는 경우 문제를 일으키는 프로그램이 HW2에서 실행될 때 HW1 속도인 2/3의 속도로 실행되도록 그것을 동기화한다(Finally, the timer interrupts run at a different rate on HW2, causing programs that are synchronized to them to run at two-thirds the HW1 speed when run on HW2 calculators, unless the program accounts for this difference). 이와같이 비록 HW2가 실제로는 빠를지라도 매우 느리게 보일 수 있다. 이건 아마도 매우 드문 문제이고 대부분의 프로그램에서 아직도 다루어야 할 문제이다(This is probably a rare problem and most programs should now deal with it).
(역자주 : 위 문단들은 번역이 정말 엉망입니다. 도저히 해석이 안되네요. 죄송합니다. ㅡㅜ 최근에는 거의 구하기 어려운 HW1과 2에 대한 이야기이니 저런 제한 사항들이 있기도 하다는 정도로 봐주세요.)
몇년 전에는 이런 차이들이 특히 게임들에서 많은 호환성 문제들을 만들어 냈는데, 지금은 거의 모든 게임들이 어떤 HW 버전이든지 상관없이 잘 동작한다(물론, 더이상 어렵지 않은 문제인 용량 제한을 해제했을 경우에 말이다).
소프트웨어에 의해 이러한 프로텍션이 깨졌더라도, 두 하드웨어 버전 모두 롬을 변경하는 사용자 프로그램에 대항하는 프로텍션을 가지고 있다(Both hardware versions have protection against user programs modifying the ROM, although these protections have been defeated by software).
HW2는 AMS 2.07 이상의 버전에서 사용될 수 있는 실시간 시계를 포함한다(HW2 also includes a real-time clock, which can only be used with AMS 2.07 or above).
AMS 버전별 차이점(AMS version differences)
- AMS 1.00 (Ti-92 Plus) - 매우 오래된 미완성 버전이다. 이 버전은 TI-92 Plus 모듈에만 포함되었던 것 같다. 일부 공용 AMS 함수(Some common AMS functions)가 빠져서 어셈블리 프로그램과 호환성 문제를 일으킨다.
- AMS 1.00 (TI-89) - TI-89를 위한 첫번째 버전이다. 이 버전이 아마 어떤 TI-89 AMS 버전보다 게임들에 대한 높은 호환성을 가질 것이다. 이 버전엔 용량 제한이 없고 HW1 계산기에만 설치할 수 있다.
- AMS 1.01 (TI-92 Plus) - 이 버전은 거의 TI-89에 실린 AMS 1.00과 동일하지만 TI-92 Plus를 위한 것이다. 이 버전은 TI-90 Plus AMS 버전 중에 가장 높은 게임 호환성을 가진다.
- AMS 1.05 - 이 버전은 HW1 또는 HW2 계산기에 설치할 수 있다. 이 버전도 용량 제한이 없다. 이 버전이 처음 릴리즈 되었을 때, 바뀐 상수 메모리 주소에 있는 kb_vars(keyboard data)에 의존하는 많은 프로그램들이 실행되지 않았다.
- AMS 2.01 / 2.02 - 이 버전들은 TI 웹사이트에 전혀 릴리즈된 적이 없으나, 몇몇 사람들이 어떤 방법으로 이용 가능하게 만들었다. 난 이 버전들을 본적이 없지만 내 생각에 2.03 버전과 닮았을 것같다.
- AMS 2.03 - 이 버전은 프로그램의 용량이 8k가 넘지 못하게 하는 제한을 추가했는데 이것은 많은 문제를 불러 일으켰다. 그러나 그 용량 제한은 없앨 수 있었다. 또 이 버전의 AMS는 리셋되었을 때 archive를 복구할 수 있는 기능을 추가했다. 이 기능은 크래쉬로 부터 데이터를 지키게 해준다.
- AMS 2.04 - 이 버전은 용량 제한폭을 24K로 늘렸고 이로써 많은 nostub 프로그램들을 용량 제한을 없애는 패치없이도 구동될 수 있었다. 이 버전이 처음 릴리즈되었을 때, 오직 Universal OS만 이 AMS 버전에서 정상적으로 실행됐었지만, 지금은 모든 커널들이 이 버전에서 정상적으로 실행된다. 이 버전 역시 Archive 복구를 지원했다. 이 버전은 특정한 조건에서 archive 된 베이직 프로그램을 실행시키려고 하면 크래쉬를 먹는 버그가 있었다.
- AMS 2.05 - 프로그램의 용량 제한폭은 여전히 24K였고 archive 복구 기능도 존재한다. Universal OS와 PreOS가 AMS 2.05 혹은 그 이상 버전의 OS와 호환되는 유일한 커널들이다. 다른 커널들은 돌아가긴 하겠지만 kb_vars 같은 시스템 메모리 때문에 문제가 생겨서 많은 프로그램들이 제대로 돌아가지 않을 것이다. 최근까지도 이 버전을 사용한 계산기에서 HW2Patch를 사용하는 것은 불가능했었는데, 지금은 이 문제가 해결 되었다. 이 버전 역시 AMS 2.04 버전과 마찬가지로 베이직 프로그램 문제를 가지고 있다.
- AMS 2.07 - 이 버전은 아이콘 데스크탑과 실시간 시계를 추가했다. 이 버전에서 바뀐 점으로 인해 오래된 ppg launcher들과 호환성 문제가 생겼지만 이 문제들은 일찌감치 해결되었다. 이 버전은 오직 Voyage 200을 위해서 릴리즈 되었다.
- AMS 2.08 - 이 버전은 실질적으로 AMS 2.07과 같지만, 지금은 TI-89와 TI-92 Plus 에서도 역시 잘 설치할 수 있다.
- AMS 2.09 - TI-Navigator 를 지원하도록 AMS 2.08에서 마이너 업데이트했다.
- AMS 3.00 - 이것은 TI-89 Titanium을 위한 첫번째 AMS이다. 이 버전은 프로그램 용량 제한폭이 64K로 증가된 것으로 보인다. 많은 프로그램들이 TI-89 Titanium에서 실행되지 않는데, 이것은 AMS가 바뀌어서 그런 것이 아니라 대부분 하드웨어의 변화에서 오는 문제이다.
- AMS 3.01/3.10 - TI-89 Titanium과 Voyage 200을 위한 업데이트이다. 이 버전은 잠깐 호환성 문제를 일으켰었지만, 최신 PreOS와 HW3Patch 버전을 사용함으로써 고쳐졌다.
만약 정말 오래된 프로그램들이 실행되길 바란다면, 가능하면 가장 오래된 AMS 버전을 설치하는 것이 제일 나은 결과를 가져다 줄것이다. 그러나 당신이 몇몇 프로그램의 호환성을 희생하더라도 archive 보호 기능이 있는 AMS 2.03(혹은 더 높은 버전)을 원할 지도 모르겠다. 만약 당신이 TI의 SDK(매우 일부 유틸리티만 이것으로 만들어졌고, 주목할만한 게임 중엔 이것으로 만들어진게 하나도 없다)에 의해 만들어진 프로그램을 사용할 계획이라면, AMS 2.04 혹은 더 높은 버전을 사용해야 될 필요가 있을 것이다. 많은 최신의 Flash 어플리케이션들과 아주 일부 유틸리티들은 보다더 높은 버전의 AMS를 요구할지도 모른다.
만약 이 FAQ의 권고사항들을 따른다면, 2.09버전의 AMS까지 호환 문제들이 대부분 일어나지 않을 것이다.
거의 모든 게임들은 이제 AMS 2.09 버전에서도 실행가능하도록 만들어졌다(그러나 만약 당신이 TI-89 Titanium을 가지고 있다면, 여전히 몇가지 문제점이 남아있다).
비게임(non-game) 프로그램을 실행하는 것에 있어서도, 매우 오래된 것들은 사실상 많은 비호환성이 존재할지도 모르지만, 각 새로운 AMS 버전마다 업데이트를 필요로하는, OS를 장악하려고 시도하는 것들을 제외한, 최근 것들은 완전히 호환될 것이다(When it comes to non-game programs, there may actually be more incompatibility with very old ones, but recent ones should be fully compatible, except when they try to hook into the OS, which may require updates for each new AMS version).
새로운 버전의 AMS는 수학적 기능면에서 몇몇 작은 향상점을 포함하고(그리고 var-link 메뉴가 아주 조금 더 나아지고) 일부 버그가 수정되었을 지도 모른다. 그러나, 모든 중요한 수학 기능은 이미 오래된 버전들에도 존재한다.
커널(kernels)과 쉘(shells)이 뭔가요? 쉘(shell)과 커널(kernel)의 차이점은 뭔가요?
이 단어들은 여러 다른 사람들에 의해 다른 방식으로 사용되어, 종종 혼란을 가져온다. 다음의 정의는 TI-89, TI-92 Plus, 및 Voyage 200 에서 이 두 단어가 갖는 의미가 정확하게 무엇인지 설명한다.
커널(Kernel)은 다른 어떤 특정한 프로그램들을 실행하기 위해서 반드시 인스톨(install)해야 하는 프로그램이다. 커널은 커널을 필요로 하는 프로그램을 실행하려고 할 때를 제외하고는 일반적으로 시스템에 아무런 영향도 주지 않은채 백그라운드에 자리한다. 매우 적은 수의 커널(kernel)들이 릴리즈되었지만, 그들은 모두 동일한 기본 기능들을 제공하기 때문에(물론 약간 예외가 있지만, 대부분의 사용자에겐 중요하지 않다) 당신은 그들중에 하나만 실행하면 된다. 가장 최신 커널은 PreOS 이다(다음 섹션 참조). 가장 오래된(그리고 지금은 사라진) 커널은 DoorsOS 이다. 어떤 사람들은 커널기반(kernel-based) 프로그램을 DoorsOS 프로그램이라고 부르기도 하는데, 이것은 과거 DoorsOS의 명성때문으로, 커다란 혼란과 오해를 만들어내고 있다.
커널(kernel)의 주역할은 프로그래머를 약간 도와주는 특정 기능을 제공하는 것에 있다. 그 특정 기능들은 커널이 없이도 구현 가능한 것으로, 커널 필요 여부는 프로그래머의 선택에 달려있다. 커널들은 지금보다는 과거에 훨씬 대중적이었다.
쉘(shell)은 프로그램들의 목록을 보여주고 원하는 프로그램을 선택해서 실행하도록 도와주는 프로그램이다. 많은 쉘(shell)들이 파일 관리 기능과 같은 고급 기능들을 제공한다. 쉘과 커널은, 어떤 이들이 커널을 말할 때 쉘이라는 표현을 사용함으로써 종종 혼란을 일으킨다. 이것은 잘못된 것인데, 왜냐하면 (TI-89, TI-92 Plus, and Voyage 200에서) 쉘과 커널은 전혀 다른 일들을 하는 프로그램 분류이기 때문이다.
이런 혼란을 가중시키는 한 가지 사실은, Doors 라는 쉘이 DoorsOS 라는 이름으로 배포되기도 한다는 사실이다. Doors는 쉘(shell)이다. 반면, DoorsOS는 이제 오래되어 쓰이지 않는 구형 커널(kernel)이다. 그것들은 절대 같은 것이 아니다!
명심해야 할 것은, 이러한 정의가 Windows/Unix/Linux 에서의 것과 동일하지 않다는 것이다.. 계산기에 있어서 커널(kernel)은 운영체제(OS)의 핵심이 아니라 그저 작은 유티리티에 불과하다. 커널(kernel)은 TI의 소프트웨어(역자주 : AMS)를 대체할 수 없으며, 커널이 설치된 이후에도 TI의 소프트웨어(역자주 : AMS)는 이전과 같이 여전히 동작하게 된다.
또한 이러한 정의는 다른 TI 계산기에서도 통용되는 공통된 정의는 아니다.. Z80(TI-82에서 TI-86까지) 계산기 상에서의 "쉘(shell)" 이라 불리우는 것들은 위에서 설명했던 쉘과 비슷한 기능들을 제공한다. 하지만 Z80 계산기의 쉘은 (몇몇 TI-86 쉘을 제외하고) 쉘에 내장된 라이브러리 루틴들을 통해 커널과 비슷한 기능 또한 제공하고 있다(However, the shells for Z80 calculators (except for some TI-86 shells) also provide some kernel-like features, as well as often giving some library routines which are in the shell itself). 이 쉘들은 일반적으로, 대부분의 TI-83, TI-83 Plus 프로그램과 TI-85, TI-82의 모든 프로그램을 실행하는데 필수적이다. 또 한 가지 알아두어야 할 것은, Z80 계산기에서 다른 종류의 쉘과 커널은 서로 언제나 호환되지 않지만, TI-89, TI-92 Plus, Voyage 200은 대개 서로 호환된다는 것이다.
저는 어떤 커널을 써야하죠? 그리고 커널을 어떻게 사용하죠?
만약 TI-89 Titanium을 가지고 있다면, TI-89 Titanium에만 존재하는 특정 문제들에 대한 정보가 있는 TI-89 Titanium 섹션을 반드시 읽어볼 것을 강력하게 권한다.
PreOS는 가장 최근 업데이트된 커널(kernel)이고 거의 언제나 최상의 선택이다. PreOS는 모든 하드웨어들과 AMS 버전들에 대해 완벽하게 호환된다. 만약 TI-89 Titanium을 가지고 있다면, PreOS를 설치하기에 앞서 HW3Patch를 전송해 설치해야 한다. PreOS를 계산기에 설치하려면, "PreOS"와 "stdlib" 파일들을 계산기로 전송한 후, 그 파일들을 archive 시킨다. 그런다음, "PreOS"를 (다른 프로그램과 같이, "PreOS()" 라고 입력해서) 한번 실행하면 끝이다!
약간 더 오래된 커널(kernle)은 Universal OS이다. 만약 이 커널(kernel)을 사용하길 원한다면, AMS는 1.05보다 높은 버전을 사용해야하고, HW2Patch(하드웨어 버전이 2.0일 경우) 혹은 HW3Patch(하드웨어 버전이 3.0 이상일 경우)를 Universal OS보다 먼저 설치해주어야 한다. 주의해야 할 점은, Universal OS는 TI-89 Titanium을 지원하지 않는다는 것과 현재 더이상 업데이트가 이루어지지 않는다는 것이다. 만약 그래도 여전히 이 OS를 사용하기 원한다면, "install" 과 "kernel" 파일들을 전송한 후 "install" 파일을 실행하여 설치하면 된다.
일단 커널(kernel)이 설치되면, 설치가 되었다는 조그만 알림 메시지를 보게된다. 커널(kernel)은 RAM이 리셋되기 전까지, 인스톨된 상태가 유지될 것이다. 만약 리셋을 했을 경우엔, 커널(kernel)을 다시 설치해 주어야 한다. 필요할 때마다 다시 인스톨하기 위해선, 커널(kernel) 파일들을 설치후에 지우지 말고 archive 시켜두는 것이 최선의 방법이다. PreOS는 설치(install) 전에 설치 파일들을 archive 시켜야만 설치가 가능하다.
많은 커널을 사용하는(kernel-using) 프로그램들 또한 실행을 위해 라이브러리들을 필요로 한다. PreOS에 포함된 stdlib 파일은 사용되는 거의 모든 공용 라이브러리들을 포함하고 있다. 전부는 아니지만 일부 흔히 사용되는 라이브러리 sare는 Universal OS에 내장되어 있다(Some, but not all, commonly used librarie sare built-in to Universal OS).
왜 PreOS가 최상의 선택이죠? 왜 DoorsOS(또는 다른 구식 커널)를 사용해선 안되죠?
DoorsOS가 과거에는 유용했을지 모르지만, 이젠 더이상 그렇지 않다. DoorsOS는 (그리고 TEOS도 마찬가지로) 심각한 호환성 문제를 가지고 있다. 그들의 제작자는 오래 전에 계산기용 프로그램을 제작하는 것을 그만두었기 때문에, 더이상의 업데이트도 기대할 수 없다. 특히, AMS 2.04 혹은 더 높은 버전이 설치된 상태라면 TEOS는 전혀 호환되지 않고, AMS 2.05 혹은 더 높은 버전이라면 DoorsOS 또한 전혀 호환되지 않는다.
반면, PreOS는 여전히 업데이트되고 있고, 가장 최신 PreOS는 TI-89 Titanium을 지원하고 최근 나온 AMS 3.10 역시 지원한다. PreOS와 Universal OS의 디자인이 매우 경쟁력있었기때문에, AMS 2.07, 2.08, 2.09 버전이 릴리즈되자마자 해당 AMS 상에서 정상적으로 작동했다(Both PreOS and Universal OS worked on AMS 2.07, 2.08, and 2.09 as soon as these AMS versions were released, since their designs are more compatible). 아주 오래전, Universal OS는 심지어 (PreOS는 이 당시 존재하지 않았던) AMS 2.05가 릴리즈되었을 때에도 문제없이 동작했다(Universal OS even worked with no problems when AMS 2.05 was released long ago (PreOS didn't exist then)).
게다가, PreOS와 Universal OS는 HW2의 그레이스케일(grayscale)을 매우 잘 지원한다; HW2인 계산기에서, PreOS와 함께 공급되는 라이브러리만큼이나 UniversalOS에 내장된 그레이스케일(grayscale) 라이브러리는 보다 나은 테크닉을 사용하기 때문에 다른 커널(kernel)들에서 사용되는 라이브러리에 비해 그래픽이 훨씬 더 안정적일 것이다. 따라서 어떤 HW2 계산기든지, AMS 버전에 관계없이, 이 두 커널 중 하나를 반드시 사용해야 한다.
DoorsOS는 오래된 전통을 가지고 있고 현재 사용되는 커널들 중 가장 오래된 것이기에 아직까지도 매우 대중적인 모습을 보여준다. 게다가, ticalc.org의 자료실에는 커널을 사용하는 프로그램(kernel-using program)을 "doorsos" 섹션으로 표기하고 있다(다시 말하지만, 아마도 그 이유는 doorsos가 가장 "전통적인" 커널이기 때문이지 가장 나은 커널이라서가 아니다). 이런 것들이 많은 사용자들로 하여금 DoorOS가 좋게끔 느껴지게 만들었고 이것을 설치할 경우 나타나는 문제들로 인해 많은 이들이 어려움을 겪었다.
많은 오래된 프로그램들이 실행을 위해 DoorsOS 설치가 필수라고 말하거나 DoorOS 상에서 동작하기 위해 작성되었다고 말하고 있다. 대부분의 경우 이런 말이 실제로 의미하는 것은, 커널(kernel)을 필요로하거나 커널 기반으로 작동한다는 것을 말하는 것이지 결코 DoorsOS 하나만이 작동을 보장한다는 의미가 아니다. 모든 커널(kernel)들은 동일한 프로그램 형식을 사용하기 때문에, 심지어 프로그램이 DoorOS 상에서 작동하도록 만들어졌다고 쓰여있어도(혹은 "doors" 프로그램이라고 표기되어 있어도), 그것은 다른 커널들에서도 동일하게 잘 작동될 것이다. (거의 대부분 동일한 프로그램 형식을 사용하고, 다른 커널에선 동작하지 않는 일부 PreOS 용 프로그램의 경우 확장된 파일 형식을 사용할지도 모른다.) 프로그램의 매뉴얼에서 다른 커널을 사용할 경우 작동하지 않을 거라고 명시하고 있지 않은한, 그 프로그램을 위해 DoorsOS를 선택할 필요는 없을 것이다.
어디서 쉘(shell)을 구할 수 있죠?
커널(kernel)과는 달리, 쉘(shell)은 계산기 사용에 있어 전혀 필수적인 요소가 아니다. 쉘의 일반적인 사용 목적은 파일관리와 프로그램 실행을 편하게 하기 위함이다. 이러한 작업은 쉘이 없이도 충분히 가능하다. 예를들면, 프로그램을 실행하는 것은 단지 그 프로그램의 이름을 직접 입력해서 실행하는 것처럼 말이다. 게다가, 쉘의 주요기능(파일관리) 역시 계산기에 내장된 var-link 메뉴를 통해 이미 제공되고 있다.
그럼에도 불구하고, 많은 사람들이 편리함이나 다른 이유들때문에 쉘을 사용하고 싶어한다. 만약 당신 역시 쉘을 사용하고 싶다면, ticalc.org 같은 곳의 자료실에서 쓸만한 쉘을 찾을 수 있을 것이다. PreOS에 내장된 (PreOS Browser) 조그만 쉘도 있다.
라이브러리(libraries)는 뭐죠? 그리고 제가 그걸 어떻게 활용할 수 있나요?
라이브러리(library)는 다른 프로그램들에서 사용되는 (하나 혹은 여러개의) 루틴들을 제공하는 파일이다. 이 섹션에서는 외부(혹은 동적) 라이브러리에 대해 언급한다. 이는, 라이브러리를 사용하는 프로그램의 실행부에 내장된 것이 아닌 별도의 파일로 분리되어 있는 라이브러리를 말한다(That is, libraries which are kept in separate files rather than being put in the executables of programs that run them). 라이브러리는 대개 다른 많은 프로그램들에서도 공동으로 사용될 수 있도록 디자인된다. 때문에 계산기에 그 루틴을 하나만 전송해도, 그 루틴을 사용하는 각 프로그램마다 그 루틴을 따로 가지고 있을 필요없이, 전송된 하나의 루틴을 공동으로 사용할 수 있어, 메모리를 절약할 수 있다.
만약 프로그램이 라이브러리를 요구하는 경우, 그 라이브러리를 실행하기 위해, 반드시 계산기에 라이브러리를 전송해야 한다. 과거에는, 라이브러리가 커널과 결합되어 있어, 커널이 직접 라이브러리 연결을 제공했고, 최근에는, 모든 커널 기반(kernel-based) 프로그램은 적어도 몇몇 기본적인 라이브러리들을 사용한다(In the past libraries were associated with kernels, as kernels provide library linking and nearly every kernel-based program used at least some basic libraries). 그러나, 현재 몇몇 nostub 라이브러리 또한 존재한다. (이런 경우, 라이브러리 연결 코드는 라이브러리를 사용하는 프로그램에 포함되어 있다.)
Universal OS 는 대부분의 표준 라이브러리들이 커널에 내장되어 있지만, 외부 라이브러리(external libraries) 또한 허용한다. PreOS는 PreOS와 함께 포함된 stdlib 라는 파일을 가지고 있는데, 이 파일에는 많은 수의 라이브러리들이 들어있다. Universal OS와 PreOS에 포함된 라이브러리들은 대부분의 프로그램의 실행에 있어 충분하다.
만약 이들 라이브러리가 아닌 어떤 추가적인 (흔치 않은) 라이브러리를 필요로하는 프로그램이 있다면, 그 추가적인 라이브러리는 대개 프로그램과 포함되어 배포되거나, 적어도 필요한 라이브러리가 위치한 곳을 알려주는 문서라도 포함되어 있을 것이다. 어떤 쉘은 프로그램이 필요로하는 라이브러리를 보여주기도 한다(Some shells also list libraries a program requries).
만약 가지고 있지 않은 라이브러리를 필요로하는 프로그램을 실행하려고 하는 경우에는, 빠져있는 라이브러리의 이름을 알려주는 에러 메시지를 보게 될 것이다. 그때 당신은 그 빠진 라이브러리 찾는 것을 시도해 볼 수 있다(Then you can try to search for it). 만약 프로그램이 저장된 곳 어디에서도 해당 라이브러리를 찾지 못했다면, ticalc.org 나 다른 자료실에서 찾아봐야 할 것이다.
HW2Patch와 HW3Patch는 뭔가요? 또 언제 어떻게 사용해야 하죠?
HW2Patch 는 HW2 계산기들에 존재하는 용량 제한을 무력화시키기 위해 사용된다. 이 패치는 (용량 제한을 무력화시키는 자체적인 방법을 내장하고 있는) PreOS을 제외한 다른 커널들을 설치하려면 반드시 설치해 주어야 한다. 만약 HW2Patch를 설치하지 않으면, PreOS를 제외한 다른 커널을 설치하려고 시도할 때 계산기에 크래쉬가 날지도 모른다.
HW3Patch 역시 HW2Patch와 같은 기능을 수행하는 패치인데, 차이점은 HW2가 아닌 (TI-89 Titanium 과 같은) HW3 계산기에서 작동한다는 점이다. TI-89 Titanium 사용자들의 경우, 설치할 수 있는 유일한 커널은 PreOS 뿐이기 때문에, 굳이 커널을 설치하기 전에 HW3Patch를 깔아야할 필요는 없다. (역자주 : 이게 HW4까지 유효하지 않을 수도 있습니다.) 그렇지만, TSRs 혹은 DLLs 같은 일부 nostub 프로그램들에게 있어 HW3Patch는 필수적이다. HW3Patch가 설치되어 있어야 작동되는 프로그램이라면 프로그램 설명서에 그것이 필요하다고 명시되어 있을 것이다.
만약 AMS 2.03에서 8K 이하의 용량을 가진 nostub 프로그램만을 사용할 계획이거나, AMS 2.04나 혹은 그 이상의 버전에서 24K 이하의 용량을 가진 nostub 프로그램만을 사용할 계획이거나, AMS 3.00 혹은 그 이상의 버전에서 64K 이하의 용량을 가진 nostub 프로그램만을 사용할 계획이라면, 굳이 HWPatch를 설치해 줄 필요는 없다. 또한 AMS 1.05에서는 용량 제한이 없으므로, HWPatch를 설치할 필요가 없다. HWPatch는 ttstart와 같은 용량 제한을 무력화 시키는 런쳐에 의해 실행되는 nostub 프로그램이나, 또는 거의 대부분의 프로그램이 압축되어 포함된 nostub 프로그램을 실행하려고 하는 경우에는 설치해줄 필요가 없다(It is also not needed for nostub programs that are started by a launcher that defeats this, such as ttstart, or those included with nearly all compressed programs).
HW3Patch를 제작한 제작자 Kevin Kofler의 웹사이트에서 HW3Patch를 다운로드 받을 수 있다. HW3Patch를 설치하려면, 계산기에 Hw3patch 파일을 전송한 후, home 화면에서 다른 일반적인 프로그램을 실행하듯이 ("hw3patch()" 라고 입력해서) 실행하면 된다.
오래된 버전의 HW2Patch와 HW3Patch는 새로운 AMS 버전들을 지원하지 못한다는 것에 주의하라, 만약 HWPatch가 제대로 작동하지 않는 것처럼 느껴진다면, 설치한 HW3Patch가 최신 버전인지 확인할 필요가 있다. 오랫동안, AMS 2.05 계산기들을 패치하기 위해선 골치아픈 절차들을 밟아야 하는 것이 필수적이었는데, 계산기 안의 AMS 2.05 버전을 다운받아, 컴퓨터 상에서 AMS 2.05 버전의 복사본을 수정한 후, 두번에 걸쳐 계산기를 리플래싱하고, 수정된 AMS를 다운받기 위해 특별한 프로그램을 실행해야 했다(For a long time, it was necessary to follow a rather annoying procedure to patch AMS 2.05 calculators, requiring obtaining an older AMS version, modifying your copy of AMS 2.05 on your computer, re-flashing the calculator twice, and running a special program to receive the modified AMS). 이런 복잡한 절차는 많은 사용자들에게 있어 수많은 문제들을 일으키는 원인이었다. 다행이도, 이제 더이상 이런 복잡한 절차는 필수적인 것이 아니다!
그러나 만약 AMS 2.07이나 혹은 더 높은 버전이라면, 가장 최신의 HW2Patch라고 할지라도 정상적으로 설치되지 않을 것이다. 그렇지만, 대신 TI-89/92+/V200 에서도 정상적으로 설치되는 새로운 HW3Patch를 사용할 수 있다.
어디서 이전 AMS 버전들을 구할 수 있을까요?
가장 좋은 해결 방법은 당신에게 이전 AMS 버전들은 전혀 필요하지 않다는 사실을 인식하는 것이다. 만약 당신이 이 FAQ의 권고사항을 잘 따라왔다면, 실제로 모든 프로그램은 당신이 새로운 AMS 2.09 버전을 사용 중일지라도 정상적으로 실행될 수 있다.
정말 당신에게 오래된 버전의 AMS가 필요하다면, 그걸 구하는건 정말 쉽지 않은 일일수도 있다. 그 오래된 버전들은 한때 TI의 웹사이트에서 누구나 다운받을 수 있도록 공개되어 배포되었지만, TI는 오직 가장 최신 버전만 공급하기 때문에 더이상 오래된 버전들은 TI의 웹사이트를 통해 다운받을 수 없다. 많은 웹 사이트들이 오래된 버전의 롬을 다운로드할 수 있도록 공개했지만, TI는 이것을 허용하지 않았고, 이런 몇몇 사이트들의 법률 위반 행위에 대해 지적함으로써, 결과적으로 그들 대부분의 사이트는 그 오래된 버전의 ROM들을 제거하거나 공개하지 않게 되었다.
오래된 버전의 AMS를 얻는 유일한 방법은 다른 계산기로부터 추출하는 것 뿐이다. 만약 구하고 있는 오래된 버전의 AMS를 가진 계산기에 접근 가능하다면, 계산기와 계산기를 연결해주는 케이블을 통해서 그 오래된 버전의 AMS를 전송받을 수 있다.
알려진 또다른 방법으로는, TI 사에 직접 요청 이메일을 보내어 구할 수도 있다고 한다. 이 방법은, ti-cares@ti.com 에 이메일로, 지금 현재 계산기의 AMS 버전이 사용하고자 하는 프로그램과 호환성되지 않기 때문에 오래된 버전의 AMS 롬을 구한다는 내용을 보내는 것이다. 당신은 얼마 안되어서 롬을 얻을 수 있을 것이다. 주의해야 할 점은, AMS 롬의 용량이 1MB를 넘을수도 있기 때문에, 큰 용량의 이메일 첨부 파일을 받을 수 있는 메일 계정이어야 한다는 것이다.
프로그래머들이 AMS 를 완벽히 대체할 만한 소프트웨어(혹은 운영체제)를 만들어내는게 가능한가요?
TIB 리시버(Receiver)는 TI로부터 인증받지 않은 AMS 이미지 전체를 전송받도록 허용하기 때문에, 완전한 대체 이미지를 계산기에 설치하는 것은 가능하다. Time To Team은 "PedROM" 이라고 불리는, AMS를 대체하는 운영체제를 만드는 프로젝트를 진행하고 있다. 가장 최신 버전의 PedROM의 경우, 대부분의 게임이 문제없이 돌아가지만, 매우 제한된 수학적 기능만을 가지고 있다.
내 계산기의 HW version을 바꿀 수 있나요?
불가능하다. HW는 하드웨어 그 자체를 의미한다. HW version은 소프트웨어 상으로 수정될 수 있는 것이 아니고, 하드웨어 자체의 버전을 말한다. 이것을 바꾸려면, 당신은 계산기의 내부 회로를 모두 교체해야 할 것이다.
"Invalid Relocation Data in ASM Program" 라고 에러 메시지가 떠요! 어떻게 해야되죠?
이 문제는 AMS 2.07이나 혹은 이후 버전이 설치된 계산기에서 구형 PPG 런쳐를 실행하려 할 때 일어나는 문제다. 이 문제는 얼마전에 해결되었지만, 여전히 오래된 런쳐들(launchers)과 함께 배부된 일부 프로그램들은 문제가 남아있다(This problem was fixed a while ago, but there are still some programs out there distributed with older launchers). 대개 계산기 상에서는 1601 bytes, 컴퓨터 상에서는 1687 byte (혹은 이와 매우 근접한 사이즈)인 런쳐들(launchers)이 이런 케이스다. 이 문제를 해결하기 위한 몇 가지 방법이 여기에 있다:
- PPG를 실행하기 위해 제공된 런쳐(launcher) 대신 TTStart 최신 버전을 사용하라.
- AMS 버전을 2.05 혹은 그 이전 버전으로 변경하라. (역자주 : 매우 위험합니다 -_-)
- 그 런쳐(launcher)를 제대로 작동하는 런쳐로 교체하라. 커스텀 런쳐를 만들기 위해 당신은 TTStart를 리빌딩할 수 있다(you can do this be rebuilding TTStart to make a custom launcher). (역자주 : 죄송합니다. 해석이 잘 안되네요.)
- PPG 프로그램들을 자체적으로 실행할 수 있는 쉘(shell)을 사용하라. 예를 들면, Flavien Racine가 만든 Nostub Explorer 1.15가 있다.
Propanoid68K 라는 프로그램의 경우, 같은 문제를 가지고 있지만, 위에서 말한 방법들로는 해결되지 않는다. 그러나 이런 프로그램들은, 심지어 오리지날 TI-89에서도 작동되는 것으로 보이는 Ghostbuster 라는 프로그램으로 프로그램을 수정하여 실행함으로써 문제를 해결할 수 있다(However, it can be fixed by running Ghostbuster on it, which seems to work even for a regular TI-89).
내 계산기는 가끔씩 그냥 갑자기 꺼져요. 어떤 프로그램에 버그가 있는건가요? 어떻게 해야되죠?
프로그램의 버그때문에 그러는 것은 아마도 아닐것이다. 일단 계산기의 배터리들을 전부 교체해줄 필요가 있다. 만약 지속적인 CPU 사용이 있을 때(예를들면, 소요시간이 상당히 걸리는 계산을 실행했거나, 게임을 플레이하거나 하는 경우) 계산기가 꺼진다면, 그것은 대부분의 경우 배터리가 다 되어서 전압이 낮아졌기 때문에 일어나는 현상이다.
계산기가 멈춰버리거나, 화면 맨 위에 검은색 줄이 생기면서 크래쉬가 나요. 어떻게 하죠?
너무 복잡한 계산을 시도할 때, 계산기가 '멈춘 것처럼' 보일 때가 있다. 이럴 때는 일반적으로 on 키를 눌러줄 경우 계산 과정을 중단하고 다시 계산 전 상태로 복귀하는데, 어떤 오류에 의해서 on 키에도 반응하지 않고 완전히 멈춰 버릴 때가 있다.
만약 당신이 프로그램을 실행했는데 멈춰버렸다면, 여러 커널들과 nostub 런쳐 유틸리티에 있는 (물론 이 커널 혹은 런쳐가 이미 설치되어 있는 경우에 한해서) 'escape(탈출)' 매커니즘을 사용해서 빠져나올 수 있을지도 모르겠다(If you have run a program which has locked up, you may be able to use 'escape' mechanisms of various kernels (if you have them installed) or nostub launching utilities (if you used one)). PreOS 나 Universal OS가 설치되어 있다면, ESC 키와 ON 키를 동시에 누른다. DoorOS가 설치되어 있는 경우엔, STO 키와 ON 키를 동시에 누른다.
만약 위의 방법으로 멈춰버린 프로그램에서 빠져나오지 못했다면 (혹은 화면의 위쪽에 검은색 줄이 보이는 것 같은 또다른 종류의 크래쉬가 났다면), 계산기를 리셋시켜야할 필요가 있다. TI-92 Plus 의 경우 2ND+HAND+ON 키를 동시에 누르고, TI-89 라면 2ND+LEFT+RIGHT+ON 키를 동시에 눌러 리셋을 시도한다. 만약 이렇게 했는데도 리셋되지 않는다면, 완전히 메모리를 깨끗이하기위해, 계산기에서 (리튬 백업 배터리를 포함한) 모든 배터리를 제거하는 방법으로 리셋을 시켜야 한다. 다음 섹션에서 설명하는 것과 같이, 위에서 말한 어떤 방법을 사용해서 리셋하더라도 archive 메모리는 지워지지 않고 여전히 남아있게 된다.
어떻게 하면 계산기에 크래쉬가 났을 때에도 데이터들이 지워지지 않도록 보호할 수 있죠?
거의 모든 케이스에 있어서 갑작스런 크래쉬로부터 파일들을 보호하는 것은 가능한 일이다. 파일을 보호하기 위해선, 반드시 파일을 archive 메모리에 저장해야 하고, AMS 2.03 이나 더 높은 버전을 사용해야 한다. AMS 최신 버전은 TI 웹사이트에서 구할 수 있다. 이렇게 하면, 계산기가 리셋된 후에도 archive 메모리는 보존된다.
오래된 AMS 버전에서도 파일을 archive 상태로 보존하도록 만들어주는 Archive Utility 라는 프로그램이 있는데, 모든 계산기들과 호환되는 것은 아니며, 새로운 AMS 버전들을 피하는 사소한 이유가 존재한다(There is also a program called Archive Utility which can allow you to preserve the archive under older versions, but it is not compatible with all calculators and there is now little reason to avoid newer AMS versions, 역자주 : 이 문장은 번역이 잘 안되네요. 죄송합니다. ㅡㅜ).
커널이 제공하는 "crash protection(크래쉬 방지)" 기능은 크래쉬로부터 복구할 수 있도록 해주기도 하는데, 일부 프로그램 역시 이러한 크래쉬 방지 기능을 내장하고 있다. 이 기능들이 작동한다 할지라도, 램에 있는 파일들은 보호되지 않기 때문에 이들을 의존하는 것은 위험하다.
"Source Guru" 변환 프로그램이 뭐죠?? 이걸 써도 괜찮을까요?
Source Guru는 내가(역자주 : Patrick Davidson) 작성한 프로그램으로, TI-85용 프로그램들이 68000 기반 계산기에서 실행되도록 하는 자동 변환의 가능성을 보여주기 위해 의도되었다(Source Guru is a program that I wrote, intended to demonstrate the possibility of automatically converting programs for the TI-85 to run on the 68000-based calclators). 몇몇 프로그램의 변환물이 정상적으로 작동했기 때문에, 목적은 달성했다. 그렇지만, Source Guru 변환 프로그램은 일반적인 사용을 전혀 염두에 두지 않았고, 변환물 역시 TI-85에서 동작하는 원래 프로그램과 동등하지 않을수도 있다. 게다가 어떤 호환성 문제들을 가지고 있을지도 모른다. (역자주 : 되긴되는데, 조금 불안한가 봅니다 ^^;)
계산기용 어셈블리(assembly) 프로그램을 만들고 싶은데, 어떻게 해야하죠?
Clement Vasseur는 계산기용 어셈블리와 C 두 가지 모두의 개발용 프로그래밍 유틸리티를 가지고 있다. 이 사이트에서 어셈블러 및 C 컴파일러와 소스 코드 에디터를 다운로드 받을 수 있다. 이들 프로그램을 직접 자세히 테스트해보지는 못했지만, 상당히 괜찮은 툴로 느껴졌다.
DBA(Deep Brain Activity)에 의해 만들어진, as92라 하는 여전히 계산기에서 작동 가능한 어셈블러가 있다. 이 어셈블러만의 특정한 제한에 대해 알기 위해 이 어셈블러의 지시사항을 반드시 읽어야 하지만, 상당히 완전한 어셈블러이다. 이 어셈블러는 커널(kernel)이 필수이다.
한가지 명심해야 할 사실이 있다. 당신이 직접 제작한 프로그램을 처음 테스트하게 될 때, 이미 적어도 한번의 테스트는 거쳤을, 다른데서 구할 수 있는, 여느 프로그램보다도 크래쉬가 나게 될 확률이 높을지도 모른다. 이런 이유로, 데이터 보호 섹션에 설명된 것처럼, (커널과 어셈블러, 소스코드를 포함한) 중요한 모든 데이터를 반드시 보호해 두어야할 필요가 있다!
내 HW2 계산기에서 깜빡임을 멈추게 하려면 어떻게 해야하죠?(How can I get grayscale to stop flickering on my HW2 calculator?)
불운하게도, HW2의 하드웨어 디자인이 원래 그레이스케일을 사용하기에는 약간의 어려움들이 존재하는 디자인이다(특히 HW2의 디스플레이 방식에 대해 공식적으로 알려진 것이 없기 때문에). 그러나, 이 문제는 오래전에 해결되었고, 지금은 HW2 계산기들이 HW1 계산기들과 마찬가지로 안정적으로 (4 단계의) 그레이스케일을 표현할 수 있게 되었다.
gray4lib 또은 graphlib 라이브러리를 사용하는 그레이스케일 프로그램은, 업데이트된 커널을 사용할 경우, 아무런 문제없이 정상작동하며 그레이스케일을 표현할 수 있을 것이다. 이들 라이브러리를 사용하지 않는 다른 프로그램들(대부분은 TIGCCLIB에 포함된 그레이스케일 루틴을 사용해서 C로 작성된 것들)의 경우엔 정상적인 그레이스케일 표현에 대한 기대를 잠시 접어두어야 한다. 이들이 그레이스케일 코드를 내장하고 있어, 새롭고 나은 외부 라이브러리를 대체해서 사용할 수 없기 때문이다. 이 문제는 지금 현재 수정된 상태인데, 이는 오래전부터 사용되던 그레이스케일 표현법보다 더 나은 방식을 포함한 새로운 TIGCCLIB 가 나왔기 때문이다. 그러나, 구형 TIGCCLIB를 사용한 프로그램이 그레이스케일을 정상적으로 표현하기 위해선, 새로운 TIGCCLIB로 다시 컴파일될 필요가 있기 때문에, 해당 프로그램이 새 라이브러리로 다시 컴파일되어 배포될 때까지 기다려야 할 것이다. (물론 프로그램이 소스파일과 함께 공개되었다면, 새로운 버전이 나올때까지 기다릴 필요없이 직접 컴파일해서 사용할 수도 있을 것이다.
.89k (혹는 .9xk)라는 확장자를 가진 프로그램이 필요한데, .89z (또는 .9xz) 라는 확장자를 가진 것들밖에 찾을 수가 없어요. 어떻게 해야하죠?
.89k (그리고 .9xk) 라는 확장자는 플래시 어플리케이션(flash application, 역자주 : 인터넷의 그 플래시와는 전혀 다릅니다)을 말한다. 대부분의 프로그램들은 (TI 웹사이트의 거대한 수학 프로그램과 유틸리티를 제외하고는) 플래시 어플리케이션이 아니기 때문에, 일반적으로 이러한 .89k(혹은 .9xk)라는 확장자를 사용하지 않는다. 만약 당신이 지금 이런 문제를 가지고 있다면, 그건 아마도 Graph-Link 소프트웨어에서 계산기에 프로그램을 보내려고 시도할 때, flash applicaion 을 전송하는 명령을 선택했기 때문에 그럴 것이다. 우리가 일반적으로 사용하는 프로그램은 asm(어셈블리) 프로그램이므로, flash applicaion 전송 메뉴를 사용하는 것이 아닌, 일반 asm 프로그램을 전송하는 메뉴를 사용해야 한다.
또한 되도록이면 Graph-Link 소프트웨어보다는, TI-Connect 라는 프로그램을 사용해서 전송할 것을 권장한다. Graph-Link 는 예전에 사용되던 구형 소프트웨어로, 최신 하드웨어를 사용할 때 TI-Connect 와는 달리 호환성 문제를 일으킬 우려가 많다.
파일을 저장할 때 RAM으로 해야하나요, 아니면 archive로 해야하나요?
일반적으로, 지우지 않고 보관하려는 프로그램은 archive 메모리에 저장하고, RAM을 사용하는 것은 단지 임시 저장소로 생각하는 것이 좋다. (예를들어, 사용중인 변수들과 계산식들은 기본적으로 RAM에 생성될 것이다). archive의 용량은 RAM의 용량보다 훨씬 크고, 대부분의 프로그램들이 실행될때 RAM을 필요로 하므로 RAM 공간은 되도록 아껴두는 것이 좋다. 대부분의 프로그램들이, 프로그램의 코드나 데이터의 압축을 풀때, 화면 버퍼를 저장할 때, 그리고 다른 임시 데이터를 저장할 때, RAM을 많이 사용하게 된다. 게다가, archive 된 프로그램이 실행될 때, RAM으로 복사되어 실행되므로 arhive 된 프로그램을 실행하기 위해선 항상 비어있는 RAM 공간이 많아야 한다.
계산기가 멈춰버리는 형태의 프로그램 오작동이 일어나서 리셋을 시킬 필요가 있거나, 프로그램 크래쉬가 났을 때, RAM에 있는 내용은 모두 지워지게 된다. 그러나, archive 된 파일들은 보호된 상태이기 때문에, 그러한 계산기의 크래쉬에도 살아남는다.
주의해야 할 점은, 어떤 프로그램은 반드시 RAM에서만 실행된다는 사실이다. 비어있는 RAM 공간을 확보하기위해 archive시킨 후 프로그램을 실행했을 때, 에러가 난다면 그 프로그램은 RAM 상태에서만 실행되는 프로그램일 수도 있다. 이런 경우 해당 프로그램을 archive 를 해제시켜 RAM으로 옮긴 후 다시 실행했을 때, 정상적으로 실행되는지 확인해 볼 필요가 있다.
.89y랑 .9xy 파일은 뭔가요? 계산기에서 ppg 종류로 나타나는 이 파일들이 뭐죠?
.89y와 .9xy 파일들은 "기타(other)"에 속하는 파일 타입이다. 이런 파일들은 계산기의 표준 파일 타입은 아니지만, 특정한 유저 개발 프로그램들에 의해 사용되는, 유저가 만들어낸 파일 타입이다. 중요한 사실은, 이 파일 타입을 반드시 프로그램의 데이터로만 사용할 필요는 없다는 것이다. 물론 많은 게임들은 이 파일 타입으로 게임의 레벨 파일이나 그러한 정규 데이터 타입들을 자주 문자열 상태로 저장하는데 이용하기도 한다. 그렇지만 항상 프로그램 데이터로만 사용되는 것은 아니며, 만약 프로그램이 .89y 혹은 .9xy의 파일로 배포되었다면, 이 파일들은 아마도 ppg 파일들일 것이다.
"ppg" 파일 타입은 일반적으로 "압축되어 실행 파일의 모양을 갖는 프로그램(exepacked program)"의 형태로 사용된다. 이런 파일 타입은 원래 TI-Chess 팀에서 개발한 압축 포맷 형태의 nostub 프로그램 이었다. 이런 프로그램들은 일반적으로, 프로그램의 압축을 풀어서 압축되어 있던 파일을 실행하는 (일반적인 프로그램 형태의) 작은 런쳐가 함께 제공된다. 이러한 런쳐들은 또한 몇몇 AMS 버전들에 존재하는 용량 제한을 무력화시키는 기능을 포함하고 있기 때문에, 이런 프로그램을 실행하는 것에 있어서 걱정할 부분은 없다. 만약 TICT-Explorer 나 Flavien Racine가 개발한 Exporer를 쉘로 사용하고 있다면, 이러한 런쳐없이 자체적으로 이런 프로그램의 압축을 해제해서 실행해주는 기능을 제공하기 때문에 굳이 런쳐를 사용할 필요가 없다.
한 가지 알아두어야 할 사실은, 일부 런쳐들의 경우 AMS 2.07 이상의 버전과 호환되지 않는다는 것이다. 만약 그런 런쳐들을 만나, "Invalid Relocation Data in ASM Program" 라는 메시지가 뜨며 실행되지 않는다면, 위쪽 섹션에서 해결책을 찾아야 한다.
어떤 프로그램을 Voyage 200 계산기에서 실행할 수 있죠?
일반적으로, Voyage 200 계산기는 TI-92 Plus와 동일한 프로그램을 실행할 수 있다. 그러나, 다음의 호환성 문제는 주의할 필요가 있다 :
- Voyage 200에 설치 가능한 가장 오래된 AMS 버전은 2.07이다. 따라서 AMS 2.07 이상의 버전과 호환되지 않는 프로그램은 실행할 수 없다. 그렇지만, 만약 당신이 이 FAQ에서 권고하는대로 따른다면, AMS 2.07 이상의 버전에서 거의 모든 프로그램들을, 심지어 게임이라도, 심지어 프로그램이 커널을 요구할지라도, 아무런 문제없이 그 프로그램들을 실행할 수 있다.
- 게다가, 현재 프로그램이 실행되고 있는 계산기가 TI-89인지 TI-92 플러스인지 자동적으로 검출하려고 시도하는 일부 nostub 프로그램들은 (프로그램의 목적을 볼때) TI-92 Plus로 인식해야함에도 불구하고 계산기를 TI-89로 인식할 것이다. 이런 경우, 프로그램은 화면의 오른쪽 윗 부분(TI-89의 화면 크기)만을 사용하게 되고, 더 안 좋은 것은, 프로그램이 버튼들을 정확히 인식하지 못할 확률이 높다는 것이다. TI-89용과 TI-92 Plus용으로 버전이 나뉘어진 프로그램의 경우 이런 문제가 없을 것이다. 왜냐하면 이렇게 버전을 나누어 배포하는 프로그램들은 현재 프로그램이 실행되는 계산기가 TI-89 인지 TI-92 Plus 인지 자동감지할 필요가 없기 때문이다. 그렇지만 또 일부 (특히 최근의) 프로그램들은 계산기 기종을 정확히 감지해낸다. 대부분의 프로그램을 Voyage 200에서 정상적으로 작동하도록 이 문제를 수정하는 패치가 여기에 있다.
TI-89 Titanium에서 TI-89용 프로그램을 실행하려면 어떤 어셈블리 프로그램이 필요한가요?
많은 오래된 TI-89용 어셈블리(C 언어로 제작된 것 포함) 프로그램들을 TI-89 Titanium에서 실행하려면 해당 프로그램을 반드시 패치해야 한다. 그러나 최근 프로그램들은 아마 호환성을 염두에 두고 제작되었을 확률이 높고, 특히 2004년 중반 이후에 배포된 것들이라면 더욱 그럴 것이다. 패치하는 것 이외에도, TSR이나 커널기반(kernel-based) 프로그램이 작동되려면 반드시 특별한 툴이 설치(install)되어 있어야 한다. 특히 게임에 대해서 그렇지만, 다른 프로그램 종류에도 문제가 발생할 소지가 충분히 있다. 대부분의 경우에, 프로그래머들이 자신의 프로그램을 TI-89 Titanium에서 정상동작하도록 수정하는 것은 무척 쉬운 일이겠지만, 대부분의 프로그램들이 여전히 수정되지 않고 있다.
다행히, TI-89 프로그램을 Titanium에서 실행하는 것을 가능케 해주는 프로그램들이 릴리즈되었다. 여기서는 그 툴(tool)들에 대해 요약하고, 언제 이 툴들이 필요한지에 대해 알아보려고 한다(모든 프로그램을 실행 가능하게 하려면, 아래에서 말하는 툴을 모두 사용해야 할 것이다) :
- Ghostbuster - Ghostbuster는 많은 프로그램들에 있어 필수이기 때문에 거의 대부분의 유저들은 이 프로그램을 설치(install)해야 한다. Ghostbuster는 TI-89 프로그램이 가지고 있는 대부분의 호환성 문제들을 수정해준다. 패치 대상이 되는 호환성 문제들은 다음 섹션에서 더 자세히 언급하고 있다. 각 프로그램마다 일일이 Ghostbuster로 패치해주어야 하기때문에, 새로운 프로그램을 전송받을 때를 대비해 지우지 말고 계산기에 그대로 두는 것이 좋다. 사용하는 법은, ghostb("패치할 원본 파일명","패치된 결과물 파일명")을 입력하거나 그냥 ghostb("패치할 원본 파일명","")이라고 입력해서 원본 프로그램에 패치된 결과물을 바로 덮어씌워버릴 수도 있다. 이미 잘 정상적으로 작동하는 프로그램을 Ghostbuster로 패치해주더라도 아무런 문제를 일으키지 않기 때문에 걱정할 필요는 없다. 그렇지만, Ghostbuster를 실행할 때, 패치할 원본 파일명을 입력하지 않은채 실행하는 것은 문제를 일으킬 수 있다. ppg 프로그램(실행파일 형태로 압축되어 있는 프로그램)의 경우, 런쳐를 패치하는 것이 아니라, ppg 프로그램을 Ghostbuster로 패치해야 한다. Ghostbuster로 ppg 프로그램 자체의 패치를 시도할 경우, Ghostbuster는 ppg 프로그램의 압축을 자동으로 풀게된다. 이후에 패치된 프로그램을 실행할 때는 런쳐를 사용할 필요없이, 그냥 프로그램을 직접 실행하면 된다.
- HW3Patch - 특정 영역에 있는 코드의 실행을 방지하는 "용량 제한"을 무력화시킨다. HW3Patch는 DLL을 사용하거나 TSR을 설치하는 nostub 프로그램들을 실행하려면 반드시 설치되어 있어야 한다. HW3Patch를 설치하는 것은, 단순히 계산기에 전송한 후, "hw3patch()" 라고 입력한 후 엔터를 치면 짧은 메시지와 함께 완료된다. HW3Patch는 AMS 자체를 수정하기 때문에, 계산기의 AMS를 재설치하지 않는이상 그 효력이 계속해서 남아있게 된다(심지어 리셋을 해도 사라지지 않는다). 때문에 한번 실행했다면, 더이상 HW3Patch 파일을 남겨둘 필요없이 지워도 관계없다. 커널(kernel)을 설치하기 전에 미리 HW3Patch를 설치할 필요가 없는데, 이는 PreOS 자체가 용량 제한을 무력화시키는 코드를 포함하기 때문이다. 단, TI-89 Titanium의 경우엔 HW3Patch를 먼저 설치해 주어야 하는 예외가 있다.
- PreOS - PreOS는 TI-89 Titanium을 지원하는 커널(kernel)로, 커널 기반(kernel-based) 프로그램을 실행하기 위해서는 반드시 설치해야 한다. PreOS는 다른 계산기에서와 같이 TI-89에서도 동일하게 작동한다. PreOS에 대한 자세한 내용은 커널(kernel) 섹션을 참고하라. TitaniK와 Icepreg는 TI-89 Titanium을 위한 커널(kernel)이었다. 그러나 이들은 지금 구식이 되었고, AMS 3.10을 지원하지 않는기 때문에 이들 대신 PreOS를 사용해야만 한다.
TI-89 Titanium에서 실행이 되지 않는 프로그램이 있는데, 왜 그렇죠?
이전 섹션에서 쓰여진대로, 지금 현재 대부분의 호환성 문제들은 극복된 상태이다. 호환성 문제는 다음과 같이 프로그램의 타입에 좌우된다:
C언어 프로그램의 호환성 문제는 어떤 버전의 TI-GCC로 제작되었는지에 따라 결정된다. TI-89 Titanium과 호환되는 첫 번째 TI-GCC 라이브러리는 2004년 3월 14일에 릴리즈된 0.95 beta 6 버전이다. 그러므로, 그 이전에 배포된 C언어로 제작된 프로그램들은 아마 TI-89 Titanium에서 정상적인 실행이 안될 수도 있다. 반대로 최신 버전의 TI-GCC로 새롭게 컴파일된 C언어 프로그램들은 아마 정상적으로 실행될 것이다.
그러나, 몇몇 C언어 프로그래머들은 새로운 프로그램을 이전 버전의 컴파일로로 컴파일했을수도 있기때문에 새롭게 C언어로 제작된 프로그램이라 할지라도 여전히 문제를 가지고 있을 수 있다. (특히 ticalc.org는 베타버전이 아닌 정식버전이 나올때 까지 문제를 일으키는 TI-GCC 0.94 버전을 방치해 두었기 때문에 예전 버전으로 컴파일한 프로그래머가 제법 될 것이다) 또, 프로그램이 새로운 라이브러리로 제작되었다할지라도, 프로그램 자체에 뭔가 비호환성을 일으킬만한 요소를 가지고 있다면, 역시 TI-89 Titanium에서 정상적으로 실행되지 않을 것이다.대부분의 호환되지 않는 TI-GCC 프로그램들은 최신 버전의 TI-GCC로 다시 컴파일함으로써 수정될 수 있다.
매오 오래된 버전의 라이브러리에 맞추어 제작된 프로그램의 경우 새로운 라이브러리에 적합하도록 프로그램의 소스 코드를 수정해야할 필요가 있을 지도 모른다.만약 (오래된 라이브러리 루틴을 사용한 것이 아닌) 프로그램 자체에 비호환성을 일이키는 코드가 존재한다면, 역시 마찬가지로 소스 코드 자체의 수정이 필요하겠지만, 이런 케이스는 매우 드문 경우다.Ghostbuster는 모든 앞서 살펴본 TI-GCC 라이브러리 루틴에서 오는 문제들과 또 다른 원인에서 오는 많은 문제들을 수정해 주는 기능을 한다.
어셈블리어로 제작된 Nostub 프로그램은 그레이스케일(grayscale)을 사용하지 않거나, TSR를 설치하려고 하지 않는 경우엔, 아마도 정상적으로 작동할 것이다. 그러나, 더 복잡한 nostub 프로그램(과 몇몇 단순한 프로그램 역시)은 TI-89 Titanium에서 실행되도록 업데이트되기 전까지 정상적으로 작동하지 않을 것이다. 이것은 일반적으로 소스 코드 자체의 수정이 필요하다.
Ghostbuster는 대부분의 이러한 문제들 또한 TI-89 Titanium에서 정상적으로 실행되도록 수정해줄 수 있다.
kernels을 필요로 하는 프로그램을 실행하는 것은 최신 버전의 PreOS가 설치되어 있을 때 가능한 일일 것이다. 커널 혹은 커널과 함께 배포되는 라이브러리가 대부분의 비호환성 문제를 일으키는 원인이었는데, 지금은 TI-89 Titanium에서 정상적으로 작동하도록 업데이트된 상태이다. 그렇지만, 몇몇 커널 기반(kernel-based) 프로그램은 여전히 프로그램 자체에 비호환성을 일으키는 코드를 포함하고 있기도 하다.
Ghostbuster는 대부분의 이러한 문제들 역시 TI-89 Titanium에서 정상적으로 실행되도록 수정해줄 수 있다.
플래시 어플리케이션(Flash applications)은 대부분 업데이트가 필요한 그 어떤 것도 시도한 적이 없기 때문에 대개 정상적으로 잘 작동할 것이다(Flash applications will usually work since most of them would never have attempted to do any of the things that updates are necessary for).
(TSR도 런쳐도, 커널도 아닌) 일반 프로그램을 제작할 경우 티타늄에서 작동하도록 만들기 위해 다루어야 하는 가장 중요한 문제들이 존재한다(Here are the main problems that need to be dealt with to get ordinary programs (that is, not TSRs, launchers or kernels) to work on the Titanium):
RAM에서 "유령 공간(ghost space)"는 더이상 존재하지 않는다. 리얼 벡터를 반영하는 0x40000+(벡터 주소)의 메모리에 접근하여 인터럽트 벡터에 쓰는 것을 시도하는 프로그램은 어떤 프로그램이든지 더이상 작동하지 않을 것이다. 이 방식은 그 주소의 쓰기 프로텍션(write protection)를 피하기 위해 행해졌다. 지금 프로그램은, TI-89 와 TI-89 티타늄 두 곳 모두에서 작동하는 0x600001 레지스터로 그 프로텍션을 꺼야한다. 불운하게도, (지금은 호환되지 않는) 이전 방법은 과거에 오랫동안 대중적이었기때문에, 그 결과 대부분을 차지하는 이전 방식을 사용한 프로그램들은 TI-89 Titanium 에서 정상적으로 실행되지 않을 것이다. TI-GCC의 이전 버전들은 인터럽트를 설정하는 이 방법을 사용했는데, 그로인해 인터럽트를 사용하는 거의 모든 프로그램(모든 그레이스케일을 사용하는 프로그램, 대부분의 게임, 그리고 많은 다른 프로그램)으로 하여금 정상적으로 실행되지 않는 결과를 낳았다. 그러나 지금은 이 문제가 해결되었다.
현재 ROM은 이전과 시작 주소가 달라졌다. 많은 프로그램들은 ROM의 출발점을 찾기 위해, 롬의 위치를 읽어온 후 0x600000를 AND 하는것을 시도했다. 모든 계산기에 대해 그것을 정확히 산출하기 위해, 이제는 0xE00000을 사용해야 한다. 많은 프로그램들은 하드웨어 버전을 확인함으로써 롬의 출발점을 얻는다. 지금 그들은 잘못된 결과를 돌려줄지도 모르고(틀리게 계산기를 추측하는 것은 HW1이다) 크래쉬가 나게 할지도 모른다. 만약 프로그램이 당신의 계산기를 HW1으로 추측할 경우, 그레이스케일과 같은 하드웨어 버전에 민감한 사항들은 작동하지 않을 것이다. 이 문제는 또한 더 오래된 TI-GCC 버전들에서 존재했다.
TI-89 Titanium 이 한번 인식되었다가, 그 이후로 컴퓨터에 인식이 안돼요. 어떻하죠?
최근 발매된 TI-89 Titanium 의 경우 하드웨어 버전이 HW4인데, 이 버전의 주된 변경 내용 중 하나는 USB 2.0을 지원한다는 것이다.
하드웨어적으로 USB 2.0을 지원하지만, 계산기의 OS인 AMS 역시 3.10 버전을 설치해 주어야 하드웨어와 보조를 맞추며 정상적으로 USB 2.0을 지원하게 된다. 처음 계산기를 구입했을 때는 물론 최신 AMS인 3.10 버전이 설치되어 있지만, TI-Connect 의 구성 프로그램 중 일부(예를 들면, OS Downloader 등)를 조작하다가 계산기의 AMS가 오래된 버전인 3.00 버전으로 다운그레이드 되기도 한다.
HW4인 계산기에 3.00 버전의 AMS를 설치하게되면 OS와 하드웨어의 보조가 맞지 않기 때문에 USB 2.0 지원과 관련해서 계산기를 컴퓨터에서 인식하지 못하는 사태가 발생한다. 혹시 만약 계산기가 인식되지 않는다면 지금 한번 계산기의 AMS 버전을 확인해 보기 바란다.
AMS가 3.00 버전으로 다운그레이드되었을 경우, 계산기의 OS가 지원 가능한 USB 방식은 1.2(혹은 1.0) 방식이므로, 컴퓨터의 바이오스 세팅에서 USB 2.0 지원 옵션을 Disable 로 설정해 비활성화시켜줄 필요가 있다. 컴퓨터 바이오스에서 USB 2.0 지원 옵션을 Disable 시켜주게 되면 USB 2.0 지원 하드웨어를 연결해도, USB 1.2(혹은 1.0) 방식으로 연결되기 때문에, 위와 같은 문제로 컴퓨터에서 인식이 되지 않던 TI-89 Titanium 을 인식시킬 수 있다.
위의 방법을 통해 계산기가 인식되었다면, 가장 먼저 최신 버전의 AMS로 직접 다시 설치해 주는 것이 좋다. 일단 AMS 버전만 3.10 이상의 최신 버전으로 다시 설치되면, 컴퓨터 바이오스의 USB 세팅을 2.0 지원으로 설정해도 계산기를 정상적으로 인식하게 된다.







