1
0
mirror of https://github.com/cc65/cc65.git synced 2024-06-07 07:29:33 +00:00
cc65/libsrc/c64/soft80_cpeekc.s
2017-12-28 01:58:03 +01:00

169 lines
2.7 KiB
ArmAsm

.export soft80_cpeekc, soft80_cpeekchar
.include "c64.inc"
.include "soft80.inc"
.macpack longbranch
.segment "CODE"
soft80_cpeekc:
jsr soft80_cpeekchar
ldx #0
rts
soft80_cpeekchar:
sei
;;dec $01 ;; assumed = $36
;;dec $01 ;; assumed = $36
lda #$34
sta $01
lda CURS_X
and #$01
jne @l1a
; test non-inverted character (left side)
ldx #0
@l2aa:
ldy #0
;; stx $d020
.repeat 8,line
;; jsr readdirect
lda (SCREEN_PTR),y
and #$f0
; sta $e100,y
cmp soft80_hi_charset+(line*$80),x
; cmp #0
bne @l2b
.if (line < 7)
iny
.endif
.endrepeat
@backok:
;inc $d020
; inc $01
; inc $01
lda #$36
sta $01
cli
txa ; return char in A
; sec
; sbc #$20
ldx #$00 ; revers flag
;inc $d020
rts
@l2b:
;jmp *
inx
cpx #$80
jne @l2aa
; test inverted character (left side)
ldx #0
@l2aa2:
ldy #0
;; stx $d020
.repeat 8,line
;; jsr readdirect
lda (SCREEN_PTR),y
and #$f0
eor #$f0
cmp soft80_hi_charset+(line*$80),x
; cmp #0
bne @l2b2
.if (line < 7)
iny
.endif
.endrepeat
@backokrevers:
;inc $d020
; inc $01
; inc $01
lda #$36
sta $01
cli
txa ; return char in A
; sec
; sbc #$20
ldx #$01 ; revers flag
;inc $d020
rts
@l2b2:
inx
cpx #$80
jne @l2aa2
@backerr:
;inc $d020
;; inc $01
;; inc $01
lda #$36
sta $01
cli
ldx #0
txa
rts
; test non-inverted character (right side)
@l1a:
ldx #0
@l1aa:
ldy #0
.repeat 8,line
;; jsr readdirect
lda (SCREEN_PTR),y
and #$0f
eor soft80_lo_charset+(line*$80),x
bne @l2bb
.if line < 7
iny
.endif
.endrepeat
jmp @backok
@l2bb:
inx
cpx #$80
bne @l1aa
; test inverted character (right side)
ldx #0
@l1aa2:
ldy #0
.repeat 8,line
;; jsr readdirect
lda (SCREEN_PTR),y
and #$0f
eor #$0f
eor soft80_lo_charset+(line*$80),x
bne @l2bb2
.if line < 7
iny
.endif
.endrepeat
jmp @backokrevers
@l2bb2:
inx
cpx #$80
bne @l1aa2
jmp @backerr