]> git.sur5r.net Git - cc65/commitdiff
New code from Oliver Schmidt
authorcuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Thu, 6 Jan 2005 12:26:47 +0000 (12:26 +0000)
committercuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Thu, 6 Jan 2005 12:26:47 +0000 (12:26 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@3351 b7a2c559-68d2-44c3-8de9-860c34a00d81

15 files changed:
include/apple2.h
libsrc/apple2/_scrsize.s
libsrc/apple2/chline.s
libsrc/apple2/cputc.s
libsrc/apple2/cvline.s
libsrc/apple2/dosdetect.s
libsrc/apple2/get_ostype.s
libsrc/apple2/systime.s
libsrc/apple2/wherex.s
libsrc/apple2/wherey.s
libsrc/apple2enh/_scrsize.s
libsrc/apple2enh/chline.s
libsrc/apple2enh/cputc.s
libsrc/apple2enh/cvline.s
libsrc/apple2enh/textframe.s

index dad0b16bdde6160f838640c45808f0791d1a7da5..175df71d8762fd64c2585ae39f5df6a681d0f671 100644 (file)
 #define CH_CROSS       '+'
 
 /* Return codes for get_ostype */
-#define APPLE_IIPLAIN  0x01            /* Plain Apple ][ */
-#define APPLE_IIPLUS   0x02            /* Apple ][+ */
-#define APPLE_IIIEM    0x03            /* Apple /// in emulation mode */
-#define APPLE_IIE      0x04            /* Apple //e */
-#define APPLE_IIEENH   0x05            /* Enhanced Apple //e */
-#define APPLE_IIECARD  0x06            /* Apple //e Option Card */
-#define APPLE_IIC      0x07            /* Apple //c */
-
+#define APPLE_UNKNOWN 0x00
+#define APPLE_II      0x10             /* Apple ][                     */
+#define APPLE_IIPLUS  0x11             /* Apple ][+                    */
+#define APPLE_IIIEM   0x20             /* Apple /// (emulation)        */
+#define APPLE_IIE     0x30             /* Apple //e                    */
+#define APPLE_IIEENH  0x31             /* Apple //e (enhanced)         */
+#define APPLE_IIECARD 0x40             /* Apple //e Option Card        */
+#define APPLE_IIC     0x50             /* Apple //c                    */
+#define APPLE_IIC35   0x51             /* Apple //c (3.5 ROM)          */
+#define APPLE_IICEXP  0x53             /* Apple //c (Mem. Exp.)        */
+#define APPLE_IICREV  0x54             /* Apple //c (Rev. Mem. Exp.)   */
+#define APPLE_IICPLUS 0x55             /* Apple //c Plus               */
+#define        APPLE_IIGS    0x80              /* Apple IIgs                   */
+#define        APPLE_IIGS1   0x81              /* Apple IIgs (ROM 1)           */
+#define        APPLE_IIGS3   0x83              /* Apple IIgs (ROM 3)           */
 
 
 /*****************************************************************************/
index 269f12a27f90522683ab464ab0c630352543a9e3..29d54edaf753b4b913bac9a827170d31e369da60 100644 (file)
@@ -6,10 +6,7 @@
 
        .export         screensize
 
-.proc   screensize
-
+screensize:
        ldx     #40
        ldy     #24
         rts
-
-.endproc
index 83b03a5045051e439791e4996bccc6fa17a14478..ab07991b0eceb22cc2e71fc6b3681ee3896f856f 100644 (file)
@@ -20,10 +20,10 @@ _chline:
 
 chlinedirect:
        cmp     #$00            ; Is the length zero?
-       beq     L9              ; Jump if done
+       beq     done            ; Jump if done
        sta     tmp1
-L1:    txa                     ; Screen code
+:      txa                     ; Screen code
        jsr     cputdirect      ; Direct output
        dec     tmp1
-       bne     L1
-L9:    rts
+       bne     :-
+done:  rts
index 3e70a8fcb54f87207e088f34dff11d1ec234b877..76ca7769c5f158cf6b5620c36fcb8535864a75cf 100644 (file)
@@ -31,16 +31,12 @@ _cputcxy:
 
 _cputc:
        cmp     #$0D            ; Test for \r = carrage return
-       bne     L1
-       lda     #$00            ; Goto left edge of screen
-       sta     CH
-       rts                     ; That's all we do
-L1:
+       beq     left
        cmp     #$0A            ; Test for \n = line feed
        beq     newline
        ora     #$80            ; Turn on high bit
        cmp     #$E0            ; Test for lowercase
-       bmi     cputdirect
+       bcc     cputdirect
        and     #$DF            ; Convert to uppercase
 
 cputdirect:
@@ -48,33 +44,27 @@ cputdirect:
        inc     CH              ; Bump to next column
        lda     CH
        cmp     #40
-       bne     return
-       lda     #$00
+       bne     done
+left:  lda     #$00            ; Goto left edge of screen
        sta     CH
-return:        
-       rts
-
-putchar:       
-       and     INVFLG          ; Apply normal, inverse, flash
-       ldy     CH
-       sta     (BASL),Y
-       rts
+done:  rts
 
 newline:
-       lda     CH
-       pha
        inc     CV
        lda     CV
        cmp     #24
-       bne     L2
+       bne     :+
        lda     #$00
        sta     CV
-L2:
-       jsr     BASCALC
-       pla
-       sta     CH
+:      jsr     BASCALC
        rts
                
+putchar:       
+       and     INVFLG          ; Apply normal, inverse, flash
+       ldy     CH
+       sta     (BASL),Y
+       rts
+
 _gotoxy:
        sta     CV              ; Store Y
        jsr     BASCALC
index eeca3807a0b0edd6e45ddb783f4e40275885b0ba..044e73d58f5ca47ebc2a91176680f9d72ff99685 100644 (file)
@@ -20,11 +20,11 @@ _cvline:
 
 cvlinedirect:
        cmp     #$00            ; Is the length zero?
-       beq     L9              ; Jump if done
+       beq     done            ; Jump if done
        sta     tmp1
-L1:    txa                     ; Screen code
+:      txa                     ; Screen code
        jsr     putchar         ; Write, no cursor advance
        jsr     newline         ; Advance cursor to next line
        dec     tmp1
-       bne     L1
-L9:    rts
+       bne     :-
+done:  rts
index bf4af58ad44953d255bbfcf597bb093eac1df74e..9b3731ac56972d3e439be5fa467798d5ab2912cf 100644 (file)
@@ -19,7 +19,6 @@
 ; ProDOS 2.0.2  $22
 ; ProDOS 2.0.3  $23
 
-
        .constructor    initdostype
        .export         __dos_type
 
@@ -36,9 +35,9 @@ initdostype:
        bne     done
        lda     $BFFF           ; ProDOS KVERSION
        cmp     #$10
-       bpl     L1
+       bcs     :+
        ora     #$10            ; Make high nibble match major version
-L1:    sta     __dos_type
+:      sta     __dos_type
 done:  rts
 
        .bss
index d23254e190c53160813e69144ebdfddd32543d71..9523d8b5e45e33f0090d27787d5aa8886ae2086d 100644 (file)
@@ -1,52 +1,70 @@
 ;
-; Stefan Haubenthal, Jul 12 2003
+; Oliver Schmidt, 04.01.2005
 ;
 ; unsigned char get_ostype(void)
 ;
 
        .constructor    initostype
-       .export         _get_ostype, ostype
+       .export         _get_ostype
 
 ; Identify machine according to:
 ; "Apple II Miscellaneous TechNote #7: Apple II Family Identification"
 
 initostype:
-       ldx     #$01            ; Start out with a plain Apple ][
-       lda     $FBB3
-       cmp     #$38
-       beq     identified
-       inx                     ; It's at least an Apple ][+
-       cmp     #$EA
-       bne     apple2e
-       lda     $FB1E
-       cmp     #$AD
-       beq     identified
-       inx                     ; It's an Apple /// in emulation mode
-       bne     identified      ; Branch always
-apple2e:
-       ldx     #$04            ; It's at least an Apple //e
-       lda     $FBC0
-       cmp     #$EA
-       beq     identified
-       inx                     ; It's at least an enhanced Apple //e
-       cmp     #$E0
-       bne     apple2c
-       lda     $FBDD
-       cmp     #$02
-       bne     identified
-       inx                     ; It's an Apple //e Option Card
-       bne     identified      ; Branch always
-apple2c:
-       ldx     #$07            ; It's an Apple //c
-identified:
-       stx     ostype
+       sec
+       jsr     $FE1F
+       bcs     nogs
+       tya
+       ora     #$80
+done:  sta     ostype
        rts
+nogs:  ldx     #$FF
+next:  inx
+       lda     value,x
+       ldy     index,x
+       beq     done            ; $00 is no valid index
+       cmp     $FB00,y
+       beq     next
+:      inx
+       ldy     index,x
+       bne     :-
+       beq     next            ; Branch always
 
 _get_ostype:
        lda     ostype
        ldx     #$00
        rts
 
+
+       .rodata
+
+index: .byte   $B3, $00                ; Apple ][
+       .byte   $B3, $1E, $00           ; Apple ][+
+       .byte   $B3, $1E, $00           ; Apple /// (emulation)
+       .byte   $B3, $C0, $00           ; Apple //e
+       .byte   $B3, $C0, $DD, $BE, $00 ; Apple //e Option Card
+       .byte   $B3, $C0, $00           ; Apple //e (enhanced)
+       .byte   $B3, $C0, $BF, $00      ; Apple //c
+       .byte   $B3, $C0, $BF, $00      ; Apple //c (3.5 ROM)
+       .byte   $B3, $C0, $BF, $00      ; Apple //c (Mem. Exp.)
+       .byte   $B3, $C0, $BF, $00      ; Apple //c (Rev. Mem. Exp.)
+       .byte   $B3, $C0, $BF, $00      ; Apple //c Plus
+       .byte   $00
+
+value: .byte   $38, $10                ; Apple ][
+       .byte   $EA, $AD, $11           ; Apple ][+
+       .byte   $EA, $8A, $20           ; Apple /// (emulation)
+       .byte   $06, $EA, $30           ; Apple //e
+       .byte   $06, $E0, $02, $00, $40 ; Apple //e Option Card
+       .byte   $06, $E0, $31           ; Apple //e (enhanced)
+       .byte   $06, $00, $FF, $50      ; Apple //c
+       .byte   $06, $00, $00, $51      ; Apple //c (3.5 ROM)
+       .byte   $06, $00, $03, $53      ; Apple //c (Mem. Exp.)
+       .byte   $06, $00, $04, $54      ; Apple //c (Rev. Mem. Exp.)
+       .byte   $06, $00, $05, $55      ; Apple //c Plus
+       .byte   $00
+
+
        .bss
 
 ostype:        .res    1
index 1d039e80e0ac43fc79e4baa583a12bc17b8894a3..5a90e3e55dd8baf7b02ab1557f2f8caab7b4916a 100644 (file)
 
         .importzp       sreg
 
-.code
-
-.proc   __systime
-
+__systime:
         lda     #$FF
         tax
         sta     sreg
         sta     sreg+1
         rts                     ; Return -1
-
-.endproc
-
-
index cb9be3f0749f7ff39062f3034b79a0a877cc0382..6cf1405313971722099ead476b01c3a85468b028 100644 (file)
@@ -7,11 +7,7 @@
 
        .include        "apple2.inc"
 
-.proc   _wherex
-
+_wherex:
        lda     CH
         ldx     #$00
        rts
-
-.endproc
-
index a8c341c4838b02763a7eb847c879aceeb25efb88..30612cc776a7695a0a3ab41aa60936e3bcfaf541 100644 (file)
@@ -7,11 +7,7 @@
 
        .include        "apple2.inc"
 
-.proc   _wherey
-
+_wherey:
        lda     CV
         ldx     #$00
        rts
-
-.endproc
-
index d3e580807c76f1b97fb6cc3f6c37fb4f39fa12b9..1b020c344467eac7e02fceab6da81790bb7d43e3 100644 (file)
@@ -8,11 +8,7 @@
 
         .include        "../apple2/apple2.inc"
 
-.proc   screensize
-
+screensize:
        ldx     WNDWDTH
        ldy     #24
         rts
-
-.endproc
-
index 165dffb20331b7aee86a8d143da4b1768d86f9b3..db5cde9c99a1cfb957bcc2f293a5d59f6003a543 100644 (file)
@@ -26,13 +26,13 @@ _chline:
 
 chlinedirect:
        cmp     #$00            ; Is the length zero?
-       beq     L9              ; Jump if done
+       beq     done            ; Jump if done
        sta     tmp1
-L1:    txa                     ; Screen code
+:      txa                     ; Screen code
        jsr     cputdirect      ; Direct output
        dec     tmp1
-       bne     L1
-L9:    rts
+       bne     :-
+done:  rts
 
 
 
index 5cfdc3a14fd1f9fb00c10e9f4cafbc50e77c8a6a..c82a67d5b68962df218731a2469db7994868bdfd 100644 (file)
@@ -14,7 +14,6 @@
 
        .include        "../apple2/apple2.inc"
 
-
 initconio:
        lda     #$FF            ; Normal character display mode
        sta     INVFLG
@@ -33,10 +32,7 @@ _cputcxy:
 
 _cputc:
        cmp     #$0D            ; Test for \r = carrage return
-       bne     L1
-       stz     CH              ; Goto left edge of screen
-       rts                     ; That's all we do
-L1:
+       beq     left
        cmp     #$0A            ; Test for \n = line feed
        beq     newline
        ora     #$80            ; Turn on high bit
@@ -46,9 +42,18 @@ cputdirect:
        inc     CH              ; Bump to next column
        lda     CH
        cmp     WNDWDTH
-       bne     return
-       stz     CH
-return:
+       bne     done
+left:  stz     CH              ; Goto left edge of screen
+done:  rts
+
+newline:
+       inc     CV
+       lda     CV
+       cmp     #24
+       bne     :+
+       lda     #$00
+       sta     CV
+:      jsr     BASCALC
        rts
 
 putchar:
@@ -56,13 +61,11 @@ putchar:
        cpy     #$FF            ; Normal character display mode?
        beq     put
        cmp     #$E0            ; Lowercase?
-       bmi     mask
+       bcc     mask
        and     #$7F            ; Inverse lowercase
        bra     put
-mask:
-       and     INVFLG          ; Apply normal, inverse, flash
-put:
-       ldy     CH
+mask:  and     INVFLG          ; Apply normal, inverse, flash
+put:   ldy     CH
        bit     RD80VID         ; In 80 column mode?
        bpl     col40           ; No, in 40 cols
        pha
@@ -75,23 +78,7 @@ put:
        sta     (BASL),Y
        bit     LOWSCR
        rts
-col40:
-       sta     (BASL),Y
-       rts
-
-newline:
-       lda     CH
-       pha
-       inc     CV
-       lda     CV
-       cmp     #24
-       bne     L2
-       lda     #$00
-       sta     CV
-L2:
-       jsr     BASCALC
-       pla
-       sta     CH
+col40: sta     (BASL),Y
        rts
 
 _gotoxy:
index 7357242cac74d1162cc17d0d458ec5127162c06f..ff9704a1541b47c274cb07851241766bfecbbeb3 100644 (file)
@@ -20,11 +20,11 @@ _cvline:
 
 cvlinedirect:
        cmp     #$00            ; Is the length zero?
-       beq     L9              ; Jump if done
+       beq     done            ; Jump if done
        sta     tmp1
-L1:    txa                     ; Screen code
+:      txa                     ; Screen code
        jsr     putchar         ; Write, no cursor advance
        jsr     newline         ; Advance cursor to next line
        dec     tmp1
-       bne     L1
-L9:    rts
+       bne     :-
+done:  rts
index 2020f6451b3a41caacff348b93fdc84e4d3303be..9b36dc73b373bfd516b0bbc50cff427f38294245 100644 (file)
@@ -47,15 +47,15 @@ noxy:       sta     XORIGIN
        plx                     ; Restore index
 loop:  lda     XOFFS,x
        clc
-       bpl     L1              ; Relative to left edge?
+       bpl     :+              ; Relative to left edge?
        adc     WIDTH
-L1:    adc     XORIGIN
+:      adc     XORIGIN
        jsr     pusha
        lda     YOFFS,x
        clc
-       bpl     L2              ; Relative to top?
+       bpl     :+              ; Relative to top?
        adc     HEIGHT
-L2:    adc     YORIGIN
+:      adc     YORIGIN
        jsr     _gotoxy         ; Call this one, will pop params
        txa
        tay