;
-; Mark Keates, Christian Groessler
+; Mark Keates, Christian Groessler, Piotr Fusik
;
; void cputcxy (unsigned char x, unsigned char y, char c);
; void cputc (char c);
.export _cputcxy, _cputc
.export plot, cputdirect, putchar
- .import gotoxy, mul40
+ .import gotoxy, __mul40
.importzp tmp4,ptr4
.import _revflag,setcursor
cmp #ATEOL ; Atari-EOL?
beq newline
- tay
- rol a
- rol a
- rol a
- rol a
- and #3
- tax
- tya
- and #$9f
- ora ataint,x
+ asl a ; shift out the inverse bit
+ adc #$c0 ; grab the inverse bit; convert ATASCII to screen code
+ bpl codeok ; screen code ok?
+ eor #$40 ; needs correction
+codeok: lsr a ; undo the shift
+ bcc cputdirect
+ eor #$80 ; restore the inverse bit
cputdirect: ; accepts screen code
jsr putchar
sta (OLDADR),y
lda ROWCRS
- jsr mul40 ; destroys tmp4
- clc
+ jsr __mul40 ; destroys tmp4, carry is cleared
adc SAVMSC ; add start of screen memory
sta ptr4
txa
ldy COLCRS
sta (ptr4),y
jmp setcursor
-
- .rodata
-ataint: .byte 64,0,32,96