{"id":381,"date":"2022-12-25T11:18:40","date_gmt":"2022-12-25T10:18:40","guid":{"rendered":"https:\/\/www.dev-tronic.de\/?p=381"},"modified":"2023-06-06T12:39:58","modified_gmt":"2023-06-06T10:39:58","slug":"z80-plotroutine","status":"publish","type":"post","link":"https:\/\/www.dev-tronic.de\/?p=381","title":{"rendered":"Z80 &#8211; Plotroutine (Monochrom)"},"content":{"rendered":"\n<p>Die hier gezeigte Routine wurde f\u00fcr den VDC MC6847 entwickelt. Und dort speziell f\u00fcr die Aufl\u00f6sung 256 x 192 Pixel mit zwei Farben. Die Routine funktioniert nat\u00fcrlich auch mit den geringeren Aufl\u00f6sungen. Allerdings nur in den monochromen Grafikmodi.<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:z80 decode:true \" title=\"Z80 Plotroutine (256 x 192 Pixel)\">; Testpixel         \n                    ld a,0x10\n                    ld (var_xcord),a\n                    ld a,0x20\n                    ld (var_ycord),a                    \n                    call plot\n                    halt\n\n; Plotroutine\n\nplot:               ld a,(var_ycord) ; Y-Koordinate laden\n                    ld e,a\n                    xor a\n                    ld d,a\n                    ex de,hl        ; y * Zeilenl\u00e4nge (32)\n                    add hl,hl       ; x2\n                    add hl,hl       ; x4\n                    add hl,hl       ; x8\n                    add hl,hl       ; x16\n                    add hl,hl       ; x32\n                    ex de,hl        ; = rel. Zeilenanf.adresse\n                    ld a,(var_xcord)  ; X-Wert laden\n                    push af         ; und wieder auf den Stack\n                    srl a           ; X-Koordinate \/ 8\n                    srl a\n                    srl a\n                    add a,e         ; + relative Zeilenanfangsadresse\n                    ld e,a\n                    ld a,d          ; + Bildanfangsadresse\n                    or 0E0H         ; (Das Highbyte des Grafikspeichers ist E000H)\n                    ld d,a          ; DE = Bildadresse\n                    pop af          ; X-Koordinate laden\n\n; Ab hier: Pixel finden\n                    and 0x07\n                    push af\n                    ld a,0x07\n                    pop bc\n                    sub b\n\n                    or a                ; Wenn x = 255, dann gleich raus\n                    jr z, ende          ; Ende ohne zu schieben\n\n                    ld b,a\n                    ld a,0x01 ; Bit 0 setzen\nshift:\n                    rla                 ; und schieben\n                    djnz shift\n                    jr ende2\n\nende:               ld a,0x01\n\nende2:              ld b,a\n\n                    ld a,(de)\n                    xor b\n                    ld (de),a\n                    ret\n\n\n; X- und Y-Koordinate\nvar_xcord:          defb 0\nvar_ycord:          defb 0<\/pre><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Die hier gezeigte Routine wurde f\u00fcr den VDC MC6847 entwickelt. Und dort speziell f\u00fcr die Aufl\u00f6sung 256 x 192 Pixel mit zwei Farben. Die Routine funktioniert nat\u00fcrlich auch mit den geringeren Aufl\u00f6sungen. Allerdings nur in den monochromen Grafikmodi.<\/p>\n","protected":false},"author":10,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1,20],"tags":[25,18,16,11],"class_list":["post-381","post","type-post","status-publish","format-standard","hentry","category-allgemein","category-z80codeschnipsel","tag-8-bit","tag-grafik","tag-mc6847","tag-z80"],"_links":{"self":[{"href":"https:\/\/www.dev-tronic.de\/index.php?rest_route=\/wp\/v2\/posts\/381","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dev-tronic.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dev-tronic.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dev-tronic.de\/index.php?rest_route=\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dev-tronic.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=381"}],"version-history":[{"count":5,"href":"https:\/\/www.dev-tronic.de\/index.php?rest_route=\/wp\/v2\/posts\/381\/revisions"}],"predecessor-version":[{"id":505,"href":"https:\/\/www.dev-tronic.de\/index.php?rest_route=\/wp\/v2\/posts\/381\/revisions\/505"}],"wp:attachment":[{"href":"https:\/\/www.dev-tronic.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=381"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dev-tronic.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=381"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dev-tronic.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=381"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}