Base pour Sharp PC1500 ( pas de programme )
tir du magazine Hebdogiciel N10

	Il existe des calculatrices spcialises qui permettent de faire des calculs de transformation de base. Elles sont trs utiles aux programmeurs. Le programme ci-dessous galement.
	Vous pouvez effectuer des calculs dans quatre bases, passer facilement de l'une  l'autre et mme stocker et rappeler des constantes.
description de l'cran :
X : ? ......................
base
O)ctal		rsultat du calcul 
B)inaire	prcdent
D)cimal	ou espace
H)exadcimal

mode calcul :
	On rentre l'oprateur prcd de son signe ( +,-, * ) l'opration se fait avec le rsultat de l'opration prcdente ( ou zro ), exemple :
D :?
D :10 ( enter )=> D :? 10
D :+10 ( enter ) => D :? 20

changement de base :
	A tout instant on peut changer la base en rentrant la 1 lettre de la base dsire. Exemple :
D :? 20 
D : O (enter ) => O :? 24

utilisation des mmoires auxiliaires :
- pour stocker : Sn avec 1<=n<=5
exemple : D : si (enter ) 20=>stocke 20 dcimal dans la mmoire
- pour rappeler : signe Rn avec signe =, +, -, *, / et i<=n<=5.
exemple : D :+R1 ( enter ) 25=> ici on ajoute le contenu de mem1  25.

Programme :
100 "B"CLS:T$="d":B=10:C=10:B$="":WAIT 0
110 CLS:PRINT T$;:CURSOR 2:GPRINT 85:CURSOR 16:PRINT B$
120 CURSOR 3:INPUT I$
125 U=C
130 IF I$="d" LET C=10
140 IF I$="h" LET C=16
150 IF I$="o" LET C=8
160 IF I$="b" LET C=2
170 IF U<>C LET RET=110:GOTO 800
180 S$=LEFT$(I$,1):IF S$<>"s" AND S$<>"+" AND S$<>"-" AND S$<>"*" AND S$<>"/" GOTO 190
182 L=LEN(I$):I$=RIGHT$(I$,L-1)
184 IF S$="s" GOTO 700
186 U$=LEFT$(I$,1):U=VAL(RIGHT$(I$,1))
187 IF U$<>"r" GOTO 190
188 IF U<1 OR U>5 CLS:PAUSE "mmoire inexistante":GOTO 110
189 N=@(21+U):GOTO 200
190 N$=I$:B=C:RET=200:GOTO 900
200 IF S$="+" LET S=S+N
210 IF S$="-" LET S=S-N
220 IF S$="*" LET S=S*N
230 IF S$="/" LET S=INT(S/N)
235 IF S$<>"+" AND S$<>"-" AND S$<>"/" AND S$<>"*" LET S=N
240 B$="":D=ABS S:T=SGN S:GOSUB 1600:GOTO 110
700 U=VAL I$:IF U<1 OR U>5 THEN CLS:PAUSE "mmoire inexistante":GOTO 110
710 @(21+U)=S:GOTO 110
800 T$=I$:N$=B$
900 O$=B$:D=0:B$="":F=0:GOSUB 1050:IF F<>0 LET B$=O$
905 IF F<>0 GOTO 110
910 B=C:GOTO RET
1050 L=LEN(N$)
1100 FOR I=1 TO L
1150 A$=MID$(N$,I,1)
1200 IF ASC A$>58 LET A=(ASC A$)-55:GOTO 1300
1250 A=VAL(A$)
1300 IF A>+B THEN CLS:PAUSE N$;" <> base ";B:F=1:RETURN
1350 A=A*(B^(L-I))
1400 D=D+A
1450 NEXT I
1455 N=D
1600 Q=INT(D/C)
1650 R=D-(C*Q)
1700 IF R>=10 LET R$=CHR$(R+55):GOTO 1800
1750 R$=STR$ (R)
1800 B$=R$+B$
1850 IF Q>=C LET D=Q:GOTO 1600
1900 IF Q>=10 LET R$=CHR$(Q+55):GOTO 1990
1950 R$=STR$(Q)
1990 B$=R$+B$:IF T<0 LET B$="-"+B$
1995 RETURN