Blockgrafik/Lo-Hires

Aus C64-Wiki
Zur Navigation springenZur Suche springen

<< zurück zu Blockgrafik


Das Konvertierungsprogramm "Lo-Hires" erstellt aus einer Blockgrafik im aktuellen Video-RAM eine Hires-Grafik.


Beschreibung[Bearbeiten | Quelltext bearbeiten]

Lo-Hires ist im Prinzip die Routine des Programms "LOW-->HIRES" von M. Klingenmann aus dem 64'er SH11 (bzw. SH93), aber um einen Farbteil ergänzt. Wie die Originalversion wird "Lo-Hires" mit SYS 52992 ($CF00) aktiviert. Wenn die Blockgrafik angezeigt wird, drückt man die Taste <F7> und startet die Konvertierung. Das fertige Bild steht dann im Hires-Format ab $4000 im Speicher und kann sofort mit einem Grafikprogramm, wie z.B. Hi-Eddi plus, weiterbearbeitet werden.

Soll <F7> durch eine andere Taste ersetzt werden, so ist der neue Tastaturcode in $CF10 abzulegen, z. B. für das Pfund-Zeichen: POKE 53008,48.

ACME Listing[Bearbeiten | Quelltext bearbeiten]

;Lo-Hires konvertiert eine Blockgrafik vom aktuellen Bildschirm
;in eine Hires-Grafik (Bitmap $4000, Farbe $6000).
;Original aus 64'er SH11 S.60 von M. Klingenmann (1986), 
;Farbteil von P.Hagemann (1989).
;Starten mit SYS 52992 ($CF00), ausführen mit <F7>.

!to "lo-hires.prg", cbm
* = $cf00

	sei
	lda #$0d
	sta $028f	;Zeiger für Tastaturdekodierung
	lda #$cf 
	sta $0290	;auf cf0d
	cli 
	rts
;--------
	lda   $cb 	;momentan gedrückte Taste
	cmp #$03 	;Tastencode für F7
	beq a16
	jmp $eb48
;--------
a16	lda $dd00  	;CIA 2 Kontrollregister
	eor #$ff
	and #$03   	;Bit 0-3 = Speicherbank
	tay
a1e	dey
	bmi a2f
	ldx #$07
	lda tab,x       ;Tabelle anpassen
	clc 
	adc #$40
	sta tab,x
	dex
	bne a1e
a2f	lda #$00 
	sta $90ff
	sta   $fb
	lda $0288
	sta   $fc
	lda #$ff 
	sta   $24
	lda #$3f 
	sta   $25
	lda $d018
	and #$0e 
	clc
	ror
	tay
	lda tab,y 
	sta   $fe
	lda #$ff 
	sta   $fd
	sei
	lda #$33 
	sta   $01
	ldy #$00 
a5b	lda  ($fb),y 
	clc
	asl
	rol $90ff
	asl
	rol $90ff
	asl
	rol $90ff
	clc
	adc   $fd
	sta   $22
	lda $90ff
	adc   $fe
	sta   $23
	ldy #$08 
a78	lda  ($22),y
	sta  ($24),y
	dey	 
	bne a78
	lda #$00 
	sta $90ff
	inc   $fb
	bne a90
	inc   $fc
	lda   $fc
	cmp #$08 
	beq aa0
	lda   $24
	clc	 
	adc #$08 
a90	sta   $24
	lda   $25
	adc #$00 
	sta   $25
	jmp a5b
;--------
;neuer Teil für Farbe
aa0	lda #$37 
	sta   $01
	lda #$d8 
	sta   $fc
	lda #$60   	;color $6000
	sta   $fe
	sty   $fb
	sty   $fd
	ldx #$04 
	lda $d021
	and #$0f 
	sta   $b0
ab9	lda  ($fb),y
	asl
	asl
	asl
	asl
	ora   $b0
	sta  ($fd),y
	iny 
	bne ab9
	dex
	beq ad0
	inc   $fc
	inc   $fe
	jmp ab9
;--------
ad0	cli
	rts
;-------- 
;Tabelle der High-Bytes für den Zeichensatz-Vektor
tab !by $ff, $07, $cf, $d7, $1f, $27, $2f, $37

SMON Disassembler-Listing des Originals[Bearbeiten | Quelltext bearbeiten]

LOW-->HIRES:

