]> git.sur5r.net Git - cc65/commitdiff
Bugfix from Oliver Schmidt
authorcuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Thu, 21 Apr 2005 02:08:29 +0000 (02:08 +0000)
committercuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Thu, 21 Apr 2005 02:08:29 +0000 (02:08 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@3480 b7a2c559-68d2-44c3-8de9-860c34a00d81

libsrc/apple2/apple2.inc
libsrc/apple2/cputc.s

index e594be9e51215c23a10b126e131b730759e7f17c..b6c5e400af2006003576f8f925fd51c4f046a578 100644 (file)
@@ -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
index cbf875b19589feb08a4fb2971450d82b12c70a08..1b9373e5fe17cf22c5416e2717d8cd35c36bdb48 100644 (file)
@@ -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