File KITTST.12

Directory of image this file is from
This file as a plain text file

; MICROPROCESSOR-KIT TESTER PROGRAMM
; **********************************
;
;
;DEFINITIONEN
;
START	EQU	1C00H
;
ASHLT	EQU	2H
BSHLT	EQU	1H
CSHLT	EQU	4H
LLAMP	EQU	2H
RLAMP	EQU	1H
;
;
SHLTA	EQU	2H
SHLTB	EQU	1H
SHLTC	EQU	4H
LAMPL	EQU	2H
LAMPR	EQU	1H
NEWIO	EQU	8H
;
;
RSBIT	EQU	1H	;FUER NEWIO
RUNLM	EQU	2H	;"    "
GO	EQU	4H	;"    "
NOGO	EQU	8H	;"    "
;
;
LOADR	EQU	1H	;FUER C-SCHALTER
EXAM	EQU	2H	;"       "
DEPOS	EQU	4
RUN	EQU	8H	;"       "
BREAK	EQU	10H	;"       "
SSTEP	EQU	10H	;"       "
TAKT	EQU	10H	;"       "
;
;
EXPT0	EQU	0E0H
EXPT1	EQU	0C0H
EXPT2	EQU	0A0H
EXPT3	EQU	 80H
EXPT4	EQU	 60H
EXPT5	EQU	 40H
EXPT6	EQU	 20H
;
;
RAMBT	EQU	400H
TERMT	EQU	13FFH
RAMTP	EQU	4FFH
;
TRMBT	EQU	400H+START
TRMTP	EQU	4FFH+START
CBILD	EQU	TRMTP
;
FRED	EQU	93H
;
;
	ORG START
;
	LXI SP,TRMTP-1
	CALL LOADC
	DB 0
;

;RAMTE
;
;RAM-PRUEFPROGRAMM. DIESER TEIL LAEUFT IM
;TESTER. ER LAEDT RAMPR IN DEN PRUEFLING,
;LAESST ES LAUFEN UND WARTET. DIE ANTWORT GLEICH
;FRED +3MAL (0100H-RAMND) KOMMT IN DEN LLAMPE
;ZURUECK. FRED IST BELIEBIG Z.B 93H
;
;
;
RAMTE:	CALL BOOTS	;LADE RAMPR
	DW RAMPR
	DW RAMND
	DW RAMBT
	CALL SETC
	DB RUN
;
	CALL WARTE
	DB 40H		;EINSTELLEN!
;
	IN LAMPL
	CPI FRED+3*(START+100-RAMEND)
	JNZ ERROR
;
;ROMTE
;
;ROM-PRUEFPROGRAMM. DIESER TEIL LAUFT IM
;TESTER. ER GIBT DEM PRUEFLING EINE
;ADRESSE UND ERWARTET DEN ROM-INHALT.
;KEIN HANDSHAKE: DER  PRUEFLING MUSS
;INNERHALB EINER GEWISSEN ZEIT ANTWORTEN
;PRUEFUNG VON OBEN NACH UNTEN
;
;
;
ROMTE:	CALL BOOTS	;LADE PROGR. ROMPR
	DW ROMPR
	DW ROMND
	DW RAMBT
	CALL SETC
	DB RUN
	CALL WARTE
	DB 5H		;EINSTELLEN
	LXI D,3FFH	;HOCHSTE ROM-ADR
	LXI H,TERMT	;LETZTE ROM-ADR. IN MASTER-ROM
ROMLP:	MOV A,D
	OUT SHLTA	;HIGH ADR
	MOV A,E
	OUT SHLTB	;LOW ADR
	MVI B,0BH	;KLEINE WARTESCHLEIFE
RMDEL:	DCR B
	JNZ RMDEL
	IN LAMPR
	CMP M
	JNZ ERROR
	DCX H
	DCX D
;
	MOV A,D
	ANA E		;ENDE WENN BEIDE GLEICH FF
	JP ROMLP
;
;
;
;IOTE
;
;I/O PRUEFPROGRAMM. DIESER TEIL LAUFT IM TESTER
;VERSCHIEDENE BITMUSTER WERDEN BENUTZT. DAFUER
;WERDEN C,D,UND E ALS ZAEHLER BETRIEBEN. C NACH
;UNTEN,E NACH OBEN UND D NACH OBEN IN SCHRITTEN
;VON 3. IM PRUEFLING LAEFT DAS PROGRAMM IOPR
;
;
;
IOTE:	CALL BOOTS	;LADE PROG. IOPR
	DW IOPR
	DW IOEND
	DW RAMBT
;
	CALL SETC
	DB RUN
	CALL WARTE
	DB 5H
;
	XRA A		;LOESCHE C,D,E
	MOV C,A
	MOV D,A
	MOV E,A
