]> 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:28:46 +0000 (09:28 +0000)
committercuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Sat, 26 Feb 2005 09:28:46 +0000 (09:28 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@3405 b7a2c559-68d2-44c3-8de9-860c34a00d81

23 files changed:
libsrc/atmos/cgetc.s
libsrc/atmos/mainargs.s
libsrc/c128/cgetc.s
libsrc/c128/cputc.s
libsrc/c128/mainargs.s
libsrc/c16/cgetc.s
libsrc/c16/mainargs.s
libsrc/c64/mainargs.s
libsrc/cbm/read.s
libsrc/cbm/write.s
libsrc/cbm510/mainargs.s
libsrc/cbm610/mainargs.s
libsrc/geos/conio/_scrsize.s
libsrc/geos/devel/mainargs.s
libsrc/lynx/Makefile
libsrc/lynx/cartread.s [new file with mode: 0644]
libsrc/lynx/mainargs.s
libsrc/nes/cputc.s
libsrc/nes/mainargs.s
libsrc/pet/mainargs.s
libsrc/plus4/cgetc.s
libsrc/plus4/mainargs.s
libsrc/vic20/mainargs.s

index e8f96abb32381ef50c8108212138e6198f9bf192..9883021380c11560954c26a4f97854cf1b85cd92 100644 (file)
 .endproc
 
 ; ------------------------------------------------------------------------
-; Switch the cursor off, disable capslock
+; Switch the cursor off, disable capslock. Code goes into the INIT segment
+; which may be reused after it is run.
+
+.segment        "INIT"
 
 initcgetc:
         lda     STATUS
index ebe6d03481e892b017eb3fec7811f5bb7fc429a5..a9233382f0ed81ad1b7cfedd681a34d9d5068382 100644 (file)
 
 
 ;---------------------------------------------------------------------------
-; Setup arguments for main
+; Get possible command-line arguments. Goes into the special INIT segment,
+; which may be reused after the startup code is run
+
+.segment        "INIT"
 
 .proc   initmainargs
 
index 01a5ff0e058187e4af21de1c72f641ab465e4411..f3f62ff53db4146568940a54616c25fba1570edd 100644 (file)
@@ -40,32 +40,31 @@ L2:         lda     KEY_COUNT       ; Check characters again
 .bss
 keyvec:        .res    2
 
-.code
+.segment        "INIT"
 initcgetc:
 
 ; Save the old vector
 
-       lda     KeyStoreVec
-       sta     keyvec
-       lda     KeyStoreVec+1
-       sta     keyvec+1
+       lda     KeyStoreVec
+       sta     keyvec
+       lda     KeyStoreVec+1
+       sta     keyvec+1
 
 ; Set the new vector. I can only hope that this works for other C128
 ; versions...
 
-       lda     #<$C6B7
-       ldx     #>$C6B7
-
-SetVec:        sei
-       sta     KeyStoreVec
-       stx     KeyStoreVec+1
-       cli
-       rts
+       lda     #<$C6B7
+       ldx     #>$C6B7
+        jmp     SetVec
 
+.code
 donecgetc:
-        lda     #$00
-        sta     SCROLL
        lda     keyvec
        ldx     keyvec+1
-       bne     SetVec
+SetVec:        sei
+       sta     KeyStoreVec
+       stx     KeyStoreVec+1
+       cli
+       rts
+
 
index 5c761118f01a923ce8d8f18147c00afa69f96701..5442e9f571f7dcb9aebd22c4d4343283e3716f9b 100644 (file)
@@ -18,6 +18,9 @@
 cputdirect      = PRINT
 newline         = NEWLINE
 
+;--------------------------------------------------------------------------
+
+.code
 
 _cputcxy:
        pha                     ; Save C
@@ -75,7 +78,8 @@ plot: ldy     CURS_X
 putchar        = $CC2F
 
 ;--------------------------------------------------------------------------
-; Module constructor/destructor
+; Module constructor/destructor. Don't move the constructor into the INIT
+; segment, because it shares most of the code with the destructor.
 
 initcputc:
        lda     #$C0
index a3e33e936bd6bdab8a4cb8599e245b4161854aa4..3bacd29343e0c0ded7360e7d23345b39e220758f 100644 (file)
@@ -3,7 +3,7 @@
 ; Ullrich von Bassewitz, 2003-03-07
 ; Based on code from Stefan A. Haubenthal, <polluks@web.de>
 ; 2003-05-18, Greg King
-; 2004-04-28, Ullrich von Bassewitz
+; 2004-04-28, 2005-02-26, Ullrich von Bassewitz
 ;
 ; Scan a group of arguments that are in BASIC's input-buffer.
 ; Build an array that points to the beginning of each argument.
@@ -33,8 +33,11 @@ REM   = $8f                  ; BASIC token-code
 NAME_LEN = 16                  ; maximum length of command-name
 
 
-; Get possible command-line arguments.
-;
+; Get possible command-line arguments. Goes into the special INIT segment,
+; which may be reused after the startup code is run
+
+.segment        "INIT"
+
 initmainargs:
 
 ; Assume that the program was loaded, a moment ago, by the traditional LOAD
index 8d10bba52319074745e770a6661876373ac851df..dc6e1e8115e22cec8a91d3ffd74da3ac7506600b 100644 (file)
@@ -56,6 +56,8 @@ L2:           jsr     KBDREAD         ; Read char and return in A
        .constructor    initkbd
        .destructor     donekbd
 
+.segment        "INIT"
+
 .proc  initkbd
 
        ldy     #15
@@ -68,6 +70,8 @@ L2:           jsr     KBDREAD         ; Read char and return in A
 .endproc
 
 
+.code
+
 .proc  donekbd
 
        ldx     #$39            ; Copy the original function keys
index c567b8ceb482949010411d7cb38a8f1bf90b5159..863c8e473119db2a71b48a7dc5022d26042d485c 100644 (file)
@@ -3,7 +3,7 @@
 ; Ullrich von Bassewitz, 2003-03-07
 ; Based on code from Stefan A. Haubenthal, <polluks@web.de>
 ; 2003-05-18, Greg King
-; 2004-04-28, Ullrich von Bassewitz
+; 2004-04-28, 2005-02-26, Ullrich von Bassewitz
 ;
 ; Scan a group of arguments that are in BASIC's input-buffer.
 ; Build an array that points to the beginning of each argument.
 
 
 MAXARGS         = 10                   ; Maximum number of arguments allowed
-REM     = $8f                  ; BASIC token-code
-NAME_LEN = 16                  ; maximum length of command-name
+REM     = $8f                  ; BASIC token-code
+NAME_LEN = 16                  ; maximum length of command-name
+
+; 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
index 1bee04249cc6de5ff59375e7ac697d24e1729722..6b2f624bf2f572a9528fbe14b1b086028eebcf1a 100644 (file)
@@ -3,7 +3,7 @@
 ; Ullrich von Bassewitz, 2003-03-07
 ; Based on code from Stefan A. Haubenthal, <polluks@web.de>
 ; 2003-05-18, Greg King
-; 2004-04-28, Ullrich von Bassewitz
+; 2004-04-28, 2005-02-26, Ullrich von Bassewitz
 ;
 ; Scan a group of arguments that are in BASIC's input-buffer.
 ; Build an array that points to the beginning of each argument.
@@ -33,8 +33,11 @@ MAXARGS       = 10                   ; Maximum number of arguments allowed
 REM     = $8f                  ; BASIC token-code
 NAME_LEN = 16                  ; maximum length of command-name
 
-; Get possible command-line arguments.
-;
+; Get possible command-line arguments. Goes into the special INIT segment,
+; which may be reused after the startup code is run
+
+.segment        "INIT"
+
 initmainargs:
 
 ; Assume that the program was loaded, a moment ago, by the traditional LOAD
index 1e9fdbd5cb0aec643a8991d1d191afccfbffc3ef..2a139bde7913c151c7798b06d6c7569ed9e0e5a3 100644 (file)
@@ -20,6 +20,8 @@
 
 ;--------------------------------------------------------------------------
 ; initstdin: Open the stdin file descriptors for the keyboard
+     
+.segment        "INIT"
 
 .proc   initstdin
 
@@ -37,6 +39,7 @@
 ;--------------------------------------------------------------------------
 ; _read
 
+.code
 
 .proc   _read
 
index dbdc7d8d9f405595642c8c3911e215c25b9c542a..46bcfe407c825a22dd50857898646cd8b8dcbf1b 100644 (file)
@@ -20,6 +20,8 @@
 ;--------------------------------------------------------------------------
 ; initstdout: Open the stdout and stderr file descriptors for the screen.
 
+.segment        "INIT"
+
 .proc   initstdout
 
         lda     #LFN_WRITE
@@ -40,7 +42,8 @@
 
 ;--------------------------------------------------------------------------
 ; _write
-
+                      
+.code
 
 .proc   _write
 
index ebe6d03481e892b017eb3fec7811f5bb7fc429a5..a9233382f0ed81ad1b7cfedd681a34d9d5068382 100644 (file)
 
 
 ;---------------------------------------------------------------------------
-; Setup arguments for main
+; Get possible command-line arguments. Goes into the special INIT segment,
+; which may be reused after the startup code is run
+
+.segment        "INIT"
 
 .proc   initmainargs
 
index ebe6d03481e892b017eb3fec7811f5bb7fc429a5..a9233382f0ed81ad1b7cfedd681a34d9d5068382 100644 (file)
 
 
 ;---------------------------------------------------------------------------
-; Setup arguments for main
+; Get possible command-line arguments. Goes into the special INIT segment,
+; which may be reused after the startup code is run
+
+.segment        "INIT"
 
 .proc   initmainargs
 
index 29616c86feb5e7848fe29aa4a4ab6baa4f63d6b6..b469d2a9df9e7a61422b56cf1d77a88c5284fef4 100644 (file)
@@ -6,7 +6,7 @@
 ;
 ; 6.3.2001, 17.4.2003
 
-       
+
        .include        "../inc/geossym.inc"
 
        .export         xsize, ysize
@@ -14,8 +14,8 @@
        .importzp       cursor_r, cursor_c
        .import         _cursor
        .constructor    initscrsize
-
-.code
+                      
+.segment        "INIT"
 
 initscrsize:
        lda     graphMode
index 255c48807bc055e905b8f340e941f65233f78d1b..d5ffbf3e5a398993ba414a0db6d9a212bbbf7f06 100644 (file)
@@ -21,6 +21,8 @@
 ;---------------------------------------------------------------------------
 ; Setup arguments for main
 
+.segment        "INIT"
+
 .proc   initmainargs
 
 ; Setup a pointer to our argv vector
index b4196b8fcce37a2251097e8aa90ca744cc8776b7..62336e1d112a46b4a2154aef31cc3591182b864c 100644 (file)
@@ -45,7 +45,8 @@ CFLAGS        = -Osir -g -T -t $(SYS) --forget-inc-paths -I . -I ../../include
 #--------------------------------------------------------------------------
 # Object files
 
-OBJS = cgetc.o         \
+OBJS =  cartread.o      \
+        cgetc.o         \
         crt0.o          \
        ctype.o         \
         eeprom.o        \
diff --git a/libsrc/lynx/cartread.s b/libsrc/lynx/cartread.s
new file mode 100644 (file)
index 0000000..9330a08
--- /dev/null
@@ -0,0 +1,49 @@
+; ***
+; CC65 Lynx Library
+;
+; Originally by Bastian Schick
+; http://www.geocities.com/SiliconValley/Byte/4242/lynx/
+;
+; Ported to cc65 (http://www.cc65.org) by
+; Shawn Jefferson, June 2004
+;
+; ***
+;
+; void __fastcall__ read_cart_block(unsigned char block, char *dest)
+;
+; Reads an entire block (1024 bytes) from the cartridge into the buffer
+; pointed to by dest.
+
+
+               .export     _read_cart_block
+               .import     FileSelectBlock, FileReadBytes
+               .import     popa
+
+        .include    "extzp.inc"
+
+
+.code
+
+;*******************************************
+; void read_cart_block (unsigned char block, char *dest);
+; loads one Block (1024 bytes) to pDest
+
+_read_cart_block:
+               sta     _FileDestPtr            ;  lo
+               stx     _FileDestPtr+1          ;  hi
+
+               jsr     popa                    ; bBlock
+
+               sta     _FileCurrBlock
+               jsr     FileSelectBlock         ; select block# (Accu)
+
+               lda     #<1024                  ; load a whole block (1024 bytes)
+               eor     #$ff
+               tax
+               lda     #>1024
+               eor     #$ff
+               tay
+
+               jmp     FileReadBytes
+
+
index d6bae50d607acbce7692dd76f1bcad5b5162a941..8b6808051251fe9ea11b8f80ebe85ea0cc48f361 100644 (file)
 
 
 ;---------------------------------------------------------------------------
-; Setup arguments for main
+; Get possible command-line arguments. Goes into the special INIT segment,
+; which may be reused after the startup code is run
+
+.segment        "INIT"
 
 .proc   initmainargs
 
index 0fcbe5d77c4d94cbf92d59dcf89d7b05283557bb..255b5f403da1abe5ef1f3a7049bca12a17c89137 100644 (file)
@@ -7,7 +7,7 @@
 ;
 
        .export         _cputcxy, _cputc, cputdirect, putchar
-       .export         newline               
+       .export         newline
         .constructor    conioinit
        .import         popa, _gotoxy
         .import         ppuinit, paletteinit, ppubuf_put
        .include        "nes.inc"
 
 ;-----------------------------------------------------------------------------
+                      
+.code
 
 _cputcxy:
-       pha                     ; Save C
-       jsr     popa            ; Get Y
+       pha                     ; Save C
+       jsr     popa            ; Get Y
        jsr     _gotoxy         ; Set cursor, drop x
-       pla                     ; Restore C
+       pla                     ; Restore C
 
 ; Plot a character - also used as internal function
 
@@ -67,13 +69,16 @@ plot:       ldy     CURS_X
 ; position in Y
 
 putchar:
-       ora     RVS             ; Set revers bit
+       ora     RVS             ; Set revers bit
         ldy     SCREEN_PTR+1
        ldx     SCREEN_PTR
                jmp     ppubuf_put
 
 ;-----------------------------------------------------------------------------
-; Initialize the conio subsystem
+; Initialize the conio subsystem. Code goes into the INIT segment, which may
+; be reused after startup.
+
+.segment        "INIT"
 
 conioinit:
         jsr     ppuinit
index ebe6d03481e892b017eb3fec7811f5bb7fc429a5..a9233382f0ed81ad1b7cfedd681a34d9d5068382 100644 (file)
 
 
 ;---------------------------------------------------------------------------
-; Setup arguments for main
+; Get possible command-line arguments. Goes into the special INIT segment,
+; which may be reused after the startup code is run
+
+.segment        "INIT"
 
 .proc   initmainargs
 
index ebe6d03481e892b017eb3fec7811f5bb7fc429a5..a9233382f0ed81ad1b7cfedd681a34d9d5068382 100644 (file)
 
 
 ;---------------------------------------------------------------------------
-; Setup arguments for main
+; Get possible command-line arguments. Goes into the special INIT segment,
+; which may be reused after the startup code is run
+
+.segment        "INIT"
 
 .proc   initmainargs
 
index 65bf26628e5aa0da534c51107b4d2d182270e9d0..0a440312719806b6d833c386c199086c67df9f35 100644 (file)
@@ -59,7 +59,7 @@ L2:           sta     ENABLE_ROM      ; Bank in the ROM
        .constructor    initkbd
        .destructor     donekbd
 
-.code                           ; Can go into the normal code segment
+.segment        "INIT"          ; Special init code segment may get overwritten
 
 .proc  initkbd
 
index 7ad231a2f0959871736b9aba0970fd8f32e63290..7365b1478da2dbba8a71565d1ff470f1db9e925b 100644 (file)
@@ -3,7 +3,7 @@
 ; Ullrich von Bassewitz, 2003-03-07
 ; Based on code from Stefan A. Haubenthal, <polluks@web.de>
 ; 2003-05-18, Greg King
-; 2004-04-28, Ullrich von Bassewitz
+; 2004-04-28, 2005-02-26, Ullrich von Bassewitz
 ;
 ; Scan a group of arguments that are in BASIC's input-buffer.
 ; Build an array that points to the beginning of each argument.
        .import         __argc, __argv
 
        .include        "plus4.inc"
-
+                                                                            
 
 
 MAXARGS         = 10                   ; Maximum number of arguments allowed
-REM     = $8f                  ; BASIC token-code
-NAME_LEN = 16                  ; maximum length of command-name
+REM     = $8f                  ; BASIC token-code
+NAME_LEN = 16                  ; maximum length of command-name
+
+; 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
@@ -117,12 +120,13 @@ argloop:lda     BASIC_BUF,x
 
 ; (The last vector in argv[] already is NULL.)
 
-done:  lda     #<argv        
+done:  lda     #<argv
        ldx     #>argv
        sta     __argv
        stx     __argv + 1
        rts
-
+                      
+; --------------------------------------------------------------------------
 ; These arrays are zeroed before initmainargs is called.
 ; char name[16+1];
 ; char* argv[MAXARGS+1]={name};
index 5857843fc2a85d99075784f2c48076e9e03a82a6..3cc1dc2862ed4df50dc4be0a4e5b4c07a69fed19 100644 (file)
@@ -3,7 +3,7 @@
 ; Ullrich von Bassewitz, 2003-03-07
 ; Based on code from Stefan A. Haubenthal, <polluks@web.de>
 ; 2003-05-18, Greg King
-; 2004-04-28, Ullrich von Bassewitz
+; 2004-04-28, 2005-02-26, Ullrich von Bassewitz
 ;
 ; Scan a group of arguments that are in BASIC's input-buffer.
 ; Build an array that points to the beginning of each argument.
@@ -33,8 +33,11 @@ MAXARGS       = 10                   ; Maximum number of arguments allowed
 REM     = $8f                  ; BASIC token-code
 NAME_LEN = 16                  ; maximum length of command-name
 
-; Get possible command-line arguments.
-;
+; Get possible command-line arguments. Goes into the special INIT segment,
+; which may be reused after the startup code is run
+
+.segment        "INIT"
+
 initmainargs:
 
 ; Assume that the program was loaded, a moment ago, by the traditional LOAD
@@ -100,7 +103,7 @@ argloop:lda     BASIC_BUF,x
         inx
         cmp     term
         bne     argloop
-
+                          
 ; We've found the end of the argument. X points one character behind it, and
 ; A contains the terminating character. To make the argument a valid C string,
 ; replace the terminating character by a zero.