cleanup/fix pce cpeekc/cpeekcolor/cpeekrevers/cpeeks, replaces #532
This commit is contained in:
@@ -14,11 +14,11 @@ _cpeekc:
|
|||||||
st0 #VDC_MARR ; Memory-Address Read
|
st0 #VDC_MARR ; Memory-Address Read
|
||||||
ldy SCREEN_PTR
|
ldy SCREEN_PTR
|
||||||
ldx SCREEN_PTR+1
|
ldx SCREEN_PTR+1
|
||||||
sty VDC_DATA_LO
|
sty a:VDC_DATA_LO
|
||||||
stx VDC_DATA_HI
|
stx a:VDC_DATA_HI
|
||||||
|
|
||||||
st0 #VDC_VRR ; VRAM Read Register
|
st0 #VDC_VRR ; VRAM Read Register
|
||||||
lda VDC_DATA_LO ; character
|
lda a:VDC_DATA_LO ; character
|
||||||
and #<~$80 ; remove reverse bit
|
and #<~$80 ; remove reverse bit
|
||||||
ldx #0
|
ldx #0
|
||||||
rts
|
rts
|
||||||
|
|||||||
@@ -14,11 +14,11 @@ _cpeekcolor:
|
|||||||
st0 #VDC_MARR ; Memory-Address Read
|
st0 #VDC_MARR ; Memory-Address Read
|
||||||
ldy SCREEN_PTR
|
ldy SCREEN_PTR
|
||||||
ldx SCREEN_PTR+1
|
ldx SCREEN_PTR+1
|
||||||
sty VDC_DATA_LO
|
sty a:VDC_DATA_LO
|
||||||
stx VDC_DATA_HI
|
stx a:VDC_DATA_HI
|
||||||
|
|
||||||
st0 #VDC_VRR ; VRAM Read Register
|
st0 #VDC_VRR ; VRAM Read Register
|
||||||
lda VDC_DATA_HI
|
lda a:VDC_DATA_HI
|
||||||
and #<~$02
|
and #<~$02
|
||||||
lsr a
|
lsr a
|
||||||
lsr a
|
lsr a
|
||||||
|
|||||||
@@ -14,13 +14,14 @@ _cpeekrevers:
|
|||||||
st0 #VDC_MARR ; Memory-Address Read
|
st0 #VDC_MARR ; Memory-Address Read
|
||||||
ldy SCREEN_PTR
|
ldy SCREEN_PTR
|
||||||
ldx SCREEN_PTR+1
|
ldx SCREEN_PTR+1
|
||||||
sty VDC_DATA_LO
|
sty a:VDC_DATA_LO
|
||||||
stx VDC_DATA_HI
|
stx a:VDC_DATA_HI
|
||||||
|
|
||||||
st0 #VDC_VRR ; VRAM Read Register
|
st0 #VDC_VRR ; VRAM Read Register
|
||||||
lda VDC_DATA_LO ; character (bit 7 is revers bit)
|
|
||||||
rol a
|
lda a:VDC_DATA_LO ; character (bit 7 is revers bit)
|
||||||
rol a
|
and #$80 ; get reverse bit
|
||||||
and #1
|
asl a ; reverse bit to carry, A=0
|
||||||
ldx #0
|
tax ; ldx #>$0000
|
||||||
|
rol a ; reverse bit from carry
|
||||||
rts
|
rts
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
;
|
;
|
||||||
; 2020-07-14, Groepaz
|
; 2020-07-14, Groepaz
|
||||||
|
; 2020-07-15, Greg King
|
||||||
;
|
;
|
||||||
; void cpeeks (char* s, unsigned length);
|
; void cpeeks (char* s, unsigned length);
|
||||||
;
|
;
|
||||||
@@ -8,9 +9,7 @@
|
|||||||
.export _cpeeks
|
.export _cpeeks
|
||||||
|
|
||||||
.import popax
|
.import popax
|
||||||
.importzp ptr1, ptr2, tmp1, tmp2
|
.importzp ptr1, ptr2
|
||||||
|
|
||||||
.macpack generic
|
|
||||||
|
|
||||||
.include "pce.inc"
|
.include "pce.inc"
|
||||||
.include "extzp.inc"
|
.include "extzp.inc"
|
||||||
@@ -22,35 +21,31 @@ _cpeeks:
|
|||||||
eor #>$FFFF
|
eor #>$FFFF
|
||||||
sta ptr2+1
|
sta ptr2+1
|
||||||
|
|
||||||
|
st0 #VDC_CR ; Control Register
|
||||||
|
st2 #>$0088 ; make VRAM address increment by one
|
||||||
|
|
||||||
st0 #VDC_MARR ; Memory-Address Read
|
st0 #VDC_MARR ; Memory-Address Read
|
||||||
ldy SCREEN_PTR
|
ldy SCREEN_PTR
|
||||||
ldx SCREEN_PTR+1
|
ldx SCREEN_PTR+1
|
||||||
sty VDC_DATA_LO
|
sty a:VDC_DATA_LO
|
||||||
stx VDC_DATA_HI
|
stx a:VDC_DATA_HI
|
||||||
|
|
||||||
st0 #VDC_VRR ; VRAM Read Register
|
st0 #VDC_VRR ; VRAM Read Register
|
||||||
|
|
||||||
jsr popax
|
jsr popax
|
||||||
sta tmp1 ; (will be a .Y index)
|
tay ; low byte of address will be used as index
|
||||||
stx ptr1+1
|
stx ptr1+1
|
||||||
|
|
||||||
ldx #<$0000
|
ldx #<$0000
|
||||||
stx ptr1
|
stx ptr1
|
||||||
beq L2 ; branch always
|
beq L2 ; branch always
|
||||||
|
|
||||||
L3: ldy tmp2
|
L3: lda a:VDC_DATA_LO ; get character
|
||||||
lda VDC_DATA_LO ; get character
|
bit a:VDC_DATA_HI ; need to read high byte to advance VDC address
|
||||||
bit VDC_DATA_HI ; we need to "read" the highbyte to advance the address
|
|
||||||
iny
|
|
||||||
sty tmp2
|
|
||||||
and #<~$80 ; remove reverse bit
|
and #<~$80 ; remove reverse bit
|
||||||
|
|
||||||
ldy tmp1
|
|
||||||
sta (ptr1),y
|
sta (ptr1),y
|
||||||
iny
|
iny
|
||||||
bne L1
|
bne L2
|
||||||
inc ptr1+1
|
inc ptr1+1
|
||||||
L1: sty tmp1
|
|
||||||
|
|
||||||
L2: inc ptr2 ; count length
|
L2: inc ptr2 ; count length
|
||||||
bne L3
|
bne L3
|
||||||
@@ -58,6 +53,5 @@ L2: inc ptr2 ; count length
|
|||||||
bne L3
|
bne L3
|
||||||
|
|
||||||
txa ; terminate the string
|
txa ; terminate the string
|
||||||
ldy tmp1
|
|
||||||
sta (ptr1),y
|
sta (ptr1),y
|
||||||
rts
|
rts
|
||||||
|
|||||||
Reference in New Issue
Block a user