10 '***** Nguyen Phil *****
20 ' *****  pour CPC   *****
30 MODE 2:INK 0,26:INK 1,0:BORDER 26
40 DEF FNcom(x)=INT(x*213/639/8)+1
50 GOSUB 980
60 DEG
70 FOR j=160 TO 288 STEP 32:FOR i=80 TO 200 STEP 24:g%=i-2:d%=i+18:b%=j-4:h%=j+20:GOSUB 920:NEXT:NEXT
80 g%=78:d%=218:b%=316:h%=340:GOSUB 920
90 g%=70:d%=226:h%=356:b%=140:GOSUB 920
100 g%=66:d%=232:b%=132:h%=364:GOSUB 920
110 PRINT CHR$(23)"1";:MOVE 10.5*8,302:TAG:PRINT"7  8  9  :  x  +";
120 MOVE 10.5*8,270:PRINT"4  5  6  -  ^  %";
130 MOVE 10.5*8,238:PRINT"1  2  3  "CHR$(254)"  "CHR$(250)"  "CHR$(248);
140 MOVE 10.5*8,206:PRINT"0  .  C  S  "CHR$(249)"  T";
150 MOVE 10.5*8,174:PRINT CHR$(253)"  "CHR$(252)"  "CHR$(251)"  "CHR$(255)"  #  =";
160 WINDOW#1,12,26,5,5
170 PRINT#1,STRING$(14,".")"0";
180 x=340:y=200:ax=x:ay=y:pasx=8:pasy=16
190 MOVE x,y:TAG:PRINTCHR$(247);:TAGOFF
200 LOCATE 50,3:PRINT"NNH research presente:":LOCATE 50,5:PRINT"Calculatrice de poche":LOCATE 50,7:PRINTCHR$(164)" 1986..."
210 LOCATE 56,9:PRINT"   Fonctions   ":LOCATE 50,11:PRINT"#=fin  C=cos  S=sin":LOCATE 50,12:PRINT"L=log  T=tan  At=arctan":LOCATE 50,13:PRINT"CE=clear  M+=memoire ":LOCATE 50,14:PRINT"M-=vide mem  Mrc=affiche mem"
220 LOCATE 50,15:PRINT"Ex=expon.  ^=puiss."
230 LOCATE 50,16:PRINT"+=add  -=soust.  =egal.":LOCATE 50,17:PRINT"x=multi.  :=divis.  %=pourc."
240 LOCATE 50,18:PRINT"Deplac. souris ou Joystick"
250 g%=48*8:d%=78*8:h%=17.5*16:b%=6*16:GOSUB 920
260 g%=48*8-4:d%=78*8+6:h%=17.5*16+4:b%=6*16-6:GOSUB 920
270 feu=0:WHILE feu=0:souri$=BIN$(JOY(0),5):IF souri$<>"00000" THEN GOSUB 310
280 WEND
290 IF (x<218 AND x>78) AND (y<308 AND y>156) THEN GOSUB 400 ELSE GOTO 270
300 GOTO 270
310 IF MID$(souri$,1,1)="1" THEN feu=1:RETURN
320 IF MID$(souri$,2,1)="1" THEN x=x+pasx
330 IF MID$(souri$,3,1)="1" THEN x=x-pasx
340 IF MID$(souri$,4,1)="1" THEN y=y-pasy
350 IF MID$(souri$,5,1)="1" THEN y=y+pasy
360 IF x>614 THEN x=614 ELSE IF x<5 THEN x=5
370 IF y>397 THEN y=397 ELSE IF y<31 THEN y=31
380 PRINTCHR$(23)"1";:TAG:MOVE ax,ay:PRINTCHR$(247);:MOVE x,y:PRINTCHR$(247);:TAGOFF
390 PRINTCHR$(23)"0";:ax=x:ay=y:RETURN
400 SOUND 1,x+y,10:FOR i=1 TO 100:NEXT      
410 com=FNcom(x)-3
420 FOR qw=1 TO 100:CLEAR INPUT:NEXT
430 IF y>156 AND y<180 THEN 490:'5eme ligne
440 IF y>188 AND y<212 THEN 630:'4eme ligne
450 IF y>220 AND y<244 THEN 710:'3eme ligne
460 IF y>252 AND y<276 THEN 780:'2eme ligne
470 IF y>288 AND y<312 THEN 850:'1ere ligne
480 GOTO 270
490 ON com GOTO 500,510,520,530,540,550
500 GOSUB 1090:M=T:RETURN
510 m=0:RETURN
520 nb=m:nb$=STR$(nb):GOTO 1080
530 nb=0:nb$="":t=0:flag=0:OP$="":PRINT#1,STRING$(14,".")"0";::RETURN
540 END
550 IF op$="/" THEN t=t/nb
560 IF op$="X" THEN t=t*nb
570 IF op$="+" THEN t=t+nb
580 IF op$="-" THEN t=t-nb
590 IF op$="^" THEN t=t^nb
600 IF op$="exp" THEN t=t^nb
610 flag=1
620 t$=STR$(t):PRINT#1,STRING$(15-LEN(t$),".");t$;:nb$="":RETURN
630 ON com GOTO 640,650,670,680,690,700
640 nb$=nb$+"0":GOTO 1080
650 IF flag=1 THEN RETURN ELSE IF nb$="" THEN nb$="0." :flag=1:RETURN:ELSE flag=1:nb$=nb$+"." ELSE RETURN
660 GOTO 1080
670 GOSUB 1110:T1=COS(T1):GOSUB 1130:NB=T1:RETURN
680 GOSUB 1110:T1=SIN(T1):GOSUB 1130:NB=T1:RETURN
690 GOSUB 1110:T1=ATN(T1):GOSUB 1130:NB=T1:RETURN
700 GOSUB 1110:T1=TAN(T1):GOSUB 1130:NB=T1:RETURN
710 ON com GOTO 720,730,740,750,760,770
720 nb$=nb$+"1":GOTO 1080
730 nb$=nb$+"2":GOTO 1080
740 nb$=nb$+"3":GOTO 1080
750 op$="exp":GOTO 1090
760 GOSUB 1110:T1=LOG(T1):GOSUB 1130:NB=T1:RETURN
770 GOSUB 1110:T1=SQR(T1):GOSUB 1130:NB=T1:RETURN
780 ON com GOTO 790,800,810,820,830,840
790 nb$=nb$+"4":GOTO 1080
800 nb$=nb$+"5":GOTO 1080
810 nb$=nb$+"6":GOTO 1080
820 IF nb=0 THEN nb$="-0"+nb$:GOTO 1080 ELSE op$="-":GOTO 1090
830 op$="^":GOTO 1090
840 GOSUB 1110:T1=T1/100:GOSUB 1130:NB=T1:RETURN
850 ON com GOTO 860,870,880,890,900,910
860 nb$=nb$+"7":GOTO 1080
870 nb$=nb$+"8":GOTO 1080
880 nb$=nb$+"9":GOTO 1080
890 op$="/":GOTO 1090
900 op$="X":GOTO 1090
910 op$="+":GOTO 1090
920 MOVE G%,B%:DRAW G%,H%,1:DRAW D%,H%,1
930 DRAW D%,B%,1:DRAW G%,B%,1:MOVE G%+2,B%-2
940 DRAW D%+1,B%-2,1:DRAW D%+1,H%-2,1:MOVE D%+2,B%-2
950 DRAW D%+2,H%-4,1:MOVE D%+3,B%-2:DRAW D%+3,H%-6,1
960 MOVE G%-1,B%:DRAW G%-1,H%
970 RETURN
980 SYMBOL 255,0,119,68,70,68,68,119
990 SYMBOL 254,0,224,128,201,134,134,233
1000 SYMBOL 253,0,144,242,146,151,146,146
1010 SYMBOL 252,0,144,240,144,151,144,144
1020 SYMBOL 251,151,245,150,149,144,151,148,151
1030 SYMBOL 250,0,142,138,138,138,138,238
1040 SYMBOL 249,0,232,172,232,168,168,164
1050 SYMBOL 248,0,7,136,136,80,80,32
1060 SYMBOL 247,255,130,132,132,130,177,203,134
1070 RETURN
1080 nb=VAL(nb$):PRINT#1,STRING$(15-LEN(nb$),".");nb$;:RETURN
1090 IF flag=1 THEN flag=0 ELSE t=nb
1100 nb=0:nb$="":RETURN
1110 IF flag=1 THEN FLAG=0:T1=T ELSE T1=NB
1120 RETURN
1130 T1$=STR$(t1):PRINT#1,STRING$(15-LEN(t1$),".");t1$;:RETURN