]> git.sur5r.net Git - cc65/commitdiff
New version from Oliver Schmidt
authorcuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Sat, 26 Mar 2005 17:03:30 +0000 (17:03 +0000)
committercuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Sat, 26 Mar 2005 17:03:30 +0000 (17:03 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@3421 b7a2c559-68d2-44c3-8de9-860c34a00d81

27 files changed:
libsrc/apple2/Makefile
libsrc/apple2/_scrsize.s
libsrc/apple2/apple2.inc
libsrc/apple2/cclear.s
libsrc/apple2/cgetc.s
libsrc/apple2/chline.s
libsrc/apple2/clrscr.s
libsrc/apple2/cputc.s
libsrc/apple2/cvline.s
libsrc/apple2/dosdetect.s
libsrc/apple2/get_ostype.s
libsrc/apple2/getenv.s
libsrc/apple2/joy_stddrv.s
libsrc/apple2/kbhit.s
libsrc/apple2/revers.s
libsrc/apple2/rvtabz.s [new file with mode: 0644]
libsrc/apple2/systime.s
libsrc/apple2/textframe.s [new file with mode: 0644]
libsrc/apple2/tgi_mode_table.s
libsrc/apple2/wherex.s
libsrc/apple2/wherey.s
libsrc/apple2enh/Makefile
libsrc/apple2enh/_scrsize.s [deleted file]
libsrc/apple2enh/chline.s [deleted file]
libsrc/apple2enh/cputc.s [deleted file]
libsrc/apple2enh/cvline.s [deleted file]
libsrc/apple2enh/textframe.s [deleted file]

index aade3112f3b6ae0fa5aa3b69ec7133c9fc5cc160..1444ef1d4a543dcfa85fa246760552dba4879c76 100644 (file)
@@ -57,21 +57,20 @@ OBJS=       _scrsize.o      \
         mainargs.o      \
         oserrlist.o     \
         randomize.o     \
-        rbascalc.o      \
         rcout.o         \
-       read.o          \
+       read.o          \
        revers.o        \
         rhome.o         \
         rom.o           \
         rpread.o        \
         rrdkey.o        \
-        rsetwnd.o       \
+        rvtabz.o        \
         systime.o       \
         sysuname.o      \
         tgi_mode_table.o\
        wherex.o        \
-               wherey.o        \
-       write.o
+               wherey.o        \
+       write.o
 
 #--------------------------------------------------------------------------
 # Drivers
index 29d54edaf753b4b913bac9a827170d31e369da60..62988ae16e8c47d29ff6c75a7ce5804c1ae170f8 100644 (file)
@@ -4,9 +4,14 @@
 ; Screen size variables
 ;
 
-       .export         screensize
+        .export                screensize
+
+        .include        "apple2.inc"
 
 screensize:
-       ldx     #40
-       ldy     #24
+        ldx    WNDWDTH
+        lda    WNDBTM
+        sec
+        sbc    WNDTOP
+        tay
         rts
index 45b36efeea52ea98afca367ac925ee286eb1199b..e594be9e51215c23a10b126e131b730759e7f17c 100644 (file)
@@ -2,43 +2,47 @@
 ;-----------------------------------------------------------------------------
 ; Zero page stuff
 
-WNDWDTH        :=      $21     ; Right edge of text window
-CH     :=      $24     ; Cursor horizontal position
-CV     :=      $25     ; Cursor vertical position
-BASL   :=      $28     ; Text base address
-INVFLG :=      $32     ; Normal/inverse(/flash)
-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
 
-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
-MLI    :=      $BF00   ; ProDOS Machine Language Interface
+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
+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
 
 ; Game controller
-BUTN0  :=      $C061   ; Open-Apple Key
-BUTN1  :=      $C062   ; Closed-Apple Key
+BUTN0   :=     $C061   ; Open-Apple Key
+BUTN1   :=     $C062   ; Closed-Apple Key
index de6f01ef4d7591e4447034407ff1a81237b7cc78..ca973686b3100e0d4ab109a32e9f052e9a1e9f87 100644 (file)
@@ -1,19 +1,19 @@
 ;
 ; Ullrich von Bassewitz, 08.08.1998
 ;
-; void cclearxy (unsigned char x, unsigned char y, unsigned char length);
-; void cclear (unsigned char length);
+; void __fastcall__ cclearxy (unsigned char x, unsigned char y, unsigned char length);
+; void __fastcall__ cclear (unsigned char length);
 ;
 
-       .export         _cclearxy, _cclear
-       .import         popa, _gotoxy, chlinedirect
+        .export                _cclearxy, _cclear
+        .import        popa, _gotoxy, chlinedirect
 
 _cclearxy:
-               pha                     ; Save the length
-       jsr     popa            ; Get y
-               jsr     _gotoxy         ; Call this one, will pop params
-               pla                     ; Restore the length and run into _cclear
+        pha                    ; Save the length
+        jsr    popa            ; Get y
+        jsr            _gotoxy         ; Call this one, will pop params
+        pla                    ; Restore the length and run into _cclear
 
 _cclear:
-       ldx     #' ' | $80      ; Blank, screen code
-       jmp     chlinedirect
+        ldx    #' ' | $80      ; Blank, screen code
+        jmp    chlinedirect
index c1be4dc44b0559665920911a6113727f3458d0b8..d0695cdb5b3761a909de9012c19fcc0fca81af91 100644 (file)
@@ -1,25 +1,23 @@
-       ;;
-       ;; Kevin Ruland
-       ;;
-       ;; char cgetc (void);
-       ;;
-       ;; If open_apple key is pressed then the high-bit of the
-       ;; key is set.
-       
-       .export _cgetc
+;
+; Kevin Ruland
+;
+; char cgetc (void);
+;
+; If open_apple key is pressed then the high-bit of the key is set.
+;
 
-       .include "apple2.inc"
+        .export _cgetc
+
+        .include "apple2.inc"
 
 _cgetc:
-       lda     KBD
-       bpl     _cgetc          ; if < 128, no key pressed
-       ;; At this time, the high bit of the key pressed
-       ;; is set
-       bit     KBDSTRB         ; clear keyboard strobe
-       bit     BUTN0           ; check if OpenApple is down
-       bmi     pressed 
-       and     #$7F            ; If not down, then clear high bit
-pressed:       
-       ldx     #$00
-       rts
-       
\ No newline at end of file
+        lda    KBD
+        bpl    _cgetc          ; if < 128, no key pressed
+
+        ; At this time, the high bit of the key pressed is set
+        bit    KBDSTRB         ; clear keyboard strobe
+        bit    BUTN0           ; check if OpenApple is down
+        bmi    :+
+        and    #$7F            ; If not down, then clear high bit
+:       ldx    #$00
+        rts
index ab07991b0eceb22cc2e71fc6b3681ee3896f856f..a9a0c25861e886039641575d91cf8278633008a5 100644 (file)
@@ -1,29 +1,37 @@
 ;
 ; Ullrich von Bassewitz, 08.08.1998
 ;
-; void chlinexy (unsigned char x, unsigned char y, unsigned char length);
-; void chline (unsigned char length);
+; void __fastcall__ chlinexy (unsigned char x, unsigned char y, unsigned char length);
+; void __fastcall__ chline (unsigned char length);
 ;
 
-       .export         _chlinexy, _chline, chlinedirect
-       .import         popa, _gotoxy, cputdirect
-       .importzp       tmp1
+        .export        _chlinexy, _chline, chlinedirect
+        .import        popa, _gotoxy, cputdirect
+
+        .include       "zeropage.inc"
+        .include       "apple2.inc"
 
 _chlinexy:
-               pha                     ; Save the length
-       jsr     popa            ; Get y
-               jsr     _gotoxy         ; Call this one, will pop params
-       pla                     ; Restore the length and run into _chline
+        pha                    ; Save the length
+        jsr    popa            ; Get y
+        jsr            _gotoxy         ; Call this one, will pop params
+        pla                    ; Restore the length and run into _chline
 
 _chline:
-       ldx     #'-' | $80      ; Horizontal line, screen code
+        .ifdef __APPLE2ENH__
+        ldx    #'S'            ; MouseText character
+        ldy    INVFLG
+        cpy    #$FF            ; Normal character display mode?
+        beq    chlinedirect
+        .endif
+        ldx    #'-' | $80      ; Horizontal line, screen code
 
 chlinedirect:
-       cmp     #$00            ; Is the length zero?
-       beq     done            ; Jump if done
-       sta     tmp1
-:      txa                     ; Screen code
-       jsr     cputdirect      ; Direct output
-       dec     tmp1
-       bne     :-
-done:  rts
+        cmp    #$00            ; Is the length zero?
+        beq    done            ; Jump if done
+        sta    tmp1
+:       txa                    ; Screen code
+        jsr    cputdirect      ; Direct output
+        dec    tmp1
+        bne    :-
+done:   rts
index b31f4cf760b8e5b36bc0130d51a66a7c25297b08..aee23e5ddbea3df9e83fb6c28ae4ddb4a6699f38 100644 (file)
@@ -1,9 +1,10 @@
-       ;;
-       ;; Kevin Ruland
-       ;;
-       ;; void clrscr (void);
+;
+; Kevin Ruland
+;
+; void clrscr (void);
+;
 
-       .export         _clrscr
-       .import         HOME
+        .export                _clrscr
+        .import                HOME
 
 _clrscr := HOME
index a09dadd32466616afc9d86973ff5c744d6faf0d4..75cc99d9a325105eea811792aeab67cf2b157f9b 100644 (file)
 ;
 ; Ullrich von Bassewitz, 06.08.1998
 ;
-; void cputcxy (unsigned char x, unsigned char y, char c);
-; void cputc (char c);
+; void __fastcall__ cputcxy (unsigned char x, unsigned char y, char c);
+; void __fastcall__ cputc (char c);
 ;
 
-       .constructor    initconio
-       .export         _cputcxy, _cputc
-       .export         _gotoxy, cputdirect
-       .export         newline, putchar
+        .ifdef __APPLE2ENH__
+        .constructor   initconio
+        .endif
+        .export                _cputcxy, _cputc
+        .export                _gotoxy, cputdirect
+        .export                newline, putchar
 
-       .import         popa, SETWND, BASCALC
+        .import                popa, VTABZ
 
-       .include        "apple2.inc"
+        .include       "apple2.inc"
 
-; ------------------------------------------------------------------------
-; Initialization
-
-.segment        "INIT"
+        .segment       "INIT"
 
+        .ifdef __APPLE2ENH__
 initconio:
-       lda     #$FF            ; Normal character display mode
-       sta     INVFLG
-       lda     #$00
-               jmp     SETWND          ; Reset text window to full screen
+        sta    SETALTCHAR      ; Switch in alternate charset
+        rts
+        .endif
 
-; ------------------------------------------------------------------------
-; Plot a character - also used as internal function
+        .code
 
-.code
+; Plot a character - also used as internal function
 
 _cputcxy:
-       pha                     ; Save C
-       jsr     popa            ; Get Y
-       jsr     _gotoxy
-       pla                     ; Restore C
+        pha                    ; Save C
+        jsr    popa            ; Get Y
+        jsr    _gotoxy
+        pla                    ; Restore C
 
 _cputc:
-       cmp     #$0D            ; Test for \r = carrage return
-       beq     left
-       cmp     #$0A            ; Test for \n = line feed
-       beq     newline
-       ora     #$80            ; Turn on high bit
-       cmp     #$E0            ; Test for lowercase
-       bcc     cputdirect
-       and     #$DF            ; Convert to uppercase
+        cmp    #$0D            ; Test for \r = carrage return
+        beq    left
+        cmp    #$0A            ; Test for \n = line feed
+        beq    newline
+        ora    #$80            ; Turn on high bit
+        .ifndef        __APPLE2ENH__
+        cmp    #$E0            ; Test for lowercase
+        bcc    cputdirect
+        and    #$DF            ; Convert to uppercase
+        .endif
 
 cputdirect:
-       jsr     putchar
-       inc     CH              ; Bump to next column
-       lda     CH
-       cmp     #40
-       bne     done
-left:  lda     #$00            ; Goto left edge of screen
-       sta     CH
-done:  rts
+        jsr    putchar
+        inc    CH              ; Bump to next column
+        lda    CH
+        cmp    WNDWDTH
+        bcc    :+
+left:   lda    #$00            ; Goto left edge of screen
+        sta    CH
+:       rts
 
 newline:
-       inc     CV
-       lda     CV
-       cmp     #24
-       bne     :+
-       lda     #$00
-       sta     CV
-:              jmp     BASCALC
-
+        inc    CV              ; Bump to next line
+        lda    CV
+        cmp    WNDBTM
+        bcc    :+
+        lda    WNDTOP          ; Goto top of screen
+        sta    CV
+:       jmp    VTABZ
+                
 putchar:
-       and     INVFLG          ; Apply normal, inverse, flash
-       ldy     CH
-       sta     (BASL),Y
-       rts
+        .ifdef __APPLE2ENH__
+        ldy    INVFLG
+        cpy    #$FF            ; Normal character display mode?
+        beq    put
+        cmp    #$E0            ; Lowercase?
+        bcc    mask
+        and    #$7F            ; Inverse lowercase
+        bra    put
+        .endif
+mask:   and    INVFLG          ; Apply normal, inverse, flash
+put:    ldy    CH
+        .ifdef __APPLE2ENH__
+        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
+        sta    (BASL),Y
+        bit    LOWSCR
+        rts
+        .endif
+col40:  sta    (BASL),Y
+        rts
 
 _gotoxy:
-       sta     CV              ; Store Y
-       jsr     BASCALC
-       jsr     popa            ; Get X
-       sta     CH              ; Store X
-       rts
+        clc
+        adc    WNDTOP
+        sta    CV              ; Store Y
+        jsr    VTABZ
+        jsr    popa            ; Get X
+        sta    CH              ; Store X
+        rts
index 044e73d58f5ca47ebc2a91176680f9d72ff99685..280e4ced3d3afc8cd705e16feb651822b04c655d 100644 (file)
@@ -1,30 +1,35 @@
 ;
 ; Ullrich von Bassewitz, 08.08.1998
 ;
-; void cvlinexy (unsigned char x, unsigned char y, unsigned char length);
-; void cvline (unsigned char length);
+; void __fastcall__ cvlinexy (unsigned char x, unsigned char y, unsigned char length);
+; void __fastcall__ cvline (unsigned char length);
 ;
 
-       .export         _cvlinexy, _cvline, cvlinedirect
-       .import         popa, _gotoxy, putchar, newline
-       .importzp       tmp1
+        .export        _cvlinexy, _cvline, cvlinedirect
+        .import                popa, _gotoxy, putchar, newline
+
+        .include       "zeropage.inc"
 
 _cvlinexy:
-               pha                     ; Save the length
-       jsr     popa            ; Get y
-               jsr     _gotoxy         ; Call this one, will pop params
-       pla                     ; Restore the length and run into _cvline
+        pha                    ; Save the length
+        jsr    popa            ; Get y
+        jsr            _gotoxy         ; Call this one, will pop params
+        pla                    ; Restore the length and run into _cvline
 
 _cvline:
-       ldx     #'!' | $80      ; Vertical line, screen code
+        .ifdef __APPLE2ENH__
+        ldx    #'|' | $80      ; Vertical line, screen code
+        .else
+        ldx    #'!' | $80      ; Vertical line, screen code
+        .endif
 
 cvlinedirect:
-       cmp     #$00            ; Is the length zero?
-       beq     done            ; Jump if done
-       sta     tmp1
-:      txa                     ; Screen code
-       jsr     putchar         ; Write, no cursor advance
-       jsr     newline         ; Advance cursor to next line
-       dec     tmp1
-       bne     :-
-done:  rts
+        cmp    #$00            ; Is the length zero?
+        beq    done            ; Jump if done
+        sta    tmp1
+:       txa                    ; Screen code
+        jsr    putchar         ; Write, no cursor advance
+        jsr    newline         ; Advance cursor to next line
+        dec    tmp1
+        bne    :-
+done:   rts
index 248ea61a0a8a79ab3bbcf82f06d474ca866822cd..b8553ecbb07507b1c5a41f1fa17cd90aa594a810 100644 (file)
@@ -3,45 +3,46 @@
 ;
 ; Identify DOS version we're running on as one of these:
 ;
-; AppleDOS 3.3 $00
-; ProDOS 1.0.1 $10
-; ProDOS 1.0.2 $10
-; ProDOS 1.1.1 $11
-; ProDOS 1.2   $12
-; ProDOS 1.3   $13
-; ProDOS 1.4   $14
-; ProDOS 1.5   $15
-; ProDOS 1.6   $16
-; ProDOS 1.7   $17
-; ProDOS 1.8   $18
-; ProDOS 1.9   $18
-; ProDOS 2.0.1  $21
-; ProDOS 2.0.2  $22
-; ProDOS 2.0.3  $23
+; AppleDOS 3.3   - $00
+; ProDOS 8 1.0.1 - $10
+; ProDOS 8 1.0.2 - $10
+; ProDOS 8 1.1.1 - $11
+; ProDOS 8 1.2   - $12
+; ProDOS 8 1.3   - $13
+; ProDOS 8 1.4   - $14
+; ProDOS 8 1.5   - $15
+; ProDOS 8 1.6   - $16
+; ProDOS 8 1.7   - $17
+; ProDOS 8 1.8   - $18
+; ProDOS 8 1.9   - $18
+; ProDOS 8 2.0.1 - $21
+; ProDOS 8 2.0.2 - $22
+; ProDOS 8 2.0.3 - $23
+;
 
-       .constructor    initdostype
-       .export         __dos_type
+        .constructor   initdostype
+        .export                __dos_type
 
-       .include        "apple2.inc"
+        .include       "mli.inc"
 
 ; Identify DOS version according to:
 ; - "Beneath Apple ProDOS", chapter 6-63
 ; - "Apple II ProDOS 8 TechNote #023: ProDOS 8 Changes and Minutia"
 ; - ProDOS TechRefMan, chapter 5.2.4
 
-.segment        "INIT"
+        .segment        "INIT"
 
 initdostype:
-       lda     MLI
-       cmp     #$4C            ; Is MLI present? (JMP opcode)
-       bne     done
-       lda     $BFFF           ; ProDOS KVERSION
-       cmp     #$10
-       bcs     :+
-       ora     #$10            ; Make high nibble match major version
-:      sta     __dos_type
-done:  rts
+        lda    ENTRY
+        cmp    #$4C            ; Is MLI present? (JMP opcode)
+        bne    done
+        lda    KVERSION        ; ProDOS 8 kernel version
+        cmp    #$10
+        bcs    :+
+        ora    #$10            ; Make high nibble match major version
+:       sta    __dos_type
+done:   rts
 
-.bss
+        .bss
 
-__dos_type:    .res    1
+__dos_type:     .res   1
index ba2347ab527bd16445e474f4ef64aeac4e42b167..98cd99fb8990611f32c8efb04bc1dc331f096d1d 100644 (file)
@@ -4,76 +4,67 @@
 ; unsigned char get_ostype(void)
 ;
 
-       .constructor    initostype
-       .export         _get_ostype
+        .constructor   initostype
+        .export                _get_ostype
 
 ; Identify machine according to:
 ; "Apple II Miscellaneous TechNote #7: Apple II Family Identification"
 
-; ------------------------------------------------------------------------
-; Initialization
-
-.segment        "INIT"
+        .segment       "INIT"
 
 initostype:
-       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
-
-; ------------------------------------------------------------------------
+        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
 
-.code
-
-_get_ostype:
-       lda     ostype
-       ldx     #$00
-       rts
+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
 
-.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
+        .code
 
+_get_ostype:
+        lda    ostype
+        ldx    #$00
+        rts
 
-.bss
+        .bss
 
-ostype:        .res    1
+ostype: .res   1
index c69ec35bc38ac5982480dfbf0be53f554a3efdac..4f928cd5273e04c362b584ef4d1cfc0d04fe4f5b 100644 (file)
@@ -1,12 +1,12 @@
 ;
 ; Ullrich von Bassewitz, 2003-05-02
 ;
-; char* getenv (const char* name);
+; char* __fastcall__ getenv (const char* name);
 ;
 
-       .export         _getenv
-       .import         return0
+        .export                _getenv
+        .import                return0
 
-_getenv        = return0               ; "not found"
+_getenv = return0              ; "not found"
 
                                    
index 4cab23d4035d0655723eb87879cae157c8f12985..e4a360daba15d9f9f0cf8794e455a316c404ed1f 100644 (file)
@@ -6,9 +6,14 @@
 ; const char joy_stddrv[];
 ;
 
-       .export _joy_stddrv
+        .export        _joy_stddrv
 
 .rodata
 
-_joy_stddrv:   .asciiz "A2.STDJOY.JOY"
+_joy_stddrv:
+        .ifdef __APPLE2ENH__
+        .asciiz        "A2E.STDJOY.JOY"
+        .else
+        .asciiz        "A2.STDJOY.JOY"
+        .endif
 
index 8c6f021584e31d39b8670a7eb7acd2a2c27798b5..ac8d853502aba75f7223c30ae069ab812b56d1f5 100644 (file)
@@ -1,18 +1,17 @@
-       ;;
-       ;; Kevin Ruland
-       ;;
-       ;; int kbhit (void);
-       ;;
+;
+; Kevin Ruland
+; Ullrich von Bassewitz, 2005-03-25
+;
+; unsigned char kbhit (void);
+;
 
-       .export _kbhit
+        .export        _kbhit
 
-       .import return0, return1
-       
-       .include "apple2.inc"
+        .include "apple2.inc"
 
-_kbhit:
-       bit     KBD             ; Reading keyboard checks for keypress
-       bmi     L1              ; if KBD > 127 key was pressed
-       jmp     return0
-L1:
-       jmp     return1
+_kbhit: lda     KBD             ; Reading KBD checks for keypress
+        rol                     ; if high bit is set, key was pressed
+        lda     #$00
+        tax
+        rol
+        rts
index acae7c83500746e1172c45551276dddf948efe02..2e79e6c8fc7bb8660e51b7130e3a3ca5b980ad7f 100644 (file)
@@ -1,8 +1,8 @@
-       ;;
-       ;; Kevin Ruland
-       ;;
-       ;; unsigned char __fastcall__ revers (unsigned char onoff)
-       ;;
+;
+; Kevin Ruland
+;
+; unsigned char __fastcall__ revers (unsigned char onoff)
+;
 
        .export         _revers
 
@@ -13,13 +13,11 @@ _revers:
        and     #$FF            ; Test for any bit
        beq     normal          ; Nothing set
        lda     #~$3F           ; Not Inverse
-normal:        
-       eor     #$FF            ; Xor Normal
+normal:        eor     #$FF            ; Xor Normal
        sta     INVFLG
        tya                     ; What was the old value?
        eor     #$FF            ; Normal = $FF, Inverse = $3F
-       beq     L2
+       beq     :+
        lda     #$01
-L2:    
+:      ldx     #$00
        rts
-
diff --git a/libsrc/apple2/rvtabz.s b/libsrc/apple2/rvtabz.s
new file mode 100644 (file)
index 0000000..eea0ef4
--- /dev/null
@@ -0,0 +1,9 @@
+;
+; Ullrich von Bassewitz, 2004-06-03
+;
+; Rom VTABZ routine
+;
+
+        .export         VTABZ
+
+VTABZ   :=     $FC24   ; Generate text base address
index 5a90e3e55dd8baf7b02ab1557f2f8caab7b4916a..5711fccaedc88119ac191a943ed066e23d9666bb 100644 (file)
@@ -9,9 +9,9 @@
 ;  */
 ;
 
-       .export         __systime
+        .export                __systime
 
-        .importzp       sreg
+        .include       "zeropage.inc"
 
 __systime:
         lda     #$FF
diff --git a/libsrc/apple2/textframe.s b/libsrc/apple2/textframe.s
new file mode 100644 (file)
index 0000000..9ed42ca
--- /dev/null
@@ -0,0 +1,105 @@
+;
+; Oliver Schmidt, 10.03.2004
+;
+; void __fastcall__ _textframexy (unsigned char x, unsigned char y,
+;                                 unsigned char width, unsigned char height,
+;                                 unsigned char style);
+; void __fastcall__ _textframe (unsigned char width, unsigned char height);
+;                               unsigned char style);
+;
+
+        .export        __textframexy, __textframe
+        .import        popa, pusha, _gotoxy
+        .import                chlinedirect, cvlinedirect
+
+        .include       "zeropage.inc"
+        .include       "apple2.inc"
+
+WIDTH   = tmp2
+HEIGHT  = tmp3
+XORIGIN = tmp4
+YORIGIN = ptr1
+
+__textframexy:
+        sec
+        bra    :+
+
+__textframe:
+        clc
+:       ldx    INVFLG
+        phx                    ; Save character display mode
+        ldx    #$FF
+        stx    INVFLG          ; Set normal character display mode
+        pha                    ; Save index
+        jsr    popa            ; Get height
+        sta    HEIGHT
+        jsr    popa            ; Get width
+        sta    WIDTH
+        lda    CH
+        ldx    CV
+        bcc    noxy
+        jsr    popa            ; Get y
+        tax
+        jsr    popa            ; Get x
+noxy:   sta    XORIGIN
+        stx    YORIGIN
+        plx                    ; Restore index
+loop:   lda    XOFFS,x
+        clc
+        bpl    :+              ; Relative to left edge?
+        adc    WIDTH
+:       adc    XORIGIN
+        jsr    pusha
+        lda    YOFFS,x
+        clc
+        bpl    :+              ; Relative to top?
+        adc    HEIGHT
+:       adc    YORIGIN
+        jsr    _gotoxy         ; Call this one, will pop params
+        txa
+        tay
+        lsr                    ; Get bit 0 (vline) into carry
+        lda    LENGTH,x
+        phx                    ; Save index
+        ldx    CHAR,y
+        bcc    hline
+        clc
+        adc    HEIGHT
+        jsr    cvlinedirect
+        bra    next
+hline:  adc    WIDTH
+        jsr    chlinedirect
+next:   plx                    ; Restore index
+        inx
+        txa
+        and    #$03            ; Mask style
+        bne    loop
+        pla
+        sta    INVFLG          ; Restore character display mode
+        rts
+
+        .rodata
+
+; 2 styles with 4 lines each make up 8 entries per table
+; - even entry numbers mean horizontal lines
+; - odd entry numbers mean vertical lines
+
+; x offset for the line starting point
+; - a positive value means relative to the frame left edge
+; - a negative value menas relative to the frame right edge
+XOFFS:  .byte  0, 0, 0, -2, 1, 0, 1, -2
+
+; y offset for the line starting point
+; - a positive value means relative to the frame top
+; - a negative value menas relative to the frame bottom
+YOFFS:  .byte  0, 1, -2, 1, 0, 0, -2, 0
+
+; length of the line relative to the frame size
+; - a negative value for hlines means shorter than the width
+; - a negative value for vlines menas shorter than the height
+LENGTH: .byte  0, -2, 0, -2, -2, 0, -2, 0
+
+; character to use for drawing the line
+; - hibit set means normal printable character
+; - hibit clear means MouseText character
+CHAR:   .byte  '_'|$80, '_', 'L', 'Z', 'L', 'Z', '_'|$80, '_'
index 00bd0ecc4169727029210981402b9745888aa0ae..20d7820a2123703c7c489974cc3f78fbd091287a 100644 (file)
@@ -4,9 +4,9 @@
 ; Apple II mode table for tgi_map_mode
 ;
 
