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 ;CAT 2 2 CMA NOP NOP STC CHKSKP ;INCREMENT ERGEBNIS 1 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 RST 0 ;SUBROUTINE OPCODE. VERKNUEPFT A UND C NACH BEFEHL IN B: BITS 3-0 OPCODE: CHKSKP ;A=0 17 0 XRA A NOP NOP CHKSKP ;A=1 17 1 XRA A INR A NOP CHKSKP ;A=A NICHT 17 2 CMA NOP NOP CHKSKP ;A=C 17 3 MOV A,C NOP NOP CHKSKP ;A=C NICHT 17 4 MOV A,C CMA NOP CHKSKP ;A=A+1 17 5 ADI 1 ;NICHT INR A WEGEN CARRY NOP CHKSKP ;A=A-1 17 6 SUI 1 ;NICHT DCR A WEGEN CARRY NOP CHKSKP ;A=A+C 17 7 ADD C NOP NOP CHKSKP ;A=A-C 17 10 SUB C NOP ;EVENTU. CMC NOP CHKSKP ;A=A AND B 17 11 ANA C NOP NOP CHKSKP ;A=A OR,B 17 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 RST 0"2 JMP START 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 RST 0"2 JMP START 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 RST 0"2 JMP START ;DEPOSIT 4 DW BASIC2 JMP DPOST2 ;DEPOSIT NUR WENN CALL SFLANK RST 0"2 JMP START 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 RST 0"2 JMP START ;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 RST 0"2 JMP START 6 DW START INR L ;INC P.C RST 0 DPOST2: MVI A 345 ;IN BSHALT MOV M,A JMP DSPLY2 /MACRO CHSKSP 1 CALL SRCKSK MACEND /MACRO CHKJMP 1 CALL SRCKJP MACEND /MACRO CHKCHN 1 CALL SRCKCN MACEND /MACRO FLANKE 1 CALL SFLANK /MACRO"RST 0"2 JMP START MACEND /MACRO"??? ? ?"3 #1 #2,#3 MACEND /MACRO"??? ?? ??"3 #1 #2,#3 MACEND /MACRO"??? ?? ?"3 #1 #2,#3 MACEND /MACRO"??? ? ??"3 #1 #2,#3 MACEND / ;ITT MIKROPROZESSOR-EXPERIMENT-KIT /;ITT MIKROPROZESSOR-EXPERIMENT-KIT / / ROMADR=0 /ROMADR=0 RAMPAG=1 ;SPATER 4 /RAMPAG=1 ;SPATER 4 / STAKAD=RAMPAG^400+400 /STAKAD=RAMPAG^400+400 CHKSKP=317 /CHKSKP=317 CHKJMP=327 /CHKJMP=327 CHKCHN=337 /CHKCHN=337 FLANKE=347 /FLANKE=347 CHKEND=0 /CHKEND=0 / / / ;HAUPTPROGRAMM /;HAUPTPROGRAMM / / *ROMADR /*ROMADR / START: NOP ;TO BE REMOVED /START: NOP ;TO BE REMOVED LXI SP STAKAD / LXI SP STAKAD JMP HAUPT2 / JMP HAUPT2 / / / *ROMADR+10 /*ROMADR+10 / / ;SUBROUTINE SRCKSK /;SUBROUTINE SRCKSK ;***************** /;***************** / ;ANRUF: CALL SRCKSK /;ANRUF: CALL SRCKSK ; MASKE /; MASKE ; VERGLEICHSZAHL /; VERGLEICHSZAHL ; XXX ;BEFEHLE:WERDEN AUSGEFUEHRT FALLS /; XXX ;BEFEHLE:WERDEN AUSGEFUEHRT FALLS ; XXX ;(B) AND MASKE = VERGLEICHSZAHL /; XXX ;(B) AND MASKE = VERGLEICHSZAHL ; XXX ; /; XXX ; / / / SRCKSK: XTHL /SRCKSK: XTHL PUSH PSW / PUSH PSW MOV A,M / MOV A M INX H / INX H ANA B / ANA B JMP CKSK2 / JMP CKSK2 / / *ROMADR+20 /*ROMADR+20 / / / ;SUBROUTINE SRCKJP /;SUBROUTINE SRCKJP ;***************** /