File EXP.M6

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


;ITT MIKROPROZESSOR-EXPERIMENT-KIT


RAMPAG	=	#12
STAKAD	=	#1300
CHKEND	=	#0
RLAMPE	=	#0C
LLAMPE	=	#0D
ASHALT	=	#14
BSHALT	=	#15
CSHALT	=	#16



;HAUPTPROGRAMM


.	=	#1000

START:	MVI #9B		;TO BE REMOVED
	OUT #13
	MVI #80
	OUT #0B
	LXI SP,STAKAD
	JMP HAUPT2





;SUBROUTINE SRCKSK
;*****************

;ANRUF:	CALL SRCKSK
;	MASKE
;	VERGLEICHSZAHL
;	XXX		;BEFEHLE:WERDEN AUSGEFUEHRT FALLS
;	XXX		;(B) AND MASKE = VERGLEICHSZAHL
;	XXX		;



SRCKSK:	XTHL
	PUSH PSW
	MOV A,M
	INX H
	ANA B
	JMP CKSK2





;SUBROUTINE SRCKJP
;*****************

;ANRUF:	CALL SRCKJP
;	MASKE
;	VERGLEICHSZAHL
;	SPRUNGADR L	;SPRUNG ZU DIESER ADRESSE FALLS
;	SPRUNGADR H	;(B) AND MASKE = VERGLEICHSZAHL



SRCKJP:	XTHL
	PUSH PSW
	MOV A,M
	INX H
	ANA B
	JMP CKJP2





;SUBROUTINE SRCKCN
;*****************

;ANRUF:	CALL SRCKCN
;	MASKE
;	VERGLEICHSZAHL1	;1.ELEMENT DER KETTE
;	SPRUNGADR L	;SPRUNGADRESS: SPRUNG BEI UEBEREINSTIMMUNG
;	SPRUNGADR H	;2. ELEMENT DER KETTE
;	VERGLEICHSZAHL2
;	XXX
;	XXX
;	XXX
;	XXX
;	XXX
; ..........
;	0		;MASKE 0= ENDBEDINGUNG




SRCKCN:	XTHL
	PUSH PSW
CHCNLP:	MOV A,M
	INX H
	JMP CKCN2



;SUBROUTINE CALL SFLANK
;*****************

;PRUEFUNG AUF FLANKE: MOMENTANER BEFEHL IN B
;                     LETZTER BEFEHL IN D


;ANRUF: CALL SFLANK
;       MASKE
;       ADRESSE WENN KEINE POS. CALL SFLANK IN B UND D
;       HIGH ADRESSE



SFLANK: XTHL
        PUSH PSW
        MOV A,D
        CMA
        ANA B
        ANA M
        INX H
        JZ CNFUND       ;CALL SFLANK NICHT GEFUNDEN
        JMP CKJPND      ;CALL SFLANK GEFUNDEN




CKSK2:	CMP M
	INX H
	JZ CKSEND
	INX H
CKJPND:	INX H
	INX H
CKSEND:	POP PSW
	XTHL
	RET




CKJP2:	CMP M
	INX H
	JZ CNFUND
	JMP CKJPND
CKCN2:	CPI 0
	JZ CNEND
	ANA B
	CMP M
	INX H
	JZ CNFUND
	INX H
	INX H
	JMP CHCNLP





CNFUND:	MOV A,M
	INX H
	MOV H,M
	MOV L,A
CNEND:	POP PSW
	XTHL
	RET





HAUPT2:	IN CSHALT	;LESE BEFEHL:VERZW. ENTSP. BITS 7-5
	MOV D,B		;FUER SUB. CALL SFLANK
	MOV B,A		;BEFEHL IN B
	CALL SRCKCN

	DB #E0		;SCHALTERSTELLUNG 1
	DB #C0
	DW CODALU

	DB #E0		;	"	  2
	DB #A0
	DW AKKUM

	DB #E0		;	"	  3
	DB #80
	DW AKKSPI

	DB #E0		;	"	  4
	DB #60
	DW BASIC

	DB #E0		;	"	  5
	DB #40
	DW HYPOTH

	DB #E0		;	"	  6
	DB #20
	DW SY8080

	DB #E0		;	"	  7
	DB #0
	DW ERWEIT

	DB CHKEND

	;SYSTEM 0 MUSS UNMITTELBAR HIER NACHFOLGEN
	;SCHALTERSTELLUNG 0 NICHT EXPLIZIT GEPRUEFT



