Browse Source

adapted to new ip_spec.t and changed location

ceriel 36 years ago
parent
commit
f62a5c7157
6 changed files with 14 additions and 11 deletions
  1. 0 1
      util/ass/.distr
  2. 3 3
      util/ass/Makefile
  3. 4 7
      util/ass/ass30.c
  4. 1 0
      util/ass/ass50.c
  5. 1 0
      util/ass/ip_spec.h
  6. 5 0
      util/ass/maktab.c

+ 0 - 1
util/ass/.distr

@@ -13,7 +13,6 @@ assda.c
 assex.h
 assrl.c
 ip_spec.h
-ip_spec.t
 maktab.c
 asprint.p
 em_ass.6

+ 3 - 3
util/ass/Makefile

@@ -68,8 +68,8 @@ asscm.o:        ass00.h
 
 asstb.o:        asstb.c
 
-asstb.c:        maktab ip_spec.t
-		maktab ip_spec.t asstb.c
+asstb.c:        maktab $d/etc/ip_spec.t
+		maktab $d/etc/ip_spec.t asstb.c
 
 maktab:         maktab.c $h/em_spec.h ip_spec.h $h/em_flag.h \
 		$l/em_data.a
@@ -83,4 +83,4 @@ opr:
 
 pr:
 		@(pr ass00.h assex.h ip_spec.h ass?0.c ass[rcd]?.c \
-		maktab.c ; pr -3 ip_spec.t)
+		maktab.c)

+ 4 - 7
util/ass/ass30.c

@@ -210,14 +210,10 @@ int i_flag,flag,number ; cons_t val ; {
 	case OPSHORT :
 		if ( val<0 ) val = -1-val ;
 		return val>=0 && val<number*256 ;
+	case OP16U:
+		return val>=0 && val<=65535L &&
+		       ( i_flag!=PAR_G || val<=maxadr ) ;
 	case OP16 :
-		/* Commented out for the time being. This must be in
-		   ip_spec.t ...
-		if ( i_flag==PAR_G ) {
-			return val>=0 &&
-			       val<=maxadr && val <= 65535L;
-		}
-		*/
 		return val>= -32768 && val<=32767 ;
 	case OP32 :
 		return TRUE ;
@@ -237,6 +233,7 @@ int oplength(flag) int flag ; {
 	case OPMINI  : break ;
 	case OP8     :
 	case OPSHORT : cnt++ ; break ;
+	case OP16U:
 	case OP16    : cnt+=2 ; break ;
 	case OP32    : cnt+=5 ; break ;
 	case OP64    : cnt+=9 ; break ;

+ 1 - 0
util/ass/ass50.c

@@ -149,6 +149,7 @@ genop(startc,value,i_flag) char *startc ; cons_t value ; int i_flag ; {
 		put8((char)value) ;
 		break ;
 	case OP16:
+	case OP16U:
 		put16(int_cast value) ;
 		break ;
 	case OP32:

+ 1 - 0
util/ass/ip_spec.h

@@ -15,6 +15,7 @@
 #define OP16    4       /* 2  2-byte signed operand */
 #define OP32    5       /* 4  4-byte signed operand */
 #define OP64    6       /* 8  8-byte signed operand */
+#define OP16U	7	/* u  2-byte unsigned operand */
 
 #define OPESC   010     /* e  escaped opcode */
 #define OPWORD  020     /* w  operand is word multiple */

+ 5 - 0
util/ass/maktab.c

@@ -182,6 +182,8 @@ int decflag(str) char *str ; {
 		check(type) ; type=OP32 ; break ;
 	case '8' :
 		check(type) ; type=OP64 ; break ;
+	case 'u':
+		check(type) ; type=OP16U ; break ;
 	case 'e' :
 		check(escape) ; escape=0 ; break ;
 	case 'N' :
@@ -202,6 +204,7 @@ int decflag(str) char *str ; {
 		if ( escape!=ILLGL ) error("Conflicting escapes") ;
 		escape=ILLGL ;
 	case OP16 :
+	case OP16U :
 	case OP8 :
 	case OPSHORT :
 	case OPNO :
@@ -284,6 +287,7 @@ int oplength(a) struct opform *a ; {
 	case OPMINI  : break ;
 	case OP8     :
 	case OPSHORT : cnt++ ; break ;
+	case OP16U   :
 	case OP16    : cnt+=2 ; break ;
 	case OP32    : cnt+=5 ; break ;
 	case OP64    : cnt+=9 ; break ;
@@ -339,6 +343,7 @@ checkall() {
 			else if ( flag&OP_POS )
 				posc[opc]++ ;
 			break ;
+		case OP16U :
 		case OP32 :
 		case OP64 :
 			break ;