Blame |
    Last modification |
    View Log
    | Download
    | RSS feed
  
  
; Main driver for the Z80 tester.
 
;
 
; Copyright (C) 2012 Patrik Rak (patrik@raxoft.cz)
 
;
 
; This source code is released under the MIT license, see included license.txt.
 
 
 
            org     0x8000
 
 
 
main:       di
 
            push    iy
 
            exx
 
            push    hl
 
 
 
            call    printinit
 
 
 
            call    print
 
            db      "Z80 "
 
            testname
 
            db      " test"
 
            db      23,32-13,1,127," 2012 RAXOFT",13,13,0
 
 
 
            ld      bc,0
 
            ld      hl,testtable
 
            jr      .entry
 
 
 
.loop       push    hl
 
            push    bc
 
            call    .test
 
            pop     bc
 
            pop     hl
 
 
 
            add     a,b
 
            ld      b,a
 
 
 
            inc     c
 
 
 
.entry      ld      e,(hl)
 
            inc     hl
 
            ld      d,(hl)
 
            inc     hl
 
 
 
            ld      a,d
 
            or      e
 
            jr      nz,.loop
 
 
 
            call    print
 
            db      13,"Result: ",0
 
 
 
            ld      a,b
 
            or      a
 
            jr      z,.ok
 
 
 
            call    printdeca
 
 
 
            call    print
 
            db      " of ",0
 
 
 
            ld      a,c
 
            call    printdeca
 
 
 
            call    print
 
            db      " tests failed.",13,0
 
            jr      .done
 
 
 
.ok         call    print
 
            db      "all tests passed.",13,0
 
 
 
.done       pop     hl
 
            exx
 
            pop     iy
 
            ei
 
            ret
 
 
 
.test       ld      hl,1+3*vecsize
 
            add     hl,de
 
            push    hl
 
 
 
            ld      a,c
 
            call    printdeca
 
 
 
            ld      a,' '
 
            call    printchr
 
 
 
            ld      hl,1+3*vecsize+4
 
            add     hl,de
 
 
 
            call    printhl
 
 
 
            ex      de,hl
 
 
 
            call    test
 
 
 
            ld      hl,data+3
 
 
 
            ld      (hl),e
 
            dec     hl
 
            ld      (hl),d
 
            dec     hl
 
            ld      (hl),c
 
            dec     hl
 
            ld      (hl),b
 
 
 
            pop     de
 
 
 
            ld      b,4
 
            call    .cmp
 
 
 
            jr      nz,.mismatch
 
 
 
            call    print
 
            db      23,32-2,1,"OK",13,0
 
 
 
            ret
 
 
 
.mismatch   call    print
 
            db      23,32-6,1,"FAILED",13
 
            db      "CRC:",0
 
 
 
            call    printcrc
 
 
 
            call    print
 
            db      "   Expected:",0
 
 
 
            ex      de,hl
 
            call    printcrc
 
 
 
            ld      a,13
 
            call    printchr
 
 
 
            ld      a,1
 
            ret
 
 
 
.cmp        push    hl
 
            push    de
 
.cmploop    ld      a,(de)
 
            xor     (hl)
 
            jr      nz,.exit
 
            inc     de
 
            inc     hl
 
            djnz    .cmploop
 
.exit       pop     de
 
            pop     hl
 
            ret
 
 
 
            include print.asm
 
            include idea.asm
 
            include tests.asm
 
 
 
; EOF ;