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