/ITT MIKROPROZESSOR-EXPERIMENT-KIT ROMADR=0 RAMPAG=1 /SPATER 4 STAKAD=RAMPAG^400+400 CHKSKP=317 CHKJMP=327 CHKCHN=337 FLANKE=347 CHKEND=0 /HAUPTPROGRAMM *ROMADR START, NOP /TO BE REMOVED LXI SP STAKAD JMP HAUPT2 *ROMADR+10 /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 *ROMADR+20 /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 *ROMADR+30 /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 FLANKE /***************** /PRUEFUNG AUF FLANKE: MOMENTANER BEFEHL IN B / LETZTER BEFEHL IN D /ANRUF: FLANKE / MASKE / ADRESSE WENN KEINE POS. FLANKE IN B UND D / HIGH ADRESSE *ROMADR+40 SFLANK, XTHL PUSH PSW MOV A D CMA ANA B ANA M INX H JZ CNFUND /FLANKE NICHT GEFUNDEN JMP CKJPND /FLANKE GEFUNDEN /*ROMADR+100 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 0 /IN CSHALT,LESE BEFEHL,VERZW. ENTSP. BITS 7-5 MOV D B /FUER SUB. FLANKE MOV B A /BEFEHL IN B CHKCHN 340 /SCHALTERSTELLUNG 1 40 DW CODALU 340 / " 2 100 DW AKKUM 340 / " 3 140 DW AKKSPI 340 / " 4 200 DW BASIC 340 / " 5 240 DW HYPOTH 340 / " 6 300 DW SY8080 340 / " 7 340 DW ERWEIT 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, MVI A 240 /IN ASHALT CHKSKP /ASHALT OFF 20 0 XRA A NOP NOP CHKSKP /ASHALT KOMPLEMTIERT 4 4 CMA NOP NOP MOV C A MVI A 123 /IN BSHALT CHKSKP /BSHALT OFF 10 0 XRA A NOP NOP CHKSKP /BSHALT KOMPLEMTIERT 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 FLANKE 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 CHKJMP 4 4 DW DEPOST CHKJMP 2 2 DW EXAMIN FLANKE 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 CHKJMP /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 CHKJMP /EXAMINE? 2 2 DW EXAM2 /JA FLANKE /DEPOSIT 4 DW BASIC2 JMP DPOST2 /DEPOSIT NUR WENN FLANKE IN BIT 2 GEFUNDEN BASIC2, MOV A E CHKJMP /00,10 10 0 DW DSPLY2 /WARTE AUF START CHKJMP /01 30 10 DW NORMAL /RECHNER LAUEFT NORMAL FLANKE /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 FLANKE 6 DW START INR L /INC P.C RST 0 DPOST2, MVI A 345 /IN BSHALT MOV M A JMP DSPLY2