home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Generous Efforts of Many
/
gemcd.zip
/
GEM.CD.A.po
/
FEATURES:BEAGLE
/
UTIL.CITY.SHK
/
UTILITY.CITY
/
DEX.A.bas
< prev
next >
Wrap
BASIC Source File
|
2000-01-01
|
3KB
|
35 lines
10 REM <CTRL-M>=================<CTRL-M>DEX<CTRL-M>DEC-HEX CONVERTER<CTRL-M>BY<CTRL-M>BEAGLE BROS<CTRL-M>=================
15 ST = 768: DIM BIT(16)
20 T1 = 1:T2 = 8:T3 = 15:T4 = 24:G$ = CHR$(7):Q$ = CHR$(34): TEXT : HOME
30 INVERSE : PRINT " DEC/HEX CONVERTER ";: NORMAL : PRINT " BY BEAGLE BROS": PRINT
40 PRINT "START HEX NUMBERS WITH A ";Q$;"$";Q$;".": PRINT "ENTER ";Q$;"0";Q$;" TO QUIT.": PRINT : POKE 34,5
50 NFLAG = 0: HTAB 1: CALL -958: PRINT : INPUT "NUMBER: ";NUM$:L$ = LEFT$(NUM$,1): GOSUB 100
60 IF L$ = "$" THEN HEX$ = NUM$: GOSUB 230: GOTO 80
70 IF VAL(L$) < >0 OR L$ = "-" OR L$ = "0" THEN DEC = VAL(NUM$):X = DEC: GOSUB 300
80 NEG = DEC -65536: VTAB PEEK(37) -1: HTAB T1: CALL -958: PRINT HEX$;: HTAB T2: PRINT SPC( DEC <10000); SPC( DEC <1000); SPC( DEC <100); SPC( DEC <10);DEC;: HTAB T3: IF NFLAG OR NEG > -32769 THEN PRINT SPC( NEG > -10000); SPC( NEG > -1000); SPC( NEG > -100); SPC( NEG > -10);NEG;
95 HTAB T4: FOR I = 16 TO 1 STEP -1:BIT(I) = INT(DEC/2 ^(I -1)): PRINT BIT(I) -2 * INT(BIT(I)/2);: NEXT : PRINT : GOTO 50
100 REM <CTRL-J><CTRL-J>LEGAL?<CTRL-J>
110 IF L$ = "-" THEN NFLAG = 1
120 IF NUM$ = "0" THEN POKE 34,0: VTAB PEEK(37) -1: CALL -958: POKE 103, PEEK(ST): POKE 104, PEEK(ST +1): POKE 175, PEEK(ST +2): POKE 176, PEEK(ST +3): END
130 IF L$ < >"$" THEN 170
140 IF LEN(NUM$) >5 THEN 210
150 FOR I = 2 TO LEN(NUM$):M$ = MID$ (NUM$,I,1): IF (M$ <"0") OR (M$ >"9" AND (M$ <"A" OR M$ >"F")) THEN 210
160 NEXT : RETURN
170 FOR I = 1 TO LEN(NUM$):M$ = MID$ (NUM$,I,1): IF (M$ <"0" OR M$ >"9") AND M$ < >"-" THEN 210
180 NEXT : IF VAL(NUM$) >65535 OR VAL(NUM$) < -65535 THEN 210
190 IF NOT NFLAG AND VAL(NUM$) < -32767 THEN NFLAG = 0
200 RETURN
210 INVERSE : VTAB PEEK(37): HTAB T1: CALL -958: PRINT " ILLEGAL NUMBER ";G$;G$;: NORMAL : FOR I = 1 TO 222: NEXT : VTAB PEEK(37): POP : GOTO 50
220 END
230 REM <CTRL-J><CTRL-J>HEX TO DEC<CTRL-J>
240 HEX$ = RIGHT$(HEX$, LEN(HEX$) -1)
250 IF LEN(HEX$) <4 THEN HEX$ = "0" +HEX$: GOTO 250
260 L4$ = LEFT$(HEX$,1):L3$ = MID$ (HEX$,2,1):L2$ = MID$ (HEX$,3,1):L1$ = RIGHT$(HEX$,1):X$ = L4$: GOSUB 280:L4 = X:X$ = L3$: GOSUB 280:L3 = X:X$ = L2$: GOSUB 280:L2 = X:X$ = L1$: GOSUB 280:L1 = X
270 DEC = L1 +L2 *16 +L3 *256 +L4 *4096:HEX$ = "$" +HEX$: RETURN
280 IF X$ = "0" OR VAL(X$) >0 THEN X = VAL(X$): RETURN
290 X = ASC(X$) -55: RETURN
300 REM <CTRL-J><CTRL-J>DEC TO HEX<CTRL-J>
310 IF X <0 THEN X = X +65536:DEC = X
320 HEX$ = "0123456789ABCDEF":TFS = 256
330 NLO = X - INT(X/TFS) *TFS:NHI = INT(X/TFS):X = NLO: GOSUB 340:H1$ = A$:H2$ = B$:X = NHI: GOSUB 340:H3$ = A$:H4$ = B$:HEX$ = "$" +H3$ +H4$ +H1$ +H2$: RETURN
340 LO = X - INT(X/16) *16:HI = INT(X/16):A$ = MID$ (HEX$,HI +1,1):B$ = MID$ (HEX$,LO +1,1): RETURN