# HG changeset patch # User Shinji KONO # Date 1546239444 -32400 # Node ID 098b3feab38c6dc4beb85bf8df2aa9afc8ae15f6 # Parent 613615c9b946fcd0b1ede6b2c6a254cb19718142 mc09 test program worked diff -r 613615c9b946 -r 098b3feab38c os9/mc09/makefile --- 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 diff -r 613615c9b946 -r 098b3feab38c os9/mc09/mclibos9.c --- 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);