1
0
mirror of https://github.com/PDP-10/its.git synced 2026-03-02 01:50:24 +00:00
Files
PDP-10.its/src/bsg/cube.dcls
Lars Brinkhoff 979b77f341 CUBE, Rubik's cube.
Files provided by the author, Bernard Greenberg.
2020-08-10 22:08:00 +02:00

42 lines
1.5 KiB
Plaintext

(multicsp (%include backquote))
(multicsp (%include defmacro))
(multicsp (%include once-only))
(itsp (includef '|bsg;oonl >|))
(declare (special FRONT-0 BACK-0 RHS-0 LHS-0 TOP-0 BOTTOM-0))
(declare (special FRONT BACK RHS LHS TOP BOTTOM))
(declare (special cube-interrupt-set cube-display-needs-update))
(defmacro 1to (n v &rest forms)
`(do ,v 1 (1+ ,v)(> ,v ,n) . ,forms))
(defmacro 1to3 gunk `(1to 3 . ,gunk))
(defmacro 1to4 gunk `(1to 4 . ,gunk))
(defmacro mod stuff(cons '\ stuff))
(defmacro all-faces (var . forms)`(1to 6 ,var . ,forms))
(defmacro all-little-faces ((y z) . forms)
`(1to 3 ,y (1to 3 ,z . ,forms)))
(declare (array* (notype (colors 7)(cube 7 4 4)(face-names 7)
(face-clock-relations 7 5))
(fixnum (Atop 7)(Abottom 7)(Aright 7)(Aleft 7)(Aback 7)
(face-relations 7 7)(xpcoef 7 3)(ypcoef 7 3))))
(declare (eval (read)))
(defun case-construct-util (var pred clauses)
(once-only
(var)
(cons 'cond
(mapcar '(lambda (pair)
(let (((val . forms) pair))
(cond ((eq val t) `(t . ,forms))
(t `((,pred ,var ,val) . ,forms)))))
clauses))))
(defmacro case (var . clauses)(case-construct-util var 'equal clauses))
(defmacro caseq (var . clauses)(case-construct-util var 'eq clauses))
(defmacro case= (var . clauses)(case-construct-util var '= clauses))