Subversion Repositories pentevo

Rev

Blame | Last modification | View Log | Download | RSS feed | ?url?

  1. ; Main driver for the Z80 tester.
  2. ;
  3. ; Copyright (C) 2012 Patrik Rak (patrik@raxoft.cz)
  4. ;
  5. ; This source code is released under the MIT license, see included license.txt.
  6.  
  7.             org     0x8000
  8.  
  9. main:       di
  10.             push    iy
  11.             exx
  12.             push    hl
  13.  
  14.             call    printinit
  15.  
  16.             call    print
  17.             db      "Z80 "
  18.             testname
  19.             db      " test"
  20.             db      23,32-13,1,127," 2012 RAXOFT",13,13,0
  21.  
  22.             ld      bc,0
  23.             ld      hl,testtable
  24.             jr      .entry
  25.  
  26. .loop       push    hl
  27.             push    bc
  28.             call    .test
  29.             pop     bc
  30.             pop     hl
  31.  
  32.             add     a,b
  33.             ld      b,a
  34.  
  35.             inc     c
  36.  
  37. .entry      ld      e,(hl)
  38.             inc     hl
  39.             ld      d,(hl)
  40.             inc     hl
  41.  
  42.             ld      a,d
  43.             or      e
  44.             jr      nz,.loop
  45.  
  46.             call    print
  47.             db      13,"Result: ",0
  48.  
  49.             ld      a,b
  50.             or      a
  51.             jr      z,.ok
  52.  
  53.             call    printdeca
  54.  
  55.             call    print
  56.             db      " of ",0
  57.  
  58.             ld      a,c
  59.             call    printdeca
  60.  
  61.             call    print
  62.             db      " tests failed.",13,0
  63.             jr      .done
  64.  
  65. .ok         call    print
  66.             db      "all tests passed.",13,0
  67.  
  68. .done       pop     hl
  69.             exx
  70.             pop     iy
  71.             ei
  72.             ret
  73.  
  74. .test       ld      hl,1+3*vecsize
  75.             add     hl,de
  76.             push    hl
  77.  
  78.             ld      a,c
  79.             call    printdeca
  80.  
  81.             ld      a,' '
  82.             call    printchr
  83.  
  84.             ld      hl,1+3*vecsize+4
  85.             add     hl,de
  86.  
  87.             call    printhl
  88.  
  89.             ex      de,hl
  90.  
  91.             call    test
  92.  
  93.             ld      hl,data+3
  94.  
  95.             ld      (hl),e
  96.             dec     hl
  97.             ld      (hl),d
  98.             dec     hl
  99.             ld      (hl),c
  100.             dec     hl
  101.             ld      (hl),b
  102.  
  103.             pop     de
  104.  
  105.             ld      b,4
  106.             call    .cmp
  107.  
  108.             jr      nz,.mismatch
  109.  
  110.             call    print
  111.             db      23,32-2,1,"OK",13,0
  112.  
  113.             ret
  114.  
  115. .mismatch   call    print
  116.             db      23,32-6,1,"FAILED",13
  117.             db      "CRC:",0
  118.  
  119.             call    printcrc
  120.  
  121.             call    print
  122.             db      "   Expected:",0
  123.  
  124.             ex      de,hl
  125.             call    printcrc
  126.  
  127.             ld      a,13
  128.             call    printchr
  129.  
  130.             ld      a,1
  131.             ret
  132.  
  133. .cmp        push    hl
  134.             push    de
  135. .cmploop    ld      a,(de)
  136.             xor     (hl)
  137.             jr      nz,.exit
  138.             inc     de
  139.             inc     hl
  140.             djnz    .cmploop
  141. .exit       pop     de
  142.             pop     hl
  143.             ret
  144.  
  145.             include print.asm
  146.             include idea.asm
  147.             include tests.asm
  148.  
  149. ; EOF ;
  150.