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 >
BASIC Source File  |  2000-01-01  |  3KB  |  35 lines

  1. 10  REM <CTRL-M>=================<CTRL-M>DEX<CTRL-M>DEC-HEX CONVERTER<CTRL-M>BY<CTRL-M>BEAGLE BROS<CTRL-M>=================
  2. 15 ST = 768: DIM BIT(16)
  3. 20 T1 = 1:T2 = 8:T3 = 15:T4 = 24:G$ =  CHR$(7):Q$ =  CHR$(34): TEXT : HOME 
  4. 30  INVERSE : PRINT " DEC/HEX CONVERTER ";: NORMAL : PRINT " BY BEAGLE BROS": PRINT 
  5. 40  PRINT "START HEX NUMBERS WITH A ";Q$;"$";Q$;".": PRINT "ENTER ";Q$;"0";Q$;" TO QUIT.": PRINT : POKE 34,5
  6. 50 NFLAG = 0: HTAB 1: CALL  -958: PRINT : INPUT "NUMBER: ";NUM$:L$ =  LEFT$(NUM$,1): GOSUB 100
  7. 60  IF L$ = "$"  THEN HEX$ = NUM$: GOSUB 230: GOTO 80
  8. 70  IF  VAL(L$) < >0  OR L$ = "-"  OR L$ = "0"  THEN DEC =  VAL(NUM$):X = DEC: GOSUB 300
  9. 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;
  10. 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
  11. 100  REM <CTRL-J><CTRL-J>LEGAL?<CTRL-J>
  12. 110  IF L$ = "-"  THEN NFLAG = 1
  13. 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 
  14. 130  IF L$ < >"$"  THEN 170
  15. 140  IF  LEN(NUM$) >5  THEN 210
  16. 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
  17. 160  NEXT : RETURN 
  18. 170  FOR I = 1 TO  LEN(NUM$):M$ =  MID$ (NUM$,I,1): IF (M$ <"0"  OR M$ >"9")  AND M$ < >"-"  THEN 210
  19. 180  NEXT : IF  VAL(NUM$) >65535  OR  VAL(NUM$) < -65535  THEN 210
  20. 190  IF   NOT NFLAG  AND  VAL(NUM$) < -32767  THEN NFLAG = 0
  21. 200  RETURN 
  22. 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
  23. 220  END 
  24. 230  REM <CTRL-J><CTRL-J>HEX TO DEC<CTRL-J>
  25. 240 HEX$ =  RIGHT$(HEX$, LEN(HEX$) -1)
  26. 250  IF  LEN(HEX$) <4  THEN HEX$ = "0" +HEX$: GOTO 250
  27. 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
  28. 270 DEC = L1 +L2 *16 +L3 *256 +L4 *4096:HEX$ = "$" +HEX$: RETURN 
  29. 280  IF X$ = "0"  OR  VAL(X$) >0  THEN X =  VAL(X$): RETURN 
  30. 290 X =  ASC(X$) -55: RETURN 
  31. 300  REM <CTRL-J><CTRL-J>DEC TO HEX<CTRL-J>
  32. 310  IF X <0  THEN X = X +65536:DEC = X
  33. 320 HEX$ = "0123456789ABCDEF":TFS = 256
  34. 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 
  35. 340 LO = X - INT(X/16) *16:HI =  INT(X/16):A$ =  MID$ (HEX$,HI +1,1):B$ =  MID$ (HEX$,LO +1,1): RETURN