-       .export         _tgi_mode_table
+        .export                _tgi_mode_table
 
-       .include        "tgi-mode.inc"
+        .include       "tgi-mode.inc"
 
 ;----------------------------------------------------------------------------
 ; Mode table. Contains entries of mode and driver name, the driver name being
 .rodata
 
 _tgi_mode_table:
-       .byte   TGI_MODE_280_192_6, "A2.HI.TGI", 0
-       .byte   TGI_MODE_40_40_16,  "A2.LO.TGI", 0
-;      .byte   TGI_MODE_560_192_2, "A2.DHI.TGI", 0
-       .byte   0       ; End marker
+        .ifdef __APPLE2ENH__
+        .byte   TGI_MODE_280_192_6, "A2E.HI.TGI", 0
+        .byte   TGI_MODE_40_40_16,  "A2E.LO.TGI", 0
+;       .byte   TGI_MODE_560_192_2, "A2E.DHI.TGI", 0
+        .else
+        .byte   TGI_MODE_280_192_6, "A2.HI.TGI", 0
+        .byte   TGI_MODE_40_40_16,  "A2.LO.TGI", 0
+;       .byte   TGI_MODE_560_192_2, "A2.DHI.TGI", 0
+        .endif
+        .byte   0       ; End marker
index 6cf1405313971722099ead476b01c3a85468b028..1d67a2fd9f2f8bb56ebcfe5af438252b456570a8 100644 (file)
@@ -1,13 +1,14 @@
+;
+; Kevin Ruland
+;
+; unsigned char wherex (void);
+;
 
