Fixed several problems with the new output routines
git-svn-id: svn://svn.cc65.org/cc65/trunk@1823 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
@@ -39,11 +39,13 @@ FKEY_TEXT = $100A ; Function key texts
|
|||||||
; Kernal routines
|
; Kernal routines
|
||||||
|
|
||||||
; Direct entries
|
; Direct entries
|
||||||
|
CURS_SET = $CD57
|
||||||
CURS_ON = $CD6F
|
CURS_ON = $CD6F
|
||||||
CURS_OFF = $CD9F
|
CURS_OFF = $CD9F
|
||||||
CLRSCR = $C142
|
CLRSCR = $C142
|
||||||
KBDREAD = $C006
|
KBDREAD = $C006
|
||||||
PRINT = $C00C
|
NEWLINE = $C363
|
||||||
|
PRINT = $C322
|
||||||
|
|
||||||
; Extended jump table
|
; Extended jump table
|
||||||
SETBNK = $FF68
|
SETBNK = $FF68
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ _cgetc: lda KEY_COUNT ; Get number of characters
|
|||||||
|
|
||||||
lda cursor
|
lda cursor
|
||||||
beq L1
|
beq L1
|
||||||
|
jsr CURS_SET ; Set cursor to current position
|
||||||
jsr CURS_ON
|
jsr CURS_ON
|
||||||
jmp L2
|
jmp L2
|
||||||
L1: lda #$01
|
L1: lda #$01
|
||||||
|
|||||||
@@ -1,43 +1,73 @@
|
|||||||
;
|
;
|
||||||
; Ullrich von Bassewitz, 06.08.1998
|
; Ullrich von Bassewitz, 2000-08-06, 2002-12-21
|
||||||
|
; Using lots of code from MagerValp, MagerValp@cling.gu.se
|
||||||
;
|
;
|
||||||
; void cputcxy (unsigned char x, unsigned char y, char c);
|
; void cputcxy (unsigned char x, unsigned char y, char c);
|
||||||
; void cputc (char c);
|
; void cputc (char c);
|
||||||
;
|
;
|
||||||
|
|
||||||
.export _cputcxy, _cputc, cputdirect, putchar
|
.export _cputcxy, _cputc, cputdirect, putchar
|
||||||
.export newline, plot
|
.export newline, plot
|
||||||
.constructor initcputc
|
.constructor initcputc
|
||||||
.destructor donecputc
|
.destructor donecputc
|
||||||
.import popa, _gotoxy
|
.import popa, _gotoxy
|
||||||
.import PLOT
|
.import PLOT
|
||||||
|
|
||||||
.include "c128.inc"
|
.include "c128.inc"
|
||||||
|
|
||||||
|
cputdirect = PRINT
|
||||||
|
newline = NEWLINE
|
||||||
|
|
||||||
|
|
||||||
_cputcxy:
|
_cputcxy:
|
||||||
pha ; Save C
|
pha ; Save C
|
||||||
jsr popa ; Get Y
|
jsr popa ; Get Y
|
||||||
jsr _gotoxy ; Set cursor, drop x
|
jsr _gotoxy ; Set cursor, drop x
|
||||||
pla ; Restore C
|
pla ; Restore C
|
||||||
jmp PRINT
|
|
||||||
|
|
||||||
; Plot a character - also used as internal function
|
; Plot a character - also used as internal function
|
||||||
|
|
||||||
_cputc = PRINT ; let the kernal handle it
|
_cputc: cmp #$0A ; CR?
|
||||||
|
beq cr ; Output a cr
|
||||||
|
|
||||||
cputdirect = $c33b
|
cmp #$0D ; LF?
|
||||||
|
bne L2
|
||||||
|
jmp NEWLINE ; Update cursor position
|
||||||
|
|
||||||
newline:
|
; Printable char of some sort
|
||||||
lda #17
|
|
||||||
jmp PRINT
|
L2: cmp #' '
|
||||||
|
bcc L4 ; Other control char
|
||||||
|
tay
|
||||||
|
bmi L5
|
||||||
|
cmp #$60
|
||||||
|
bcc L3
|
||||||
|
and #$DF
|
||||||
|
bne L4 ; Branch always
|
||||||
|
L3: and #$3F
|
||||||
|
L4: jmp PRINT ; Output character
|
||||||
|
|
||||||
|
; Handle character if high bit set
|
||||||
|
|
||||||
|
L5: and #$7F
|
||||||
|
cmp #$7E ; PI?
|
||||||
|
bne L6
|
||||||
|
lda #$5E ; Load screen code for PI
|
||||||
|
bne L4
|
||||||
|
L6: ora #$40
|
||||||
|
bne L4 ; Branch always
|
||||||
|
|
||||||
|
; Carriage return
|
||||||
|
|
||||||
|
cr: lda #0
|
||||||
|
sta CURS_X
|
||||||
|
|
||||||
; Set cursor position, calculate RAM pointers
|
; Set cursor position, calculate RAM pointers
|
||||||
|
|
||||||
plot: ldy CURS_X
|
plot: ldy CURS_X
|
||||||
ldx CURS_Y
|
ldx CURS_Y
|
||||||
clc
|
clc
|
||||||
jmp PLOT ; Set the new cursor
|
jmp PLOT ; Set the new cursor
|
||||||
|
|
||||||
; Write one character to the screen without doing anything else, return X
|
; Write one character to the screen without doing anything else, return X
|
||||||
; position in Y
|
; position in Y
|
||||||
|
|||||||
Reference in New Issue
Block a user