summaryrefslogtreecommitdiffstats
path: root/sys/dev/aic7xxx
diff options
context:
space:
mode:
authorgibbs <gibbs@FreeBSD.org>1995-03-17 23:54:17 +0000
committergibbs <gibbs@FreeBSD.org>1995-03-17 23:54:17 +0000
commit0be8d9c7f65ec73db22ba12b714bb9a1025102e5 (patch)
treeb33a64bd00f9abd6c8b80fecdbc8031f18c051be /sys/dev/aic7xxx
parentd06f6b4e4f95f2bf7ae63d7be7e08d3a01d02e40 (diff)
downloadFreeBSD-src-0be8d9c7f65ec73db22ba12b714bb9a1025102e5.zip
FreeBSD-src-0be8d9c7f65ec73db22ba12b714bb9a1025102e5.tar.gz
Make the aic7xxx assembler take quoted strings as a single token.
Make $Id the version variable which required the quoted string "feature".
Diffstat (limited to 'sys/dev/aic7xxx')
-rw-r--r--sys/dev/aic7xxx/aic7xxx.seq9
-rw-r--r--sys/dev/aic7xxx/aic7xxx_asm.c26
-rw-r--r--sys/dev/aic7xxx/aicasm.c26
-rw-r--r--sys/dev/aic7xxx/aicasm/aicasm.c26
4 files changed, 70 insertions, 17 deletions
diff --git a/sys/dev/aic7xxx/aic7xxx.seq b/sys/dev/aic7xxx/aic7xxx.seq
index b735961..d328693 100644
--- a/sys/dev/aic7xxx/aic7xxx.seq
+++ b/sys/dev/aic7xxx/aic7xxx.seq
@@ -21,9 +21,8 @@
# FreeBSD, Twin, Wide, 2 command per target support, tagged queuing and other
# optimizations provided by Justin T. Gibbs (gibbs@FreeBSD.org)
#
-# $Id: aic7xxx.seq,v 1.8 1995/02/22 01:37:52 gibbs Exp $
-VERSION AIC7XXX_SEQ_VERSION 1.8
+VERSION AIC7XXX_SEQ_VER "$Id: aic7xxx.seq,v 1.9 1995/03/07 09:00:44 gibbs Exp $"
SCBMASK = 0x1f
@@ -726,7 +725,7 @@ p_mesgin5:
test A,0x78 jnz p_mesginN # !DiscPriv|!LUNTAR|!Reserved
- and A,0x7 # lun in lower three bits
+ and A,0x07 # lun in lower three bits
or SAVED_TCL,A,SELID
and SAVED_TCL,0xf7
and A,0x08,SBLKCTL # B Channel??
@@ -737,8 +736,8 @@ p_mesgin5:
# If we get one, we use the tag returned to switch to the proper
# SCB. Otherwise, we just use the findSCB method.
p_mesgin5_loop:
- test SSTAT1,0x8 jnz use_findSCB # BUSFREE
- test SSTAT1,0x1 jz p_mesgin5_loop # REQINIT
+ test SSTAT1,0x08 jnz use_findSCB # BUSFREE
+ test SSTAT1,0x01 jz p_mesgin5_loop # REQINIT
and A,0xe0,SCSISIGI # CDI|IOI|MSGI
cmp A,0xe0 jne use_findSCB # Still p_mesgin?
mvi A call inb_first
diff --git a/sys/dev/aic7xxx/aic7xxx_asm.c b/sys/dev/aic7xxx/aic7xxx_asm.c
index 15fbb7f..9eb9630 100644
--- a/sys/dev/aic7xxx/aic7xxx_asm.c
+++ b/sys/dev/aic7xxx/aic7xxx_asm.c
@@ -26,7 +26,7 @@
* A <label> is an <undef-sym> ending in a colon. Spaces, tabs, and commas
* are token separators.
*
- * $Id: aic7xxx.c,v 1.4 1995/01/16 16:31:20 gibbs Exp $
+ * $Id: aic7xxx.c,v 1.5 1995/01/22 00:46:52 gibbs Exp $
*/
/* #define _POSIX_SOURCE 1 */
@@ -199,7 +199,7 @@ void output(FILE *fp)
char **getl(int *n)
{
int i;
- char *p;
+ char *p, *quote;
static char buf[MAXLINE];
static char *a[MAXTOKEN];
@@ -215,12 +215,30 @@ char **getl(int *n)
p = strchr(buf, '#');
if (p)
*p = '\0';
-
- for (p = strtok(buf, ", \t\n"); p; p = strtok(NULL, ", \t\n"))
+ p = buf;
+rescan:
+ quote = strchr(p, '\"');
+ if (quote)
+ *quote = '\0';
+ for (p = strtok(p, ", \t\n"); p; p = strtok(NULL, ", \t\n"))
if (i < MAXTOKEN-1)
a[i++] = p;
else
error("too many tokens");
+ if (quote) {
+ quote++;
+ p = strchr(quote, '\"');
+ if (!p)
+ error("unterminated string constant");
+ else if (i < MAXTOKEN-1) {
+ a[i++] = quote;
+ *p = '\0';
+ p++;
+ }
+ else
+ error("too many tokens");
+ goto rescan;
+ }
if (i) {
*n = i;
return(a);
diff --git a/sys/dev/aic7xxx/aicasm.c b/sys/dev/aic7xxx/aicasm.c
index 15fbb7f..9eb9630 100644
--- a/sys/dev/aic7xxx/aicasm.c
+++ b/sys/dev/aic7xxx/aicasm.c
@@ -26,7 +26,7 @@
* A <label> is an <undef-sym> ending in a colon. Spaces, tabs, and commas
* are token separators.
*
- * $Id: aic7xxx.c,v 1.4 1995/01/16 16:31:20 gibbs Exp $
+ * $Id: aic7xxx.c,v 1.5 1995/01/22 00:46:52 gibbs Exp $
*/
/* #define _POSIX_SOURCE 1 */
@@ -199,7 +199,7 @@ void output(FILE *fp)
char **getl(int *n)
{
int i;
- char *p;
+ char *p, *quote;
static char buf[MAXLINE];
static char *a[MAXTOKEN];
@@ -215,12 +215,30 @@ char **getl(int *n)
p = strchr(buf, '#');
if (p)
*p = '\0';
-
- for (p = strtok(buf, ", \t\n"); p; p = strtok(NULL, ", \t\n"))
+ p = buf;
+rescan:
+ quote = strchr(p, '\"');
+ if (quote)
+ *quote = '\0';
+ for (p = strtok(p, ", \t\n"); p; p = strtok(NULL, ", \t\n"))
if (i < MAXTOKEN-1)
a[i++] = p;
else
error("too many tokens");
+ if (quote) {
+ quote++;
+ p = strchr(quote, '\"');
+ if (!p)
+ error("unterminated string constant");
+ else if (i < MAXTOKEN-1) {
+ a[i++] = quote;
+ *p = '\0';
+ p++;
+ }
+ else
+ error("too many tokens");
+ goto rescan;
+ }
if (i) {
*n = i;
return(a);
diff --git a/sys/dev/aic7xxx/aicasm/aicasm.c b/sys/dev/aic7xxx/aicasm/aicasm.c
index 15fbb7f..9eb9630 100644
--- a/sys/dev/aic7xxx/aicasm/aicasm.c
+++ b/sys/dev/aic7xxx/aicasm/aicasm.c
@@ -26,7 +26,7 @@
* A <label> is an <undef-sym> ending in a colon. Spaces, tabs, and commas
* are token separators.
*
- * $Id: aic7xxx.c,v 1.4 1995/01/16 16:31:20 gibbs Exp $
+ * $Id: aic7xxx.c,v 1.5 1995/01/22 00:46:52 gibbs Exp $
*/
/* #define _POSIX_SOURCE 1 */
@@ -199,7 +199,7 @@ void output(FILE *fp)
char **getl(int *n)
{
int i;
- char *p;
+ char *p, *quote;
static char buf[MAXLINE];
static char *a[MAXTOKEN];
@@ -215,12 +215,30 @@ char **getl(int *n)
p = strchr(buf, '#');
if (p)
*p = '\0';
-
- for (p = strtok(buf, ", \t\n"); p; p = strtok(NULL, ", \t\n"))
+ p = buf;
+rescan:
+ quote = strchr(p, '\"');
+ if (quote)
+ *quote = '\0';
+ for (p = strtok(p, ", \t\n"); p; p = strtok(NULL, ", \t\n"))
if (i < MAXTOKEN-1)
a[i++] = p;
else
error("too many tokens");
+ if (quote) {
+ quote++;
+ p = strchr(quote, '\"');
+ if (!p)
+ error("unterminated string constant");
+ else if (i < MAXTOKEN-1) {
+ a[i++] = quote;
+ *p = '\0';
+ p++;
+ }
+ else
+ error("too many tokens");
+ goto rescan;
+ }
if (i) {
*n = i;
return(a);
OpenPOWER on IntegriCloud