,cf00 78       sei 
,cf01 a9 0d    lda #$0d
,cf03 8d 8f 02 sta $028f
,cf06 a9 cf    lda #$cf
,cf08 8d 90 02 sta $0290
,cf0b 58       cli 
,cf0c 60       rts 
----------------------------
,cf0d a5 cb    lda $cb
,cf0f c9 03    cmp #$03
,cf11 f0 03    beq $cf16
,cf13 4c 48 eb jmp $eb48
----------------------------
,cf16 ad 00 dd lda $dd00
,cf19 49 ff    eor #$ff
,cf1b 29 03    and #$03
,cf1d a8       tay 
,cf1e 88       dey 
,cf1f 30 0e    bmi $cf2f
,cf21 a2 07    ldx #$07
,cf23 bd ca cf lda $cfca,x
,cf26 18       clc 
,cf27 69 40    adc #$40
,cf29 9d ca cf sta $cfca,x
,cf2c ca       dex 
,cf2d d0 ef    bne $cf1e
,cf2f a9 00    lda #$00
,cf31 8d ff 90 sta $90ff
,cf34 85 fb    sta $fb
,cf36 ad 88 02 lda $0288
,cf39 85 fc    sta $fc
,cf3b a9 ff    lda #$ff
,cf3d 85 24    sta $24
,cf3f a9 3f    lda #$3f
,cf41 85 25    sta $25
,cf43 ad 18 d0 lda $d018
,cf46 29 0e    and #$0e
,cf48 18       clc 
,cf49 6a       ror a
,cf4a a8       tay 
,cf4b b9 ca cf lda $cfca,y
,cf4e 85 fe    sta $fe
,cf50 a9 ff    lda #$ff
,cf52 85 fd    sta $fd
,cf54 78       sei 
,cf55 a9 33    lda #$33
,cf57 85 01    sta $01
,cf59 a0 00    ldy #$00
,cf5b b1 fb    lda ($fb),y
,cf5d 18       clc 
,cf5e 0a       asl a
,cf5f 2e ff 90 rol $90ff
,cf62 0a       asl a
,cf63 2e ff 90 rol $90ff
,cf66 0a       asl a
,cf67 2e ff 90 rol $90ff
,cf6a 18       clc 
,cf6b 65 fd    adc $fd
,cf6d 85 22    sta $22
,cf6f ad ff 90 lda $90ff
,cf72 65 fe    adc $fe
,cf74 85 23    sta $23
,cf76 a0 08    ldy #$08
,cf78 b1 22    lda ($22),y
,cf7a 91 24    sta ($24),y
,cf7c 88       dey 
,cf7d d0 f9    bne $cf78
,cf7f a9 00    lda #$00
,cf81 8d ff 90 sta $90ff
,cf84 e6 fb    inc $fb
,cf86 d0 08    bne $cf90
,cf88 e6 fc    inc $fc
,cf8a a5 fc    lda $fc
,cf8c c9 08    cmp #$08
,cf8e f0 10    beq $cfa0
,cf90 a5 24    lda $24
,cf92 18       clc 
,cf93 69 08    adc #$08
,cf95 85 24    sta $24
,cf97 a5 25    lda $25
,cf99 69 00    adc #$00
,cf9b 85 25    sta $25
,cf9d 4c 5b cf jmp $cf5b
----------------------------
,cfa0 a9 37    lda #$37
,cfa2 85 01    sta $01
,cfa4 a9 40    lda #$40 
,cfa6 85 fc    sta $fc
,cfa8 a9 00    lda #$00
,cfaa 85 fb    sta $fb
,cfac 85 fd    sta $fd
,cfae a9 20    lda #$20 
,cfb0 85 fe    sta $fe
,cfb2 b1 fb    lda ($fb),y
,cfb4 91 fd    sta ($fd),y
,cfb6 e6 fb    inc $fb
,cfb8 e6 fd    inc $fd
,cfba d0 f6    bne $cfb2
,cfbc e6 fc    inc $fc
,cfbe e6 fe    inc $fe
,cfc0 a5 fc    lda $fc
,cfc2 c9 60    cmp #$60
,cfc4 d0 ec    bne $cfb2
,cfc6 58       cli 
,cfc7 4c 48 eb jmp $eb48
----------------------------
:cfca ff 07 cf d7 1f 27 2f 37

Weblinks[Bearbeiten | Quelltext bearbeiten]