mirror of
https://github.com/cc65/cc65.git
synced 2024-12-23 04:30:10 +00:00
fix cpeeks() for C128 VDC
This commit is contained in:
parent
4da22fc6a0
commit
892732f340
@ -1,5 +1,6 @@
|
|||||||
;
|
;
|
||||||
; 2017-07-05, Greg King
|
; 2017-07-05, Greg King
|
||||||
|
; 2017-12-12, Groepaz
|
||||||
;
|
;
|
||||||
; void cpeeks (char* s, unsigned length);
|
; void cpeeks (char* s, unsigned length);
|
||||||
;
|
;
|
||||||
@ -22,6 +23,9 @@ _cpeeks:
|
|||||||
eor #>$FFFF
|
eor #>$FFFF
|
||||||
sta ptr3+1
|
sta ptr3+1
|
||||||
|
|
||||||
|
lda MODE
|
||||||
|
bmi c80
|
||||||
|
|
||||||
lda SCREEN_PTR
|
lda SCREEN_PTR
|
||||||
ldx SCREEN_PTR+1
|
ldx SCREEN_PTR+1
|
||||||
sta ptr2
|
sta ptr2
|
||||||
@ -77,3 +81,79 @@ L3: inc ptr3 ; count length
|
|||||||
ldy tmp1
|
ldy tmp1
|
||||||
sta (ptr1),y
|
sta (ptr1),y
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
;-----------------------------------------------------------
|
||||||
|
c80:
|
||||||
|
lda SCREEN_PTR
|
||||||
|
clc
|
||||||
|
adc CURS_X
|
||||||
|
sta ptr2
|
||||||
|
lda SCREEN_PTR+1
|
||||||
|
adc #0
|
||||||
|
sta ptr2+1
|
||||||
|
|
||||||
|
jsr popax
|
||||||
|
sta tmp1 ; (will be a .Y index)
|
||||||
|
stx ptr1+1
|
||||||
|
ldx #<$0000
|
||||||
|
stx ptr1
|
||||||
|
bze L3a ; branch always
|
||||||
|
|
||||||
|
L4a:
|
||||||
|
lda ptr2
|
||||||
|
ldy ptr2+1
|
||||||
|
inc ptr2
|
||||||
|
bne @s
|
||||||
|
inc ptr2+1
|
||||||
|
@s:
|
||||||
|
; get byte from VDC mem
|
||||||
|
ldx #VDC_DATA_LO
|
||||||
|
stx VDC_INDEX
|
||||||
|
@L0: bit VDC_INDEX
|
||||||
|
bpl @L0
|
||||||
|
sta VDC_DATA
|
||||||
|
dex
|
||||||
|
stx VDC_INDEX
|
||||||
|
sty VDC_DATA
|
||||||
|
|
||||||
|
ldx #VDC_RAM_RW
|
||||||
|
stx VDC_INDEX
|
||||||
|
@L1: bit VDC_INDEX
|
||||||
|
bpl @L1 ; wait for blanking
|
||||||
|
lda VDC_DATA
|
||||||
|
|
||||||
|
and #<~$80 ; remove reverse bit
|
||||||
|
|
||||||
|
; Convert the screen code into a PetSCII code.
|
||||||
|
; $00 - $1F: +$40
|
||||||
|
; $20 - $3F
|
||||||
|
; $40 - $5f: +$20
|
||||||
|
; $60 - $7F: +$40
|
||||||
|
|
||||||
|
cmp #$20
|
||||||
|
blt @sk1 ;(bcc)
|
||||||
|
cmp #$40
|
||||||
|
blt L5a
|
||||||
|
cmp #$60
|
||||||
|
blt @sk2 ;(bcc)
|
||||||
|
clc
|
||||||
|
@sk1: adc #$20
|
||||||
|
@sk2: ;clc ; both above cmp and adc clear carry flag
|
||||||
|
adc #$20
|
||||||
|
|
||||||
|
L5a: ldy tmp1
|
||||||
|
sta (ptr1),y
|
||||||
|
iny
|
||||||
|
bnz L1a
|
||||||
|
inc ptr1+1
|
||||||
|
L1a: sty tmp1
|
||||||
|
|
||||||
|
L3a: inc ptr3 ; count length
|
||||||
|
bnz L4a
|
||||||
|
inc ptr3+1
|
||||||
|
bnz L4a
|
||||||
|
|
||||||
|
lda #0 ; terminate the string
|
||||||
|
ldy tmp1
|
||||||
|
sta (ptr1),y
|
||||||
|
rts
|
||||||
|
Loading…
Reference in New Issue
Block a user