# HG changeset patch # User Shinji KONO # Date 1546053926 -32400 # Node ID 6eef99bb4771ec3bcf62cadb39090b6509fa0b2d # Parent 096b3fc7aa668c82dfd78db5187ac21ea7bd9e87 fix runtime diff -r 096b3fc7aa66 -r 6eef99bb4771 os9/mc09/crtos9.asm --- a/os9/mc09/crtos9.asm Fri Dec 28 17:43:55 2018 +0900 +++ b/os9/mc09/crtos9.asm Sat Dec 29 12:25:26 2018 +0900 @@ -31,14 +31,42 @@ pshs x,y POINT TO CONTENT OF ARGUMENT VECTOR leay ,u PSHS Y + leay _GLOBALS,y + sty heapp,y + +* allocate memory and change stack +* try to allocate maximum memory if not specified + ifndef __MEMSIZ + LDD #(1024*48) + else + LDD #__MEMSIZ + endif + pshs d +__0C004 + os9 F$Mem + bcc __0C005 + ldd ,s + subd #$1000 + blo exit can't get any memroy + std ,s + bra __0C004 +__0C005 +* y is heap upper bound +* copy saved arg into new stack +* and change the stack + leax ,y + ldy 2,s + ldd 4,s + std ,--x + ldd 6,s + std ,--x + leas ,x * clear globals on Y - LDX #_GLOBALS -_0C002 BEQ _0C003 - CLR ,Y+ - LEAX -1,X - BRA _0C002 - -_0C003 PULS Y + LDD #_GLOBALS +_0C002 CLR D,Y + subd #1 + BNE _0C002 +_0C003 LBSR _INITIALIZE call initializer LBSR _main exit clrb @@ -68,6 +96,7 @@ ADDA 5,S LEAS 6,S +initheap RTS * _00002 CLR ,-S signed divide diff -r 096b3fc7aa66 -r 6eef99bb4771 os9/mc09/makefile --- a/os9/mc09/makefile Fri Dec 28 17:43:55 2018 +0900 +++ b/os9/mc09/makefile Sat Dec 29 12:25:26 2018 +0900 @@ -37,7 +37,7 @@ patch = NFILES) return NULL; if ( (fcbp = malloc(FCBSIZE)) == NULL ) return NULL; if ( _setname(name,fcbp) == 0 ) return NULL; + 0; #asm pshs x,y,u ldx -4,u @@ -152,6 +154,7 @@ if ( i >= NFILES) return NULL; if ( (fcbp = malloc(FCBSIZE)) == NULL ) return NULL; if ( _setname(name,fcbp) == 0 ) return NULL; + 0; #asm pshs x,y,u ldx -4,u @@ -187,6 +190,7 @@ if ( i >= NFILES ) return EOF; _fcbtbl[i] = NULL; if ( (fcbp == STDIN) || (fcbp == STDOUT) || (fcbp == STDERR) ) return 0; + 0; #asm pshs x,y,u ldx -4,u @@ -535,11 +539,7 @@ #asm sbrk PSHS U LEAU ,S - - LDD heapp,Y - BNE _mc0 - BSR initheap -_mc0 PSHS D + PSHS D TFR S,D SUBD ,S++ CMPD 4,U @@ -556,14 +556,6 @@ LEAS ,U PULS U,PC -initheap - PSHS U - LEAU ,S - TFR Y,D - ADDD #_GLOBALS - STD heapp,Y - LEAS ,U - PULS U,PC #endasm mfree(ap)