-       ;; Keivn Ruland
-       ;;
-       ;; unsigned char wherex( void );
+        .export                _wherex
 
-       .export         _wherex
-
-       .include        "apple2.inc"
+        .include       "apple2.inc"
 
 _wherex:
-       lda     CH
+        lda            CH
         ldx     #$00
-       rts
+        rts
index 30612cc776a7695a0a3ab41aa60936e3bcfaf541..1ac7b6a757bf03afe6eef4e60598582131891ff3 100644 (file)
@@ -1,13 +1,16 @@
+;
+; Kevin Ruland
+;
+; unsigned char wherey (void);
+;
 
-       ;; Keivn Ruland
-       ;;
-       ;; unsigned char wherey( void );
+        .export                _wherey
 
-       .export         _wherey
-
-       .include        "apple2.inc"
+        .include       "apple2.inc"
 
 _wherey:
-       lda     CV
+        lda    CV
+        sec
+        sbc    WNDTOP
         ldx     #$00
-       rts
+        rts
index 49fb853f6951a2bb315e8b1db8f6699fe329f759..ba7d3a787627edb8a68769f66a2936c48c1b6a28 100644 (file)
@@ -13,17 +13,17 @@ AS  = ../../src/ca65/ca65
 CC     = ../../src/cc65/cc65
 LD     = ../../src/ld65/ld65
 
