home *** CD-ROM | disk | FTP | other *** search
/ Vectronix 2 / VECTRONIX2.iso / FILES_01 / PC_V11_B.LZH / DEMO_ASS / DEMO_ASS / DSPLIB.S < prev    next >
Text File  |  1992-08-20  |  6KB  |  359 lines

  1.     opt    l2
  2.  
  3.     xdef    IsDspDrv            ;+
  4.     xdef    DspDoBlock,DspBlkHandShake,DspBlkUnpacked
  5.     xdef    DspInStream,DspOutStream,DspIOStream
  6.     xdef    DspRemoveInterrupts,DspGetWordSize,DspLock,DspUnlock
  7.     xdef    DspAvailable,DspReserve,DspLoadProg,DspExecProg,DspExecBoot
  8.     xdef    DspLodToBinary,DspTriggerHC,DspRequestUniqueAbility
  9.     xdef    DspGetProgAbility,DspFlushSubroutines,DspLoadSubroutine
  10.     xdef    DspInqSubrAbility,DspRunSubroutine
  11.     xdef    DspHf0,DspHf1,DspHf2,DspHf3
  12.     xdef    DspBlkWords,DspBlkBytes,DspHStat
  13.     xdef    DspOutStat,DspInStat
  14.  
  15.     output    .lib
  16.  
  17. DOBLOCK    equ    0
  18. BLKHANDSHAKE    equ    1
  19. BLKUNPACKED    equ    2
  20. INSTREAM    equ    3
  21. OUTSTREAM    equ    4
  22. IOSTREAM    equ    5
  23. REMOVEINTERRUPTS    equ    6
  24. GETWORDSIZE    equ    7
  25. LOCK    equ    8
  26. UNLOCK    equ    9
  27. AVAILABLE    equ    10
  28. RESERVE    equ    11
  29. LOADPROG    equ    12
  30. EXECPROG    equ    13
  31. EXECBOOT    equ    14
  32. LODTOBINARY    equ    15
  33. TRIGGERHC    equ    16
  34. REQUESTUNIQUEABILITY    equ    17
  35. GETPROGABILITY    equ    18
  36. FLUSHSUBROUTINES    equ    19
  37. LOADSUBROUTINE    equ    20
  38. INQSUBRABILITY    equ    21
  39. RUNSUBROUTINE    equ    22
  40. HF0    equ    23
  41. HF1    equ    24
  42. HF2    equ    25
  43. HF3    equ    26
  44. BLKWORDS    equ    27
  45. BLKBYTES    equ    28
  46. HSTAT    equ    29
  47. SETVECTOR    equ    30
  48.  
  49. CALLDRVR    macro
  50.     moveq    \1,d0
  51.     add.w    drvr_start(pc),d0
  52.     move.w    d0,-(sp)
  53.     trap    #14
  54.     ENDM
  55.  
  56.     TEXT
  57.  
  58. IsDspDrv:
  59.     move.w    #500,drvr_start        ;rev 1-2
  60.     bsr    DspGetWordSize
  61.     cmp.w    #500+GETWORDSIZE,d0
  62.     bne.s    .ok
  63.     move.w    #96,drvr_start        ;rev 3-4
  64.     bsr    DspGetWordSize
  65.     cmp.w    #96+GETWORDSIZE,d0
  66.     bne.s    .ok
  67. .no:    moveq    #0,d0
  68. .ok:    rts
  69.  
  70. drvr_start:    ds.w    1
  71.  
  72. DspDoBlock:
  73.     move.l    a2,-(sp)
  74.     move.l    d1,-(sp)
  75.     move.l    a1,-(sp)
  76.     move.l    d0,-(sp)
  77.     move.l    a0,-(sp)
  78.     CALLDRVR    #DOBLOCK
  79.     lea    18(sp),sp
  80.     move.l    (sp)+,a2
  81.     rts
  82.  
  83. DspBlkHandShake:
  84.     move.l    a2,-(sp)
  85.     move.l    d1,-(sp)
  86.     move.l    a1,-(sp)
  87.     move.l    d0,-(sp)
  88.     move.l    a0,-(sp)
  89.     CALLDRVR    #BLKHANDSHAKE
  90.     lea    18(sp),sp
  91.     move.l    (sp)+,a2
  92.     rts
  93.  
  94. DspBlkUnpacked:
  95.     move.l    a2,-(sp)
  96.     move.l    d1,-(sp)
  97.     move.l    a1,-(sp)
  98.     move.l    d0,-(sp)
  99.     move.l    a0,-(sp)
  100.     CALLDRVR    #BLKUNPACKED
  101.     lea    18(sp),sp
  102.     move.l    (sp)+,a2
  103.     rts
  104.  
  105. DspInStream:
  106.     move.l    a2,-(sp)
  107.     move.l    a1,-(sp)
  108.     move.l    d1,-(sp)
  109.     move.l    d0,-(sp)
  110.     move.l    a0,-(sp)
  111.     CALLDRVR    #INSTREAM
  112.     lea    18(sp),sp
  113.     move.l    (sp)+,a2
  114.     rts
  115.  
  116. DspOutStream:
  117.     move.l    a2,-(sp)
  118.     move.l    a1,-(sp)
  119.     move.l    d1,-(sp)
  120.     move.l    d0,-(sp)
  121.     move.l    a0,-(sp)
  122.     CALLDRVR    #OUTSTREAM
  123.     lea    18(sp),sp
  124.     move.l    (sp)+,a2
  125.     rts
  126.  
  127. DspIOStream:
  128.     move.l    a2,-(sp)
  129.     move.l    8(sp),-(sp)
  130.     move.l    d2,-(sp)
  131.     move.l    d1,-(sp)
  132.     move.l    d0,-(sp)
  133.     move.l    a1,-(sp)
  134.     move.l    a0,-(sp)
  135.     CALLDRVR    #IOSTREAM
  136.     lea    26(sp),sp
  137.     move.l    (sp)+,a2
  138.     rts
  139.  
  140. DspRemoveInterrupts:
  141.     move.l    a2,-(sp)
  142.     move.w    d0,-(sp)
  143.     CALLDRVR    #REMOVEINTERRUPTS
  144.     addq.w    #4,sp
  145.     move.l    (sp)+,a2
  146.     rts
  147.  
  148. DspGetWordSize:
  149.     move.l    a2,-(sp)
  150.     CALLDRVR    #GETWORDSIZE
  151.     addq.w    #2,sp
  152.     move.l    (sp)+,a2
  153.     rts
  154.  
  155. DspLock:
  156.     move.l    a2,-(sp)
  157.     CALLDRVR    #LOCK
  158.     addq.w    #2,sp
  159.     move.l    (sp)+,a2
  160.     rts
  161.  
  162. DspUnlock:
  163.     move.l    a2,-(sp)
  164.     CALLDRVR    #UNLOCK
  165.     addq.w    #2,sp
  166.     move.l    (sp)+,a2
  167.     rts
  168.  
  169. DspAvailable:
  170.     move.l    a2,-(sp)
  171.     move.l    a1,-(sp)
  172.     move.l    a0,-(sp)
  173.     CALLDRVR    #AVAILABLE
  174.     lea    10(sp),sp
  175.     move.l    (sp)+,a2
  176.     rts
  177.  
  178. DspReserve:
  179.     move.l    a2,-(sp)
  180.     move.w    d1,-(sp)
  181.     move.w    d0,-(sp)
  182.     CALLDRVR    #RESERVE
  183.     addq.w    #6,sp
  184.     move.l    (sp)+,a2
  185.     rts
  186.  
  187. DspLoadProg:
  188.     move.l    a2,-(sp)
  189.     move.w    d0,-(sp)
  190.     move.l    a0,-(sp)
  191.     CALLDRVR    #LOADPROG
  192.     addq.w    #8,sp
  193.     move.l    (sp)+,a2
  194.     rts
  195.  
  196. DspExecProg:
  197.     move.l    a2,-(sp)
  198.     move.w    d1,-(sp)
  199.     move.l    d0,-(sp)
  200.     move.l    a0,-(sp)
  201.     CALLDRVR    #EXECPROG
  202.     lea    12(sp),sp
  203.     move.l    (sp)+,a2
  204.     rts
  205.  
  206. DspExecBoot:
  207.     move.l    a2,-(sp)
  208.     move.w    d1,-(sp)
  209.     move.l    d0,-(sp)
  210.     move.l    a0,-(sp)
  211.     CALLDRVR    #EXECBOOT
  212.     lea    12(sp),sp
  213.     move.l    (sp)+,a2
  214.     rts
  215.  
  216. DspLodToBinary:
  217.     move.l    a2,-(sp)
  218.     move.l    a1,-(sp)
  219.     move.l    a0,-(sp)
  220.     CALLDRVR    #LODTOBINARY
  221.     lea    10(sp),sp
  222.     move.l    (sp)+,a2
  223.     rts
  224.  
  225. DspTriggerHC:
  226.     move.l    a2,-(sp)
  227.     move.w    d0,-(sp)
  228.     CALLDRVR    #TRIGGERHC
  229.     addq.w    #4,sp
  230.     move.l    (sp)+,a2
  231.     rts
  232.  
  233. DspRequestUniqueAbility:
  234.     move.l    a2,-(sp)
  235.     CALLDRVR    #REQUESTUNIQUEABILITY
  236.     addq.w    #2,sp
  237.     move.l    (sp)+,a2
  238.     rts
  239.  
  240. DspGetProgAbility:
  241.     move.l    a2,-(sp)
  242.     CALLDRVR    #GETPROGABILITY
  243.     addq.w    #2,sp
  244.     move.l    (sp)+,a2
  245.     rts
  246.  
  247. DspFlushSubroutines:
  248.     move.l    a2,-(sp)
  249.     CALLDRVR    #FLUSHSUBROUTINES
  250.     addq.w    #2,sp
  251.     move.l    (sp)+,a2
  252.     rts
  253.  
  254. DspLoadSubroutine:
  255.     move.l    a2,-(sp)
  256.     move.w    d1,-(sp)
  257.     move.l    d0,-(sp)
  258.     move.l    a0,-(sp)
  259.     CALLDRVR    #LOADSUBROUTINE
  260.     lea    12(sp),sp
  261.     move.l    (sp)+,a2
  262.     rts
  263.  
  264. DspInqSubrAbility:
  265.     move.l    a2,-(sp)
  266.     move.w    d0,-(sp)
  267.     CALLDRVR    #INQSUBRABILITY
  268.     addq.w    #4,sp
  269.     move.l    (sp)+,a2
  270.     rts
  271.  
  272. DspRunSubroutine:
  273.     move.l    a2,-(sp)
  274.     move.w    d0,-(sp)
  275.     CALLDRVR    #RUNSUBROUTINE
  276.     addq.w    #4,sp
  277.     move.l    (sp)+,a2
  278.     rts
  279.  
  280. DspHf0:
  281.     move.l    a2,-(sp)
  282.     move.w    d0,-(sp)
  283.     CALLDRVR    #HF0
  284.     addq.w    #4,sp
  285.     move.l    (sp)+,a2
  286.     rts
  287.  
  288. DspHf1:
  289.     move.l    a2,-(sp)
  290.     move.w    d0,-(sp)
  291.     CALLDRVR    #HF1
  292.     addq.w    #4,sp
  293.     move.l    (sp)+,a2
  294.     rts
  295.  
  296. DspHf2:
  297.     move.l    a2,-(sp)
  298.     CALLDRVR    #HF2
  299.     addq.w    #2,sp
  300.     move.l    (sp)+,a2
  301.     rts
  302.  
  303. DspHf3:
  304.     move.l    a2,-(sp)
  305.     CALLDRVR    #HF3
  306.     addq.w    #2,sp
  307.     move.l    (sp)+,a2
  308.     rts
  309.  
  310. DspBlkWords:
  311.     move.l    a2,-(sp)
  312.     move.l    d1,-(sp)
  313.     move.l    a1,-(sp)
  314.     move.l    d0,-(sp)
  315.     move.l    a0,-(sp)
  316.     CALLDRVR    #BLKWORDS
  317.     lea    18(sp),sp
  318.     move.l    (sp)+,a2
  319.     rts
  320.  
  321. DspBlkBytes:
  322.     move.l    a2,-(sp)
  323.     move.l    d1,-(sp)
  324.     move.l    a1,-(sp)
  325.     move.l    d0,-(sp)
  326.     move.l    a0,-(sp)
  327.     CALLDRVR    #BLKBYTES
  328.     lea    18(sp),sp
  329.     move.l    (sp)+,a2
  330.     rts
  331.  
  332. DspHStat:
  333.     move.l    a2,-(sp)
  334.     CALLDRVR    #HSTAT
  335.     addq.w    #2,sp
  336.     move.l    (sp)+,a2
  337.     rts
  338.  
  339. DspOutStat:
  340.     bsr    DspHStat
  341.     lsr.w    #1,d0
  342.     subx.w    d1,d1
  343.     neg.w    d1
  344.     lsr.w    #1,d0
  345.     and.w    #6,d0
  346.     or.w    d1,d0
  347.     rts
  348.  
  349. DspInStat:
  350.     bsr    DspHStat
  351.     lsr.w    #2,d0
  352.     subx.w    d1,d1
  353.     neg.w    d1
  354.     and.w    #6,d0
  355.     or.w    d1,d0
  356.     rts
  357.  
  358.     END
  359.