Hallo, guten Tag. Ich bekomme folgende Aufgabe nicht hin. Ich möchte bitte 190x den Wert 255 an die aufsteigende Adressen übergeben von M2Y. Die neue Adresse soll immer an scraddr übergeben werden und dann nach HL. Wo ist bitten der Fehler? Danke. ---------------------------- scr: ld hl,M2Y ld (scraddr),HL ld c,255 ld a,0 mache: inc a cp 190 ld hl,(scraddr) ld (hl),c inc HL inc hl ld (scraddr),hl jr nz,mache ret scraddr: DW &0000 ;M2 Y-Tabelle M2Y: DW &C000, &C800, &D000, &D800, &E000, &E800, &F000, &F800 DW &C050, &C850, &D050, &D850, &E050, &E850, &F050, &F850 DW &C0A0, &C8A0, &D0A0, &D8A0, &E0A0, &E8A0, &F0A0, &F8A0 DW &C0F0, &C8F0, &D0F0, &D8F0, &E0F0, &E8F0, &F0F0, &F8F0 DW &C140, &C940, &D140, &D940, &E140, &E940, &F140, &F940 DW &C190, &C990, &D190, &D990, &E190, &E990, &F190, &F990 ....... .......
Die zweite Indirektion fehlt, d.h. Du musst erst die Adresse aus der Tabelle lesen und auf die gelesene Adresse das 0xFF schreiben. Obiges Programm überschreibt nur die Adresstabelle. Also ungefähr so:
1 | mache: |
2 | ld hl,(scraddr) |
3 | ld e, (hl) |
4 | inc hl |
5 | ld d, (hl) |
6 | inc hl |
7 | ld (scraddr),hl |
8 | ex hl, de |
9 | ld (hl),c |
10 | inc a |
11 | cp 190 |
12 | jr nz,mache |
:
Bearbeitet durch User
Danke funktioniert super. Dieses habe ich noch umgestellt nach dem Z80-Buch ,weil es noch nicht lief. ex hl, de nach ex de,hl Wie kann ich jetzt bitte bei einer beliebigen Adresse vom M2Y anfangen die ich als Anfang vorgebe? Danke.
:
Bearbeitet durch User
Indem Du z.B. den Index an die Funktion übergibst.
1 | ; a = Index |
2 | scr: |
3 | ld hl, M2Y |
4 | ld e, a |
5 | ld d, 0 |
6 | add hl, de |
7 | add hl, de |
8 | ld (scraddr), hl |
9 | |
10 | mache: |
11 | ld hl,(scraddr) |
12 | ld e, (hl) |
13 | inc hl |
14 | ld d, (hl) |
15 | inc hl |
16 | ld (scraddr),hl |
17 | ld l, e ; statt ex de, hl |
18 | ld h, d |
19 | ld (hl),c |
20 | inc a |
21 | cp 190 |
22 | jr nz,mache |
23 | ret |
Du kennst dich Super aus. Diese Tabelle ist für den CPC um die Linien untereinander zu Zeichnen. Es wird senkrecht nach unten gezeichnet ab der Adresse &C000 , &c800 usw. Siehe Bild. Es sind 199 Byte nach unten bei X=0 In der x-Richtung sind es 80 Byte. Um die x-Richtung zu ändern muss zu jeden Wert von der Tabelle die anzahl vom x festgelegt werden Beim Wert &C000 + 79 wird in x-Richtung-79 das Byte ganz rechts gezeichnet. x=45 Wie kann ich jetzt das Byte &c000 + 45 , &c800 + 45 festlegen. Wie wird jetzt bitte der der Wert x=45 zu jeder Adresse zugerechnet bei deinem Beispiel? Danke --------------------------------- scr: ld hl,M2Y ld (scraddr),HL ld c,255 ld a,0 mache: ld hl,(scraddr) ld e, (hl) inc hl ld d, (hl) inc hl ld (scraddr),hl ex de,hl ld (hl),c inc a cp 199 jr nz,mache ret scraddr: DW &0000 ;M2 Y-Tabelle M2Y: DW &C000, &C800, &D000, &D800, &E000, &E800, &F000, &F800 DW &C050, &C850, &D050, &D850, &E050, &E850, &F050, &F850 DW &C0A0, &C8A0, &D0A0, &D8A0, &E0A0, &E8A0, &F0A0, &F8A0 DW &C0F0, &C8F0, &D0F0, &D8F0, &E0F0, &E8F0, &F0F0, &F8F0 DW &C140, &C940, &D140, &D940, &E140, &E940, &F140, &F940 DW &C190, &C990, &D190, &D990, &E190, &E990, &F190, &F990 DW &C1E0, &C9E0, &D1E0, &D9E0, &E1E0, &E9E0, &F1E0, &F9E0 DW &C230, &CA30, &D230, &DA30, &E230, &EA30, &F230, &FA30 DW &C280, &CA80, &D280, &DA80, &E280, &EA80, &F280, &FA80 DW &C2D0, &CAD0, &D2D0, &DAD0, &E2D0, &EAD0, &F2D0, &FAD0 ..... .... -------------------------
:
Bearbeitet durch User
woaaa, ein CPC:-) Der steht hier neben mir der gute 6128:-) Die CPC Gemeinde ist, denke ich, größer als die Linux Fanbase:-) Der CPC macht einfach Spaß mit seinem hervorragenden Basic
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.