home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 35 Internet / 35-Internet.zip / base64.zip / DEBASE64.BAS next >
BASIC Source File  |  1993-11-16  |  2KB  |  72 lines

  1. 100 DEFINT A-Z
  2. 110 CHARSET$="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
  3. 120 DIM T(255),SEXTET(4)
  4. 130 FOR N=0 TO 255
  5. 140   T(N)=-1
  6. 150 NEXT N
  7. 160 FOR N=0 TO 63
  8. 170   I=ASC(MID$(CHARSET$,N+1,1))
  9. 180   T(I)=N
  10. 190 NEXT N
  11. 200 PRINT "INPUT? ";
  12. 210 LINE INPUT INPUT.FILE.NAME$
  13. 220 OPEN INPUT.FILE.NAME$ FOR INPUT AS 1
  14. 230 PRINT "OUTPUT? ";
  15. 240 LINE INPUT OUTPUT.FILE.NAME$
  16. 250 OPEN OUTPUT.FILE.NAME$ FOR OUTPUT AS 2
  17. 260 PRINT #2," ";
  18. 270 CLOSE 2
  19. 280 KILL OUTPUT.FILE.NAME$
  20. 290 OPEN "R",2,OUTPUT.FILE.NAME$,1
  21. 300 FIELD #2,1 AS BYTE$
  22. 310 INPUT.LINE$=""
  23. 320 INPUT.LINE.INDEX=81
  24. 330 INPUT.EOF=0
  25. 340 INPUT.EOF.PENDING=0
  26. 350 WHILE (INPUT.EOF = 0)
  27. 360   SEXTET.NUM=1
  28. 370   NUM.BITS=0
  29. 380   WHILE(SEXTET.NUM <= 4)
  30. 390     WHILE((INPUT.EOF = 0) AND (INPUT.LINE.INDEX > LEN(INPUT.LINE$)))
  31. 400       IF INPUT.EOF.PENDING = 0 THEN 430
  32. 410         INPUT.EOF=-1
  33. 420       GOTO 460
  34. 430         LINE INPUT #1,INPUT.LINE$
  35. 440         INPUT.LINE.INDEX=1
  36. 450         IF EOF(1) THEN INPUT.EOF.PENDING=-1
  37. 460     WEND
  38. 470     IF INPUT.EOF = 0 THEN 510
  39. 480       SEXTET(SEXTET.NUM)=0
  40. 490       SEXTET.NUM=SEXTET.NUM+1
  41. 500     GOTO 580
  42. 510       I=ASC(MID$(INPUT.LINE$,INPUT.LINE.INDEX,1))
  43. 520       INPUT.LINE.INDEX=INPUT.LINE.INDEX+1
  44. 530       T1=T(I)
  45. 540       IF T1 < 0 THEN 580
  46. 550         SEXTET(SEXTET.NUM)=T1
  47. 560         NUM.BITS=NUM.BITS+6
  48. 570         SEXTET.NUM=SEXTET.NUM+1
  49. 580   WEND
  50. 590   IF NUM.BITS < 8 THEN 660
  51. 600     T1=SEXTET(1)
  52. 610     T2=SEXTET(2)
  53. 620     TEM$=CHR$(4*T1+(T2\16))
  54. 630     LSET BYTE$=TEM$
  55. 640     PUT #2
  56. 650     NUM.BITS=NUM.BITS-8
  57. 660   IF NUM.BITS < 8 THEN 720
  58. 670     T1=SEXTET(3)
  59. 680     TEM$=CHR$(16*(T2 MOD 16)+(T1\4))
  60. 690     LSET BYTE$=TEM$
  61. 700     PUT #2
  62. 710     NUM.BITS=NUM.BITS-8
  63. 720   IF NUM.BITS < 8 THEN 770
  64. 730     T2=SEXTET(4)
  65. 740     TEM$=CHR$(64*(T1 MOD 4)+T2)
  66. 750     LSET BYTE$=TEM$
  67. 760     PUT #2
  68. 770 WEND
  69. 780 CLOSE 2
  70. 790 CLOSE 1
  71. 800 END
  72.