home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 3 / PDCD_3.iso / pocketbk / sounds / wave11r3 / WAVETABS.OPL < prev   
Text File  |  1994-02-10  |  3KB  |  179 lines

  1. proc gentabs:
  2.  
  3. REM *** Generate A-law tables in assembler/OPL ***
  4.  
  5. local asm&(70)
  6. local n%,t%,d%
  7.  
  8.  
  9.     do
  10.         n% = (t% and (not $55)) or ((not t%) and $55)
  11.         d%=t% and $f
  12.         if (t% and $70)=0
  13.             d%=d%*2+1
  14.         else
  15.             d%=(d% or $10)*(2**((t% and $70)/16))
  16.         endif
  17.         if t% and $80
  18.             d%=-d%
  19.         endif
  20.         t%=t%+1
  21.         et%(n%+1)=d%
  22.     until t%>255
  23.  
  24.     Asm&(1)=&FB8B0117
  25.     Asm&(2)=&C681F38B
  26.     Asm&(3)=&00BB2000
  27.     Asm&(4)=&0055BD00
  28.     Asm&(5)=&E081C38B
  29.     Asm&(6)=&19740800
  30.     Asm&(7)=&E081C38B
  31.     Asm&(8)=&F8D10780
  32.     Asm&(9)=&F8D1F8D1
  33.     Asm&(10)=&F8D1F8D1
  34.     Asm&(11)=&F8D1F8D1
  35.     Asm&(12)=&090070BA
  36.     Asm&(13)=&81C38BC2
  37.     Asm&(14)=&810C00E0
  38.     Asm&(15)=&750400F8
  39.     Asm&(16)=&81C38B17
  40.     Asm&(17)=&D103C0E0
  41.     Asm&(18)=&D1F8D1F8
  42.     Asm&(19)=&D1F8D1F8
  43.     Asm&(20)=&BAF8D1F8
  44.     Asm&(21)=&C2090060
  45.     Asm&(22)=&E081C38B
  46.     Asm&(23)=&F8810E00
  47.     Asm&(24)=&15750200
  48.     Asm&(25)=&E081C38B
  49.     Asm&(26)=&F8D101E0
  50.     Asm&(27)=&F8D1F8D1
  51.     Asm&(28)=&F8D1F8D1
  52.     Asm&(29)=&090050BA
  53.     Asm&(30)=&81C38BC2
  54.     Asm&(31)=&810F00E0
  55.     Asm&(32)=&750100F8
  56.     Asm&(33)=&81C38B13
  57.     Asm&(34)=&D100F0E0
  58.     Asm&(35)=&D1F8D1F8
  59.     Asm&(36)=&BAF8D1F8
  60.     Asm&(37)=&C2090040
  61.     Asm&(38)=&E081C38B
  62.     Asm&(39)=&F8810F80
  63.     Asm&(40)=&11750080
  64.     Asm&(41)=&E081C38B
  65.     Asm&(42)=&F8D10078
  66.     Asm&(43)=&F8D1F8D1
  67.     Asm&(44)=&090030BA
  68.     Asm&(45)=&81C38BC2
  69.     Asm&(46)=&810FC0E0
  70.     Asm&(47)=&750040F8
  71.     Asm&(48)=&81C38B0F
  72.     Asm&(49)=&D1003CE0
  73.     Asm&(50)=&BAF8D1F8
  74.     Asm&(51)=&C2090020
  75.     Asm&(52)=&E081C38B
  76.     Asm&(53)=&F8810FE0
  77.     Asm&(54)=&0D750020
  78.     Asm&(55)=&E081C38B
  79.     Asm&(56)=&F8D1001E
  80.     Asm&(57)=&090010BA
  81.     Asm&(58)=&81C38BC2
  82.     Asm&(59)=&750FE0E0
  83.     Asm&(60)=&81C38B0A
  84.     Asm&(61)=&D1001EE0
  85.     Asm&(62)=&33D08BF8
  86.     Asm&(63)=&B01588D5
  87.     Asm&(64)=&88C20880
  88.     Asm&(65)=&FFC7FF14
  89.     Asm&(66)=&81C3FFCE
  90.     Asm&(67)=&7D1000FB
  91.     Asm&(68)=&FF00E903
  92.     Asm&(69)=&90909090
  93.     Asm&(70)=&909090CB
  94.     
  95.     usr(uadd(addr(asm&(1)),2),0,addr(ct%(1)),0,0)
  96.     
  97. endp
  98.  
  99. proc gentabs2:
  100. local n%,d%,tab%,c%,t%
  101.  
  102. rem    if ex
  103.  
  104.     busy "A-law tables..."
  105.  
  106.     do
  107.         n% = (t% and (not $55)) or ((not t%) and $55)
  108.         d%=t% and $f
  109.         if (t% and $70)=0
  110.             d%=d%*2+1
  111.         else
  112.             d%=(d% or $10)*(2**((t% and $70)/16))
  113.         endif
  114.         if t% and $80
  115.             d%=-d%
  116.         endif
  117.         t%=t%+1
  118.         et%(n%+1)=d%
  119.     until t%>255
  120.  
  121.     tab%=addr(ct%(1))
  122.     n%=0
  123.     do
  124.         if (n% and $800)
  125.             d%=$70 or ((n% and $780)/128)
  126.         endif
  127.         if (n% and $c00)=$400
  128.             d%=$60 or ((n% and $3c0)/64)
  129.         endif
  130.         if (n% and $e00)=$200
  131.             d%=$50 or ((n% and $1e0)/32)
  132.         endif
  133.         if (n% and $f00)=$100
  134.             d%=$40 or ((n% and $f0)/16)
  135.         endif
  136.         if (n% and $f80)=$80
  137.             d%=$30 or ((n% and $78)/8)
  138.         endif
  139.         if (n% and $fc0)=$40
  140.             d%=$20 or ((n% and $3c)/4)
  141.         endif
  142.         if (n% and $fe0)=$20
  143.             d%=$10 or ((n% and $1e)/2)
  144.         endif
  145.         if (n% and $fe0)=0
  146.             d%=(n% and $1e)/2
  147.         endif
  148.         
  149.         d% = (d% and (not $55)) or ((not d%) and $55)
  150.             
  151.         pokeb uadd(tab%,n%),d%
  152.     
  153.         n%=n%+1
  154.     until n%>4095
  155.  
  156.     n%=1
  157.     do
  158.         pokeb(uadd(tab%,8192-n%)),peekb(uadd(tab%,n%)) or $80
  159.         n%=n%+1
  160.     until n%>4095
  161.  
  162.     busy off
  163.     
  164.     at 1,4
  165.     
  166. rem    print et%($34+1),"$34",hex$(peekb(uadd(addr(ct%(1)),et%($34+1) and $1fff)))
  167. rem    print et%($b4+1),"$b4",hex$(peekb(uadd(addr(ct%(1)),et%($b4+1) and $1fff)))
  168. rem    print et%($34+1)
  169. rem    print (et%($34+1)*90.0)/100
  170. rem    print hex$(peekb(uadd(addr(ct%(1)),((et%($34+1)*90.0)/100) and $1fff)))
  171. rem    print et%(peekb(uadd(addr(ct%(1)),((et%($34+1)*90.0)/100) and $1fff))+1)
  172.     
  173. rem    get
  174.  
  175. endp
  176.  
  177.  
  178.  
  179.