
;Reading at top level in Editor Typeout Window 7.
;Reading in base 10 in package SPELL with standard Zetalisp readtable.


(defun check-words(input
		   &key
		     (pred '(lambda(x) (not(word-ok-p x))))
		     (counts nil) (verbose nil)
		   &aux found (count 0) temp eof)
  (with-open-file (in input)
    (loop
      while (not eof)
      do
      (multiple-value-setq
	(temp eof)
	(read-delimited-string  *ng-characters* in nil))
      (when (> (string-length temp) 0)
	(when (funcall pred temp)
	  (when verbose (print temp))
	  (if counts (isoc temp found)
	    (unless (member temp found) (push-ip temp found)))
	  (incf count)))
      finally (return found count))))
CHECK-WORDS
(disassemble 'check-words)
Arg 0 (INPUT) is required, local, not initialized.
Rest arg (NIL) is local, not initialized.
Local 1 (PRED) is local, initialized to '(LAMBDA (X) (NOT (WORD-OK-P X))).
Local 2 (COUNTS) is local, not initialized.
Local 3 (VERBOSE) is local, not initialized.

 64 MOVE D-IGNORE LOCAL|0
 65 BR-NIL 73
 66 CALL D-IGNORE FEF|21      ;#'SYSTEM:STORE-KEYWORD-ARG-VALUES
 67 (MISC) %STACK-FRAME-POINTER D-PDL
 68 MOVE D-PDL LOCAL|0
 69 MOVE D-PDL FEF|22         ;'(:PRED :COUNTS :VERBOSE)
 70 MOVE D-PDL 'NIL
 71 PUSH-E LOCAL|1            ;PRED
 72 MOVE D-LAST PDL-POP
 73 SET-ZERO LOCAL|5          ;COUNT
 74 MOVE D-PDL FEF|23         ;':ABORT
 75 POP LOCAL|9               ;.FILE-ABORTED-FLAG.
 76 MOVE D-PDL FEF|24         ;'146
 77 MOVE D-PDL '4
 78 (MISC) %CATCH-OPEN-MV D-IGNORE
 79 MOVE D-PDL 'T
 80 CALL D-PDL FEF|25         ;#'OPEN
 81 MOVE D-LAST ARG|0         ;INPUT
 82 MOVEM LOCAL|8
 83 POP LOCAL|10              ;IN
 84 MOVE D-IGNORE LOCAL|7     ;EOF
 85 BR-NOT-NIL 140
 86 MOVE D-PDL FEF|26         ;#'READ-DELIMITED-STRING
 87 MOVE D-PDL '2
 88 (MISC) %CALL-MULT-VALUE D-IGNORE
 89 MOVE D-PDL FEF|6          ;*NG-CHARACTERS*
 90 MOVE D-PDL LOCAL|10       ;IN
 91 MOVE D-LAST 'NIL
 92 POP LOCAL|7               ;EOF
 93 POP LOCAL|6               ;TEMP
 94 CALL D-PDL FEF|27         ;#'STRING-LENGTH
 95 MOVE D-LAST LOCAL|6       ;TEMP
 96 (MISC) PLUSP D-IGNORE
 97 BR-NIL 84
 98 CALL D-IGNORE LOCAL|1     ;PRED
 99 MOVE D-LAST LOCAL|6       ;TEMP
100 BR-NIL 84
101 MOVE D-IGNORE LOCAL|3     ;VERBOSE
102 BR-NIL 105
103 CALL D-IGNORE FEF|28      ;#'PRINT
104 MOVE D-LAST LOCAL|6       ;TEMP
105 MOVE D-IGNORE LOCAL|2     ;COUNTS
106 BR-NIL 123
107 MOVE D-PDL LOCAL|6        ;TEMP
108 MOVE D-PDL LOCAL|4        ;FOUND
109 (MISC) ASSOC D-PDL
110 BR-NOT-NIL-POP 118
111 MOVE D-PDL LOCAL|6        ;TEMP
112 PUSH-NUMBER 0
113 (MISC) CONS D-PDL
114 MOVE D-PDL LOCAL|4        ;FOUND
115 (MISC) CONS D-PDL
116 MOVEM LOCAL|4             ;FOUND
117 CAR D-PDL PDL-POP
118 MOVEM LOCAL|11
119 CDR D-PDL LOCAL|11
120 1+ PDL-POP
121 (MISC) SETCDR D-IGNORE
122 BR 138
123 MOVE D-PDL LOCAL|6        ;TEMP
124 MOVE D-PDL LOCAL|4        ;FOUND
125 (MISC) MEMBER D-IGNORE
126 BR-NOT-NIL 138
127 MOVE D-IGNORE LOCAL|4     ;FOUND
128 BR-NOT-NIL 133
129 MOVE D-PDL LOCAL|6        ;TEMP
130 PUSH-NUMBER 1
131 (MISC) %INTERNAL-LIST D-PDL
132 BR 137
133 MOVE D-PDL LOCAL|6        ;TEMP
134 MOVE D-PDL LOCAL|4        ;FOUND
135 (MISC) CONS D-PDL
136 MOVEM LOCAL|4             ;FOUND
137 POP LOCAL|4               ;FOUND
138 SETE-1+ LOCAL|5           ;COUNT
139 BR 84
140 MOVE D-PDL LOCAL|4        ;FOUND
141 MOVE D-PDL LOCAL|5        ;COUNT
142 PUSH-NUMBER 2
143 (MISC) RETURN-N-KEEP-CONTROL D-IGNORE
144 SET-NIL LOCAL|9           ;.FILE-ABORTED-FLAG.
145 MOVE D-RETURN PDL-POP
146 MOVE D-IGNORE LOCAL|8
147 BR-NIL 154
148 CALL D-IGNORE FEF|29      ;#'ERRORP
149 MOVE D-LAST LOCAL|8
150 BR-NOT-NIL 154
151 CALL D-IGNORE LOCAL|8
152 MOVE D-PDL FEF|30         ;':CLOSE
153 MOVE D-LAST LOCAL|9       ;.FILE-ABORTED-FLAG.
154 (MISC) %UNWIND-PROTECT-CONTINUE D-RETURN

CHECK-WORDS
fil 
"spell-complaints.text"
(check-words fil)
("CARNIVORE" "CANADIAN" "MEXICO" "CHINA" "ENCORE" "ALIMENTARY" "TRANQUILIZE" "TRANSCENDENTAL" "RUGBY" "MERMAID" "UNIX" "PARFAIT" "SAXOPHONE" "jacuzzi" "onyx" "OK" "be" "should" "sauna")
64

(defun check-words(input
		   &key
		     (pred #'(lambda(x) (not(word-ok-p x))))
		     (counts nil) (verbose nil)
		   &aux found (count 0) temp eof)
  (with-open-file (in input)
    (loop
      while (not eof)
      do
      (multiple-value-setq
	(temp eof)
	(read-delimited-string  *ng-characters* in nil))
      (when (> (string-length temp) 0)
	(when (funcall pred temp)
	  (when verbose (print temp))
	  (if counts (isoc temp found)
	    (unless (member temp found) (push-ip temp found)))
	  (incf count)))
      finally (return found count))))
CHECK-WORDS
(disassemble 'check-words)
Arg 0 (INPUT) is required, local, not initialized.
Rest arg (NIL) is local, not initialized.
Local 1 (NIL) is local, initialized to the value of SI:KEYWORD-GARBAGE.
Local 2 (COUNTS) is local, not initialized.
Local 3 (VERBOSE) is local, not initialized.

 70 MOVE D-IGNORE LOCAL|0
 71 BR-NIL 79
 72 CALL D-IGNORE FEF|23      ;#'SYSTEM:STORE-KEYWORD-ARG-VALUES
 73 (MISC) %STACK-FRAME-POINTER D-PDL
 74 MOVE D-PDL LOCAL|0
 75 MOVE D-PDL FEF|24         ;'(:PRED :COUNTS :VERBOSE)
 76 MOVE D-PDL 'NIL
 77 PUSH-E LOCAL|1
 78 MOVE D-LAST PDL-POP
 79 MOVE D-PDL LOCAL|1
 80 EQ FEF|7                  ;SI:KEYWORD-GARBAGE
 81 BR-NIL 84
 82 MOVE D-PDL FEF|25         ;'#<DTP-FEF-POINTER (:INTERNAL #:G0602 0) 6053137>
 83 BR 85
 84 MOVE D-PDL LOCAL|1
 85 POP LOCAL|4               ;PRED
 86 SET-ZERO LOCAL|6          ;COUNT
 87 MOVE D-PDL FEF|26         ;':ABORT
 88 POP LOCAL|10              ;.FILE-ABORTED-FLAG.
 89 MOVE D-PDL FEF|27         ;'159
 90 MOVE D-PDL '4
 91 (MISC) %CATCH-OPEN-MV D-IGNORE
 92 MOVE D-PDL 'T
 93 CALL D-PDL FEF|28         ;#'OPEN
 94 MOVE D-LAST ARG|0         ;INPUT
 95 MOVEM LOCAL|9
 96 POP LOCAL|11              ;IN
 97 MOVE D-IGNORE LOCAL|8     ;EOF
 98 BR-NOT-NIL 153
 99 MOVE D-PDL FEF|29         ;#'READ-DELIMITED-STRING
100 MOVE D-PDL '2
101 (MISC) %CALL-MULT-VALUE D-IGNORE
102 MOVE D-PDL FEF|6          ;*NG-CHARACTERS*
103 MOVE D-PDL LOCAL|11       ;IN
104 MOVE D-LAST 'NIL
105 POP LOCAL|8               ;EOF
106 POP LOCAL|7               ;TEMP
107 CALL D-PDL FEF|30         ;#'STRING-LENGTH
108 MOVE D-LAST LOCAL|7       ;TEMP
109 (MISC) PLUSP D-IGNORE
110 BR-NIL 97
111 CALL D-IGNORE LOCAL|4     ;PRED
112 MOVE D-LAST LOCAL|7       ;TEMP
113 BR-NIL 97
114 MOVE D-IGNORE LOCAL|3     ;VERBOSE
115 BR-NIL 118
116 CALL D-IGNORE FEF|31      ;#'PRINT
117 MOVE D-LAST LOCAL|7       ;TEMP
118 MOVE D-IGNORE LOCAL|2     ;COUNTS
119 BR-NIL 136
120 MOVE D-PDL LOCAL|7        ;TEMP
121 MOVE D-PDL LOCAL|5        ;FOUND
122 (MISC) ASSOC D-PDL
123 BR-NOT-NIL-POP 131
124 MOVE D-PDL LOCAL|7        ;TEMP
125 PUSH-NUMBER 0
126 (MISC) CONS D-PDL
127 MOVE D-PDL LOCAL|5        ;FOUND
128 (MISC) CONS D-PDL
129 MOVEM LOCAL|5             ;FOUND
130 CAR D-PDL PDL-POP
131 MOVEM LOCAL|12
132 CDR D-PDL LOCAL|12
133 1+ PDL-POP
134 (MISC) SETCDR D-IGNORE
135 BR 151
136 MOVE D-PDL LOCAL|7        ;TEMP
137 MOVE D-PDL LOCAL|5        ;FOUND
138 (MISC) MEMBER D-IGNORE
139 BR-NOT-NIL 151
140 MOVE D-IGNORE LOCAL|5     ;FOUND
141 BR-NOT-NIL 146
142 MOVE D-PDL LOCAL|7        ;TEMP
143 PUSH-NUMBER 1
144 (MISC) %INTERNAL-LIST D-PDL
145 BR 150
146 MOVE D-PDL LOCAL|7        ;TEMP
147 MOVE D-PDL LOCAL|5        ;FOUND
148 (MISC) CONS D-PDL
149 MOVEM LOCAL|5             ;FOUND
150 POP LOCAL|5               ;FOUND
151 SETE-1+ LOCAL|6           ;COUNT
152 BR 97
153 MOVE D-PDL LOCAL|5        ;FOUND
154 MOVE D-PDL LOCAL|6        ;COUNT
155 PUSH-NUMBER 2
156 (MISC) RETURN-N-KEEP-CONTROL D-IGNORE
157 SET-NIL LOCAL|10          ;.FILE-ABORTED-FLAG.
158 MOVE D-RETURN PDL-POP
159 MOVE D-IGNORE LOCAL|9
160 BR-NIL 167
161 CALL D-IGNORE FEF|32      ;#'ERRORP
162 MOVE D-LAST LOCAL|9
163 BR-NOT-NIL 167
164 CALL D-IGNORE LOCAL|9
165 MOVE D-PDL FEF|33         ;':CLOSE
166 MOVE D-LAST LOCAL|10      ;.FILE-ABORTED-FLAG.
167 (MISC) %UNWIND-PROTECT-CONTINUE D-RETURN

CHECK-WORDS
(check-words fil)
;Back to top level in Editor Typeout Window 7.
(dribble)