changeset 109:613615c9b946

open
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sun, 30 Dec 2018 15:41:25 +0900
parents 014002970940
children 098b3feab38c
files os9/mc09/crtos9.asm os9/mc09/mclibos9.c
diffstat 2 files changed, 22 insertions(+), 41 deletions(-) [+]
line wrap: on
line diff
--- a/os9/mc09/crtos9.asm	Sun Dec 30 08:27:58 2018 +0900
+++ b/os9/mc09/crtos9.asm	Sun Dec 30 15:41:25 2018 +0900
@@ -1,10 +1,6 @@
 
-*
-* micro-C driver under FLEX
-*
-*	12-Dec-81	M.Ohta,H.Tezuka
-*	12-Dec-2018	S.Kono
-*
+* * micro-C driver under FLEX * * 12-Dec-81 M.Ohta,H.Tezuka
+* 12-Dec-2018 S.Kono * 
 
 *
 * micro-C user program
@@ -31,8 +27,6 @@
         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
@@ -67,6 +61,9 @@
         subd     #1
 	BNE	_0C002
 _0C003	
+        tfr     y,d
+        addd    #_GLOBALS
+        std     heapp,y
 	LBSR	_INITIALIZE	call initializer
 	LBSR	_main
 exit	clrb
--- a/os9/mc09/mclibos9.c	Sun Dec 30 08:27:58 2018 +0900
+++ b/os9/mc09/mclibos9.c	Sun Dec 30 15:41:25 2018 +0900
@@ -8,8 +8,10 @@
     int fmode;                 /*  2 */
     int len;                  /*  4 */
     char *fname;               /*  6 */
-    char *ptr;        /*  8 */
-    char buff[256];       /*  10 */
+    /*
+    char *ptr;        /*  8 
+    char buff[256];       /*  10/
+    */
  } FILE ;
 
 #define	FCBSIZE	(sizeof(FILE))
@@ -118,10 +120,10 @@
 	if ( _setname(name,fcbp) == 0 ) return NULL;
 #asm
         pshs      x,y,u
-        ldx       -4,u
+        ldx       -2,u
         lda       2,x          mode
         ldb       3,x          src attribute
-        leax      6,x          name
+        ldx       6,x          name
         os9       I$Open
         bcc        _LC0001
         ldx       -4,u
@@ -139,8 +141,8 @@
         puls      x,y,u
 #endasm
 	if (fcbp->fd < 0 ) return NULL;
-	fcbp->ptr = fcbp->buff;
-	fcbp->len = 0;
+	/* fcbp->ptr = fcbp->buff;
+	fcbp->len = 0; */
 	return (_fcbtbl[i] = fcbp);
 }
 
@@ -156,10 +158,10 @@
 	if ( _setname(name,fcbp) == 0 ) return NULL;
 #asm
         pshs      x,y,u
-        ldx       -4,u
+        ldx       -2,u
         lda       2,x          mode
         ldb       3,x          src attribute
-        leax      6,x          name
+        ldx       6,x          name
         os9       I$Create
         bcc        _LC0003
         ldx       -4,u
@@ -177,8 +179,8 @@
         puls      x,y,u
 #endasm
 	if (fcbp->fd < 0 ) return NULL;
-	fcbp->ptr = fcbp->buff;
-	fcbp->len = 0;
+	/* fcbp->ptr = fcbp->buff;
+	fcbp->len = 0; */
 	return (_fcbtbl[i] = fcbp);
 }
 
@@ -192,7 +194,7 @@
 	if ( (fcbp == STDIN) || (fcbp == STDOUT) || (fcbp == STDERR) ) return 0;
 #asm
         pshs      x,y,u
-        ldx       -4,u
+        ldx       4,u
         lda       1,x
         os9       I$Close
         puls      x,y,u
@@ -202,28 +204,9 @@
 }
 
 _setname(name,fcbp)
-char *name,*fcbp;
-{int i;
-	while(isspace(*name)) ++name;
-	if (isdigit(*name))
-	{	fcbp[3] = *name++ - '0';
-		if (*name++ != '.') return 0;
-	}
-	else fcbp[3] = 0xff;
-	for (i = 4; i < 15; ++i) fcbp[i] = 0;
-	if (!isalpha(*name)) return -1;
-	for (i = 4; i < 12; ++i)
-	{	if (!*name || (*name == '.')) break;
-		fcbp[i] = *name++;
-	}
-	while (*name && (*name != '.')) ++name;
-	if (*name == '.')
-	{	++name;
-		for (i = 12; i < 15; ++i)
-		{	if (!*name) break;
-			fcbp[i] = *name++;
-		}
-	}
+char *name; FILE *fcbp;
+{
+        fcbp->fname = name;
 	return 1;
 }
 
@@ -534,6 +517,7 @@
 #asm
 sbrk	PSHS	U
 	LEAU	,S
+        LDD     heapp,Y
     	PSHS	D
 	TFR	S,D
 	SUBD	,S++