; ; TESTSYSTEM MCS80-ODT ; ODT: LD (IYSAV),IY ;ADR MARKENTABELLE RETTEN LD (IY-06H),003H ;REGISTER PROTOKOLL AB ZEILE 3 LD A,CLEAR ;BILDSCHIRM LOESCHEN CALL BSN ; MMM: LD HL,M9993 ;KOPF AUSGEBEN CALL TXS ; LD DE,0000DH ;POSITION GLOBALMARKE CALL BKS ; LD H,(IY-01H) ;AKTUELLE ADREESE NACH HL LD L,(IY-02H) ; PUSH HL ;RETTEN CALL M3B28 ;ADRESSE GLOBALMARKE NACH BC CALL M3777 ;MARKE AUSSCHREIBEN LD H,B ; LD L,C ; CALL BKL ; CALL HDS ;ADRESSE GLOBALMARKE SCHREIBEN POP HL ;AKTUELLE ADRESSE PUSH HL ; POP IX ;NACH IX PUSH HL ; CALL M379D ;BERECHNEN BYTE/BEFEHL LD A,C ; AND 003H ; INC A ;KORREKTUR LD B,A ;BYTEANZAHL IN B POP IX ; LD E,02BH ;POSITION AKTUELLER MC CALL HDS ;AKTUELLE ADRESSE AUSGEBEN LD A,':' ;TRENNZEICHEN CALL BSS ; INC E ; O01: INC E ; LD A,(HL) ;MC ALS HEX-BYTE AUSGEBEN CALL HBS ; INC HL ; DJNZ O01 ;ZYKLUS FUER ALLE BYTE/BEFEHL LD D,(IY-06H) ;AKTUELLE PROTOKOLLZEILE NACH D LD E,02CH ;POSITON MNEMONIK CALL BKS ; CALL M381D ;ZEILE REASSEMBLIEREN CALL RWR ;REGISTER PROTOKOLLIEREN LD (IYSAV),SP ;STACKPOINTER PROTOKOLLIEREN LD HL,(IYSAV) ; LD (IYSAV),IY ; LD E,020H ; CALL HDS ; INC E ; LD H,(IY-01H) ;AKTUELLE ADRESSE NACH HL LD L,(IY-02H) ; LD (IY-0AH),L ;PARAMETER FUER L-KOMMANDO LD (IY-09H),H ;(ANZEIGE AB LETZTEN TESTSCHRITT) CALL HDS ;PC PROTOKOLLIEREN O03: LD D,(IY-6) ;AKTUELLE PROTOKOLLZEILE NACH D LD E,0 ;SPALTE 0 CALL BKS ; O04: CALL TST ;KOMMANDOEINGABE JR Z,O04 ;TASTENDRUCK ABWARTEN CALL BSS ;KOMMANDOKENNZEICHEN AUSGEBEN CP OFF ;TEST: OFF ? JP Z,RUT ;JA LD DE,5 ;POSITION KOMMANDOTEXT CALL BKS ; LD HL,TX5 ;LAUF CP 'L' ;TEST: LAUF ? JR Z,O05 ;JA LD HL,M9992 ;SCHRITT CP 'T' ;TEST: SCHRITT ? JR Z,O05 ;JA LD HL,TX4 ;SCHLEIFE CP 'N' ;TEST: SCHLEIFE ? JR Z,O05 ;JA CP 'X' ;TEST: REGISTERTAUSCH ? JR Z,OD4 ;JA CP 'R' ;TEST: REGISTERMODIFIKATION ? CALL Z,RMO ;JA JR O03 ;ZYKLUS, WENN NICHT GEFUNDEN OD4: LD D,(IY-06H) ;AKTUELLE PROTOKOLLZEILE NACH D LD E,2 ;POSITION AF-REGISTER CALL RRD ;REGISTER LESEN POP IY ;REGISTER BEREITSTELLEN POP IX ; POP HL ; POP DE ; POP BC ; POP AF ; EX AF,AF' ;AF <-> AF' EXX ;BC, DE U. HL <-> BC', DE' U. HL' PUSH AF ;REGISTER RETTEN PUSH BC ; PUSH DE ; PUSH HL ; PUSH IX ; PUSH IY ; CALL DLE ; CALL RWR ;REGISTER PROTOKOLLIEREN JR O03 ;KOMMANDOEINGABE O05: CALL TXS ;KOMMANDOTEXT AUSGEBEN LD DE,0002BH ;PC LESEN LD A,084H ; CALL ZLE ; PUSH HL ;UND RETTEN LD D,(IY-6) ;AKTUELLE PROTOKOLLZEILE NACH D LD E,2 ;POSITION AF CALL RRD ;REGISTER LESEN LD E,0 ;POSITION KOMMANDOARGUMENT CALL BSL ;KOMMANDO LESEN CP 'N' ;TEST: SCHLEIFE ? JR NZ,O06 ; CALL M3AD9 ;JA, ADRESSE DES NAECHSTEN BEFEHLS LD (IY-08H),L ;ALS HALTEPUNKT EINTRAGEN LD (IY-07H),H ; O06: POP IY ;REGISTER BEREITSTELLEN POP IX ; POP HL ; POP DE ; POP BC ; POP AF ; JR ANW ; ; INTERRUPTSERVICEROUTINE TESTSYSTEM-CTC ISR: EI ;INTERRUPT FREIGEBEN EX (SP),HL ;HL GEGEN AKTUELLE ADRESSE TAUSCHEN PUSH AF ;REGISTER RETTEN LD A,003H ;CTC RUECKSETZEN OUT (CDCTC),A ; PUSH DE ;WEITERE REGISTER RETTEN PUSH HL ; PUSH IY ; LD IY,(IYSAV) ;ADR MARKENTABELLE NACH IY LD (IY-02H),L ;AKTUELLE ADRESSE EINTRAGEN LD (IY-01H),H ; LD E,(IY-08H) ;HALTEPUNKTADRESSE NACH DE LD D,(IY-07H) ; LD A,D ;TEST: HALTEPUNKT RUECKGESETZT ? OR E ; JR Z,IS1 ;JA SBC HL,DE ;NEIN, TEST: HALTEPUNKT ERREICHT ? JR Z,IS1 ;JA CALL TST ;NEIN, TEST: TASTE OFF ? CP OFF ; IS1: POP IY ;REGISTER RUECKSPEICHERN POP HL ; POP DE ; JR Z,HAN ;ZUR PROTOKOLLIERUNG POP AF ;REGISTER RUECKSPEICHERN EX (SP),HL ;AKTUELLE ADRESSE <-> ALTES HL ANW: PUSH AF ;REGISTER RETTEN PUSH HL ; PUSH DE ; LD HL,ISR ;INTERRUPTVERBINDUNGSADRESSE LD (IVCTCF),HL ;EINTRAGEN LD HL,005C7H ;INITIALISIERUNGSDATEN CTC PUSH IY ;REGISTER RETTEN CALL DLE ; POP IY ; LD E,0 ;POSITION KOMMANDOARGUMENT CALL BSL ;KOMMANDO LESEN CP 'L' ;TEST: LAUF ? JR NZ,IS2 ;NEIN LD A,0C3H ;JA, RST 7 BELEGEN LD (00038H),A ;MIT SPRUNG INS TESTSYSTEM LD HL,ODL ; LD (00039H),HL ; LD HL,00303H ;CTC DATEN (NICHT INITIALISIEREN) IS2: LD A,L ;CTC STEUERWORT OUT (CDCTC),A ; LD A,H ;CTC ZEITKONSTANTE OUT (CDCTC),A ; POP DE ;REGISTER RUECKSPEICHERN POP HL ; POP AF ; RETI ;TESTLAUF ; ; HALTEPUNKANZEIGE VORBEREITEN HAN: POP AF ;REGISTER RUECKSPEICHERN POP HL ; PUSH AF ;REGISTER RETTEN (REIHENFOLGE) PUSH BC ; PUSH DE ; PUSH HL ; PUSH IX ; PUSH IY ; CALL DLE ; INC D ;NAECHSTE PROTOKOLLZEILE LD A,D ;TEST: BILDSCHIRMENDE ERREICHT ? CP 010H ; JR C,HA3 ;NEIN CALL BRO ;JA, BILDSCHIRM ROLLEN LD D,00FH ;AKTUELLE PROTOKOLLZEILE HA3: CALL BKS ; LD A,HOME ;ZEILE LOESCHEN CALL BSN ; LD (IY-06H),D ;ZEILENNUMMER RETTEN LD (IY-08H),0 ;HALTEPUNKT RUECKSETZEN LD (IY-07H),0 ; CALL BKS ; JP MMM ;SPRUNG ZUR ANZEIGE ; RUT: LD D,(IY-06H) ;TESTSYSTEM VERLASSEN LD E,2 ;POSITION AF-REGISTER CALL RRD ;REGISTER LESEN LD HL,M3023 ;RUECKKEHRADRESSE VON OCE PUSH HL ;AUF STACK RETI ;RUECKKEHR ; ; SOFTWAREHALTEPUNKT BEARBEITEN (REAKTION AUF RST 7) ODL: DI ;INTERRUPT SPERREN PUSH AF ;REGISTER RETTEN PUSH HL ; PUSH IY ; LD IY,(IYSAV) ;ADRESSE MARKENTABELLE NACH IY LD (IY-08H),000H ;HALTEPUNKT RUECKSETZEN LD (IY-07H),000H ; LD HL,ISR ;ADRESSE INTERRUPTSERVICEROUTINE LD (IVCTCF),HL ;DES TESTSYSTEMS EINTRAGEN LD A,087H ;CTC INITIALISIEREN OUT (CDCTC),A ; LD A,001H ; OUT (CDCTC),A ; POP IY ;REGISTER RUECKSPEICHERN POP HL ; POP AF ; EI ; RET ; ; ; REGISTER LESEN RRD: LD B,6 ;ANZAHL RD1: LD A,084H ;4 STELLIGE HEX-ZAHL LESEN CALL ZLE ; EX (SP),HL ;HEXAZAHL <-> RUECKKEHRADRESSE PUSH HL ;RUECKKEHRADRESSE RETTEN INC E ;POSITION NAECHSTES REGISTER DJNZ RD1 ;ZYKLUS RET ; ; ; REGISTER SCHREIBEN RWR: LD B,6 ;ZAEHLER LD E,01BH ;POSITION SP-REGISTER WR1: POP HL ;RUECKKEHRADRESSE NACH HL EX (SP),HL ;REGISTERWERT <-> RUECKKEHRADRESSE CALL HDS ;REGISTER PROTOKOLLIEREN LD A,' ' ;TRENNZEICHEN CALL BSS ; XOR A ;CY=0 LD A,0F7H ;POSITION DES NAECHSTEN REGISTERS ADC A,E ;BERECHNEN LD E,A ; DJNZ WR1 ;ZYKLUS RET ; ; ; REGISTERMODIFIKATION RMO: LD HL,TX6 ;KOMMADOTEXT CALL TXS ; LD D,(IY-06H) ;AKTUELLE PROTOKOLLZEILE NACH D LD E,2 ;POSITION AF-REGISTER CALL BKS ; CALL RRD ;SICHERHEITSKOPIE AUF STACK LD C,01DH ;SCHREIBBEREICH EINGRENZEN CALL BKL ; CALL BBZ ;NEUE WERTE EINTRAGEN JR C,RR3 ;BEI ABSCHLUSS MIT OFF LD B,00CH ;ZAEHLER, BEI ABSCHLUSS MIT RR2: INC SP ;ENTER STACKKORREKTUR DJNZ RR2 ; CALL RRD ;REGISTER LESEN CALL RWR ;UND FORMATIERT SCHREIBEN JR RR4 ; RR3: CALL RWR ;ALTE WERTE SCHREIBEN RR4: LD E,0 ;KOMMANDO KENNZEICHEN LOESCHEN LD A,' ' ; CALL BSS ; LD DE,5 ;POSITION KOMMANDOTEXT CALL BKS ; LD HL,TX7 ; CALL TXS ; RET ; ; ; NUMMER DER AKTUELLEN PROTOKOLLZEILE NACH D DLE: LD IY,(IYSAV) ;! IY WIRD ZERSTOERT LD D,(IY-06H) ; RET ; ; PROGRAMMTEXTE M9993: DB CLEAR+080H ; DB HOME ; DB 'ODT' ; DB DOWN ; DB HOME ; DB DOWN ; DB HOME ; DB ' AF BC DE HL IX IY SP PC' DB ' Mnemonik' ; M9992: DB 0D3H ;S DB 'CHRI' ; TX4: DB 0D3H ;S DB 'CHLE' ; TX5: DB 0CCH ;L DB 'AUF ' ; TX6: DB 0D2H ;R DB 'EG.K' ; TX7: DB 0A0H ; DB ' ' ; DB 080H ;TEXTENDE ;