;;; -*- Mode:Lisp; Readtable:ZL; Package:USER; Base:8; Patch-File:T -*-
;;; Private patches made by pace
;;; Reason:
;;;  
;;; Written 31-Jul-86 11:06:56 by pace at site LMI Cambridge
;;; while running on Lene Lovich from band 1
;;; with Experimental System 116.23, Experimental Lambda-Diag 10.1, Experimental Local-File 70.0, Experimental FILE-Server 19.0, microcode 1662, SDU Boot Tape 3.14, SDU ROM 102.



; From modified file DJ: L.IO; PRINT.LISP#216 at 31-Jul-86 11:07:09
#8R SYSTEM-INTERNALS#: 
(COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "SYSTEM-INTERNALS")))
  (COMPILER::PATCH-SOURCE-FILE "SYS: IO; PRINT  "

(defvar si:*string-max-length* 512.)
(DEFUN PRINT-QUOTED-STRING (STRING STREAM &OPTIONAL IGNORE &AUX LENGTH CHAR)
  (when (> (array-active-length string) *string-max-length*)
    (setq string (string-append (substring string 0 *string-max-length*) "...")))
  (IF (NOT *PRINT-ESCAPE*)
      (PRINT-RAW-STRING STRING STREAM)
    (SEND STREAM :TYO (PTTBL-OPEN-QUOTE-STRING *READTABLE*))
    (SETQ LENGTH (LENGTH STRING))
    (COND ((AND (EQ (ARRAY-TYPE STRING) 'ART-STRING)
		(DOTIMES (I LENGTH T)
		  (AND (< (SETQ CHAR (AREF STRING I)) #o220)
		       (NOT (ZEROP (LOGAND #o16 (RDTBL-BITS *READTABLE* CHAR))))
		       (RETURN NIL))))
	   ;; There are no double quotes, and so no slashifying.
	   (SEND STREAM :STRING-OUT STRING))
	  (T
	   (DOTIMES (I LENGTH)
	     (SETQ CHAR (CHAR-CODE (CHAR STRING I)))
	     (COND ((AND (< CHAR #o220)
			 (NOT (ZEROP (LOGAND #o16 (RDTBL-BITS *READTABLE* CHAR)))))
		    (SEND STREAM :TYO (PTTBL-SLASH *READTABLE*))))
	     (SEND STREAM :TYO CHAR))))
    (SEND STREAM :TYO (PTTBL-CLOSE-QUOTE-STRING *READTABLE*))))
))