IOLOP:	CALL IOSUB
	DCR C
	CALL IOSUB
	INR D
	INR D
	INR D
	CALL IOSUB
	INR E
	JNZ IOLOP
;
;
;

; ;SYST 0 ; ;EXPERIMENT 0 PRUEFT ADD UND SUB ; ; SYST0: CALL LOADC DB EXPT0 CALL RESET MVI A,0C3H OUT SHLTA MVI A,017H OUT SHLTB CALL SETC DB 18H ;A+B=C3+17=0DA CALL CHKRL DB 0DAH ; CALL SETC DB 7H ;A-B-1=-DB=25 CALL CHKRL DB 25H ; CALL CHKLL DB 1H ;CARRY=1 ; ; ; ;SYST1 ; ;EXPERIMENT 1 PRUEFT A,A+1,A XOR B ; ; SYST1: CALL LOADC DB EXPT1 CALL RESET MVI A,0FH OUT SHLTA MVI A,0AAH OUT SHLTB CALL CHKRL DB 0FH ;FUNKTION A ; CALL SETC DB 5H CALL CHKRL DB 10H ;FUNKTIONA+1 ; CALL SETC DB 0BH CALL CHKRL DB 5AH ;FUNKTIONA X0R B ; ; ; ;SYST2 ; ;EXPERIMENT 2 PRUEFT SP1 UND ADD ; ; ; SYST2: CALL LOADC DB EXPT2 CALL RESET MVI A,2FH OUT SHLTB CALL SETC DB 1H CALL TAKTC DB TAKT CALL CHKRL DB 1H ;SP1 ; CALL SETC DB 7H CALL TAKTC DB TAKT CALL CHKRL DB 30H ;ADD:2F+1=30 ; ; ; ;SYST3 ; ;EXPERIMENT 3 LAEDT 47 IN ADR 4 INPUT 32 ;IN ACC ADDIERT BEIDE ZUSAMMEN ; ; ; SYST3: CALL LOADC DB EXPT3 CALL RESET MVI A,4H OUT SHLTA MVI A,47H OUT SHLTB CALL TAKTC DB DEPOS ;LADE 47 IN ADR 4 ; MVI A,32H OUT SHLTB MVI A,0D0H CALL TAKTC DB TAKT ;INPUT 32 IN ACC ; MVI A,74H ;OP-CODE 7,ADR 4 OUT SHLTA CALL TAKTC DB TAKT ;ADD <4>=47 ; CALL CHKRL DB 79H ; ; ; ;SYST4 ; ;EXPERIMENT 4 LAEDT LDA 5, CMA,HLT IN ADR ;5,6,7.LDA 5 LAEDT SICH SELBST =35 IN DEN ;ACC. ERGEBNIS = 0CA ALLES IN SINGLE STEP ; ; ; SYST4: CALL LOADC DB EXPT4 CALL RESET MVI A,5H ;ANFANGSADRESSE 5 OUT SHLTA CALL TAKTC DB LOADR ;LOAD ADR 5 ; MVI A,35H OUT SHLTB CALL TAKTC DB DEPOS ;LADE 35 IN ADR 5 ; MVI A,20H OUT SHLTB CALL TAKTC DB DEPOS ;LADE 20 IN ADR 6 ; MVI A,0F0H OUT SHLTB CALL TAKTC DB DEPOS ;LADE F0 IN ADR 7 ; CALL SETC DB SSTEP ;SINGLE STEP CALL TAKTC DB LOADR ;ADR 5 ZIRUECK CALL TAKTC DB RUN CALL CHKRL DB 35H ;LDA 5 CALL CHKLL DB 62H ;PC = 6,RUN = 1, CARRY=0 ; CALL TAKTC DB RUN CALL CHKRL DB 0CAH ;CMA CALL CHKLL DB 72H ;PC =7,RUN=1,CARRY=0 ; CALL TAKTC DB RUN CALL CHKRL DB 0CAH ;HLT CALL CHKLL DB 70H ;PC=7(NOCH),RUN=0,CARRY=0
; ; ; ;SYST5 ; ;EXPERIMENT 5 LIEST ETWAS VOM A-SCHALTER ;UND SPRINGT ZURUECK. TESTER BIETET PRUEFLING 52H AN ;UND ERWARTET 52H IN R-LAMPEN IN <52H> =E0H IN ;L-LAMPEN; ; ; SYST5: CALL LOADC DB EXPT5 CALL RESET MVI A,50H ;ANFANGS.ADR. DES PROGS. OUT SHLTA CALL TAKTC DB LOADR ;LOAD ADR 50H ; MVI A,87H OUT SHLTA CALL TAKTC DB DEPOS ;LADE 87=LOAD A3 MVI A,0FFH ;MEMORY MAPPED IO ADDR. OUT SHLTA ;FUER A-SCHALTER CALL TAKTC DB DEPOS ;LADE FF = INPUT ; MVI A,0E0H OUT SHLTA CALL TAKTC DB DEPOS ;LADE E0=JUMP ; MVI A,50H OUT SHLTA CALL TAKTC DB DEPOS ;LADE 50=SCHLEIFEN ADR. ; CALL SETC DB RUN MVI A,3BH ;DISPLAY <<SR>> UND <A3> OUT SHLTB ; MVI A,52H ;INPUT DATEN OUT SHLTA ; CALL WARTE DB 4H ;ZUSAETZLICHE VERZOEG. ; CALL CHKRL DB 52H ;INPUT-DATEN ZURUECK CALL CHKLL DB 0E0H ;<<SR>> - INPUT ADR 52 ; ; ; ; ;ALLOK UND ERROR ; ;ENDE DES HAUPTPROGRAMMES. ENTWEDER LEUCHTET ;DIE GO ODER DIE NOGO-LAMPE. DER TESTER HAELT UND W ;WARTET AUF RESET. RUN LAMPE GELOESCHT ; ; ; ALLOK: CALL LOADC DB GO HLT ; ERROR: CALL LOADC DB NOGO HLT ; ; ; ;UNTERPROGRAMME ; ; ; ;RESET ; ;FIBT DEM PRUEFLING EIN RESET. LOESCHT ;AUCH GO UND NOGO LAMPEN. SETZT RUN LAMPE ; ; ; ;ANRUF: CALL RESET ; RESET: PUSH PSW MVI A,RSBIT OUT NEWIO ;SETZE RESET MVI A,RUNLM OUT NEWIO ;LOESCHE RESET ;UND SETZE RUN-LAMPE POP PSW CALL WARTE DB 5 RET ; ; ; ;CHKLL UND CHKRL ; ;LIEST R-LAMPEN BZW L-LAMPEN UND SPRINGT ZU ;ERROR WENN SIE NICHT GLEICH DEM ARGUMENT SIND ; ; ;ANRUF: CALL CHKLL ; DB BITMUSTER ; CHKLL: XTHL PUSH PSW CALL WARTE DB 1H IN LAMPL CMP M JNZ ERROR INX H XTHL POP PSW RET ; ; ; CHKRL: XTHL PUSH PSW CALL WARTE DB 1H IN LAMPR CMP M JNZ ERROR INX H XTHL POP PSW RET ; ; ; ;WARTE ; ;WARTET N MILLISECS. ; ; ;ANRUF: CALL WARTE ; DB N ; WARTE: PUSH PSW PUSH B XTHL MOV C,M ;ZEIT N IN C INX H ; WTLP2: MVI B,40H WTLP1: DCR B JNZ WTLP1 DCR C JNZ WTLP2 ; XTHL POP B POP PSW RET ; ; ; ;SETC ; ;SETZT BITS IM C-SCHALTER OHNE DIE UEBRIGEN ;BITS ZU VERAENDERN ; ; ;ANRUF: CALL SETC ; DB BITMUSTER ; SETC: PUSH PSW XTHL LDA CBILD ORA M INX H STA CBILD OUT SHLTC XTHL POP PSW RET ; ; ; ;CLRC ; ;LOESCHT BITS IM C-SCHALTER IHNE DIE UEBRIGEN ;BITS ZU VERAENDERN ; ; ;ANRUF: CALL CLRC ; DB BITMUSTER ; CLRC: PUSH PSW XTHL LDA CBILD CMA ORA M CMA INX H STA CBILD OUT SHLTC XTHL POP PSW RET ; ; ; ;LOADC ; ;LAEDT EIN BYTE IN DEN C-SCHALTER ;(JAM-TRANSFER) ; ; ;ANRUF: CALL LOADC ; DB BITMUSTER ; LOADC: PUSH PSW XTHL MOV A,M INX H STA CBILD OUT SHLTC XTHL POP PSW RET ; ; ; ;TAKTC ; ;TAKTET BITS IN C-SCHALTER OHNE DIE ;RESTLICHEN BITS ZU BEEINFLUSSEN ;TAKTET NULL-EINS-NULL ; ; ;ANRUF: CALL TAKC ; DB BITMUSTER ; TAKTC: PUSH PSW XTHL LDA CBILD ORA M OUT SHLTC ; CALL WARTE DB 5H ; XRA M OUT SHLTC INX H STA CBILD XTHL POP PSW RET ; ; ;
;RAMPR ; ;PRUEFT RAM MIT EINSEN, NULLEN UND ADRESSEN ;(3 TEILE). LAUFT IM PRUEFLING. BEI JEDER ;BESTANDENEN PRUEFUNG WIRD C=FRED INKREMENTIERT ;C WIRD AM ENDE ZUR BESTAETIGUNG ZUM TESTER ;ZURUECKGEGEBEN. SUBROUTINE RAMSB MUSS UN- ;MITTELBAR DANACHFOLGEN, FUER BOOTS ; ; OFSET EQU RAMBT-RAMPR OFST0 EQU RAMBT-RAMND ; RAMPR: MVI C,FRED MVI A,0FFH ;LAUTER EINSEN CALL RAMSB+OFSET XRA A ;LAUTER NULLEN CALL RAMSB+OFSET ; LXI H,RAMND+OFST0 ;<L> _ <L> RMLP1: MOV M,L ;FUER ALLE ADRESSEN INR L ;AUSSER DEM PROGRAMM BEREICH JNZ RMLP1+OFSET ; LXI H,RAMND+OFST0 ;ZURUECKLESEN UND BESTAETIGEN RMOK1: MOV A,L CMP M JNZ ERR1+OFSET INR C ERR1: INR L JNZ RMOK1+OFSET MOV A,C OUT LLAMP HLT ; ; ;RAMSB ; ;LAEUFT IM PRUEFLING. MUSS UNMITTELBAR NACH ;RAMPR KOMMEN DAMIT ALLES ZUSAMMEN GELADEN ;WERDEN KANN. ;ES LAEDT DEN INHALT VON ACC UEBERALL UND BESTAETIGT ;DAS ERGEBNIS. C WIRD BEI JEDER BESTAETIGUNG ;INKREMENTIERT ; ; RAMSB: LXI H,RAMND+OFST0 RMLP2: MOV M,A ;LADE FF BZW 00 INR L JNZ RMLP2+OFSET ; RMOK2: LXI H,RAMND+OFST0 CMP M JNZ ERR2+OFSET INR C ERR2: INR L JNZ RMOK2+OFSET RET RAMND: HLT ; ; ;ROMPR ; ;ROM PRUEFPROGRAMM. LAEUFT I PRUEFLING ;ES GIBT DEM TESTER JEDES WORT NACH ;EMPFANG DER ADRESSE WEITER. DAFUER ;LAEUFT ROMTE IM TESTER ; ; OFST1 EQU RAMBT-ROMPR ; ROMPR: IN ASHLT MOV A,H IN BSHLT MOV L,A MOV A,M ;FETCH OUT RLAMP JMP ROMPR+OFST1 ROMND: HLT ;FUER BOOTS ; ; ;IOPR ; ;I/O PRUEFPROGRAMM. LAEUFT IM PRUEFLING ;ES LIEST DIE A,B UND C-SCHALTER IND ;LIEFERT A XOR C AN DIE L-LAMPEN UND ;B XOR C AN DIE R-LAMPEN ; ; OFST2 EQU RAMBT-IOPR ; IOPR: IN CSHLT MOV C,A IN ASHLT XRA C OUT LLAMP IN BSHLT XRA C OUT RLAMP JMP IOPR+OFST2 IOEND: HLT ; ; ; ;IOSUB ; ;NUR FUER IOTE. ES GIBT DIE INHALTE ;VON D,E,UND C AUF DEN A,B UND C-SCHALTER. ;ES PRUEFT DIE GLEICHUNGEN DIE IN IOPR ;BERECHNET WERDEN ; ; ;ANRUF: CALL IOSUB ; IOSUB: MOV A,D OUT SHLTA MOV A,E OUT SHLTB MOV A,C OUT SHLTC MVI A,0BH ;KLEINE WARTESCHL. IODEL: DCR A JNZ IODEL ; IN LAMPL XRA C CMP D JNZ ERROR ;PRUEFE A XOR C IN LAMPR XRA C CMP E JNZ ERROR ;PRUEFE B XOR C RET ; ; ; ;BOOTS ; ;LAEDT EIN PROGRAMM VOM TESTER IN DAS ;PRUEFLING - RAM. MAX. LAENGE FF BYTES. ;LAEUFT IM TESTER ; ; ;ANRUF: CALL BOOTS ; DW QUELLE-ANFAGSADRESSE ; DW QUELLE-ENDE-ADRESSE ; DW ZIEL-ANFANGS-ADRESSE ; BOOTS: XTHL MOV E,M INX H MOV D,M ;ARG 1 IN DE INX H MOV A,M INX H INX H ;OBERES ENDE WEGWERFEN SUB E INR A ;LAENGE IN A MOV C,M ;ZIEL-ADR IN C INX H INX H ;OBERES ENDE WEGWERFEN XTHL MOV L,A ;LAENGE IN L CALL LOADC DB EXPT6 ;EXPERIMENT6 ; CALL RESET MOV A,C CALL TAKTC DB LOADR ;LOAD ADR. ; BOTLP: LDAX D ;BYTE EINHOLEN INX D OUT SHLTA ;BYTE AUSGEBEN CALL TAKTC DB DEPOS ;DEPOSIT DCR L JNZ BOTLP RET ; ; ; END



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search