home *** CD-ROM | disk | FTP | other *** search
/ Amiga Elysian Archive / AmigaElysianArchive.iso / sound / midi / midilb20.lha / ht < prev    next >
Text File  |  1988-04-07  |  1KB  |  67 lines

  1. 'Program HT - Hex Transmit
  2. ' Adapted from Pregnant Badger MIDI Library demo
  3.  
  4. 'Assumes exec.bmap and midi.bmap in the current directory
  5. LIBRARY "exec.library"
  6. LIBRARY "midi.library"
  7.  
  8. DECLARE FUNCTION AllocMem&() LIBRARY
  9. memf.public& = 1&
  10. memf.clear& = 65536&
  11.  
  12. DECLARE FUNCTION CreateMSource&() LIBRARY
  13. DECLARE FUNCTION MRouteSource&() LIBRARY
  14. DestName$="MidiOut"+CHR$(0)
  15.  
  16. Buffer&=AllocMem&(256&,memf.public&+memf.clear&)
  17. RouteInfo&=AllocMem&(14&,memf.public&+memf.clear&)
  18. POKEW RouteInfo&  ,-1
  19. POKEW RouteInfo&+2,-1
  20.  
  21. HTMain:
  22. CLS : PRINT"MIDI Hex transmit demo"
  23.  
  24. Source&=CreateMSource&(0&,0&)
  25. IF Source&=0 THEN PRINT"Can't create Source":GOTO CloseDown
  26.  
  27. Route&=MRouteSource&(Source&,SADD(DestName$),RouteInfo&)
  28. IF Route&=0 THEN PRINT"Can't create Route":GOTO CloseDown
  29.  
  30. CALL GetHex(Buffer&,buf.len&)
  31. CALL PutMidiStream(Source&,0&,Buffer&,buf.len&,buf.len&)
  32.  
  33. CloseDown:
  34. IF Route&<>0 THEN CALL DeleteMRoute(Route&)
  35. IF Source&<>0 THEN CALL DeleteMSource(Source&)
  36. CALL FreeMem(RouteInfo&,14&)
  37. CALL FreeMem(Buffer&,14&)
  38. LIBRARY CLOSE
  39. END
  40.  
  41.  
  42. SUB GetHex (BufPtr&,nbytes&) STATIC
  43.  
  44. INPUT "Transmit:";l$
  45. l%=LEN(l$) : i%=1 : nbytes&=0
  46.  
  47. WHILE i%<=l%
  48.   x%=0
  49.   WHILE i%<=l% AND MID$(l$,i%,1)<>" "
  50.     m%=ASC(MID$(l$,i%,1))
  51.     IF m%>=48 AND m%<=57 THEN
  52.       x%=16*x%+m%-48
  53.     ELSEIF m%>=97 AND m%<=102 THEN
  54.       x%=16*x%+m%-87
  55.     ELSEIF m%>=65 AND m%<=70 THEN
  56.       x%=16*x%+m%-55
  57.     END IF
  58.     i%=i%+1
  59.   WEND
  60.   PRINT x%; : POKE BufPtr&+nbytes&,x% AND 255
  61.   nbytes&=nbytes&+1 : i%=i%+1
  62. WEND
  63. PRINT
  64. END SUB
  65.  
  66.  
  67.