ORG 02000H ;Startwert Textspeicher Wort 'Start-' ;Schreibe das Wort Start DEFW 0CA08H ;-T Lade DEFW 06F48H ;RA DEFW 0AECAH ;ST ;Start Adresse 02000H ;Leere 6 RAM Speicher Adressen DEFW 00000H ;00 DEFW 00000H ;00 DEFW 00000H ;00 ;Endadrese 0200BH ;Startwert Textspeicher Wort 'Ziel-' ;Schreibe das Wort Ziel DEFW 00808H ;-- Lade DEFW 0CEC2H ;EL DEFW 08C20H ;ZI ;Start Adresse 0200CH ;Leere 6 RAMS peicher Adressen DEFW 00000H ;00 DEFW 00000H ;00 DEFW 00000H ;00 ;Endadrese 02017H ;Startwert Textspeicher Wort 'LAENGE' ;Schreibe das Wort LAENGE DEFW 0E6CEH ;GE Lade DEFW 0CE68H ;EN DEFW 0C26FH ;LA ;start Adresse 02019DH ;Leere 6 RAMS peicher Adressen DEFW 00000H ;00 DEFW 00000H ;00 DEFW 00000H ;00 ;Endadrese0 02023H ;Programm eins ;__________ ;Programm HeX-Taste umwandeln zu Anzeige-Hex: ;Sprungziel Z0: LD H,0E7H ;Lade H mit E7 =0 POP BC ;Hohle HL,BC RET ;C9 Zurückspringen -beenden Z1: LD H,021H ;Lade H mit 21 =1 POP BC ;Hohle HL,BC RET ;C9 Zurückspringen -beenden Z2: LD H,0CDH ;Lade H mit CD =2 POP BC ;Hohle HL,BC RET ;C9 Zurückspringen -beenden Z3: LD H,0ADH ;Lade H mit AD =3 POP BC ;Hohle HL,BC RET ;C9 Zurückspringen -beenden Z4: LD H,02BH ;Lade H mit 2B =4 POP BC ;Hohle HL,BC RET ;C9 Zurückspringen -beenden Z5: LD H,0AEH ;Lade H mit AE =5 POP BC ;Hohle HL,BC RET ;C9 Zurückspringen -beenden Z6: LD H,0EEH ;Lade H mit EE =6 POP BC ;Hohle HL,BC RET ;C9 Zurückspringen -beenden Z7: LD H,025H ;Lade H mit 25 =7 POP BC ;Hohle HL,BC RET ;C9 Zurückspringen -beenden Z8: LD H,0EFH ;Lade H mit EF =8 POP BC ;Hohle HL,BC RET ;C9 Zurückspringen -beenden Z9: LD H,0AFH ;Lade H mit AF =9 POP BC ;Hohle HL,BC RET ;C9 Zurückspringen -beenden ZA: LD H,06FH ;Lade H mit 6F =A POP BC ;Hohle HL,BC RET ;C9 Zurückspringen -beenden ZB: LD H,0EAH ;Lade H mit EA =B POP BC ;Hohle HL,BC RET ;C9 Zurückspringen -beenden ZC: LD H,0C6H ;Lade H mit C6 =C POP BC ;Hohle HL,BC RET ;C9 Zurückspringen -beenden ZD: LD H,0E9H ;Lade H mit E9 =D POP BC ;Hohle HL,BC RET ;C9 Zurückspringen -beenden ZE: LD H,0CEH ;Lade H mit CE =E POP BC ;Hohle HL,BC RET ;C9 Zurückspringen -beenden ZF: LD H,04EH ;Lade H mit 4E =F POP BC ;Hohle HL,BC RET ;C9 Zurückspringen -beenden ; PUSH BC ;Sichere HL,BC CP 000H ;Vergleiche A mit 0 JR Z,Z0 ;Sprung bei Null nach unten CP 001H ;Vergleiche A mit 1 JR Z,Z1 ;Sprung bei Null nach unten CP 002H ;Vergleiche A mit 2 JR Z,Z2 ;Sprung bei Null nach unten CP 003H ;Vergleiche A mit 3 JR Z,Z3 ;Sprung bei Null nach unten CP 004H ;Vergleiche A mit 4 JR Z,Z4 ;Sprung bei Null nach unten CP 005H ;Vergleiche A mit 5 JR Z,Z5 ;Sprung bei Null nach unten CP 006H ;Vergleiche A mit 6 JR Z,Z6 ;Sprung bei Null nach unten CP 007H ;Vergleiche A mit 7 JR Z,Z7 ;Sprung bei Null nach unten CP 008H ;Vergleiche A mit 8 JR Z,Z8 ;Sprung bei Null nach unten CP 009H ;Vergleiche A mit 9 JR Z,Z9 ;Sprung bei Null nach unten CP 00AH ;Vergleiche A mit A JR Z,ZA ;Sprung bei Null nach unten CP 00BH ;Vergleiche A mit B JR Z,ZB ;Sprung bei Null nach unten CP 00CH ;Vergleiche A mit C JR Z,ZC ;Sprung bei Null nach unten CP 00DH ;Vergleiche A mit D JR Z,ZD ;Sprung bei Null nach unten CP 00EH ;Vergleiche A mit E JR Z,ZE ;Sprung bei Null nach unten CP 00FH ;Vergleiche A mit F JR Z,ZF ;Sprung bei Null nach unten ;__________ ;__________ ;Programm Anzeige Hex umwandeln in Programm Hex Push BC ;BC Sichern CP 0E7H ;Vergleiche A mit 04=0 JR Z,A0 ;Sprung bei Null nach unten CP 021H ;Vergleiche A mit 05=1 JR Z,A1 ;Sprung bei Null nach unten CP 0CDH ;Vergleiche A mit 06=2 JR Z,A2 ;Sprung bei Null nach unten CP 0ADH ;Vergleiche A mit 07=3 JR Z,A3 ;Sprung bei Null nach unten CP 02BH ;Vergleiche A mit 08=4 JR Z,A4 ;Sprung bei Null nach unten CP 0AEH ;Vergleiche A mit 09=5 JR Z,A5 ;Sprung bei Null nach unten CP 0EEH ;Vergleiche A mit 16=6 JR Z,A6 ;Sprung bei Null nach unten CP 025H ;Vergleiche A mit 0B=7 JR Z,A7 ;Sprung bei Null nach unten CP 0EFH ;Vergleiche A mit 0C=8 JR Z,A8 ;Sprung bei Null nach unten CP 0AFH ;Vergleiche A mit 0D=9 JR Z,A9 ;Sprung bei Null nach unten CP 06FH ;Vergleiche A mit 12=A JR Z,AA ;Sprung bei Null nach unten CP 0EAH ;Vergleiche A mit 0F=B JR Z,AB ;Sprung bei Null nach unten CP 0C6H ;Vergleiche A mit 10=C JR Z,AC ;Sprung bei Null nach unten CP 0E9H ;Vergleiche A mit 11=D JR Z,AD ;Sprung bei Null nach unten CP 0CEH ;Vergleiche A mit 0E=E JR Z,AE ;Sprung bei Null nach unten CP 04EH ;Vergleiche A mit 16=F JR Z,AG ;Sprung bei Null nach unten ;Sprungziel A0: LD H,000H ;Lade H mit E7 =0 POP BC ;Hohle HL,BC RET ;C9 Zurückspringen -beenden A1: LD H,001H ;Lade H mit 21 =1 POP BC ;Hohle HL,BC RET ;C9 Zurückspringen -beenden A2: LD H,002H ;Lade H mit CD =2 POP BC ;Hohle HL,BC RET ;C9 Zurückspringen -beenden A3: LD H,003H ;Lade H mit AD =3 POP BC ;Hohle HL,BC RET ;C9 Zurückspringen -beenden A4: LD H,004H ;Lade H mit 2B =4 POP BC ;Hohle HL,BC RET ;C9 Zurückspringen -beenden A5: LD H,005H ;Lade H mit AE =5 POP BC ;Hohle HL,BC RET ;C9 Zurückspringen -beenden A6: LD H,006H ;Lade H mit EE =6 POP BC ;Hohle HL,BC RET ;C9 Zurückspringen -beenden A7: LD H,007H ;Lade H mit 25 =7 POP BC ;Hohle HL,BC RET ;C9 Zurückspringen -beenden A8: LD H,008H ;Lade H mit EF =8 POP BC ;Hohle HL,BC RET ;C9 Zurückspringen -beenden A9: LD H,009H ;Lade H mit AF =9 POP BC ;Hohle HL,BC RET ;C9 Zurückspringen -beenden AA: LD H,00AH ;Lade H mit 6F =A POP BC ;Hohle HL,BC RET ;C9 Zurückspringen -beenden AB: LD H,00BH ;Lade H mit EA =B POP BC ;Hohle HL,BC RET ;C9 Zurückspringen -beenden AC: LD H,00CH ;Lade H mit C6 =C POP BC ;Hohle HL,BC RET ;C9 Zurückspringen -beenden AD: LD H,00DH ;Lade H mit E9 =D POP BC ;Hohle HL,BC RET ;C9 Zurückspringen -beenden AE: LD H,00EH ;Lade H mit CE =E POP BC ;Hohle HL,BC RET ;C9 Zurückspringen -beenden AG: LD H,00FH ;Lade H mit 4E =F POP BC ;Hohle HL,BC RET ;C9 Zurückspringen -beenden ;__________ PUSH AF ;Sichere AF EX AF,AF' ;Schalte Register Um! EXX ;Schalte Register Um! LD A,00 ;Leere Regsiter A LD B,00 ;Leere Regsiter B LD C,00 ;Leere Regsiter C LD D,00 ;Leere Regsiter D LD E,00 ;Leere Regsiter E LD HL,00 ;Leere Regsiter HL ;Startadresse PUSH AF ;Sichere Register A'F', B'C', D'E' PUSH BC ;Sichere Register A'F', B'C', D'E' PUSH DE ;Sichere Register A'F', B'C', D'E' LD IX,02000H ;Lade IX mit adresse von Start CALL 0045AH ;Springe zu DAK1 LD H,A ;Lade H mit A, bringe Taste in Sicherheit ;Hohle Register (AF), (A'F'), B'C', D'E' POP DE ;Hohle Register A'F', B'C', D'E' POP BC ;Hohle Register A'F', B'C', D'E' POP AF ;Hohle Register A'F', B'C', D'E' LD D,003H ;4 Mal widerhohlen ;Erstes Zeichen wurde eingegeben LD BC,02006H ;Lade Bc mit Adresse M4: LD A,H ;H zurück nach A bringen CALL 02064H ;Sprung zu Programm Taste umwandeln zu Hex: PUSH AF ;AF Sichern LD A,H ;H zurück nach A bringen LD (BC),A ;In letzte Stelle sichern POP AF ;AF Hohlen ;Zahlen Anzeigen PUSH AF ;Sichere Register A'F', B'C', D'E' PUSH BC ;Sichere Register A'F', B'C', D'E' PUSH DE ;Sichere Register A'F', B'C', D'E' LD IX,02006H ;Lade IX mit Adresse von Startadresse CALL 0045AH ;Springe zu DAK1 LD H,A ;Lade H mit A, bringe Taste in Sicherheit ;Hohle Register (AF), (A'F'), B'C', D'E' POP DE ;Hohle Register A'F', B'C', D'E' POP BC ;Hohle Register A'F', B'C', D'E' POP AF ;Hohle Register A'F', B'C', D'E' INC BC ;Adresszähler Wiederhohlen DEC D ;Wiederhohlungsregister Decrementieren JR NZ,M4 ;zum Start zurückspringen LD A,H ;H zurück nach A bringen CALL 02064H ;Sprung zu Programm Taste umwandeln zu Hex: PUSH AF ;AF Sichern LD A,H ;H zurück nach A bringen LD (BC),A ;In letzte Stelle sichern POP AF ;AF Hohlen LD IX,02006H ;Lade IX mit Adresse von Startadresse CALL 0045AH ;Springe zu DAK1 ;Alle Stellen fertig eingegeben = Startaddresse LD IX,0200CH ;Lade IX mit adresse von Ziel CALL 0045AH ;Springe zu DAK1 LD H,A ;Lade H mit A, bringe Taste in Sicherheit ;Hohle Register (AF), (A'F'), B'C', D'E' POP DE ;Hohle Register A'F', B'C', D'E' POP BC ;Hohle Register A'F', B'C', D'E' POP AF ;Hohle Register A'F', B'C', D'E' LD D,003H ;4 Mal widerhohlen ;Erstes Zeichen wurde eingegeben LD BC,02012H ;Lade Bc mit Adresse M5: LD A,H ;H zurück nach A bringen CALL 02064H ;Sprung zu Programm Taste umwandeln zu Hex: PUSH AF ;AF Sichern LD A,H ;H zurück nach A bringen LD (BC),A ;In letzte Stelle sichern POP AF ;AF Hohlen ;Zahlen Anzeigen PUSH AF ;Sichere Register A'F', B'C', D'E' PUSH BC ;Sichere Register A'F', B'C', D'E' PUSH DE ;Sichere Register A'F', B'C', D'E' LD IX,02012H ;Lade IX mit Adresse von Zieladresse CALL 0045AH ;Springe zu DAK1 LD H,A ;Lade H mit A, bringe Taste in Sicherheit ;Hohle Register (AF), (A'F'), B'C', D'E' POP DE ;Hohle Register A'F', B'C', D'E' POP BC ;Hohle Register A'F', B'C', D'E' POP AF ;Hohle Register A'F', B'C', D'E' INC BC ;Adresszähler Wiederhohlen DEC D ;Wiederhohlungsregister Decrementieren JR NZ,M5 ;zum Start zurückspringen LD A,H ;H zurück nach A bringen CALL 02064H ;Sprung zu Programm Taste umwandeln zu Hex: PUSH AF ;AF Sichern LD A,H ;H zurück nach A bringen LD (BC),A ;In letzte Stelle sichern POP AF ;AF Hohlen LD IX,02012H ;Lade IX mit Adresse von Zieladresse CALL 0045AH ;Springe zu DAK1 ;Alle Stellen fertig eingegeben = Zieladdresse LD IX,02018H ;Lade IX mit adresse von Länge CALL 0045AH ;Springe zu DAK1 LD H,A ;Lade H mit A, bringe Taste in Sicherheit ;Hohle Register (AF), (A'F'), B'C', D'E' POP DE ;Hohle Register A'F', B'C', D'E' POP BC ;Hohle Register A'F', B'C', D'E' POP AF ;Hohle Register A'F', B'C', D'E' LD D,003H ;4 Mal widerhohlen ;Erstes Zeichen wurde eingegeben LD BC,0201EH ;Lade Bc mit Adresse M6: LD A,H ;H zurück nach A bringen CALL 02064H ;Sprung zu Programm Taste umwandeln zu Hex: PUSH AF ;AF Sichern LD A,H ;H zurück nach A bringen LD (BC),A ;In letzte Stelle sichern POP AF ;AF Hohlen ;Zahlen Anzeigen PUSH AF ;Sichere Register A'F', B'C', D'E' PUSH BC ;Sichere Register A'F', B'C', D'E' PUSH DE ;Sichere Register A'F', B'C', D'E' LD IX,0201EH ;Lade IX mit Adresse von Längeadresse CALL 0045AH ;Springe zu DAK1 LD H,A ;Lade H mit A, bringe Taste in Sicherheit ;Hohle Register (AF), (A'F'), B'C', D'E' POP DE ;Hohle Register A'F', B'C', D'E' POP BC ;Hohle Register A'F', B'C', D'E' POP AF ;Hohle Register A'F', B'C', D'E' INC BC ;Adresszähler Wiederhohlen DEC D ;Wiederhohlungsregister Decrementieren JR NZ,M6 ;zum Start zurückspringen LD A,H ;H zurück nach A bringen CALL 02064H ;Sprung zu Programm Taste umwandeln zu Hex: PUSH AF ;AF Sichern LD A,H ;H zurück nach A bringen LD (BC),A ;In letzte Stelle sichern POP AF ;AF Hohlen LD IX,0201EH ;Lade IX mit Adresse von Laenge CALL 0045AH ;Springe zu DAK1 ;Alle Stellen fertig eingegeben = Laenge ;Umwandeln in HEX Werte - Start LD BC,02006H ;Lade Bc mit Adresse LD D,001H ;1 Mal widerhohlen M7: INC BC ;BC Erhöhen LD A,(BC) ;Lesen der Speicherzelle CALL 020A5h ;Umwandeln in HEX SLA H ;Schiebe Links SLA H ;Schiebe Links SLA H ;Schiebe Links SLA H ;Schiebe Links LD L,H ;Lade H in L DEC BC ;BC Erniedrigen LD A,(BC) ;Lesen der Speicherzelle CALL 020A5h ;Umwandeln in HEX LD A,H ;In A Zurückschreiben ADD A,L ;L und A Addieren zwei zu eins gemacht LD (BC),A ;In Speicher Schreiben INC BC ;Erhöhe Adressezähler INC BC ;Erhöhe Adressezähler DEC D ;Erniedriege Rundenzähler JR NZ,M7 ;Ende Start ;Umwandeln in HEX Werte-Ziel LD BC,02012H ;Lade Bc mit Adresse LD D,001H ;1 Mal widerhohlen M8: INC BC ;BC Erhöhen LD A,(BC) ;Lesen der Speicherzelle CALL 020A5h ;Umwandeln in HEX SLA H ;Schiebe Links SLA H ;Schiebe Links SLA H ;Schiebe Links SLA H ;Schiebe Links LD L,H ;Lade H in L DEC BC ;BC Erniedrigen LD A,(BC) ;Lesen der Speicherzelle CALL 020A5h ;Umwandeln in HEX LD A,H ;In A Zurückschreiben ADD A,L ;L und A Addieren zwei zu eins gemacht LD (BC),A ;In Speicher Schreiben INC BC ;Erhöhe Adressezähler INC BC ;Erhöhe Adressezähler DEC D ;Erniedriege Rundenzähler JR NZ,M8 ;Ende Ziel ;Umwandeln in HEX Werte-Länge LD BC,0201EH ;Lade Bc mit Adresse LD D,001H ;1 Mal widerhohlen M9: INC BC ;BC Erhöhen LD A,(BC) ;Lesen der Speicherzelle CALL 020A5h ;Umwandeln in HEX SLA H ;Schiebe Links SLA H ;Schiebe Links SLA H ;Schiebe Links SLA H ;Schiebe Links LD L,H ;Lade H in L DEC BC ;BC Erniedrigen LD A,(BC) ;Lesen der Speicherzelle CALL 020A5h ;Umwandeln in HEX LD A,H ;In A Zurückschreiben ADD A,L ;L und A Addieren zwei zu eins gemacht LD (BC),A ;In Speicher Schreiben INC BC ;Erhöhe Adressezähler INC BC ;Erhöhe Adressezähler DEC D ;Erniedriege Rundenzähler JR NZ,M9 LD BC,0201EH ;Adresse Erste Stelle Laden ;ende Länge LD HL,(0201EH) ;Register HL vorrübergehend mit Länge Laden LD DE,(0201EH) ;Register HL vorrübergehend mit Länge Laden ADD HL,DE ;HL und DE Addieren = Länge mal 2 LD BC,HL ;Register BC mit HL Laden = Länge Mal 2 LD HL,(02006H) ;Register HL mit Start Laden LD DE,(02012H) ;Register DE mit Ziel Laden LDIR EXX ;Schalte Register Um! EX AF,AF' ;Schalte Register Um! POP AF ;Hohle AF zurück HALT RET ;Beende UnterProgramm