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 $cf16               
    jmp $eb48               
    ;--------      
    lda $dd00  	;CIA 2 Kontrollregister               
    eor #$ff                
    and #$03   	;Bit 0-3 = Speicherbank             
    tay                    
    dey    
    bmi $cf2f      
    ldx #$07  
    lda tab,x   ;Tabelle anpassen           
    clc                    
    adc #$40                
    sta tab,x             
    dex                    
    bne $cf1e               
    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                
    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                
    lda  ($22),y            
    sta  ($24),y            
    dey                    
    bne $cf78               
    lda #$00                
    sta $90ff               
    inc   $fb               
    bne $cf90               
    inc   $fc               
    lda   $fc               
    cmp #$08                
    beq $cfa0               
    lda   $24               
    clc                    
    adc #$08                
    sta   $24               
    lda   $25               
    adc #$00                
    sta   $25               
    jmp $cf5b               
    ;--------      
    ;neuer Teil für Farbe
    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               
    lda  ($fb),y            
    asl                    
    asl                    
    asl                    
    asl                    
    ora   $b0               
    sta  ($fd),y            
    iny                    
    bne $cfb9               
    dex                    
    beq $cfd0               
    inc   $fc               
    inc   $fe               
    jmp $cfb9               
    ;--------     
    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]