home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio 2000 #1 / Ham Radio 2000.iso / ham2000 / hf / dsp / source / mem.asm < prev    next >
Encoding:
Assembly Source File  |  1991-05-05  |  3.7 KB  |  233 lines

  1.     page    132,63,3,3
  2.     opt    rc
  3. ;
  4. ;  MEM.ASM -- Memory diagnostic program for the DSP CARD 3
  5. ;
  6. ;  Copyright (C) 1990, 1991 by Alef Null. All rights reserved.
  7. ;  Author(s): Jarkko Vuori, OH2LNS
  8. ;  Modification(s):
  9. ;
  10.  
  11. ; program parameters
  12. ;        X               Y          P
  13. ; 0000 +----------+  0000 +----------+    0000 +----------+
  14. ;      | Internal |      | Internal |         |        |
  15. ; 0100 +----------+  0100 +----------+         | Internal |
  16. ;      | LOG ROM  |      | SIN ROM  |         |        |
  17. ; 0200 +----------+  0200 +----------+    0200 +----------+
  18. ;      | External |      | External |         |        |
  19. ;      |      |      |         |         | External |
  20. ; 0A00 +----------+  0A00 +----------+         |        |
  21. ;                         |        |
  22. ;                    1200 +----------+
  23. ;
  24. ;
  25. ;
  26. begdblk equ    $0200
  27. enddblk equ    $09ff
  28. begpblk equ    $0200
  29. endpblk equ    $11ff
  30.  
  31.     nolist
  32.     include 'intequlc.asm'
  33.     include 'ioequlc.asm'
  34.     list
  35.  
  36. print    macro    value
  37.     jclr    #m_tdre,x:m_ssr,*
  38.     movep    value,x:m_srxl
  39.     endm
  40.  
  41. strout    macro    str
  42.     move            #str,r6
  43.     jsr    <prstr
  44.     endm
  45.  
  46. ; Reset vector
  47.     org    p:i_reset
  48.     jmp    start
  49.  
  50.     org    p:$40
  51.  
  52. ;
  53. ; Print out 24-bit hex number in a1
  54. ;
  55. prhex    move            #>10,x0
  56.     move            #>'A'-'9'-1,x1
  57.     move            #>'0',y1
  58.     do    #6,prhexl
  59.     clr    b
  60.     do    #4,digl
  61.     lsl    a
  62.     rol    b
  63. digl
  64.     cmp    x0,b
  65.     jlo    <bighex
  66.     add    x1,b
  67. bighex    add    y1,b
  68.     print    b1
  69. prhexl
  70.     rts
  71.  
  72.  
  73. ;
  74. ; Print out null terminated r6 pointed text string
  75. ;
  76. prstr    move            x:(r6)+,b
  77.     tst    b
  78.     jeq    <prstre
  79.     print    b1
  80.     jmp    <prstr
  81. prstre    rts
  82.  
  83. ;
  84. ; Print out error msg
  85. ;
  86. prerr    move            a1,x:<tmp
  87.     move    r0,a
  88.     jsr    <prhex
  89.     strout    colon
  90.     move    y0,a
  91.     jsr    <prhex
  92.     strout    readtxt
  93.     move            x:<tmp,a
  94.     jsr    <prhex
  95.     strout    endtxt
  96.     rts
  97.  
  98.  
  99. ;
  100. ; Program Start
  101. ;
  102.  
  103. ; no wait states on external memory
  104. start    movep            #$0000,x:m_bcr        ; no wait states
  105.  
  106. ; initialize SCI
  107.     movep            #$0202,x:m_scr        ; 8,n,1
  108.     movep            #$0022,x:m_sccr        ; 9600 bit/s
  109.  
  110. ; initialize port C
  111.     movep            #$000b,x:m_pcc        ; TXD,RXD
  112.     movep            #$0014,x:m_pcddr        ; SCLK,SC1 as output
  113.     movep            #$0000,x:m_pcd
  114.  
  115.     bset    #2,x:m_pcd
  116.  
  117. ; initialize pattern pointers
  118.     move            #<pat,r1
  119.     move            #<patlen-1,m1
  120.     move            m1,m2
  121.  
  122. ; set memory
  123. loop    move            r1,r2
  124. ; X
  125.     move            #begdblk,r0
  126.     do    #enddblk-begdblk,setxloop
  127.     move                y:(r2)+,x0
  128.     move            x0,x:(r0)+
  129. setxloop
  130. ; Y
  131.     move            #begdblk,r0
  132.     do    #enddblk-begdblk,setyloop
  133.     move                y:(r2)+,y0
  134.     move            y0,y:(r0)+
  135. setyloop
  136. ; P
  137.     move            #begpblk,r0
  138.     do    #endpblk-begpblk,setploop
  139.     move                y:(r2)+,x0
  140.     move            x0,p:(r0)+
  141. setploop
  142.  
  143. ; check memory
  144.     move            r1,r2
  145.     move            #-1,x0
  146.     clr    b
  147. ; X
  148.     move            #begdblk,r0
  149.     do    #enddblk-begdblk,chkxloop
  150.     move                y:(r2)+,y0
  151.     move            x:(r0)+,a
  152.     cmp    y0,a
  153.     jeq    <okx
  154.     strout    xtxt
  155.     jsr    <prerr
  156. okx
  157.     tne            x0,b
  158. chkxloop
  159. ; Y
  160.     move            #begdblk,r0
  161.     do    #enddblk-begdblk,chkyloop
  162.     move                y:(r2)+,y0
  163.     move            y:(r0)+,a
  164.     cmp    y0,a
  165.     jeq    <oky
  166.     strout    ytxt
  167.     jsr    <prerr
  168. oky
  169.     tne            x0,b
  170. chkyloop
  171. ; P
  172.     move            #begpblk,r0
  173.     do    #endpblk-begpblk,chkploop
  174.     move                y:(r2)+,y0
  175.     move            p:(r0)+,a
  176.     cmp    y0,a
  177.     jeq    <okp
  178.     strout    ptxt
  179.     jsr    <prerr
  180. okp
  181.     tne            x0,b
  182. chkploop
  183.  
  184. ; change test patterns cyclically
  185. ok    move            #<pat,x0
  186.     move            (r1)+
  187.     move            r1,b
  188.     cmp    x0,b
  189.     jne    loop
  190.  
  191. ; toggle indicator bit CTS (SC1) when one test run is complete
  192.     bchg    #$2,x:m_pcd
  193.  
  194.     jmp    loop
  195.  
  196.  
  197.  
  198.  
  199. ;
  200. ; Y:mem
  201. ;
  202.     org    y:$0
  203. ; test patterns
  204. pat
  205.     dc    $ffffff
  206.     dc    $aaaaaa
  207.     dc    $555555
  208.     dc    $0ffff0
  209.     dc    $ff00ff
  210.     dc    $00ff00
  211.     dc    $f0f0f0
  212.     dc    $0f0f0f
  213.     dc    $101010
  214.     dc    $ffffff
  215.     dc    $000000
  216. patlen    equ    *-pat
  217.  
  218.  
  219. ;
  220. ; X mem
  221. ;
  222.     org    x:$0
  223. tmp    ds    1
  224.  
  225. ptxt    dc    'P',' ',0
  226. xtxt    dc    'X',' ',0
  227. ytxt    dc    'Y',' ',0
  228. colon    dc    ':',' ','w','r','i','t','t','e','n',' ',0
  229. readtxt dc    ' ','r','e','a','d',' ',0
  230. endtxt    dc    13,10,0
  231.  
  232.     end
  233.