NKC Forum |
Autor | Thema: CP/M 2.2 und M80 |
---|---|
nero999 Kennt sich schon aus ID # 177 |
Erstellt am 14. Dezember 2017 14:28 (#1)
Zitat
PN E-Mail
Hallo Team,
Wollte mal eben das Ampelprogramm aus dem grauen Buch von Rolf-Dieter Klein als "Vorlage" (.mac Datei) für den M80 Assembler unter CP/M übersetzen, mit L80 linken und die .com starten. Offensichtlich habe ich aber die falschen Adressen... org 100h ld sp,2ffh;Stack pointer ans Ende ampel:ld a,00000110b;ROT out (50h),a call warte ld a,00000100b;ROTGELB out (50h),a call warte ld a,00000011b;GRUEN out (50h),a call warte ld a,00000101b;GELB out (50h),a call warte jp ampel;dauernd wiederholen ; ; Unterprogramm folgt nun ; warte:ld a,200;aeussere Schleife 200 mal ld (200h),a ;zaehler 1 war1:ld a,255 ld (201h),a war2:ld a,(201h) sub 1 ld (201h),a jp nz,war2 ld a,(200h) sub 1 ld (200h),a jp nz,war1 ret ; end Es wird fehlerfrei assembliert - läuft aber nicht... Meine IOE ist auf Adresse 50h gejumper... Was mache ich falsch ? Lieben Gruß, Ralph |
Beiträge: 53 | Mitglied seit: April 2017 | IP-Adresse: gespeichert | |
nero999 Kennt sich schon aus ID # 177 |
Erstellt am 15. Dezember 2017 07:58 (#2)
Zitat
PN E-Mail
Guten Morgen,
ok - ich habe es ein bisschen umständlich formuliert... Ich würde gerne eine .mac Quelldatei haben, welche eine LED an einer IOE (50h) blinken lässt. Das ganze würde ich gerne unter CP/M 2.2 mit M80 und L80 als .com Datei darstellen. Unter BASIC bekomme ich das hin - aber mir fehlt definitiv in Assembler das nötige Wissen. Hat jemand einen kurzen Vorschlag (Quick&Dirty) mit dem ich weiterarbeiten kann ? Leider gibt das Internet keine so einfachen Beispiele her - oder ich bin zu blöd richtig zu suchen... Vielen Dank, Ralph |
Beiträge: 53 | Mitglied seit: April 2017 | IP-Adresse: gespeichert | |
m.haardt Voll in Gange ID # 93 |
Erstellt am 15. Dezember 2017 13:14 (#3)
Zitat
PN E-Mail
Wenn Du Assembler lernen willst, würde Dir ein Debugger sehr helfen. Ich empfehle dir z8e, weil Du damit Deinem Programm mit allen Registern in der Ausfuehren zuschauen kannst.
Das Programm sieht auf den ersten Blick richtig aus. Es wird also irgendwas Simples sein, was falsch ist. Michael |
Beiträge: 501 | Mitglied seit: April 2008 | IP-Adresse: gespeichert | |
nero999 Kennt sich schon aus ID # 177 |
Erstellt am 17. Dezember 2017 09:34 (#4)
Zitat
PN E-Mail
Guten Morgen zusammen,
Nachdem ich nun erfolgreich ein "SOUND-Testprogramm" unter CP/M mit dem Z80 Assembler Z80ASM von SLR assemblieren kann org 0100h start:ld a,0;adresse 0 out (40h),a ld a,55h out (41h),a ld a,1 out (40h),a ld a,0 out (41h),a ld a,7 out (40h),a ld a,11111110b out (41h),a ld a,8 out (40h),a ld a,15 out (41h),a jr start ; end bin ich doch schonmal zufrieden... Zumindest kommt der gewünschte Ton aus dem Lautsprecher ! Ich habe auch gelernt, dass DDT standartdmäßig auf 8080 code eingestellt ist und meinen z80 code nicht verstehen kann. Es gibt aber ja DDTZ - mit dem hat es dann funkioniert. (A Kommando) Mein Vorgehen ist nun wie folgt: 1) Sourcedatei mit ED erstellen oder via 22Disk kopieren (z80 ASM Datei) 2) Datei mit Z80ASM assemblieren (/A erzeugt gleich ein .com und /H ein Hexfile Ich schaffe es aber nicht, folgenden Quellcode zum laufen zu bringen: org 0100h ld sp,2ffh;Stack pointer ans Ende ampel:ld a,00000110b;ROT out (50h),a call warte ld a,00000100b;ROTGELB out (50h),a call warte ld a,00000011b;GRUEN out (50h),a call warte ld a,00000101b;GELB out (50h),a call warte jp ampel;dauernd wiederholen ; ; Unterprogramm folgt nun ; warte:ld a,200;aeussere Schleife 200 mal ld (200h),a ;zaehler 1 war1:ld a,255 ld (201h),a war2:ld a,(201h) sub 1 ld (201h),a jp nz,war2 ld a,(200h) sub 1 ld (200),a jp nz,war1 ret ; end Meine IOE mit den Leuchtdioden ist auf Adresse 50h eingestellt. Das funktioniert auch aus dem Grundprogramm, wenn ich das Programm auf 8800h starte (TASM Assembler). Nur unter CP/M auf Adresse 0100h eben nicht. Ich denke, es liegt an den Adressen. Ist die Adresse 2ffh für den Stack richtig ? Vielleicht hat ja noch jemand von den Assembler Experten die Muße, mir ein kleines Beispiel für eine Leuchtdiode an der IOE zu schreiben ohne SP ? Ich danke Euch fürs lesen und die Hilfe. Ralph |
Beiträge: 53 | Mitglied seit: April 2017 | IP-Adresse: gespeichert | |
m.haardt Voll in Gange ID # 93 |
Erstellt am 19. Dezember 2017 15:16 (#5)
Zitat
PN E-Mail
Da ich gerade Urlaub habe, habe ich den Z80 NKC gerade mal aus dem Keller geholt, die IOE eingesteckt, das Programm mit SLR180 assembliert und es läuft, wenn auch ein wenig schnell.
Ich habe allerdings Adresse 030h benutzt, weil meine IOE so gejumpert ist (default). Ich kann Dir das COM File gerne mailen, was bei mir läuft. Michael |
Beiträge: 501 | Mitglied seit: April 2008 | IP-Adresse: gespeichert | |
nero999 Kennt sich schon aus ID # 177 |
Erstellt am 19. Dezember 2017 18:22 (#6)
Zitat
PN E-Mail
Hallo Michael,
Das ist ja super ! Vielen Dank für Deine Mühe ! Ja, sehr gerne - meine Mailadresse ist ja für Forumsmitglieder "lesbar" ! |
Beiträge: 53 | Mitglied seit: April 2017 | IP-Adresse: gespeichert | |
m.haardt Voll in Gange ID # 93 |
Erstellt am 19. Dezember 2017 19:03 (#7)
Zitat
PN E-Mail
Habe ich gemacht.
Wie gut, dass Rene die IOEs gemacht hat. Ich baute sie eigentlich nur aus Spass, aber nun ist sie sogar für etwas gut gewesen. Michael |
Beiträge: 501 | Mitglied seit: April 2008 | IP-Adresse: gespeichert | |
Creep Voll in Gange ID # 169 |
Erstellt am 19. Dezember 2017 21:20 (#8)
Zitat
PN E-Mail
Hallo Michael,
"gemacht" hat sie Marcel. Ich hab sie nur fertigen lassen. Gruß, Rene |
Beiträge: 666 | Mitglied seit: Januar 2017 | IP-Adresse: gespeichert |
| https://hschuetz.selfhost.eu | Boardregeln | Datenschutzerklärung
Tritanium Bulletin Board 1.8
© 2010–2021 Tritanium Scripts
Seite in 0,024064 Sekunden erstellt
16 Dateien verarbeitet
gzip Komprimierung eingeschaltet
2028,66 KiB Speichernutzung