home *** CD-ROM | disk | FTP | other *** search
- ; Testprogramm fuer Z80-Assembler und Z80-Simulator
- ;
- ; Copyright (C) 1989 by Udo Munk
- ;
- JR $JR01 ;JR-Befehle testen
- HALT
- $JR01: SCF
- JR C,$JR02
- HALT
- $JR02: CCF
- JR NC,$JR03
- HALT
- $JR03: XOR A
- JR Z,$JR04
- HALT
- $JR04: INC A
- JR NZ,$JR05
- HALT
- $JR05: LD B,0
- XOR A
- $JR06:
- INC A
- DJNZ $JR06
- JR Z,$JR07
- HALT
- $JR07:
- OR A
- JR Z,$JR08
- HALT
- $JR08:
- $NEXT01: ;JP-Befehle testen
- JP $JP01
- HALT
- $JP01: LD HL,$JP02
- JP (HL)
- HALT
- $JP02: LD IX,$JP03
- JP (IX)
- HALT
- $JP03: LD IY,$JP04
- JP (IY)
- HALT
- $JP04: SCF
- JP C,$JP05
- HALT
- $JP05: CCF
- JP NC,$JP06
- HALT
- $JP06: XOR A
- JP Z,$JP07
- HALT
- $JP07: INC A
- JP NZ,$JP08
- HALT
- $JP08: JP PO,$JP09
- HALT
- $JP09: INC A
- INC A
- AND 3
- JP PE,$JP10
- HALT
- $JP10: JP P,$JP11
- HALT
- $JP11: SUB 8
- JP M,$JP12
- HALT
- $JP12:
- $NEXT02: ;CALL und RET-Befehle testen
- LD SP,STACK
- CALL UP1
- HALT
- SCF
- CALL C,UP2
- HALT
- CCF
- CALL NC,UP3
- HALT
- XOR A
- CALL Z,UP4
- HALT
- INC A
- CALL NZ,UP5
- HALT
- CALL PO,UP6
- HALT
- INC A
- INC A
- AND 3
- CALL PE,UP7
- HALT
- CALL P,UP8
- HALT
- SUB 8
- CALL M,UP9
- HALT
- $NEXT03: ;8-Bit Ladebefehle testen
- LD A,10
- LD B,A
- LD C,B
- LD D,C
- LD E,D
- LD H,E
- LD L,H
- SUB L
- JR Z,$LD01
- HALT
- $LD01: LD A,B
- CP 10
- JR Z,$LD02
- HALT
- $LD02: LD A,C
- CP 10
- JR Z,$LD03
- HALT
- $LD03: LD A,D
- CP 10
- JR Z,$LD04
- HALT
- $LD04: LD A,E
- CP 10
- JR Z,$LD05
- HALT
- $LD05: LD A,H
- CP 10
- JR Z,$LD06
- HALT
- $LD06: LD A,L
- CP 10
- JR Z,$LD07
- HALT
- $LD07: LD BC,BYTE1
- LD DE,BYTE2
- LD HL,BYTE3
- LD A,1
- LD (BC),A
- INC A
- LD (DE),A
- INC A
- LD (HL),A
- LD A,(BC)
- LD B,A
- LD A,(DE)
- LD C,A
- LD A,(HL)
- ADD A,B
- ADD A,C
- CP 6
- JR Z,$LD08
- HALT
- $LD08: LD A,1
- LD B,2
- LD C,3
- LD D,4
- LD E,5
- LD H,6
- LD L,7
- ADD A,B
- ADD A,C
- ADD A,D
- ADD A,E
- ADD A,H
- ADD A,L
- CP 28
- JR Z,$LD09
- HALT
- $LD09: LD HL,BYTE3
- LD A,(HL)
- CP 3
- JR Z,$LD10
- HALT
- $LD10: LD B,(HL)
- CP B
- JR Z,$LD11
- HALT
- $LD11: LD C,(HL)
- CP C
- JR Z,$LD12
- HALT
- $LD12: LD D,(HL)
- CP D
- JR Z,$LD13
- HALT
- $LD13: LD E,(HL)
- CP E
- JR Z,$LD14
- HALT
- $LD14: LD H,(HL)
- CP H
- JR Z,$LD15
- HALT
- $LD15: LD HL,BYTE3
- LD L,(HL)
- CP L
- JR Z,$LD16
- HALT
- $LD16: LD A,0D3H
- LD (BYTE1),A
- XOR A
- LD A,(BYTE1)
- CP 0D3H
- JR Z,$LD17
- HALT
- $LD17: LD IX,TAB1
- LD B,TAB1_END-TAB1
- LD C,0
- $LD18: LD A,(IX+0)
- CP C
- JR Z,$LD19
- HALT
- $LD19: INC C
- INC IX
- DJNZ $LD18
- $LD20: LD IY,TAB1
- LD B,TAB1_END-TAB1
- LD C,0
- $LD21: LD A,(IY+0)
- CP C
- JR Z,$LD22
- HALT
- $LD22: INC C
- INC IY
- DJNZ $LD21
- $LD23: LD IX,TAB1_END
- LD B,TAB1_END-TAB1
- LD A,(TAB1_END-1)
- LD C,A
- $LD24: LD A,(IX+-1)
- CP C
- JR Z,$LD25
- HALT
- $LD25: DEC C
- DEC IX
- DJNZ $LD24
- $LD26: LD IY,TAB1_END
- LD B,TAB1_END-TAB1
- LD A,(TAB1_END-1)
- LD C,A
- $LD27: LD A,(IY+-1)
- CP C
- JR Z,$LD28
- HALT
- $LD28: DEC C
- DEC IY
- DJNZ $LD27
- $LD29: LD HL,1234H
- PUSH HL
- LD IX,WORD1
- LD (IX+0),L
- LD (IX+1),H
- LD DE,(WORD1)
- OR A
- SBC HL,DE
- JR Z,$LD30
- HALT
- $LD30: LD C,(IX+0)
- LD B,(IX+1)
- POP HL
- OR A
- SBC HL,BC
- JR Z,$LD31
- HALT
- $LD31:
- $NEXT04: ;16-Bit Ladebefehle testen
- LD BC,1234H
- LD (WORD1),BC
- LD HL,(WORD1)
- OR A
- SBC HL,BC
- JR Z,$LDW01
- HALT
- $LDW01: LD DE,4321H
- LD (WORD1),DE
- LD HL,(WORD1)
- OR A
- SBC HL,DE
- JR Z,$LDW02
- HALT
- $LDW02: LD HL,5678H
- LD (WORD1),HL
- LD BC,(WORD1)
- OR A
- SBC HL,BC
- JR Z,$LDW03
- HALT
- $LDW03: LD IX,3456H
- PUSH IX
- POP DE
- LD (WORD1),IX
- LD IY,(WORD1)
- PUSH IY
- POP HL
- OR A
- SBC HL,DE
- JR Z,$LDW04
- HALT
- $LDW04: LD IY,4567H
- PUSH IY
- POP BC
- LD (WORD1),IY
- LD IX,(WORD1)
- PUSH IX
- POP HL
- OR A
- SBC HL,BC
- JR Z,$LDW05
- HALT
- $LDW05: LD (WORD1),SP
- LD HL,(WORD1)
- LD DE,STACK
- OR A
- SBC HL,DE
- JR Z,$LDW06
- HALT
- $LDW06: LD BC,1122H
- PUSH BC
- LD HL,$LDW07
- EX (SP),HL
- RET
- HALT
- $LDW07: LD BC,1122H
- OR A
- SBC HL,BC
- JR Z,$LDW07A
- HALT
- $LDW07A:
- PUSH BC
- LD IX,$LDW08
- EX (SP),IX
- RET
- HALT
- $LDW08: LD BC,1122H
- PUSH IX
- POP HL
- OR A
- SBC HL,BC
- JR Z,$LDW08A
- HALT
- $LDW08A:
- PUSH BC
- LD IY,$LDW09
- EX (SP),IY
- RET
- HALT
- $LDW09: LD BC,1122H
- PUSH IY
- POP HL
- OR A
- SBC HL,BC
- JR Z,$LDW09A
- HALT
- $LDW09A:
- $NEXT05: ;8-Bit Arithmetik testen
- LD A,20H
- LD B,20H
- ADD A,B
- JR NC,$AR01
- HALT
- $AR01: JR NZ,$AR02
- HALT
- $AR02: JP P,$AR03
- HALT
- $AR03: JP PO,$AR04
- HALT
- $AR04: OR A
- ADC A,B
- ADC A,B
- JR NC,$AR05
- HALT
- $AR05: JR NZ,$AR06
- HALT
- $AR06: JP M,$AR07
- HALT
- $AR07: JP PE,$AR08
- HALT
- $AR08: ADC A,B
- JR NC,$AR09
- HALT
- $AR09: JR NZ,$AR10
- HALT
- $AR10: JP M,$AR11
- HALT
- $AR11: JP PO,$AR12
- HALT
- $AR12: LD B,60H
- ADD A,B
- JR C,$AR13
- HALT
- $AR13: JR Z,$AR14
- HALT
- $AR14: JP P,$AR15
- HALT
- $AR15: JP PO,$AR16
- HALT
- $AR16: LD IX,BYTE1
- LD (IX+0),0
- LD B,10
- $AR17: INC (IX+0)
- DJNZ $AR17
- LD A,(IX+0)
- CP 10
- JR Z,$AR18
- HALT
- $AR18: LD A,80H
- ADD A,A
- JR C,$AR19
- HALT
- $AR19: JR Z,$AR20
- HALT
- $AR20:
- $NEXT06: ;16-Bit Arithmetik testen
- LD SP,STACK-10
- LD IX,0
- ADD IX,SP
- LD HL,0
- ADD HL,SP
- PUSH IX
- POP BC
- OR A
- SBC HL,BC
- JR Z,$ARW01
- HALT
- $ARW01: LD SP,0
- LD BC,1
- LD DE,1
- LD IY,1
- ADD IY,IY
- ADD IY,BC
- ADD IY,DE
- DEC IY
- DEC IY
- DEC IY
- DEC IY
- PUSH IY
- POP HL
- LD A,H
- OR L
- JR Z,$ARW02
- HALT
- $ARW02:
- LD HL,TEXT ; Test erfolgreich beendet,
- LD B,TEND-TEXT ; TEXT aufs Terminal ausgeben
- LD C,0 ; (Port 0 ist Terminal Output)
- OTIR
- HALT ; und CPU anhalten
- ;
- EJECT
- ;
- ; Die folgenden Unterprogramme testen die CALL und RET Befehle.
- ; Durch Erhoehen der Return-Adresse auf dem Stack um 1 werden
- ; die HALT-Befehle nach den CALL-Befehlen uebersprungen, wenn
- ; alles richtig funktioniert.
- ;
- UP1:
- EX (SP),HL
- INC HL
- EX (SP),HL
- RET
- HALT
- ;
- UP2:
- EX (SP),HL
- INC HL
- EX (SP),HL
- RET C
- HALT
- ;
- UP3:
- EX (SP),HL
- INC HL
- EX (SP),HL
- RET NC
- HALT
- ;
- UP4:
- EX (SP),HL
- INC HL
- EX (SP),HL
- RET Z
- HALT
- ;
- UP5:
- EX (SP),HL
- INC HL
- EX (SP),HL
- RET NZ
- HALT
- ;
- UP6:
- EX (SP),HL
- INC HL
- EX (SP),HL
- RET PO
- HALT
- ;
- UP7:
- EX (SP),HL
- INC HL
- EX (SP),HL
- RET PE
- HALT
- ;
- UP8:
- EX (SP),HL
- INC HL
- EX (SP),HL
- RET P
- HALT
- ;
- UP9:
- EX (SP),HL
- INC HL
- EX (SP),HL
- RET M
- HALT
- ;
- EJECT
- ;
- ; Initialisierte Daten
- ;
- TAB1: DEFB 00H,01H,02H,03H,04H,05H,06H,07H
- DEFB 08H,09H,0AH,0BH,0CH,0DH,0EH,0FH
- DEFB 10H,11H,12H,13H,14H,15H,16H,17H
- DEFB 18H,19H,1AH,1BH,1CH,1DH,1EH,1FH
- TAB1_END:
-
- TEXT:
- DEFM 'Testprogramm erfolgreich beendet'
- DEFB 10
- TEND:
- ;
- ; Nicht initialisierte Daten
- ;
- BYTE1: DEFS 1
- BYTE2: DEFS 1
- BYTE3: DEFS 1
- ;
- WORD1: DEFS 2
- ;
- DEFS 100
- STACK:
- ;
- END
-