fix cpeekc/cpeekcolor/cpeekrevers for atari 800

This commit is contained in:
mrdudz
2025-05-24 18:34:44 +02:00
parent 0d5e365ee3
commit 6628c4ff43
5 changed files with 109 additions and 44 deletions

35
libsrc/atari/cpeekc.s Normal file
View File

@@ -0,0 +1,35 @@
;
; 2016-02-28, Groepaz
; 2017-06-21, Greg King
;
; char cpeekc (void);
;
.export _cpeekc
.include "atari.inc"
_cpeekc:
lda OLDCHR ; get char under cursor
and #<~$80 ; remove reverse bit
;; convert internal screen code to AtSCII
tay
and #%01100000
asl a
asl a
rol a
rol a
tax
tya
eor intats,x
ldx #>$0000
rts
.rodata
intats: .byte %00100000 ; -> %001xxxxx
.byte %01100000 ; -> %010xxxxx
.byte %01000000 ; -> %000xxxxx
.byte %00000000 ; -> %011xxxxx

View File

@@ -1,35 +0,0 @@
.export _cpeekc
.import mul40
.importzp ptr4
.include "atari.inc"
.segment "CODE"
_cpeekc:
lda ROWCRS
jsr mul40 ; destroys tmp4
clc
adc SAVMSC ; add start of screen memory
sta ptr4
txa
adc SAVMSC+1
sta ptr4+1
ldy COLCRS
lda (ptr4),y ; get char
tax
;; convert to asc
;; FIXME: ugly hack here to make tetris fx work :=P
lda #' '
cpx #0
beq @l
lda #0
@l:
ldx #0
rts

View File

@@ -0,0 +1,8 @@
;
; 2017-06-03, Greg King
;
; unsigned char cpeekcolor (void);
;
.import return1
.export _cpeekcolor := return1 ; always COLOR_WHITE

View File

@@ -0,0 +1,18 @@
;
; 2017-06-21, Greg King
;
; unsigned char cpeekrevers (void);
;
.export _cpeekrevers
.include "atari.inc"
_cpeekrevers:
lda OLDCHR ; get char under cursor
and #$80 ; get reverse bit
asl a
tax ; ldx #>$0000
rol a ; return boolean value
rts