NKC Forum
Registrieren | FAQ | Suche | Wer ist online? | Mitgliederliste | Heutige Beiträge | Kalender | Einloggen



Autor Thema: CP/M 2.2 und M80
nero999
Kennt sich schon aus
**
ID # 177


  Erstellt am 14. Dezember 2017 15:28 (#1)  |  Zitat Zitat   PN PN   E-Mail 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 08:58 (#2)  |  Zitat Zitat   PN PN   E-Mail 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 14:14 (#3)  |  Zitat Zitat   PN PN   E-Mail 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 10:34 (#4)  |  Zitat Zitat   PN PN   E-Mail 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 16:16 (#5)  |  Zitat Zitat   PN PN   E-Mail 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 19:22 (#6)  |  Zitat Zitat   PN PN   E-Mail 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 20:03 (#7)  |  Zitat Zitat   PN PN   E-Mail 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 22:20 (#8)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Hallo Michael,

"gemacht" hat sie Marcel. Ich hab sie nur fertigen lassen. ;)

Gruß, Rene

Beiträge: 651 | 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,014122 Sekunden erstellt
16 Dateien verarbeitet
gzip Komprimierung eingeschaltet
693,49 KiB Speichernutzung