-AFLAGS = -t $(SYS) -I../../asminc
-CFLAGS = -Osir -g -T -t $(SYS) --forget-inc-paths -I . -I ../../include
+AFLAGS = -t $(SYS) -I../apple2 -I../../asminc
+CFLAGS = -Osir -g -T -t $(SYS) --forget-inc-paths -I ../apple2 -I ../../include
 
 #--------------------------------------------------------------------------
 # Rules
 
-%.o:           %.c
+%.o:           ../apple2/%.c
        @$(CC) $(CFLAGS) $<
        @$(AS) -o $@ $(AFLAGS) $(*).s
 
-%.o:   %.s
+%.o:   ../apple2/%.s
        @$(AS) -g -o $@ $(AFLAGS) $<
 
 %.emd: %.o ../runtime/zeropage.o
@@ -38,22 +38,51 @@ CFLAGS      = -Osir -g -T -t $(SYS) --forget-inc-paths -I . -I ../../include
 #--------------------------------------------------------------------------
 # Object files
 
-OBJS=          _scrsize.o      \
-       chline.o        \
+OBJS=  _scrsize.o      \
+       break.o         \
+       cclear.o        \
+       cgetc.o         \
+       chline.o        \
+       clrscr.o        \
+       color.o         \
        cputc.o         \
