From deab71739a33c7f0a3ed041293096c91d1d7626c Mon Sep 17 00:00:00 2001 From: cuz Date: Thu, 21 Apr 2005 02:08:29 +0000 Subject: [PATCH] Bugfix from Oliver Schmidt git-svn-id: svn://svn.cc65.org/cc65/trunk@3480 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- libsrc/apple2/apple2.inc | 62 +++++++++++++++++++++------------------- libsrc/apple2/cputc.s | 43 ++++++++++++++-------------- 2 files changed, 55 insertions(+), 50 deletions(-) diff --git a/libsrc/apple2/apple2.inc b/libsrc/apple2/apple2.inc index e594be9e5..b6c5e400a 100644 --- a/libsrc/apple2/apple2.inc +++ b/libsrc/apple2/apple2.inc @@ -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 diff --git a/libsrc/apple2/cputc.s b/libsrc/apple2/cputc.s index cbf875b19..1b9373e5f 100644 --- a/libsrc/apple2/cputc.s +++ b/libsrc/apple2/cputc.s @@ -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 -- 2.39.5