home *** CD-ROM | disk | FTP | other *** search
/ Dave Lowe: S5 Stereo Sound Sampler / Lowe_S5StereoSoundSampler.adf / Progs / C / S5inter.asm < prev    next >
Encoding:
Assembly Source File  |  1986-12-10  |  15.8 KB  |  983 lines

  1. ;;
  2.  
  3. ;;      +++++++++++++++++++++++++++++++++
  4.  
  5. ;;      +   S5INTER.ASM : 31-July-87    +
  6.  
  7. ;;      +++++++++++++++++++++++++++++++++
  8.  
  9. ;;
  10.  
  11. ;; PAR Sophus Software
  12.  
  13. ;;
  14.  
  15. ;; Used for interfacing to s5.library - defines offsets for the purpose.
  16.  
  17. ;;
  18.  
  19. ;;  This file is available to users - in source form if necessary
  20.  
  21. ;;
  22.  
  23. ;;
  24.  
  25. ;; Interface for calling library routines from C.
  26.  
  27. ;;
  28.  
  29.          SECTION SECTION
  30.  
  31.          XREF      _S5Base   ; base of library pointer
  32.  
  33.  
  34.  
  35. ; Set up these offsets automatically !
  36.  
  37.  
  38.  
  39. S5COUNT  SET  5
  40.  
  41.  
  42.  
  43.          ; define _xxxxx  and _LVOxxxxx
  44.  
  45.  
  46.  
  47. MAKE     MACRO
  48.  
  49.          XDEF      _\1
  50.  
  51. _LVO\1   EQU       S5COUNT*(-6)
  52.  
  53. _EP      SET       S5COUNT
  54.  
  55. S5COUNT  SET       S5COUNT+1
  56.  
  57.          ENDM
  58.  
  59.  
  60.  
  61. ;
  62.  
  63. ; Define all library offsets
  64.  
  65. ;
  66.  
  67.  
  68.  
  69.          MAKE     S5StartWave
  70.  
  71.          MAKE     S5StopWave
  72.  
  73.          MAKE     S5StereoStart
  74.  
  75.          MAKE     S5StereoStop
  76.  
  77.          MAKE     S5CheckPlaying
  78.  
  79.          MAKE     S5WaitForEnd
  80.  
  81.          MAKE     S5SoundStartUp
  82.  
  83.          MAKE     S5AllocateSampleBuffer
  84.  
  85.          MAKE     S5SoundShutDown
  86.  
  87.          MAKE     S5ConfigureHardware
  88.  
  89.          MAKE     S5DeconfigureHardware
  90.  
  91.          MAKE     S5RecordSamples
  92.  
  93.          MAKE     S5ADC
  94.  
  95.          MAKE     S5Read1LR
  96.  
  97.          MAKE     S5ClearTracks
  98.  
  99.          MAKE     S5ValidRange
  100.  
  101.          MAKE     S5BuildEnvelopeTable
  102.  
  103.          MAKE     S5FreqToPlayRate
  104.  
  105.          MAKE     S5FreqToSamRateStereo
  106.  
  107.          MAKE     S5FreqToSamRateMono
  108.  
  109.          MAKE     S5SetTiming
  110.  
  111.          MAKE     S5GetTiming
  112.  
  113.          MAKE     S5LoadIFF
  114.  
  115.          MAKE     S5SaveIFF
  116.  
  117.          MAKE     S5LoadSOP2
  118.  
  119.          MAKE     S5SaveSOP2
  120.  
  121.          MAKE     S5LoadSOP3
  122.  
  123.          MAKE     S5SaveSOP3
  124.  
  125.          MAKE     S5AllocateFrag
  126.  
  127.          MAKE     S5DeallocateFrag
  128.  
  129.          MAKE     S5LoadEnvelope
  130.  
  131.          MAKE     S5SaveEnvelope
  132.  
  133.          MAKE     S5KillEnvelope
  134.  
  135.          MAKE     S5FastMemRecord
  136.  
  137.          MAKE     S5FastMemPlay
  138.  
  139.          MAKE     S5Seize
  140.  
  141.          MAKE     S5Release
  142.  
  143.          MAKE     S5SetPlay
  144.  
  145.          MAKE     S5SetRecord
  146.  
  147.          MAKE     S5FragSize
  148.  
  149.          MAKE     S5STEREOSAMPLE
  150.  
  151.          MAKE     S5LEFTSAMPLE
  152.  
  153.          MAKE     S5RIGHTSAMPLE
  154.  
  155.          MAKE     S5DUMMYREAD
  156.  
  157.          MAKE     S5FILL
  158.  
  159.          MAKE     S5MOVE
  160.  
  161.          MAKE     S5GetStatus
  162.  
  163.          MAKE     S5Player
  164.  
  165.          MAKE     S5LatticeIO
  166.  
  167. ;;
  168.  
  169. ;; Handy little things , macros, ar'n't they ?
  170.  
  171. ;;
  172.  
  173. PUSH     MACRO
  174.  
  175.          MOVE.L    \1,-(SP)
  176.  
  177.          ENDM
  178.  
  179.  
  180.  
  181. POP      MACRO
  182.  
  183.          MOVE.L    (SP)+,\1
  184.  
  185.          ENDM
  186.  
  187.  
  188.  
  189. ZOK      MACRO
  190.  
  191.          MOVE.L    _S5Base,A6
  192.  
  193.          JSR       _LVOS5\1(A6)
  194.  
  195.          POP       A6
  196.  
  197.          RTS
  198.  
  199.          ENDM
  200.  
  201.  
  202.  
  203. PARAM1   EQU       8
  204.  
  205. PARAM2   EQU       12
  206.  
  207. PARAM3   EQU       16
  208.  
  209. PARAM4   EQU       20
  210.  
  211.  
  212.  
  213. ;
  214.  
  215. ;        PARx builds stack frames
  216.  
  217. ;
  218.  
  219.  
  220.  
  221. PAR0     MACRO
  222.  
  223.          PUSH      A6
  224.  
  225.          ENDM
  226.  
  227.  
  228.  
  229. PAR1     MACRO
  230.  
  231.          PUSH      A6
  232.  
  233.          MOVE.L    8(SP),A0
  234.  
  235.          ENDM
  236.  
  237.  
  238.  
  239. PAR2     MACRO
  240.  
  241.          PUSH      A6
  242.  
  243.          MOVE.L    8(SP),A0
  244.  
  245.          MOVE.L    12(SP),A1
  246.  
  247.          ENDM
  248.  
  249.  
  250.  
  251. PAR3     MACRO
  252.  
  253.          PUSH      A6
  254.  
  255.          MOVE.L    8(SP),A0
  256.  
  257.          MOVE.L    12(SP),A1
  258.  
  259.          MOVE.L    16(SP),D0
  260.  
  261.          ENDM
  262.  
  263.  
  264.  
  265. PAR4     MACRO
  266.  
  267.          PUSH      A6
  268.  
  269.          MOVE.L    8(SP),A0
  270.  
  271.          MOVE.L    12(SP),A1
  272.  
  273.          MOVE.L    16(SP),D0
  274.  
  275.          MOVE.L    20(SP),D1
  276.  
  277.          ENDM
  278.  
  279.  
  280.  
  281.  
  282.  
  283.  
  284.  
  285. ;
  286.  
  287. ;----------------------------------------------------------------------
  288.  
  289. ;
  290.  
  291. _S5StartWave:                     ;; Succ = S5StartWave(freq,type)
  292.  
  293.                                   ;; D0                 A0   A1
  294.  
  295.          PAR2
  296.  
  297.          ZOK       StartWave
  298.  
  299. ;
  300.  
  301. ;-----------------------------------------------------------------------
  302.  
  303. ;
  304.  
  305. _S5StopWave:                      ;; Succ = S5StopWave()
  306.  
  307.                                   ;; D0
  308.  
  309.          PAR0
  310.  
  311.          ZOK       StopWave
  312.  
  313. ;
  314.  
  315. ;-----------------------------------------------------------------------
  316.  
  317. ;
  318.  
  319. _S5StereoStart:                   ;; Succ = S5StereoStart(left,right,deviate)
  320.  
  321.                                   ;; D0                   A0      A1   D0
  322.  
  323.          PAR3
  324.  
  325.          ZOK       StereoStart
  326.  
  327. ;
  328.  
  329. ;-----------------------------------------------------------------------
  330.  
  331. ;
  332.  
  333. _S5StereoStop:                    ;; Succ = S5StereoStop(left,right)
  334.  
  335.                                   ;; D0                  A0  A1 
  336.  
  337.          PAR2
  338.  
  339.          ZOK       StereoStop
  340.  
  341. ;
  342.  
  343. ;-----------------------------------------------------------------------
  344.  
  345. ;
  346.  
  347. _S5CheckPlaying:                  ;; Boolean = S5CheckPlaying(Select)
  348.  
  349.                                   ;; D0                       A0
  350.  
  351.          PAR1
  352.  
  353.          ZOK       CheckPlaying
  354.  
  355. ;
  356.  
  357. ;-----------------------------------------------------------------------
  358.  
  359. ;
  360.  
  361. _S5WaitForEnd:                    ;; S5WaitForEnd(Select)
  362.  
  363.                                   ;;              A0
  364.  
  365.          PAR1
  366.  
  367.          ZOK       WaitForEnd
  368.  
  369. ;
  370.  
  371. ;-----------------------------------------------------------------------
  372.  
  373. ;
  374.  
  375. _S5SoundStartUp:                  ;; Succ = S5SoundStartUp(size,left,right)
  376.  
  377.                                   ;; D0                    A0    A1   D0
  378.  
  379.          PAR3
  380.  
  381.          ZOK       SoundStartUp
  382.  
  383. ;
  384.  
  385. ;-----------------------------------------------------------------------
  386.  
  387. ;
  388.  
  389. _S5AllocateSampleBuffer:          ;; Succ = S5AllocateSampleBuffer(size,frag)
  390.  
  391.                                   ;; D0                            A0    A1
  392.  
  393.          PAR2
  394.  
  395.          ZOK       AllocateSampleBuffer
  396.  
  397. ;
  398.  
  399. ;-----------------------------------------------------------------------
  400.  
  401. ;
  402.  
  403. _S5SoundShutDown:                 ;; S5SoundShutDown(left,right)
  404.  
  405.                                   ;;                 A0   A1
  406.  
  407.          PAR2
  408.  
  409.          ZOK       SoundShutDown
  410.  
  411. ;
  412.  
  413. ;-----------------------------------------------------------------------
  414.  
  415. ;
  416.  
  417. _S5ConfigureHardware:            ;; Succ = S5ConfigureHardware()
  418.  
  419.                                  ;; D0
  420.  
  421.          PAR0
  422.  
  423.          ZOK       ConfigureHardware
  424.  
  425. ;
  426.  
  427. ;-----------------------------------------------------------------------
  428.  
  429. ;
  430.  
  431. _S5DeconfigureHardware:          ;; Succ = S5DeconfigureHardware()
  432.  
  433.                                  ;; D0
  434.  
  435.          PAR0
  436.  
  437.          ZOK       DeconfigureHardware
  438.  
  439. ;
  440.  
  441. ;-----------------------------------------------------------------------
  442.  
  443. ;
  444.  
  445. _S5RecordSamples:                 ;; Succ = RecordSamples(left,right)
  446.  
  447.                                   ;; D0                   A0    A1
  448.  
  449.          PAR2
  450.  
  451.          ZOK       RecordSamples
  452.  
  453. ;
  454.  
  455. ;-----------------------------------------------------------------------
  456.  
  457. ;
  458.  
  459. _S5ADC:                           ;; Int = S5ADC(Select)
  460.  
  461.                                   ;; D0          A0
  462.  
  463.          PAR1
  464.  
  465.          ZOK       ADC
  466.  
  467. ;
  468.  
  469. ;-----------------------------------------------------------------------
  470.  
  471. ;
  472.  
  473. _S5Read1LR:                       ;; S5Read1LR(left,right)
  474.  
  475.                                   ;;           A0   A1
  476.  
  477.          PAR2
  478.  
  479.          ZOK       Read1LR
  480.  
  481. ;
  482.  
  483. ;-----------------------------------------------------------------------
  484.  
  485. ;
  486.  
  487. _S5ClearTracks:                   ;; S5ClearTracks(left,right)
  488.  
  489.                                   ;;               A0   A1
  490.  
  491.          PAR2
  492.  
  493.          ZOK       ClearTracks
  494.  
  495. ;
  496.  
  497. ;-----------------------------------------------------------------------
  498.  
  499. ;
  500.  
  501. _S5ValidRange:                    ;; Boolean = S5ValidRange(frag)
  502.  
  503.                                   ;; D0                     A0
  504.  
  505.          PAR1
  506.  
  507.          ZOK       ValidRange
  508.  
  509. ;
  510.  
  511. ;-----------------------------------------------------------------------
  512.  
  513. ;
  514.  
  515. _S5BuildEnvelopeTable:            ;; Boolean = S5BuildEnvelopeTable(frag,select)
  516.  
  517.                                   ;; D0                             A0   A1
  518.  
  519.          PAR2
  520.  
  521.          ZOK       BuildEnvelopeTable
  522.  
  523. ;
  524.  
  525. ;-----------------------------------------------------------------------
  526.  
  527. ;
  528.  
  529. _S5FreqToPlayRate:                ;; Integer = S5FreqToPlayRate(freq)
  530.  
  531.                                   ;; D0                         A0
  532.  
  533.          PAR1
  534.  
  535.          ZOK       FreqToPlayRate
  536.  
  537. ;
  538.  
  539. ;-----------------------------------------------------------------------
  540.  
  541. ;
  542.  
  543. _S5FreqToSamRateStereo:           ;; Integer = S5FreqToSamRateStereo(freq)
  544.  
  545.                                   ;; D0                              A0
  546.  
  547.          PAR1
  548.  
  549.          ZOK       FreqToSamRateStereo
  550.  
  551. ;
  552.  
  553. ;-----------------------------------------------------------------------
  554.  
  555. ;
  556.  
  557. _S5FreqToSamRateMono:             ;; Integer = S5FreqToSamRateMono(freq)
  558.  
  559.                                   ;; D0                            A0
  560.  
  561.          PAR1
  562.  
  563.          ZOK       FreqToSamRateMono
  564.  
  565. ;
  566.  
  567. ;-----------------------------------------------------------------------
  568.  
  569. ;
  570.  
  571. _S5SetTiming:                     ;; S5SetTiming(con1,con2,pclk)
  572.  
  573.                                   ;;             A0   A1   D0
  574.  
  575.          PAR3
  576.  
  577.          ZOK       SetTiming
  578.  
  579. ;
  580.  
  581. ;-----------------------------------------------------------------------
  582.  
  583. ;
  584.  
  585. _S5GetTiming:                     ;; S5GetTiming(con1,con2,pclk)
  586.  
  587.                                   ;;             A0  A1    D0
  588.  
  589.          PAR3
  590.  
  591.          ZOK       GetTiming
  592.  
  593. ;
  594.  
  595. ;-----------------------------------------------------------------------
  596.  
  597. ;
  598.  
  599. _S5LoadIFF:                       ;; Succ = S5LoadIFF(frag,filename,opt)
  600.  
  601.                                   ;; D0               A0   A1       D0
  602.  
  603.          PAR3
  604.  
  605.          ZOK       LoadIFF
  606.  
  607. ;
  608.  
  609. ;-----------------------------------------------------------------------
  610.  
  611. ;
  612.  
  613. _S5SaveIFF:                       ;; Succ = S5SaveIFF(frag,filename,opt1,opt2)
  614.  
  615.                                   ;; D0               A0   A1       D0   D1
  616.  
  617.          PAR4
  618.  
  619.          ZOK       SaveIFF
  620.  
  621. ;
  622.  
  623. ;-----------------------------------------------------------------------
  624.  
  625. ;
  626.  
  627. _S5LoadSOP2:                    ;; Succ = S5LoadSOP2(LFrag,RFrag,filename,opt)
  628.  
  629.                                 ;; D0                A0    A1    D0       D1
  630.  
  631.          PAR4
  632.  
  633.          ZOK       LoadSOP2
  634.  
  635. ;
  636.  
  637. ;-----------------------------------------------------------------------
  638.  
  639. ;
  640.  
  641. _S5SaveSOP2:                    ;; Succ = S5SaveSOP2(LFrag,RFrag,filename,opt)
  642.  
  643.                                 ;; D0                A0    A1    D0       D1
  644.  
  645.          PAR4
  646.  
  647.          ZOK       SaveSOP2
  648.  
  649. ;
  650.  
  651. ;-----------------------------------------------------------------------
  652.  
  653. ;
  654.  
  655. _S5LoadSOP3:                     ;; Succ = S5LoadSOP3(frag,filename,option)
  656.  
  657.                                  ;; D0                A0   A1       D0
  658.  
  659.          PAR3
  660.  
  661.          ZOK       LoadSOP3
  662.  
  663. ;
  664.  
  665. ;-----------------------------------------------------------------------
  666.  
  667. ;
  668.  
  669. _S5SaveSOP3:                     ;; Succ = S5SaveSOP3(frag,filename,option)
  670.  
  671.                                  ;; D0                A0   A1       D0
  672.  
  673.          PAR3
  674.  
  675.          ZOK       SaveSOP3
  676.  
  677. ;
  678.  
  679. ;-----------------------------------------------------------------------
  680.  
  681. ;
  682.  
  683. _S5AllocateFrag:                  ;; FragPtr = S5AllocateFrag(size,type)
  684.  
  685.                                   ;; D0                       A0   A1
  686.  
  687.          PAR2
  688.  
  689.          ZOK       AllocateFrag
  690.  
  691. ;
  692.  
  693. ;-----------------------------------------------------------------------
  694.  
  695. ;
  696.  
  697. _S5DeallocateFrag:                ;; S5DeallocateFrag(frag)
  698.  
  699.                                   ;;                  A0
  700.  
  701.          PAR1
  702.  
  703.          ZOK       DeallocateFrag
  704.  
  705. ;
  706.  
  707. ;-----------------------------------------------------------------------
  708.  
  709. ;
  710.  
  711. _S5LoadEnvelope:                  ;; Succ = S5LoadEnvelope(env,filename)
  712.  
  713.                                   ;; D0                    A0   A1 
  714.  
  715.          PAR2
  716.  
  717.          ZOK       LoadEnvelope
  718.  
  719. ;
  720.  
  721. ;-----------------------------------------------------------------------
  722.  
  723. ;
  724.  
  725. _S5SaveEnvelope:                  ;; Succ = S5SaveEnvelope(env,filename)
  726.  
  727.                                   ;; D0                    A0   A1 
  728.  
  729.          PAR2
  730.  
  731.          ZOK       SaveEnvelope
  732.  
  733. ;
  734.  
  735. ;-----------------------------------------------------------------------
  736.  
  737. ;
  738.  
  739. _S5KillEnvelope:                  ;; S5KillEnvelope(env)
  740.  
  741.                                   ;;                A0
  742.  
  743.          PAR1
  744.  
  745.          ZOK       KillEnvelope
  746.  
  747. ;
  748.  
  749. ;-----------------------------------------------------------------------
  750.  
  751. ;
  752.  
  753. _S5FastMemRecord:                 ;; Succ = S5FastMemRecord(frag)
  754.  
  755.                                   ;; D0                     A0
  756.  
  757.          PAR1
  758.  
  759.          ZOK       FastMemRecord
  760.  
  761. ;
  762.  
  763. ;-----------------------------------------------------------------------
  764.  
  765. ;
  766.  
  767. _S5FastMemPlay:                   ;; Succ = S5FastMemPlay(frag)
  768.  
  769.                                   ;; D0                   A0
  770.  
  771.          PAR1
  772.  
  773.          ZOK       FastMemPlay
  774.  
  775. ;
  776.  
  777. ;-----------------------------------------------------------------------
  778.  
  779. ;
  780.  
  781. _S5Seize:                         ;; Succ = S5Seize()
  782.  
  783.                                   ;; D0
  784.  
  785.          PAR0
  786.  
  787.          ZOK       Seize
  788.  
  789. ;
  790.  
  791. ;-----------------------------------------------------------------------
  792.  
  793. ;
  794.  
  795. _S5Release:                       ;; Succ = S5Release()
  796.  
  797.                                   ;; D0
  798.  
  799.          PAR0
  800.  
  801.          ZOK       Release
  802.  
  803. ;
  804.  
  805. ;-----------------------------------------------------------------------
  806.  
  807. ;
  808.  
  809. _S5SetPlay:                       ;; S5SetPlay(frag,item,value)
  810.  
  811.                                   ;;           A0   A1   D0
  812.  
  813.          PAR3
  814.  
  815.          ZOK       SetPlay
  816.  
  817. ;
  818.  
  819. ;-----------------------------------------------------------------------
  820.  
  821. ;
  822.  
  823. _S5SetRecord:                     ;; S5SetRecord(frag,samrate)
  824.  
  825.                                   ;;             A0   A1
  826.  
  827.          PAR2
  828.  
  829.          ZOK       SetRecord
  830.  
  831. ;
  832.  
  833. ;-----------------------------------------------------------------------
  834.  
  835. ;
  836.  
  837. _S5FragSize:                      ;; Integer = S5FragSize()
  838.  
  839.                                   ;; D0
  840.  
  841.          PAR0
  842.  
  843.          ZOK       FragSize
  844.  
  845. ;
  846.  
  847. ;-----------------------------------------------------------------------
  848.  
  849. ;
  850.  
  851. _S5STEREOSAMPLE:                  ;; S5STEREOSAMPLE(left,right,loops,delay)
  852.  
  853.                                   ;;                A0    A1   D0    D1
  854.  
  855.          PAR4
  856.  
  857.          ZOK       STEREOSAMPLE
  858.  
  859. ;
  860.  
  861. ;-----------------------------------------------------------------------
  862.  
  863. ;
  864.  
  865. _S5LEFTSAMPLE:                    ;; S5LEFTSAMPLE(buffer,loops,delay)
  866.  
  867.                                   ;;              A0     A1    D0
  868.  
  869.          PAR3
  870.  
  871.          ZOK       LEFTSAMPLE
  872.  
  873. ;
  874.  
  875. ;-----------------------------------------------------------------------
  876.  
  877. ;
  878.  
  879. _S5RIGHTSAMPLE:                   ;; S5RIGHTSAMPLE(buffer,loops,delay)
  880.  
  881.                                   ;;               A0     A1    D0
  882.  
  883.          PAR3
  884.  
  885.          ZOK       RIGHTSAMPLE
  886.  
  887. ;
  888.  
  889. ;-----------------------------------------------------------------------
  890.  
  891. ;
  892.  
  893. _S5DUMMYREAD:                     ;; S5DUMMYREAD(loops)
  894.  
  895.                                   ;;             A0
  896.  
  897.          PAR1
  898.  
  899.          ZOK       DUMMYREAD
  900.  
  901. ;
  902.  
  903. ;-----------------------------------------------------------------------
  904.  
  905. ;
  906.  
  907. _S5FILL:                          ;; S5FILL(buffer,length,bytedata)
  908.  
  909.                                   ;;        A0     A1     D0
  910.  
  911.          PAR3
  912.  
  913.          ZOK       FILL
  914.  
  915. ;
  916.  
  917. ;-----------------------------------------------------------------------
  918.  
  919. ;
  920.  
  921. _S5MOVE:                          ;; S5MOVE(src,dest,length)
  922.  
  923.                                   ;;       A0   A1   D0
  924.  
  925.          PAR3
  926.  
  927.          ZOK       MOVE
  928.  
  929. ;
  930.  
  931. ;-----------------------------------------------------------------------
  932.  
  933. ;
  934.  
  935. _S5GetStatus:                     ;; S5GetStatus(ShortVar)
  936.  
  937.                                   ;;             A0
  938.  
  939.          PAR1
  940.  
  941.          ZOK       GetStatus
  942.  
  943. ;
  944.  
  945. ;-----------------------------------------------------------------------
  946.  
  947. ;
  948.  
  949. _S5Player:                     ;; Succ = S5Player(filename)
  950.  
  951.                                ;; D0              A0
  952.  
  953.          PAR1
  954.  
  955.          ZOK       Player
  956.  
  957. ;
  958.  
  959. ;-----------------------------------------------------------------------
  960.  
  961. ;
  962.  
  963. _S5LatticeIO:                  ;; S5LatticeIO(in,out,err)
  964.  
  965.                                ;;             A0 A1  D0
  966.  
  967.          PAR3
  968.  
  969.          ZOK       LatticeIO
  970.  
  971. ;
  972.  
  973. ;-----------------------------------------------------------------------
  974.  
  975. ;
  976.  
  977.          END
  978.  
  979. ;-----------------------------------------------------------------------
  980.  
  981.  
  982.  
  983.