'memory game'에 해당되는 글 3건

  1. 2023.02.03 TI-86 공학용 계산기 1
  2. 2022.12.07 TI-83 plus에서 메모리 게임.
  3. 2022.10.21 Casio Algebra fx-2.0에서 memory game 2

TI-86 공학용 계산기

계산기 2023. 2. 3. 23:24 posted by tolkien

우연히 TI-86 계산기를 손에 넣게 되었습니다.

TI-83 plus 랑 비교해보면

TI-86 공학용 계산기

  • Flash ROM이 없습니다. program은 RAM memory에 저장만 가능합니다. 따라서 PC와 link해서 backup해야 합니다.
  • TI-83 시리즈보다 더 유연한 듯 합니다. LIST의 경우, L1~L6만으로 제한되었던 TI-83과 달리 LIST 변수를 자유롭게 생성할 수 있습니다. 그것때문인지 모르겠지만,
  • 속도가 조금 느린 듯 합니다. TI-83에 porting했던 memory game을 넣어서 실행해보면 좀 시간이 더 걸리는 느낌입니다. 스펙상으로는 같은 6 Mhz인데. TI-83에서 L1~L6로 제한해서 변수 처리의 유연성을 줄인 대신 속도를 얻은 것 같습니다. 뭐 대규모 프로그램이 아닌 이상 LIST 6개면 무난할 것같기도 합니다.
  • 소프트 메뉴 버튼: HP 계산기에 보여준 soft menu button이 있습니다. TI-89에서 windows 95등에서 보여주는 상단에 menu등을 보여주는데, TI-86는 활성화된 menu를 화면 하단에 보여줍니다.

TI-89 menu
TI-89의 menu

 

TI-86의 soft menu
TI-86의 soft menu

 

마찬가지로 memory 게임을 porting해봤습니다. TI-83과 문법은 같은데, keyword가 조금 다릅니다. 또, TI-83과 달리 TI-89처럼 keyword를 직접 타이핑할 수 있습니다. (이것때문에 느려진 것인가?)

code는 아래와 같습니다. ('->'는 STO입니다. !=는 'not equal')

더보기
program: MEMORY
19->dimL L6
100->L6(10)

Lbl INIT
ClLCD 
For(I,1,9)
I->L6(I)
End
For(I,1,9)
int (rand*10)->J
If J!=0
Then
L6(I)->K
L6(J)->L6(I)
K->L6(J)
End
End
For(I,1,9)
I->L6(10+I)
End
For(I,1,9)
int (rand*10)->J
If J!=0
Then
L6(10+I)->K
L6(10+J)->L6(10+I)
K->L6(10+J)
End
End

0->W
0->R
For(I,2,6,2)
For(J,2,6,2)
Outpt(J,I,0)
Outpt(J,9+I,0)
End
End