+       crt0.o          \
+       ctype.o         \
        cvline.o        \
-       textframe.o
+       dosdetect.o     \
+        get_ostype.o    \
+        getenv.o        \
+        joy_stddrv.o    \
+       kbhit.o         \
+        mainargs.o      \
+        oserrlist.o     \
+        randomize.o     \
+        rcout.o         \
+       read.o          \
+       revers.o        \
+        rhome.o         \
+        rom.o           \
+        rpread.o        \
+        rrdkey.o        \
+        rvtabz.o        \
+        systime.o       \
+        sysuname.o      \
+       textframe.o     \
+        tgi_mode_table.o\
+       wherex.o        \
+               wherey.o        \
+       write.o
 
 #--------------------------------------------------------------------------
 # Drivers
 
-EMDS =
+EMDS = apple2-lc.emd
 
-JOYS =
+JOYS = apple2-stdjoy.joy
 
 SERS =
 
-TGIS =
+TGIS = apple2-40-40-16.tgi apple2-280-192-6.tgi
 
 #--------------------------------------------------------------------------
 # Targets
diff --git a/libsrc/apple2enh/_scrsize.s b/libsrc/apple2enh/_scrsize.s
deleted file mode 100644 (file)
index 1b020c3..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-;
-; Ullrich von Bassewitz, 26.10.2000
-;
-; Screen size variables
-;
-
-       .export         screensize
-
-        .include        "../apple2/apple2.inc"
-
-screensize:
-       ldx     WNDWDTH
-       ldy     #24
-        rts
diff --git a/libsrc/apple2enh/chline.s b/libsrc/apple2enh/chline.s
deleted file mode 100644 (file)
index db5cde9..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-;
-; Ullrich von Bassewitz, 08.08.1998
-;
-; void chlinexy (unsigned char x, unsigned char y, unsigned char length);
-; void chline (unsigned char length);
-;
-
-       .export         _chlinexy, _chline, chlinedirect
-       .import         popa, _gotoxy, cputdirect
-       .importzp       tmp1
-
-       .include        "../apple2/apple2.inc"
-
-_chlinexy:
-               pha                     ; Save the length
-       jsr     popa            ; Get y
-               jsr     _gotoxy         ; Call this one, will pop params
-       pla                     ; Restore the length and run into _chline
-
-_chline:
-       ldx     #'S'            ; MouseText character
-       ldy     INVFLG
-       cpy     #$FF            ; Normal character display mode?
-       beq     chlinedirect
-       ldx     #'-' | $80      ; Horizontal line, screen code
-
-chlinedirect:
-       cmp     #$00            ; Is the length zero?
-       beq     done            ; Jump if done
-       sta     tmp1
-:      txa                     ; Screen code
-       jsr     cputdirect      ; Direct output
-       dec     tmp1
-       bne     :-
-done:  rts
-
-
-
-
diff --git a/libsrc/apple2enh/cputc.s b/libsrc/apple2enh/cputc.s
deleted file mode 100644 (file)
index c82a67d..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-;
-; Ullrich von Bassewitz, 06.08.1998
-;
-; void cputcxy (unsigned char x, unsigned char y, char c);
-; void cputc (char c);
-;
-
-       .constructor    initconio
-       .export         _cputcxy, _cputc
-       .export         _gotoxy, cputdirect
-       .export         newline, putchar
-
-       .import         popa, SETWND, BASCALC
-
-       .include        "../apple2/apple2.inc"
-
-initconio:
-       lda     #$FF            ; Normal character display mode
-       sta     INVFLG
-       sta     SETALTCHAR      ; Switch in alternate charset
-       lda     #$00
-       jsr     SETWND          ; Reset text window to full screen
-       rts
-
-; Plot a character - also used as internal function
-
-_cputcxy:
-       pha                     ; Save C
-       jsr     popa            ; Get Y
-       jsr     _gotoxy
-       pla                     ; Restore C
-
-_cputc:
-       cmp     #$0D            ; Test for \r = carrage return
-       beq     left
-       cmp     #$0A            ; Test for \n = line feed
-       beq     newline
-       ora     #$80            ; Turn on high bit
-
-cputdirect:
-       jsr     putchar
-       inc     CH              ; Bump to next column
-       lda     CH
-       cmp     WNDWDTH
-       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:
-       ldy     INVFLG
-       cpy     #$FF            ; Normal character display mode?
-       beq     put
-       cmp     #$E0            ; Lowercase?
-       bcc     mask
-       and     #$7F            ; Inverse lowercase
-       bra     put
-mask:  and     INVFLG          ; Apply normal, inverse, flash
-put:   ldy     CH
-       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
-       sta     (BASL),Y
-       bit     LOWSCR
-       rts
-col40: sta     (BASL),Y
-       rts
-
-_gotoxy:
-       sta     CV              ; Store Y
-       jsr     BASCALC
-       jsr     popa            ; Get X
-       sta     CH              ; Store X
-       rts
diff --git a/libsrc/apple2enh/cvline.s b/libsrc/apple2enh/cvline.s
deleted file mode 100644 (file)
index ff9704a..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-;
-; Ullrich von Bassewitz, 08.08.1998
-;
-; void cvlinexy (unsigned char x, unsigned char y, unsigned char length);
-; void cvline (unsigned char length);
-;
-
-       .export         _cvlinexy, _cvline, cvlinedirect
-       .import         popa, _gotoxy, putchar, newline
-       .importzp       tmp1
-
-_cvlinexy:
-               pha                     ; Save the length
-       jsr     popa            ; Get y
-               jsr     _gotoxy         ; Call this one, will pop params
-       pla                     ; Restore the length and run into _cvline
-
-_cvline:
-       ldx     #'|' | $80      ; Vertical line, screen code
-
-cvlinedirect:
-       cmp     #$00            ; Is the length zero?
-       beq     done            ; Jump if done
-       sta     tmp1
-:      txa                     ; Screen code
-       jsr     putchar         ; Write, no cursor advance
-       jsr     newline         ; Advance cursor to next line
-       dec     tmp1
-       bne     :-
-done:  rts
diff --git a/libsrc/apple2enh/textframe.s b/libsrc/apple2enh/textframe.s
deleted file mode 100644 (file)
index 9b36dc7..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-;
-; Oliver Schmidt, 10.03.2004
-;
-; void _textframexy (unsigned char x, unsigned char y,
-;                    unsigned char width, unsigned char height,
-;                   unsigned char style);
-; void _textframe (unsigned char width, unsigned char height);
-;                 unsigned char style);
-;
-
-       .export         __textframexy, __textframe
-       .import         popa, pusha, _gotoxy
-       .import         chlinedirect, cvlinedirect
-       .importzp       tmp2, tmp3, tmp4, ptr1
-
-       .include        "../apple2/apple2.inc"
-
-WIDTH = tmp2
-HEIGHT = tmp3
-XORIGIN = tmp4
-YORIGIN = ptr1
-
-__textframexy:
-       sec
-       bra     textframe
-
-__textframe:
-       clc
-textframe:
-       ldx     INVFLG
-       phx                     ; Save character display mode
-       ldx     #$FF
-       stx     INVFLG          ; Set normal character display mode
-       pha                     ; Save index
-       jsr     popa            ; Get height
-       sta     HEIGHT
-       jsr     popa            ; Get width
-       sta     WIDTH
-       lda     CH
-       ldx     CV
-       bcc     noxy
-       jsr     popa            ; Get y
-       tax
-       jsr     popa            ; Get x
-noxy:  sta     XORIGIN
-       stx     YORIGIN
-       plx                     ; Restore index
-loop:  lda     XOFFS,x
-       clc
-       bpl     :+              ; Relative to left edge?
-       adc     WIDTH
-:      adc     XORIGIN
-       jsr     pusha
-       lda     YOFFS,x
-       clc
-       bpl     :+              ; Relative to top?
-       adc     HEIGHT
-:      adc     YORIGIN
-       jsr     _gotoxy         ; Call this one, will pop params
-       txa
-       tay
-       lsr                     ; Get bit 0 (vline) into carry
-       lda     LENGTH,x
-       phx                     ; Save index
-       ldx     CHAR,y
-       bcc     hline
-       clc
-       adc     HEIGHT
-       jsr     cvlinedirect
-       bra     next
-hline: adc     WIDTH
-       jsr     chlinedirect
-next:  plx                     ; Restore index
-       inx
-       txa
-       and     #$03            ; Mask style
-       bne     loop
-       pla
-       sta     INVFLG          ; Restore character display mode
-       rts
-
-       .rodata
-
-; 2 styles with 4 lines each make up 8 entries per table
-; - even entry numbers mean horizontal lines
-; - odd entry numbers mean vertical lines
-
-; x offset for the line starting point
-; - a positive value means relative to the frame left edge
-; - a negative value menas relative to the frame right edge
-XOFFS: .byte   0, 0, 0, -2, 1, 0, 1, -2
-
-; y offset for the line starting point
-; - a positive value means relative to the frame top
-; - a negative value menas relative to the frame bottom
-YOFFS: .byte   0, 1, -2, 1, 0, 0, -2, 0
-
-; length of the line relative to the frame size
-; - a negative value for hlines means shorter than the width
-; - a negative value for vlines menas shorter than the height
-LENGTH:        .byte   0, -2, 0, -2, -2, 0, -2, 0
-
-; character to use for drawing the line
-; - hibit set means normal printable character
-; - hibit clear means MouseText character
-CHAR:  .byte   '_'|$80, '_', 'L', 'Z', 'L', 'Z', '_'|$80, '_'