10 REM HEX_DEC.BAS
20 REM A PROGRAM TO CONVERT UP TO 4 HEX DIGITS TO DECIMAL
30 REM THE MSB MUST BE ON THE LEFT
32 DATA A,10,B,11,C,12,D,13,E,14,F,15
34 FOR Q=1 TO 6:READ H$(Q),D(Q):NEXT Q
36 MULT(1)=1:MULT(2)=16:MULT(3)=256:MULT(4)=4096
40 CLS:PRINT"YOUR HEX NUMBER MAY HAVE UP TO 4 DIGITS. YOU MAY ENTER"
44 PRINT"EACH NUMBER FROM THE KEYBOARD, OR FROM A FILE. THE FILE NAME"
46 PRINT"MUST BE TEST.DAT UNLESS YOU EDIT THIS PROGRAM. THE OUTPUT FILE"
50 PRINT"WILL BE NAMED TEST.OUT. PRESS ENTER TO END THE INPUT LOOP" :PRINT:PRINT
60 INPUT"WILL YOU USE THE KEYBOARD (1) OR A FILE (2) ";WHICH
70 IF WHICH=1 THEN INPUT"HEX NUMBER ";X$:GOTO 170
124 OPEN "TEST.OUT" FOR OUTPUT AS #2
126 PRINT#2, "DECIMAL","HEX","TOTAL"
130 OPEN "TEST.DAT" FOR INPUT AS #1
134 IF EOF(1) THEN 300
150 INPUT#1, X$
154 IF EOF(1) THEN 300
170 IF X$="" THEN 350
172 L=LEN(X$)
175 REM THIS NEXT LINE REVERSES THE ORDER OF THE DIGITS
180 FOR Q=0 TO L-1:X$(Q+1)=MID$(X$,L-Q,1):NEXT Q
190 FOR J=1 TO L
200 FOR Q=1 TO 6
201 IF X$(J)=H$(Q) THEN V(J)=D(Q)
210 NEXT Q:IF V(J)>0 THEN 230
220 V(J)=VAL(X$(J))
230 V(J)=V(J)*MULT(J)
240 DECIMAL = DECIMAL +V(J)
260 NEXT J:TOTAL = TOTAL+DECIMAL
264 IF WHICH=1 THEN PRINT: PRINT"DECIMAL = ";DECIMAL:GOTO 280
274 PRINT#2, DECIMAL, X$,TOTAL
280 DECIMAL = 0:FOR J=1 TO L:V(J)=0:NEXT J
284 IF WHICH=1 THEN 70
290 GOTO 150
300 CLOSE#1: CLOSE#2
350 SYSTEM
400 END
               (
geocities.com/russlk)