Lbl LOOP
Outpt(4,8,"<"
Outpt(4,9,"-"
0->S
-1->Z

While S==0 or Z<0
getKy->S
If S==45
Return 
If S!=0
Then
S->X
0->Y
1->Z
MDISP
Z->U
End
End
Outpt(4,8,"-"
Outpt(4,9,">"
0->T
-1->Z
While T==0 or Z<0
getKy->T
If T!=0
Then
T->X
9->Y
1->Z
MDISP
Z->V
End
End
0->K
While K==0
getKy->K
End
If U!=V
Then
0->Z
Else
W+1->W
2->Z
End
S->X
0->Y
MDISP
T->X
9->Y
MDISP
R+1->R
If W<9
Goto LOOP
If L6(10)>R
R->L6(10)
ClLCD 
Disp "SCORE:"
Disp R
Disp "BEST SCORE:"
Disp L6(10)
0->K
While K==0
getKy->K
End
Goto INIT

program:MDISP
0->A
If Y!=0
Then
Y+1->C
Else
0->C
End
If X==72
Then
Y+2->A
2->B
C+7->C
End
If X==82
Then
Y+2->A
4->B
C+4->C
End
If X==92
Then
Y+2->A
6->B
C+1->C
End
If X==73
Then
Y+4->A
2->B
C+8->C
End
If X==83
Then
Y+4->A
4->B
C+5->C
End
If X==93
Then
Y+4->A
6->B
C+2->C
End
If X==74
Then
Y+6->A
2->B
C+9->C
End
If X==84
Then
Y+6->A
4->B
C+6->C
End
If X==94
Then
Y+6->A
6üB
C+3->C
End
If A==0
Then
-2->Z
Return 
End
If L6(C)==0
Then
-1->Z
Return 
End
If Z==2
Then
0->L6(C)
Return 
End
If Z!=0
Then
L6(C)->Z
End
Outpt(B,A,Z)
Return

실행 code 및 manual 첨부합니다.

MDISP.86p
0.00MB
MEMORY.86p
0.00MB
86bookeng.pdf
2.60MB

 

TI-83 plus에서 메모리 게임.

계산기 2022. 12. 7. 15:49 posted by tolkien

 

https://tinuviel.tistory.com/1071 - Casio Algebra fx-2.0에서 memory game 에서 작성했던 TI-83 plus에서 동작하는 memory game 실행 code입니다. TI-Editor와 Wabbitemu를 이용해서 작성 및 검증했습니다.

MDISP.8xp
0.00MB
MEMORY.8xp
0.00MB

 

TI-Editer는 200x년대에 TI에서 배포한 TI-connect package에 들어있는 프로그램입니다. ti-planet에서 구했는데, TI 공학용 계산기(TI-73부터 TI-89, voyage-200)에 사용할 프로그램 작성용으로 매우 유용합니다.

TIProgramEditor2.zip
0.90MB

 

Wabbitemu는 Android는 못 쓸 물건인데, Windows용은 쓸만하네요. TI-84까지만 됩니다. TI-89 이상은 다른 emulator를 구해야 할 것 같습니다. (Windows 10 64bit에서 확인했습니다.)

Wabbitemu.exe
4.58MB

Casio Algebra fx-2.0에서 memory game

계산기 2022. 10. 21. 22:02 posted by tolkien

TI-83 plus에 구현해 놓은 memory game을 afx-2.0에 porting해봤습니다.
(원래 code는 여기에 있습니다.) 이걸 옮기다가 몇가지 변경을 했습니다.

  1. 카드 뒤집는 부분을 subroutine으로 뺐습니다. key 값을 X에 담고, Y에는 세트 구분 (0: 세트 A, 9: 세트 B), 처리 명령을 Z에 담았습니다. Z는 구체적으로...
    1. Z=0: 틀렸으므로 카드를 뒤집어라. (0으로 다시 돌려놓음)
    2. Z=1: 해당 카드의 숫자를 보여줄 것.
    3. Z=2: 맞았으니까, 해당 위치의 값을 0으로 바꾸고 출력 부분은 건드리지 않음.
    4. 반환시 Z=-1 : 해당 위치는 이미 뒤집었슴.
    5. 반환시 Z=-2 : invalid key input
  2. 카드 상태를 저장을 A,B,... 변수가 아닌 List를 사용했습니다. 덕분에 원래 source coe에서 보이던 변수 쥐어짜기를 할 필요가 없어졌습니다.
  3. 해놓고 보니, 괜찮아서 다시 TI-83 plus에 back porting했습니다. (그래서, 화면은 TI-83 plus)
  4. TI-83 plus로 다시 작성할 때, afx-2.0과 다른 점은
    1. muli statement가 되지 않아서 code가 길어졌습니다.
    2. key code가 다릅니다.
    3. repeat ~ while 문이 없어서 while ~ end문을 쓰다보니 S->0과 같은 변수 초기화를 해주어야 하네요. 그외에는 code는 대동소이합니다. 

code를 아래와 같습니다.  '->'는 →입니다. !=는 'not equal'입니다.

더보기
FILE:MEMORY
ClrText:100->Q
Lbl 0
For 1->I To 9
I->List 19[I]
Next
For 1->I To 9
Int (Ran# x10)->J
If J!=0:Then
List 19[I]->K
List 19[J]->List 19[I]
K->List 19[J]
EndIf:Next
0->List 19[10]
For 1->I To 9
I->List 19[10+I]
Next
For 1->I To 9
Int (Ran# x10)->J
If J!=0:Then
List 19[10+I]->K
List 19[10+J]->List 19[10+I]
K->List 19[10+J]
EndIf:Next

0->W:0->R
For 2->I To 6 Step 2
For 2->J To 6 Step 2
Locate I,J,0
Locate 10+I,J,0
Next:Next

Lbl 1
Locate 9,4,"<"
Locate 10,4,"-"
Do:LpWhile Getkey!=0
Do:Getkey->S
If S=47:Then Return:IfEnd
If S!=0:Then S->X:0->Y:1->Z:Prog "~MDISP":Z->U:IfEnd
LpWhile S=0 Or Z<0
Locate 9,4,"-"
Locate 10,4,">"
Do:LpWhile Getkey!=0
Do:Getkey->T
If T!=0:Then T->X:10->Y:1->Z:Prog "~MDISP":Z->V:IfEnd
LpWhile T=0 Or Z<0
Do:LpWhile Getkey!=0
Do:Getkey->K:LpWhile K=0
If U!=V:Then 0->Z
Else W+1->W:2->Z:IfEnd
S->X:0->Y:Prog "~MDISP"
T->X:10->Y:Prog "~MDISP"
R+1->R
Locate 2,7,"TRIAL:     "
Locate 9,7,R
If W<9:Then Goto 1:IfEnd
If Q>R:Then R->Q
Locate 2,7,"BEST : "
Locate 9,7,R
IfEnd
Goto 0

FILE:~MDISP
0->A
If X=74:Then
Y+2->A:2->B:Y+7->C
IfEnd
If X=73:Then
Y+2->A:4->B:Y+4->C
IfEnd
If X=72:Then
Y+2->A:6->B:Y+1->C
IfEnd
If X=64:Then
Y+4->A:2->B:Y+8->C
IfEnd
If X=63:Then
Y+4->A:4->B:Y+5->C
IfEnd
If X=62:Then
Y+4->A:6->B:Y+2->C
IfEnd
If X=54:Then
Y+6->A:2->B:Y+9->C
IfEnd
If X=53:Then
Y+6->A:4->B:Y+6->C
IfEnd
If X=52:Then
Y+6->A:6->B:Y+3->C
IfEnd
If A=0:Then
-2->Z:Return:IfEnd
If List 19[C]=0:Then
-1->Z:Return:IfEnd
If Z=2:Then 
0->List 19[C]:Return:IfEnd
If Z!=0:Then
List 19[C]->Z:IfEnd
Locate A,B,Z
Return

FX-9860에서 동작확인한 code입니다. (FA-124에서 IMPORT로 가져올 수 있습니다.)

MEMORY.G1M
0.00MB
MDISP.G1M
0.00MB

 

TI-83 plus에서 동작하는 code입니다. (text file. TI-83 plus에서 일일이 입력해야 합니다.)

memory_ti-83p.txt
0.00MB

이걸 Sharp EL-5230에 porting 할 수 있을지 생각중입니다. memory가 충분할 지...

( 2023/05/03 : fx-9860에서 동작하도록 Getkey buffer가 clear가 됨을 확인하는 code 추가. )