mirror of
https://github.com/cc65/cc65.git
synced 2024-11-19 21:32:19 +00:00
169 lines
2.7 KiB
ArmAsm
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
|
||
|
|