[net.sources.mac] Emacs function to decode LaserPrep resource on system disk

reid@Cascade.ARPA (06/15/85)

;  This function reads a Laser_Prep.rsrc file, as transmitted from a
;  Macintosh, and converts it into an Ascii text PostScript file suitable
;  for manual downloading into a LaserWriter. If you have this file in 
;  its textual form, you can share a LaserWriter between a Unix system and
;  a Macintosh.
; 
;  For Gosling Emacs. It will work in Unipress Emacs if you fix the spelling
;  of "error-occured".
; 
;  Brian Reid, Stanford.
;  June 14, 1985
; 
(defun
    (get-16bit n nn
	(setq n (following-char))
	(if (< n 0) (setq n (+ n 256)))
	(forward-character)
	(setq nn (following-char))
	(if (< nn 0) (setq nn (+ nn 256)))
	(forward-character)
	(+ nn (* 256 n))
    )
    (cvt count stopflag ch v1 v2 v3
	 (visit-file "Laser_Prep.rsrc")
	 (error-occured (visit-file "LaserPrep.ps"))
	 (erase-buffer)
	 (pop-to-buffer "Laser_Prep.rsrc")
	 (setq stopflag 0)
	 (beginning-of-file)
	 (search-forward "0000000")
	 (search-reverse "0000000")
	 (backward-character)
	 (while (& (! (eobp)) (= stopflag 0))
		(setq count (following-char))
		(if (< count 0)
		    (setq stopflag 1)
		    (= count 0)
		    (progn
			  (sit-for 0)
			  (setq v1 (get-16bit))
			  (setq v2 (get-16bit))
			  (setq v3 (get-16bit))
			  (message v1 " " v2 " " v3) (sit-for 20)
			  (if (> v3 1024)
			      (setq stopflag 1))
		    )
		    (progn 
			   (forward-character)
			   (set-mark)
			   (provide-prefix-argument count
			       (forward-character)
			   )
			   (if (eobp) (setq stopflag 1))
			   (append-region-to-buffer "LaserPrep.ps")
			   (save-excursion 
			       (pop-to-buffer "LaserPrep.ps")
			       (end-of-file)
			       (insert-string "\n")
			   )
		    )
		)
	 )
	 (pop-to-buffer "LaserPrep.ps")
	 (end-of-file) (set-mark)
	 (sit-for 0)
	 (search-reverse "end") (search-forward "end")
	 (forward-character) (delete-to-killbuffer)
	 (sit-for 0)
	 (beginning-of-file)
	 (set-mark)
	 (search-forward "/md") (beginning-of-line)
	 (narrow-region) (beginning-of-file)
	 (while (! (eobp))
		(insert-string "%-")
gpa		(next-line) (beginning-of-line)
	 )
	 (widen-region)
	 (beginning-of-file)
	 (insert-string "%! Macintosh LaserWriter header file.\n")
	 (insert-string "% Converted from LaserPrep on ")
	 (insert-string (current-time))
	 (insert-string "\n")
    )
)
(message "Run the function 'cvt' to convert Laser_Prep.rsrc into LaserPrep.ps")
(sit-for 20)