;SYSTEM 0****************************************

;ADDIERER  -  SUBTRAHIERER
;VERKNUEPFT ASHALT UND BSHALT NACH BEFEHL IN B BITS 4-0



ADDSUB:	IN ASHALT

	CHKSKP		;ASHALT OFF
	DB #10
	DB #0
	XRA A
	NOP
	NOP

	CHKSKP		;ASHALT KOMPLEMTIERT
	DB #4
	DB #4
	CMA
	NOP
	NOP

	MOV C,A
	IN BSHALT

	CHKSKP		;BSHALT OFF
	DB #8
	DB #0
	XRA A
	NOP
	NOP

	CHKSKP		;BSHALT KOMPLEMTIERT
	DB #2
	DB #2
	CMA
	NOP
	NOP

	STC

	CHKSKP		;INCREMENT ERGEBNIS
	DB #1
	DB #0
	CMC		;CARRY 0 WENN KEIN INCREMENT
	NOP		;ERFORDERLICH
	NOP

	ADC C
DISPLY:	STA 377		;OUT RLAMPE
	RAL
	ANI 1
	STA 376		;OUT LLAMPE
	RAR
	JMP START


;SUBROUTINE OPCODE. VERKNUEPFT A UND C NACH BEFEHL IN B: BITS 3-0 OPCODE: CHKSKP ;A=0 DB #17 DB #0 XRA A NOP NOP CHKSKP ;A=1 DB #17 DB #1 XRA A INR A NOP CHKSKP ;A=A NICHT DB #17 DB #2 CMA NOP NOP CHKSKP ;A=C DB #17 DB #3 MOV A,C NOP NOP CHKSKP ;A=C NICHT DB #17 DB #4 MOV A,C CMA NOP CHKSKP ;A=A+1 DB #17 DB #5 ADI 1 ;NICHT INR A WEGEN CARRY NOP CHKSKP ;A=A-1 DB #17 DB #6 SUI 1 ;NICHT DCR A WEGEN CARRY NOP CHKSKP ;A=A+C DB #17 DB #7 ADD C NOP NOP CHKSKP ;A=A-C DB #17 DB #10 SUB C NOP ;EVENTU. CMC NOP CHKSKP ;A=A AND B DB #17 DB #11 ANA C NOP NOP CHKSKP ;A=A OR,B DB #17 DB #12 ORA C NOP NOP CHKSKP ;A=A XOR B 17 13 XRA C NOP NOP CHKSKP ;A= -1 17 14 XRA A CMA NOP CHKSKP ;INPUT A=BSHALT 17 15 MVI A 253 ;IN BSHALT NOP RET
*420 ;TEMPORARY ;SYSTEM 1************************************************* ;ALU MIT CODIERUNG CODALU: MVI A 123 ;IN BSHALT MOV C,A MVI A 240 ;IN ASHALT STC CMC CALL OPCODE JMP DISPLY ;SYSTEM 2*************************************** ;AKKUMULATOR AKKUM: MOV A,E ;AKKU IN REG E:(ACC) WIRD ANGEZEIGT CALL SFLANK 20 DW DISPLY ;WARTE AUF TAKT MVI A 123 ;IN BSHALT MOV C,A MOV A,E CALL OPCODE MOV E,A JMP DISPLY ;SYSTEM 3********************************************** ;AKKUMULATOR MIT SPEICHER AKKSPI: MOV A,E ;ACC IN REG E PUSH PSW MVI A 123 ;IN ASHALT: LADE OPCODE BITS 7-4 ;UND ADRESSE BITS 3-0 PUSH PSW ANI 17 ;SPALTE ADRESS AB MOV L,A POP PSW ;BEFEHL KOMMT ZURUECK RAR RAR RAR RAR ANI 17 ;SPALTE OP-CODE AB MOV H,A ;ZWISCHENSPEICHER FUER OP-CODE POP PSW CALL SRCKJP 4 4 DW DEPOST CALL SRCKJP 2 2 DW EXAMIN CALL SFLANK 20 DW DISPLY ;WARTE AUF TAKT PUSH B MOV B,H ;OP-CODE INS B-REG MVI H RAMPAG ;H:L ENTHAELT JETZT ADRESS MOV C,M CALL OPCODE ;HOLE OPERANDEN MOV E,A ;SYSTEM-AKKU ZURUECK CALL SRCKJP ;OP-CODE NOCH IN B: STORE? 17 16 DW STORE POP B JMP DISPLY DEPOST: MVI A 240 ;IN BSHALT STORND: MVI H RAMPAG MOV M,A JMP DISPLY EXAMIN: MVI H RAMPAG MOV A,M JMP DISPLY STORE: POP B JMP STORND ;SYSTEM 4****************************************** ;BASIC COMPUTER ;REGISTER ZUORDNUNG ;FLAGS ;DST;ARBEITSREGISTER A ;BEFEHLSREGISTER B ;SRC C ;LETZTER BEFEHL D ;AKKU E ;PC-HIGH H ;PC-LOW L BASIC: PUSH PSW ;RETTE CARRY MOV A,L ;MASK UEBERFLUESSIGE BITS IM PC WEG. RUN-LAMPE ANI 17 MOV L,A POP PSW PUSH H ;SPEICHERE PC MOV A,E MVI H RAMPAG PUSH PSW ;CARRY WIRD GESPEICHERT MVI A,3 ;IN ASHALT: HOLE MEMORY ADDRESS ANI 17 CHKSKP ;LOAD ADDRESS? 1 1 MOV L,A ;JA NOP NOP CALL SRCKJP ;EXAMINE? 2 2 DW EXAM2 ;JA CALL SFLANK ;DEPOSIT 4 DW BASIC2 JMP DPOST2 ;DEPOSIT NUR WENN CALL SFLANK IN BIT 2 GEFUNDEN BASIC2: MOV A,E CALL SRCKJP ;00:10 10 0 DW DSPLY2 ;WARTE AUF START CALL SRCKJP ;01 30 10 DW NORMAL ;RECHNER LAUEFT NORMAL CALL SFLANK ;RECHNER LAUEFT IN SINGLE STEP MODE 10 DW DSPLY2 ;WARTE AUF TAKT BIT 3 NORMAL: MOV A,M ;FETCH ANI 360 CPI 360 ;HALT BEFEHL MOV A,E JZ DSPLY2 MOV A,M ;FETCH PUSH PSW ANI 17 ;ISOLIERE ADRESSTEIL DER INSTRUKTION MOV L,A POP PSW ;GANZE INSTRUKTION ZURUECK RAR ;ISOLIERE OPCODE RAR RAR RAR ANI 17 MOV H,A ;ZWISCHENSPEICHER FUER OP-CODE POP PSW ;CARRY KOMMT ZURUECK PUSH B ;WEGEN OP-CODE MOV B,H ;OP-CODE INS BEFEHLSREGISTER MVI H RAMPAG MOV C,M ;OPERANDEN WERDEN GEHOLT CALL OPCODE MOV E,A ;NEUER WERT DES AKKU CHKSKP ;STORE 17 16 MVI H RAMPAG ;JA MOV M,A ;ADRESSTEIL DER INSTRUKTION NOCH IN L POP B POP H ;BRINGE PC ZURUECK PUSH PSW MOV A,L ;INCREMENT PC INR A ANI 17 ORI 100 ;SETZE RUN LAMPE MOV L,A MOV A,E JMP DSPLY2 EXAM2: DCR L MOV A,M INR L
DSPLY2: STA 377 ;OUT RLAMPE MOV A,L RAL RAL RAL MOV H,A POP PSW MOV A,H RAL STA 376 ;OUT LLAMPE RAR CALL SFLANK 6 DW START INR L ;INC P.C JMP START DPOST2: MVI A 345 ;IN BSHALT MOV M,A JMP DSPLY2



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