]> git.sur5r.net Git - cc65/blobdiff - libsrc/cbm610/cpeekc.s
cbm stuff from greggs pull request
[cc65] / libsrc / cbm610 / cpeekc.s
diff --git a/libsrc/cbm610/cpeekc.s b/libsrc/cbm610/cpeekc.s
new file mode 100644 (file)
index 0000000..295d096
--- /dev/null
@@ -0,0 +1,45 @@
+;
+; 2016-02-28, Groepaz
+; 2017-06-19, Greg King
+;
+; char cpeekc (void);
+;
+
+        .export         _cpeekc
+
+        .import         CURS_X: zp, CharPtr: zp
+
+        .include        "cbm610.inc"
+
+
+_cpeekc:
+        ldx     IndReg
+        ldy     #$0F
+        sty     IndReg
+
+        ldy     CURS_X
+        lda     (CharPtr),y     ; get char from system bank
+        stx     IndReg
+        ldx     #>$0000
+        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
+        bcs     @sk1            ;(bge)
+        ora     #$40
+        rts
+
+@sk1:   cmp     #$40
+        bcc     @end            ;(blt)
+        cmp     #$60
+        bcc     @sk2            ;(blt)
+        ;sec
+        adc     #$20 - $01
+@sk2:   ;clc                    ; both above cmp and adc clear carry flag
+        adc     #$20
+@end:   rts