]> git.sur5r.net Git - cc65/commitdiff
Move constructor code into the INIT segment
authorcuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Sat, 26 Feb 2005 09:34:01 +0000 (09:34 +0000)
committercuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Sat, 26 Feb 2005 09:34:01 +0000 (09:34 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@3406 b7a2c559-68d2-44c3-8de9-860c34a00d81

libsrc/apple2/cputc.s
libsrc/apple2/dosdetect.s
libsrc/apple2/get_ostype.s
libsrc/apple2/mainargs.s

index 76ca7769c5f158cf6b5620c36fcb8535864a75cf..a09dadd32466616afc9d86973ff5c744d6faf0d4 100644 (file)
 
        .include        "apple2.inc"
 
+; ------------------------------------------------------------------------
+; Initialization
+
+.segment        "INIT"
+
 initconio:
        lda     #$FF            ; Normal character display mode
        sta     INVFLG
        lda     #$00
-       jsr     SETWND          ; Reset text window to full screen
-       rts
+               jmp     SETWND          ; Reset text window to full screen
 
+; ------------------------------------------------------------------------
 ; Plot a character - also used as internal function
 
+.code
+
 _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
+       cmp     #$E0            ; Test for lowercase
+       bcc     cputdirect
+       and     #$DF            ; Convert to uppercase
 
 cputdirect:
-       jsr     putchar
-       inc     CH              ; Bump to next column
-       lda     CH
-       cmp     #40
-       bne     done
+       jsr     putchar
+       inc     CH              ; Bump to next column
+       lda     CH
+       cmp     #40
+       bne     done
 left:  lda     #$00            ; Goto left edge of screen
-       sta     CH
+       sta     CH
 done:  rts
 
 newline:
-       inc     CV
-       lda     CV
-       cmp     #24
-       bne     :+
-       lda     #$00
-       sta     CV
-:      jsr     BASCALC
-       rts
-               
-putchar:       
-       and     INVFLG          ; Apply normal, inverse, flash
-       ldy     CH
-       sta     (BASL),Y
-       rts
+       inc     CV
+       lda     CV
+       cmp     #24
+       bne     :+
+       lda     #$00
+       sta     CV
+:              jmp     BASCALC
+
+putchar:
+       and     INVFLG          ; Apply normal, inverse, flash
+       ldy     CH
+       sta     (BASL),Y
+       rts
 
 _gotoxy:
-       sta     CV              ; Store Y
-       jsr     BASCALC
-       jsr     popa            ; Get X
-       sta     CH              ; Store X
-       rts
+       sta     CV              ; Store Y
+       jsr     BASCALC
+       jsr     popa            ; Get X
+       sta     CH              ; Store X
+       rts
index 9b3731ac56972d3e439be5fa467798d5ab2912cf..248ea61a0a8a79ab3bbcf82f06d474ca866822cd 100644 (file)
@@ -29,6 +29,8 @@
 ; - "Apple II ProDOS 8 TechNote #023: ProDOS 8 Changes and Minutia"
 ; - ProDOS TechRefMan, chapter 5.2.4
 
+.segment        "INIT"
+
 initdostype:
        lda     MLI
        cmp     #$4C            ; Is MLI present? (JMP opcode)
@@ -40,6 +42,6 @@ initdostype:
 :      sta     __dos_type
 done:  rts
 
-       .bss
+.bss
 
 __dos_type:    .res    1
index 9523d8b5e45e33f0090d27787d5aa8886ae2086d..ba2347ab527bd16445e474f4ef64aeac4e42b167 100644 (file)
 ; Identify machine according to:
 ; "Apple II Miscellaneous TechNote #7: Apple II Family Identification"
 
+; ------------------------------------------------------------------------
+; Initialization
+
+.segment        "INIT"
+
 initostype:
        sec
        jsr     $FE1F
@@ -30,13 +35,17 @@ next:       inx
        bne     :-
        beq     next            ; Branch always
 
+; ------------------------------------------------------------------------
+
+.code
+
 _get_ostype:
        lda     ostype
        ldx     #$00
        rts
 
 
-       .rodata
+.rodata
 
 index: .byte   $B3, $00                ; Apple ][
        .byte   $B3, $1E, $00           ; Apple ][+
@@ -65,6 +74,6 @@ value:        .byte   $38, $10                ; Apple ][
        .byte   $00
 
 
-       .bss
+.bss
 
 ostype:        .res    1
index 4f88aeb3a5d15c6eda1e754b4c95ede556c7e2af..004a1629f17b4aad4ea6b05a91b73df5ed273f31 100644 (file)
@@ -35,13 +35,20 @@ BASIC_BUF_LEN = 239
 FNAM_LEN = $280
 FNAM = $281
 
-       .assert         MAXARGS <= (BASIC_BUF_LEN - 2)/2, error, "Too many arguments"
 MAXARGS         = 10                   ; Maximum number of arguments allowed
 REM     = $B2                  ; BASIC token-code
 NAME_LEN = 15                  ; maximum length of command-name
+        
+; Validate sizes
+.if     MAXARGS > (BASIC_BUF_LEN - 2)/2
+.error  "Too many arguments"
+.endif
+
+; Get possible command-line arguments. Goes into the special INIT segment,
+; which may be reused after the startup code is run
+
+.segment        "INIT"
 
-; Get possible command-line arguments.
-;
 initmainargs:
 
 ; Assume that the program was loaded, a moment ago, by the traditional LOAD