mirror of
https://github.com/cc65/cc65.git
synced 2025-01-13 09:31:53 +00:00
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:
parent
deca5a5fba
commit
ea4d2f4e6f
@ -39,11 +39,13 @@ FKEY_TEXT = $100A ; Function key texts
|
||||
; Kernal routines
|
||||
|
||||
; Direct entries
|
||||
CURS_SET = $CD57
|
||||
CURS_ON = $CD6F
|
||||
CURS_OFF = $CD9F
|
||||
CLRSCR = $C142
|
||||
KBDREAD = $C006
|
||||
PRINT = $C00C
|
||||
NEWLINE = $C363
|
||||
PRINT = $C322
|
||||
|
||||
; Extended jump table
|
||||
SETBNK = $FF68
|
||||
|
@ -21,6 +21,7 @@ _cgetc: lda KEY_COUNT ; Get number of characters
|
||||
|
||||
lda cursor
|
||||
beq L1
|
||||
jsr CURS_SET ; Set cursor to current position
|
||||
jsr CURS_ON
|
||||
jmp L2
|
||||
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 cputc (char c);
|
||||
;
|
||||
|
||||
.export _cputcxy, _cputc, cputdirect, putchar
|
||||
.export newline, plot
|
||||
.export _cputcxy, _cputc, cputdirect, putchar
|
||||
.export newline, plot
|
||||
.constructor initcputc
|
||||
.destructor donecputc
|
||||
.import popa, _gotoxy
|
||||
.import popa, _gotoxy
|
||||
.import PLOT
|
||||
|
||||
.include "c128.inc"
|
||||
.include "c128.inc"
|
||||
|
||||
cputdirect = PRINT
|
||||
newline = NEWLINE
|
||||
|
||||
|
||||
_cputcxy:
|
||||
pha ; Save C
|
||||
jsr popa ; Get Y
|
||||
jsr _gotoxy ; Set cursor, drop x
|
||||
pla ; Restore C
|
||||
jmp PRINT
|
||||
pha ; Save C
|
||||
jsr popa ; Get Y
|
||||
jsr _gotoxy ; Set cursor, drop x
|
||||
pla ; Restore C
|
||||
|
||||
; 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:
|
||||
lda #17
|
||||
jmp PRINT
|
||||
; Printable char of some sort
|
||||
|
||||
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
|
||||
|
||||
plot: ldy CURS_X
|
||||
ldx CURS_Y
|
||||
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
|
||||
; position in Y
|
||||
|
Loading…
x
Reference in New Issue
Block a user