home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / emulator / unix / z80pack / z80src / z80test.asm < prev   
Encoding:
Assembly Source File  |  1992-07-09  |  7.9 KB  |  543 lines

  1. ;       Testprogramm fuer Z80-Assembler und Z80-Simulator
  2. ;
  3. ;       Copyright (C) 1989 by Udo Munk
  4. ;
  5.     JR      $JR01           ;JR-Befehle testen
  6.     HALT
  7. $JR01:  SCF
  8.     JR      C,$JR02
  9.     HALT
  10. $JR02:  CCF
  11.     JR      NC,$JR03
  12.     HALT
  13. $JR03:  XOR     A
  14.     JR      Z,$JR04
  15.     HALT
  16. $JR04:  INC     A
  17.     JR      NZ,$JR05
  18.     HALT
  19. $JR05:  LD      B,0
  20.     XOR     A
  21. $JR06:
  22.     INC     A
  23.     DJNZ    $JR06
  24.     JR      Z,$JR07
  25.     HALT
  26. $JR07:
  27.     OR      A
  28.     JR      Z,$JR08
  29.     HALT
  30. $JR08:
  31. $NEXT01:                        ;JP-Befehle testen
  32.     JP      $JP01
  33.     HALT
  34. $JP01:  LD      HL,$JP02
  35.     JP      (HL)
  36.     HALT
  37. $JP02:  LD      IX,$JP03
  38.     JP      (IX)
  39.     HALT
  40. $JP03:  LD      IY,$JP04
  41.     JP      (IY)
  42.     HALT
  43. $JP04:  SCF
  44.     JP      C,$JP05
  45.     HALT
  46. $JP05:  CCF
  47.     JP      NC,$JP06
  48.     HALT
  49. $JP06:  XOR     A
  50.     JP      Z,$JP07
  51.     HALT
  52. $JP07:  INC     A
  53.     JP      NZ,$JP08
  54.     HALT
  55. $JP08:  JP      PO,$JP09
  56.     HALT
  57. $JP09:  INC     A
  58.     INC     A
  59.     AND     3
  60.     JP      PE,$JP10
  61.     HALT
  62. $JP10:  JP      P,$JP11
  63.     HALT
  64. $JP11:  SUB     8
  65.     JP      M,$JP12
  66.     HALT
  67. $JP12:
  68. $NEXT02:                        ;CALL und RET-Befehle testen
  69.     LD      SP,STACK
  70.     CALL    UP1
  71.     HALT
  72.     SCF
  73.     CALL    C,UP2
  74.     HALT
  75.     CCF
  76.     CALL    NC,UP3
  77.     HALT
  78.     XOR     A
  79.     CALL    Z,UP4
  80.     HALT
  81.     INC     A
  82.     CALL    NZ,UP5
  83.     HALT
  84.     CALL    PO,UP6
  85.     HALT
  86.     INC     A
  87.     INC     A
  88.     AND     3
  89.     CALL    PE,UP7
  90.     HALT
  91.     CALL    P,UP8
  92.     HALT
  93.     SUB     8
  94.     CALL    M,UP9
  95.     HALT
  96. $NEXT03:                         ;8-Bit Ladebefehle testen
  97.     LD      A,10
  98.     LD      B,A
  99.     LD      C,B
  100.     LD      D,C
  101.     LD      E,D
  102.     LD      H,E
  103.     LD      L,H
  104.     SUB     L
  105.     JR      Z,$LD01
  106.     HALT
  107. $LD01:  LD      A,B
  108.     CP      10
  109.     JR      Z,$LD02
  110.     HALT
  111. $LD02:  LD      A,C
  112.     CP      10
  113.     JR      Z,$LD03
  114.     HALT
  115. $LD03:  LD      A,D
  116.     CP      10
  117.     JR      Z,$LD04
  118.     HALT
  119. $LD04:  LD      A,E
  120.     CP      10
  121.     JR      Z,$LD05
  122.     HALT
  123. $LD05:  LD      A,H
  124.     CP      10
  125.     JR      Z,$LD06
  126.     HALT
  127. $LD06:  LD      A,L
  128.     CP      10
  129.     JR      Z,$LD07
  130.     HALT
  131. $LD07:  LD      BC,BYTE1
  132.     LD      DE,BYTE2
  133.     LD      HL,BYTE3
  134.     LD      A,1
  135.     LD      (BC),A
  136.     INC     A
  137.     LD      (DE),A
  138.     INC     A
  139.     LD      (HL),A
  140.     LD      A,(BC)
  141.     LD      B,A
  142.     LD      A,(DE)
  143.     LD      C,A
  144.     LD      A,(HL)
  145.     ADD     A,B
  146.     ADD     A,C
  147.     CP      6
  148.     JR      Z,$LD08
  149.     HALT
  150. $LD08:  LD      A,1
  151.     LD      B,2
  152.     LD      C,3
  153.     LD      D,4
  154.     LD      E,5
  155.     LD      H,6
  156.     LD      L,7
  157.     ADD     A,B
  158.     ADD     A,C
  159.     ADD     A,D
  160.     ADD     A,E
  161.     ADD     A,H
  162.     ADD     A,L
  163.     CP      28
  164.     JR      Z,$LD09
  165.     HALT
  166. $LD09:  LD      HL,BYTE3
  167.     LD      A,(HL)
  168.     CP      3
  169.     JR      Z,$LD10
  170.     HALT
  171. $LD10:  LD      B,(HL)
  172.     CP      B
  173.     JR      Z,$LD11
  174.     HALT
  175. $LD11:  LD      C,(HL)
  176.     CP      C
  177.     JR      Z,$LD12
  178.     HALT
  179. $LD12:  LD      D,(HL)
  180.     CP      D
  181.     JR      Z,$LD13
  182.     HALT
  183. $LD13:  LD      E,(HL)
  184.     CP      E
  185.     JR      Z,$LD14
  186.     HALT
  187. $LD14:  LD      H,(HL)
  188.     CP      H
  189.     JR      Z,$LD15
  190.     HALT
  191. $LD15:  LD      HL,BYTE3
  192.     LD      L,(HL)
  193.     CP      L
  194.     JR      Z,$LD16
  195.     HALT
  196. $LD16:  LD      A,0D3H
  197.     LD      (BYTE1),A
  198.     XOR     A
  199.     LD      A,(BYTE1)
  200.     CP      0D3H
  201.     JR      Z,$LD17
  202.     HALT
  203. $LD17:  LD      IX,TAB1
  204.     LD      B,TAB1_END-TAB1
  205.     LD      C,0
  206. $LD18:  LD      A,(IX+0)
  207.     CP      C
  208.     JR      Z,$LD19
  209.     HALT
  210. $LD19:  INC     C
  211.     INC     IX
  212.     DJNZ    $LD18
  213. $LD20:  LD      IY,TAB1
  214.     LD      B,TAB1_END-TAB1
  215.     LD      C,0
  216. $LD21:  LD      A,(IY+0)
  217.     CP      C
  218.     JR      Z,$LD22
  219.     HALT
  220. $LD22:  INC     C
  221.     INC     IY
  222.     DJNZ    $LD21
  223. $LD23:  LD      IX,TAB1_END
  224.     LD      B,TAB1_END-TAB1
  225.     LD      A,(TAB1_END-1)
  226.     LD      C,A
  227. $LD24:  LD      A,(IX+-1)
  228.     CP      C
  229.     JR      Z,$LD25
  230.     HALT
  231. $LD25:  DEC     C
  232.     DEC     IX
  233.     DJNZ    $LD24
  234. $LD26:  LD      IY,TAB1_END
  235.     LD      B,TAB1_END-TAB1
  236.     LD      A,(TAB1_END-1)
  237.     LD      C,A
  238. $LD27:  LD      A,(IY+-1)
  239.     CP      C
  240.     JR      Z,$LD28
  241.     HALT
  242. $LD28:  DEC     C
  243.     DEC     IY
  244.     DJNZ    $LD27
  245. $LD29:  LD      HL,1234H
  246.     PUSH    HL
  247.     LD      IX,WORD1
  248.     LD      (IX+0),L
  249.     LD      (IX+1),H
  250.     LD      DE,(WORD1)
  251.     OR      A
  252.     SBC     HL,DE
  253.     JR      Z,$LD30
  254.     HALT
  255. $LD30:  LD      C,(IX+0)
  256.     LD      B,(IX+1)
  257.     POP     HL
  258.     OR      A
  259.     SBC     HL,BC
  260.     JR      Z,$LD31
  261.     HALT
  262. $LD31:
  263. $NEXT04:                        ;16-Bit Ladebefehle testen
  264.     LD      BC,1234H
  265.     LD      (WORD1),BC
  266.     LD      HL,(WORD1)
  267.     OR      A
  268.     SBC     HL,BC
  269.     JR      Z,$LDW01
  270.     HALT
  271. $LDW01: LD      DE,4321H
  272.     LD      (WORD1),DE
  273.     LD      HL,(WORD1)
  274.     OR      A
  275.     SBC     HL,DE
  276.     JR      Z,$LDW02
  277.     HALT
  278. $LDW02: LD      HL,5678H
  279.     LD      (WORD1),HL
  280.     LD      BC,(WORD1)
  281.     OR      A
  282.     SBC     HL,BC
  283.     JR      Z,$LDW03
  284.     HALT
  285. $LDW03: LD      IX,3456H
  286.     PUSH    IX
  287.     POP     DE
  288.     LD      (WORD1),IX
  289.     LD      IY,(WORD1)
  290.     PUSH    IY
  291.     POP     HL
  292.     OR      A
  293.     SBC     HL,DE
  294.     JR      Z,$LDW04
  295.     HALT
  296. $LDW04: LD      IY,4567H
  297.     PUSH    IY
  298.     POP     BC
  299.     LD      (WORD1),IY
  300.     LD      IX,(WORD1)
  301.     PUSH    IX
  302.     POP     HL
  303.     OR      A
  304.     SBC     HL,BC
  305.     JR      Z,$LDW05
  306.     HALT
  307. $LDW05: LD      (WORD1),SP
  308.     LD      HL,(WORD1)
  309.     LD      DE,STACK
  310.     OR      A
  311.     SBC     HL,DE
  312.     JR      Z,$LDW06
  313.     HALT
  314. $LDW06: LD      BC,1122H
  315.     PUSH    BC
  316.     LD      HL,$LDW07
  317.     EX      (SP),HL
  318.     RET
  319.     HALT
  320. $LDW07: LD      BC,1122H
  321.     OR      A
  322.     SBC     HL,BC
  323.     JR      Z,$LDW07A
  324.     HALT
  325. $LDW07A:
  326.     PUSH    BC
  327.     LD      IX,$LDW08
  328.     EX      (SP),IX
  329.     RET
  330.     HALT
  331. $LDW08: LD      BC,1122H
  332.     PUSH    IX
  333.     POP     HL
  334.     OR      A
  335.     SBC     HL,BC
  336.     JR      Z,$LDW08A
  337.     HALT
  338. $LDW08A:
  339.     PUSH    BC
  340.     LD      IY,$LDW09
  341.     EX      (SP),IY
  342.     RET
  343.     HALT
  344. $LDW09: LD      BC,1122H
  345.     PUSH    IY
  346.     POP     HL
  347.     OR      A
  348.     SBC     HL,BC
  349.     JR      Z,$LDW09A
  350.     HALT
  351. $LDW09A:
  352. $NEXT05:                        ;8-Bit Arithmetik testen
  353.     LD      A,20H
  354.     LD      B,20H
  355.     ADD     A,B
  356.     JR      NC,$AR01
  357.     HALT
  358. $AR01:  JR      NZ,$AR02
  359.     HALT
  360. $AR02:  JP      P,$AR03
  361.     HALT
  362. $AR03:  JP      PO,$AR04
  363.     HALT
  364. $AR04:  OR      A
  365.     ADC     A,B
  366.     ADC     A,B
  367.     JR      NC,$AR05
  368.     HALT
  369. $AR05:  JR      NZ,$AR06
  370.     HALT
  371. $AR06:  JP      M,$AR07
  372.     HALT
  373. $AR07:  JP      PE,$AR08
  374.     HALT
  375. $AR08:  ADC     A,B
  376.     JR      NC,$AR09
  377.     HALT
  378. $AR09:  JR      NZ,$AR10
  379.     HALT
  380. $AR10:  JP      M,$AR11
  381.     HALT
  382. $AR11:  JP      PO,$AR12
  383.     HALT
  384. $AR12:  LD      B,60H
  385.     ADD     A,B
  386.     JR      C,$AR13
  387.     HALT
  388. $AR13:  JR      Z,$AR14
  389.     HALT
  390. $AR14:  JP      P,$AR15
  391.     HALT
  392. $AR15:  JP      PO,$AR16
  393.     HALT
  394. $AR16:  LD      IX,BYTE1
  395.     LD      (IX+0),0
  396.     LD      B,10
  397. $AR17:  INC     (IX+0)
  398.     DJNZ    $AR17
  399.     LD      A,(IX+0)
  400.     CP      10
  401.     JR      Z,$AR18
  402.     HALT
  403. $AR18:  LD      A,80H
  404.     ADD     A,A
  405.     JR      C,$AR19
  406.     HALT
  407. $AR19:  JR      Z,$AR20
  408.     HALT
  409. $AR20:
  410. $NEXT06:                        ;16-Bit Arithmetik testen
  411.     LD      SP,STACK-10
  412.     LD      IX,0
  413.     ADD     IX,SP
  414.     LD      HL,0
  415.     ADD     HL,SP
  416.     PUSH    IX
  417.     POP     BC
  418.     OR      A
  419.     SBC     HL,BC
  420.     JR      Z,$ARW01
  421.     HALT
  422. $ARW01: LD      SP,0
  423.     LD      BC,1
  424.     LD      DE,1
  425.     LD      IY,1
  426.     ADD     IY,IY
  427.     ADD     IY,BC
  428.     ADD     IY,DE
  429.     DEC     IY
  430.     DEC     IY
  431.     DEC     IY
  432.     DEC     IY
  433.     PUSH    IY
  434.     POP     HL
  435.     LD      A,H
  436.     OR      L
  437.     JR      Z,$ARW02
  438.     HALT
  439. $ARW02:
  440.     LD      HL,TEXT         ; Test erfolgreich beendet,
  441.     LD      B,TEND-TEXT     ; TEXT aufs Terminal ausgeben
  442.     LD      C,0             ; (Port 0 ist Terminal Output)
  443.     OTIR
  444.     HALT                    ; und CPU anhalten
  445. ;
  446.     EJECT
  447. ;
  448. ;       Die folgenden Unterprogramme testen die CALL und RET Befehle.
  449. ;       Durch Erhoehen der Return-Adresse auf dem Stack um 1 werden
  450. ;       die HALT-Befehle nach den CALL-Befehlen uebersprungen, wenn
  451. ;       alles richtig funktioniert.
  452. ;
  453. UP1:
  454.     EX      (SP),HL
  455.     INC     HL
  456.     EX      (SP),HL
  457.     RET
  458.     HALT
  459. ;
  460. UP2:
  461.     EX      (SP),HL
  462.     INC     HL
  463.     EX      (SP),HL
  464.     RET     C
  465.     HALT
  466. ;
  467. UP3:
  468.     EX      (SP),HL
  469.     INC     HL
  470.     EX      (SP),HL
  471.     RET     NC
  472.     HALT
  473. ;
  474. UP4:
  475.     EX      (SP),HL
  476.     INC     HL
  477.     EX      (SP),HL
  478.     RET     Z
  479.     HALT
  480. ;
  481. UP5:
  482.     EX      (SP),HL
  483.     INC     HL
  484.     EX      (SP),HL
  485.     RET     NZ
  486.     HALT
  487. ;
  488. UP6:
  489.     EX      (SP),HL
  490.     INC     HL
  491.     EX      (SP),HL
  492.     RET     PO
  493.     HALT
  494. ;
  495. UP7:
  496.     EX      (SP),HL
  497.     INC     HL
  498.     EX      (SP),HL
  499.     RET     PE
  500.     HALT
  501. ;
  502. UP8:
  503.     EX      (SP),HL
  504.     INC     HL
  505.     EX      (SP),HL
  506.     RET     P
  507.     HALT
  508. ;
  509. UP9:
  510.     EX      (SP),HL
  511.     INC     HL
  512.     EX      (SP),HL
  513.     RET     M
  514.     HALT
  515. ;
  516.     EJECT
  517. ;
  518. ;       Initialisierte Daten
  519. ;
  520. TAB1:   DEFB    00H,01H,02H,03H,04H,05H,06H,07H
  521.     DEFB    08H,09H,0AH,0BH,0CH,0DH,0EH,0FH
  522.     DEFB    10H,11H,12H,13H,14H,15H,16H,17H
  523.     DEFB    18H,19H,1AH,1BH,1CH,1DH,1EH,1FH
  524. TAB1_END:
  525.  
  526. TEXT:
  527.     DEFM    'Testprogramm erfolgreich beendet'
  528.     DEFB    10
  529. TEND:
  530. ;
  531. ;       Nicht initialisierte Daten
  532. ;
  533. BYTE1:  DEFS    1
  534. BYTE2:  DEFS    1
  535. BYTE3:  DEFS    1
  536. ;
  537. WORD1:  DEFS    2
  538. ;
  539.     DEFS    100
  540. STACK:
  541. ;
  542.     END
  543.