mirror of
https://github.com/cc65/cc65.git
synced 2024-12-24 11:31:31 +00:00
Bugfix from Oliver Schmidt
git-svn-id: svn://svn.cc65.org/cc65/trunk@3480 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
parent
c0f6dea213
commit
deab71739a
@ -2,47 +2,51 @@
|
||||
;-----------------------------------------------------------------------------
|
||||
; Zero page stuff
|
||||
|
||||
WNDLFT := $20 ; Text window left
|
||||
WNDWDTH := $21 ; Text window width
|
||||
WNDTOP := $22 ; Text window top
|
||||
WNDBTM := $23 ; Text window bottom+1
|
||||
CH := $24 ; Cursor horizontal position
|
||||
CV := $25 ; Cursor vertical position
|
||||
BASL := $28 ; Text base address low
|
||||
BASH := $29 ; Text base address high
|
||||
INVFLG := $32 ; Normal/inverse(/flash)
|
||||
PROMPT := $33 ; Used by GETLN
|
||||
RNDL := $4E ; Random counter low
|
||||
RNDH := $4F ; Random counter high
|
||||
HIMEM := $73 ; Highest available memory address+1
|
||||
WNDLFT := $20 ; Text window left
|
||||
WNDWDTH := $21 ; Text window width
|
||||
WNDTOP := $22 ; Text window top
|
||||
WNDBTM := $23 ; Text window bottom+1
|
||||
CH := $24 ; Cursor horizontal position
|
||||
CV := $25 ; Cursor vertical position
|
||||
BASL := $28 ; Text base address low
|
||||
BASH := $29 ; Text base address high
|
||||
INVFLG := $32 ; Normal/inverse(/flash)
|
||||
PROMPT := $33 ; Used by GETLN
|
||||
RNDL := $4E ; Random counter low
|
||||
RNDH := $4F ; Random counter high
|
||||
HIMEM := $73 ; Highest available memory address+1
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
; Vectors
|
||||
|
||||
DOSWARM := $03D0 ; DOS warmstart vector
|
||||
BRKVec := $03F0 ; Break vector
|
||||
SOFTEV := $03F2 ; Vector for warm start
|
||||
PWREDUP := $03F4 ; This must be = EOR #$A5 of SOFTEV+1
|
||||
DOSWARM := $03D0 ; DOS warmstart vector
|
||||
BRKVec := $03F0 ; Break vector
|
||||
SOFTEV := $03F2 ; Vector for warm start
|
||||
PWREDUP := $03F4 ; This must be = EOR #$A5 of SOFTEV+1
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
; Hardware
|
||||
|
||||
; Keyboard input
|
||||
KBD := $C000 ; Read keyboard
|
||||
KBDSTRB := $C010 ; Clear keyboard strobe
|
||||
KBD := $C000 ; Read keyboard
|
||||
KBDSTRB := $C010 ; Clear keyboard strobe
|
||||
|
||||
; 80 column card switches
|
||||
CLRALTCHAR := $C00E ; Normal Apple II char set
|
||||
SETALTCHAR := $C00F ; Norm/inv LC, no flash
|
||||
ALTCHARSET := $C01E ; >127 if alt charset switched in
|
||||
RD80VID := $C01F ; >127 if 80 column video enabled
|
||||
CLR80COL:= $C000 ; Disable 80 column store
|
||||
SET80COL:= $C001 ; Enable 80 column store
|
||||
CLRALTCHAR := $C00E ; Normal Apple II char set
|
||||
SETALTCHAR := $C00F ; Norm/inv LC, no flash
|
||||
ALTCHARSET := $C01E ; >127 if alt charset switched in
|
||||
RD80VID := $C01F ; >127 if 80 column video enabled
|
||||
|
||||
; Video soft switches
|
||||
MIXCLR := $C052 ; Disable 4 lines of text
|
||||
MIXSET := $C053 ; Enable 4 lines of text
|
||||
LOWSCR := $C054 ; Page 1
|
||||
HISCR := $C055 ; Page 2
|
||||
MIXCLR := $C052 ; Disable 4 lines of text
|
||||
MIXSET := $C053 ; Enable 4 lines of text
|
||||
LOWSCR := $C054 ; Page 1
|
||||
HISCR := $C055 ; Page 2
|
||||
LORES := $C056 ; Lores graphics
|
||||
HIRES := $C057 ; Hires graphics
|
||||
|
||||
; Game controller
|
||||
BUTN0 := $C061 ; Open-Apple Key
|
||||
BUTN1 := $C062 ; Closed-Apple Key
|
||||
BUTN0 := $C061 ; Open-Apple Key
|
||||
BUTN1 := $C062 ; Closed-Apple Key
|
||||
|
@ -10,7 +10,7 @@
|
||||
.endif
|
||||
.export _cputcxy, _cputc
|
||||
.export cputdirect, newline, putchar
|
||||
.import popa, _gotoxy, VTABZ
|
||||
.import popa, _gotoxy, VTABZ
|
||||
|
||||
.include "apple2.inc"
|
||||
|
||||
@ -18,7 +18,8 @@
|
||||
|
||||
.ifdef __APPLE2ENH__
|
||||
initconio:
|
||||
sta SETALTCHAR ; Switch in alternate charset
|
||||
sta SETALTCHAR ; Switch in alternate charset
|
||||
bit LORES ; Limit SET80COL-HISCR to text
|
||||
rts
|
||||
.endif
|
||||
|
||||
@ -28,65 +29,65 @@ initconio:
|
||||
|
||||
_cputcxy:
|
||||
pha ; Save C
|
||||
jsr popa ; Get Y
|
||||
jsr popa ; Get Y
|
||||
jsr _gotoxy
|
||||
pla ; Restore C
|
||||
|
||||
_cputc:
|
||||
cmp #$0D ; Test for \r = carrage return
|
||||
cmp #$0D ; Test for \r = carrage return
|
||||
beq left
|
||||
cmp #$0A ; Test for \n = line feed
|
||||
cmp #$0A ; Test for \n = line feed
|
||||
beq newline
|
||||
ora #$80 ; Turn on high bit
|
||||
ora #$80 ; Turn on high bit
|
||||
.ifndef __APPLE2ENH__
|
||||
cmp #$E0 ; Test for lowercase
|
||||
cmp #$E0 ; Test for lowercase
|
||||
bcc cputdirect
|
||||
and #$DF ; Convert to uppercase
|
||||
and #$DF ; Convert to uppercase
|
||||
.endif
|
||||
|
||||
cputdirect:
|
||||
jsr putchar
|
||||
inc CH ; Bump to next column
|
||||
inc CH ; Bump to next column
|
||||
lda CH
|
||||
cmp WNDWDTH
|
||||
bcc :+
|
||||
left: lda #$00 ; Goto left edge of screen
|
||||
left: lda #$00 ; Goto left edge of screen
|
||||
sta CH
|
||||
: rts
|
||||
|
||||
newline:
|
||||
inc CV ; Bump to next line
|
||||
inc CV ; Bump to next line
|
||||
lda CV
|
||||
cmp WNDBTM
|
||||
bcc :+
|
||||
lda WNDTOP ; Goto top of screen
|
||||
lda WNDTOP ; Goto top of screen
|
||||
sta CV
|
||||
: jmp VTABZ
|
||||
|
||||
putchar:
|
||||
.ifdef __APPLE2ENH__
|
||||
ldy INVFLG
|
||||
cpy #$FF ; Normal character display mode?
|
||||
cpy #$FF ; Normal character display mode?
|
||||
beq put
|
||||
cmp #$E0 ; Lowercase?
|
||||
cmp #$E0 ; Lowercase?
|
||||
bcc mask
|
||||
and #$7F ; Inverse lowercase
|
||||
and #$7F ; Inverse lowercase
|
||||
bra put
|
||||
.endif
|
||||
mask: and INVFLG ; Apply normal, inverse, flash
|
||||
mask: and INVFLG ; Apply normal, inverse, flash
|
||||
put: ldy CH
|
||||
.ifdef __APPLE2ENH__
|
||||
bit RD80VID ; In 80 column mode?
|
||||
bpl col40 ; No, in 40 cols
|
||||
bit RD80VID ; In 80 column mode?
|
||||
bpl col40 ; No, in 40 cols
|
||||
pha
|
||||
tya
|
||||
lsr ; Div by 2
|
||||
tay
|
||||
pla
|
||||
bcs col40 ; Odd cols go in 40 col memory
|
||||
bit HISCR
|
||||
bcs col40 ; Odd cols go in 40 col memory
|
||||
bit HISCR ; Assume SET80COL
|
||||
sta (BASL),Y
|
||||
bit LOWSCR
|
||||
bit LOWSCR ; Assume SET80COL
|
||||
rts
|
||||
.endif
|
||||
col40: sta (BASL),Y
|
||||
|
Loading…
Reference in New Issue
Block a user