1
0
mirror of https://github.com/PDP-10/its.git synced 2026-05-03 06:39:17 +00:00
Files
PDP-10.its/src/games/animal.(init)
2018-05-20 12:49:09 -07:00

158 lines
4.2 KiB
Common Lisp

;;; -*- LISP -*-
;;;
;;; KMP's ANIMAL Init File
;;;
;;; Created 2:14am Saturday, 23 September 1978
;;;
(COMMENT)
;; Temporary measures ...
(PROGN (CLOSE (PROG2 NIL INFILE (INPUSH -1)))
(CURSORPOS 'A TYO)
(PRINC '|The All-New ANIMAL program. (Old one temporarily out of order)|
TYO)
(TERPRI TYO)
(PRINC '|Please mention you're using ANIMAL version 2 in any bug notes.|
TYO)
(TERPRI TYO)
(PRINC '|End all input with a period!| TYO)
(TERPRI TYO)
(LOAD '((PIQUE) ANIMAL FASL))
(NOINTERRUPT T)
(SSTATUS TOPLEVEL '(ANIMAL))
(SETUP-FOR-ANIMAL))
(PROGN
;; Fix QUIT for KMP...
(COND ((MEMQ (STATUS UNAME) '(KMP TNP))
(DEFUN QUIT N
(CURSORPOS 'A TYO)
(PRINC '|Do you really want to kill this job? | TYO)
(CLEAR-INPUT TYI)
(COND ((MEMBER (TYI TYI) '(89. 121.))
(PRINC '| [Yes]| TYO)
(VALRET '|:KILL |))
(T
(PRINC '| [No]| TYO)
NIL))))
(T
(TERPRI TYO)
(PRINC '|There is an all new, very experimental Animal game| TYO)
(TERPRI TYO)
(PRINC '|by doing :KMP;ANIMAL. Please specify in any notes to| TYO)
(TERPRI TYO)
(PRINC '|BUG-ANIMAL which game you are using.| TYO)
(TERPRI TYO)))
;; Turn off interrupts while this loads
(NOINTERRUPT T)
;; Turn off load messages
(SSTATUS FEATURE NOLDMSG)
;; Send KMP a message if he's logged in.
(DEFPROP IOTA ((DSK LIBLSP) IOTA FASL) AUTOLOAD)
(COND ((AND (NOT (EQ (STATUS USERID) 'KMP))
(PROBEF '((USR *) KMP HACTRN)))
(LET ((BASE 10.) (*NOPOINT T) ((HOUR MIN) (STATUS DAYTIME)))
(ERRSET
(IOTA ((STREAM '((CLI *) KMP HACTRN) '(OUT)))
(MAPC (FUNCTION (LAMBDA (X) (PRINC X STREAM)))
(LIST
'|/[Message from The Animal Game at MIT-MC |
(COND ((ZEROP (\ HOUR 12.)) '|12|) (T (\ HOUR 12.)))
'/:
(COND ((< MIN 10.) (IMPLODE (LIST '/0 (+ MIN 48.))))
(T MIN))
(COND ((ZEROP (// HOUR 12.)) '|am|)
(T '|pm|))
'/] (ASCII 13.) (STATUS UNAME)
'| is gonna play against me!|))
(TERPRI STREAM))
NIL))))
;; Turn off ^S interrupt - trap it manually
(SSTATUS TTYINT 19. NIL)
;; Allocate core - load it in...
(ALLOC '(LIST 150000))
(LOAD '((DSK KMP) ANIMAL FASL))
;; <CR> to indicate we are doing something...
(TERPRI TYO)
;; Close this file
(CLOSE (PROG2 T INFILE (INPUSH -1)))
;; Is animal locked for some reason?
(COND ((PROBEF LOCK-DATA-FILE)
(PRINTC '|ANIMAL will not be available for a few minutes.| TYO)
(PRINTC '|I working on the data base. If you get this| TYO)
(PRINTC '|message and I am not logged in, please do :BUG ANIMAL| TYO)
(PRINTC '|Sorry for the inconvenience.| TYO)
(QUIT))
((PROBEF LOCK-PROGRAM-FILE)
(PRINTC '|ANIMAL will not be available for a few minutes.| TYO)
(PRINTC '|I am testing some new features. If you get this| TYO)
(PRINTC '|message and I am not logged in, please do :BUG ANIMAL| TYO)
(PRINTC '|Sorry for the inconvenience.| TYO)
(QUIT))
((PROBEF LOCK-RANDOM-FILE)
(PRINTC '|ANIMAL is out of service for an uncertain amount| TYO)
(PRINTC '|of time. Send mail to KMP@MC for explanation.| TYO)
(QUIT)))
;; Offer to print news if any...
(COND ((PROBEF NEWS-FILE)
(PROG (CHAR INFO *NOPOINT TIME DATE)
(SETQ *NOPOINT T)
TOP (TERPRI TYO)
(SETQ INFO (CAR (DIRECTORY (LIST NEWS-FILE) '(CREDATE CRETIME))))
(SETQ TIME (CADR (MEMQ 'CRETIME INFO)))
(SETQ DATE (CADR (MEMQ 'CREDATE INFO)))
(PRINC '|News last updated | TYO)
(DATE-AND-TIME-PRINC DATE TIME)
(PRINC '|.| TYO)
(TERPRI TYO)
(PRINC '|--Read News?-- (Y OR N)| TYO)
(CLEAR-INPUT TYI)
(SETQ CHAR (TYI TYI))
(COND ((MEMBER CHAR '(89. 121.))
(PRINTC '|(Type a <CONTROL-S>| TYO)
(PRINC '| to flush rest of output)| TYO)
(TERPRI TYO)
(CLEAR-INPUT TYI)
(APPLY 'PRINTFILE (NCONS NEWS-FILE)))
((= CHAR 12.)
(CURSORPOS 'C TYO)
(GO TOP))
((MEMBER CHAR '(2120. 63.))
(PRINTC '|Information about latest improvements.| TYO)
(GO TOP))
((MEMBER CHAR '(78. 110.))
(TERPRI TYO))
(T
(PRINC '| ?? Type "?" for help.|)
(GO TOP))))))
;; Run the game...
(ANIMAL))