키 스트로크 프로그래밍

Keystroke programming

스트로크 프로그래밍은 장치나 응용 프로그램의 각 키 스트로크를 어떤 식으로든 기록한 다음 재생하여 녹음된 키 프레스를 여러 번 반복할 수 있도록 하는 구체적인 프로그래밍 방법을 설명한다.키 스트로크 프로그래밍은 가장 흔하지만 프로그램 가능한 계산기에서만 발견되지는 않지만, Vim(텍스트 편집기)[1]과 같은 키 스트로크 프로그래밍 가능한 소프트웨어 애플리케이션도 있다.

예:TI 계산기

TI-58C

텍사스 인스트루먼트 TI-58/TI-58C/TI-59 계산기는 프로그래밍이 가능했고 프로그램 저장소는 계산기 키패드의 키 위치에 해당하는 일련의 코드 형태를 취했다.기본 키 레이아웃의 간단한 도표는 다음과 같다.

x1 x2 x3 x4 x5
1배 A B C D E
2배 두 번째 INV 후두의 C E CLR
3배 LRN x x2 x 1/x
4배 SST STO RCL SUM yx
5배 비스트 EE ( ) ÷
6배 GTO 7 8 9 ×
7배 SBR 4 5 6 -
8배 RST 1 2 3 +
9배 R/S 0 . +/- =

각 키에는 두 자리 코드가 할당된다. 대부분의 (전부는 아님) 키의 경우, 열 번호(테이블의 왼쪽 아래에 표시됨)에서 수십 자리 숫자가 나오고, 열 번호(테이블 상단에 표시됨)에서 단위 자릿수가 지정된다.

이제 매우 간단한 프로그램을 생각해 보십시오. 이 프로그램은 표시된 숫자에 2를 더하고, 그리고 나서 멈추는 겁니다.프로그램은 프로그램 위치 000에서 시작하여 다음과 같이 입력된다.

위치 내용물 의미 평.
000 85 +
001 02 2
002 95 = 결과를 계산하다
003 91 R/S 프로그램을 중지하다

이 프로그램을 사용하려면 실행할 번호 n을 입력하고 RST를 눌러 현재 프로그램 위치가 000인지 확인한 다음 R/S를 눌러 실행을 시작하십시오.프로그램이 중지되면(그러한 간단한 프로그램에 대해 매우 빠르게 발생해야 함), 디스플레이에 n + 2 숫자가 표시된다.

코드 85, 95, 91은 위의 그리드에 + , =, R/S로 표시된 키의 위치에 해당하지만, 2에 대한 코드는 그리드 위치에서 예상하는 바와 같이 83이 아니라 02이다.이 마지막 코드는 프로그램을 읽으려는 사람이 더 쉽게 이해할 수 있도록 선택되었다.0행은 없으니 코드 00..09는 키 0 .. 9를 나타내기 위해 사용된다.

상황에 따른 해석

이러한 TI 계산기는 최대 100개의 데이터 메모리 위치를 처리할 수 있도록 허용되었으며, 번호는 00에서 99까지(일부 모델은 이보다 낮은 한도를 가지고 있었다).STO 4 2와 같은 키 스트로크 시퀀스(현재 표시된 숫자를 메모리에 저장)는 42로 인코딩된다.이 경우 첫 번째 42는 STO 키의 키 코드지만, 두 번째 42는 키 코드가 아니라 메모리 레지스터 번호다.계산기는 STO 키의 코드를 따라야 하기 때문에 그렇게 해석할 줄 안다.

프로그램 주소는 3자리 숫자로, 잠재적으로 프로그램이 최대 1000계단으로 구성될 수 있으며, 번호가 000~999(사실 이 최대치에 대해 생산되는 모델 중 어느 것도 허용되지 않음)이었다.분기 지침(: GTO 3 4 5 (위치 345에 대한 조건 없는 분기)은 61 03 45로 인코딩된다.이 경우 지점 목적지의 수백 자리는 두 번째 명령 바이트(opcode 후)의 단위 자릿수에 있고, 나머지 자릿수는 세 번째 명령 바이트에 있다.

반면, 61 11과 같은 코드 순서는 기호 라벨 A로 표시된 위치에 대한 분기인 GTO A를 나타낸다.계산기는 opcode 바로 뒤의 바이트의 수십 자릿수가 0이 아니기 때문에, 이것이 번호의 위치에 대한 분기보다는 상징적인 분기라고 말할 수 있다.

키패드의 대부분의 키는 심볼 라벨로 사용할 수 있다.예를 들어, STOGTO가 실제로 프로그램 어딘가에서 라벨로 정의되었다면, GTO STOGTO와 같은 시퀀스는 합법적이다.

한정자 키

대부분의 키는 INV미리 눌렀는지, 아니면 2를 눌렀는지에 따라 여러 기능이 있었다.INV는 다음 기능의 "역행"(의미했던 모든 것)을 호출하고 프로그램에 별도의 키 입력(코드 22)으로 기록했으며, 2번째는 키패드 바로 위에 있는 키패드 페이스 플레이트에 쓰여진 완전히 다른 기능을 호출했다.예를 들어, 2번째 x2 누르면 sin 함수가 호출되고, INV 2번째 x2(또는 INV sin)는 아크사인을 주었다.

이 대체 함수의 코드는 단위 자릿수에 5를 더함으로써 원래의 키 함수의 코드에서 파생된다.따라서 두 번째 키 자체의 위치(21, 26)에 해당하는 키 코드는 절대로 opcode로 사용되지 않는다.번째 접두사로 생성된 코드 표는 다음과 같다.

x6 x7 x8 x9 x0
1배 A' B' C' D' 이'
2배 INV 통나무를 하다 CP CLR
3배 Pgm P→R 죄를 짓다 cas 햇볕에 그을리다
4배 인스. CMs 엑시 Prd 인드
5배 고치다 인트 x
6배 일시 중지 x=t 노프 op 디그
7배 엘블 x σ스 평균(x) 래드
8배 St flg 만약 flg. 디엠에스 π 그라드
9배 쓰다 Dsz 조언 프렛 리스트

병합된 키스트로크

Ind 키는 간접적으로 허용된다. 메모리 레지스터 또는 프로그램 위치에 대한 참조가 허용되는 경우 이 키를 사용하여 메모리 레지스터에서 실제 값을 가져올 수 있다.예를 들어, 키 시퀀스 RCL Ind 1 0은 메모리 레지스터 10의 값을 가져온 다음, 내용을 현재 피연산자로 가져올 메모리 레지스터의 수로 차례로 사용하는 것을 의미한다.그러나 이 경우 코드 순서 43 40은 RCL Ind가 아닌 RCL 4 0으로 해석되기 때문에 Ind를 코드 40으로 인코딩할 수 없다.

하지만 00를 사용하기 때문에..09--9 에 대한 코드 09, 62-64, 72-74, 82-84, 92는 다른 용도로 사용할 수 있다.따라서 이들 중 대부분op Ind 시퀀스를 나타내기 위해 재할당된다.

x2 x3 x4
6배 Pgm 인드 엑시 인드 Prd 인드
7배 STO 인드 RCL 인드 SUM 인드
8배 GTO 인드 op 인드
9배 INV SBR

따라서 RCL Ind 1 0의 키 시퀀스는 73 10으로 인코딩된다.

INV SBR(서브루틴에서 반환)에 대한 코드 92의 사용에 유의하십시오. 이는 모호성 때문에 필요하지 않지만, 이와 같은 공통 시퀀스로 공간을 절약하기 위해 수행되었다.

참고 항목

참조

  1. ^ "Vim documentation: Repeat".