changeset 110:098b3feab38c

mc09 test program worked
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 31 Dec 2018 15:57:24 +0900
parents 613615c9b946
children c4e909f21b25
files os9/mc09/makefile os9/mc09/mclibos9.c
diffstat 2 files changed, 20 insertions(+), 20 deletions(-) [+]
line wrap: on
line diff
--- a/os9/mc09/makefile	Sun Dec 30 15:41:25 2018 +0900
+++ b/os9/mc09/makefile	Mon Dec 31 15:57:24 2018 +0900
@@ -10,15 +10,13 @@
 
 AS09 = ../../src/a09
 
-all:	mc2
+all:	mc2 testcp
 
 mc: mc.c
 	cc $(CFLAGS) mc.c -o mc
 
-c.out:	mc mc2.c mclib.c
-	./mc mc2.c
-
-mc2:	c.out
+mc2:	mc mc2.c mclib.c
+	./mc -Mmc mc2.c
 	$(AS09) crtos9.asm -l c.lst -o mc2
 
 # mc2.o:	c.out
--- a/os9/mc09/mclibos9.c	Sun Dec 30 15:41:25 2018 +0900
+++ b/os9/mc09/mclibos9.c	Mon Dec 31 15:57:24 2018 +0900
@@ -3,6 +3,8 @@
  */
 
 
+int errno  = 0;
+
 typedef	struct {
     int fd;                   /*  0 */
     int fmode;                 /*  2 */
@@ -94,11 +96,11 @@
 	for ( p = mode; *p; p++ ) {
 		switch ( *p ) {
 		case 'r':
-			rd = 1; break;
+			rd = 1; cm |= 1; break;
 		case 'w':
-			wt = 1; break;
+			wt = 1; cm |= 2; break;
 		case 'c':
-			cm = 1; break;
+			cm = 2; break;
 		default:
 			return NULL;
 		}
@@ -121,18 +123,18 @@
 #asm
         pshs      x,y,u
         ldx       -2,u
-        lda       2,x          mode
-        ldb       3,x          src attribute
+        lda       7,u          mode
         ldx       6,x          name
         os9       I$Open
-        bcc        _LC0001
-        ldx       -4,u
+        bcs        _LC0001
+        ldx       -2,u
         tfr       a,b
         clra
         std       ,x
         bra       _LC0002
 _LC0001
-        ldx       -4,u
+        ldx       -2,u
+        tfr       a,b
         clra
         std       2,x          err code
         ldd       #-1
@@ -140,7 +142,7 @@
 _LC0002
         puls      x,y,u
 #endasm
-	if (fcbp->fd < 0 ) return NULL;
+	if (fcbp->fd < 0 ) { errno = fcbp->fmode ; return NULL; }
 	/* fcbp->ptr = fcbp->buff;
 	fcbp->len = 0; */
 	return (_fcbtbl[i] = fcbp);
@@ -159,18 +161,18 @@
 #asm
         pshs      x,y,u
         ldx       -2,u
-        lda       2,x          mode
-        ldb       3,x          src attribute
+        lda       7,u          mode
         ldx       6,x          name
         os9       I$Create
-        bcc        _LC0003
-        ldx       -4,u
+        bcs        _LC0003
+        ldx       -2,u
         tfr       a,b
         clra
         std       ,x
         bra       _LC0004
 _LC0003
-        ldx       -4,u
+        ldx       -2,u
+        tfr       a,b
         clra
         stD       2,x          err code
         ldd       #-1
@@ -178,7 +180,7 @@
 _LC0004
         puls      x,y,u
 #endasm
-	if (fcbp->fd < 0 ) return NULL;
+	if (fcbp->fd < 0 ) { errno = fcbp->fmode ; return NULL; }
 	/* fcbp->ptr = fcbp->buff;
 	fcbp->len = 0; */
 	return (_fcbtbl[i] = fcbp);