Skip to content

Instantly share code, notes, and snippets.

@RTfXGaGeqSeItbMUgpFlekUs
Created June 12, 2010 21:33
Show Gist options
  • Save RTfXGaGeqSeItbMUgpFlekUs/436103 to your computer and use it in GitHub Desktop.
Save RTfXGaGeqSeItbMUgpFlekUs/436103 to your computer and use it in GitHub Desktop.
/lisp 3-23-64 : 1 field Page 1
1 /lisp 3-23-64 : 1 field
2
3 /// Null Macro
4 define extend
5 termin
6
7 /// sign extend B and deposit at A - never used!
8 define 1load A,B
9 law B
10 dac A
11 termin
12
13 /// sign extend B and deposit address part into A - why?
14 define init A,B
15 law B
16 dap A
17 termin
18
19 /// A=A+1, A!=B -> JMP C
20 define index A,B,C
21 idx A
22 sas B
23 jmp C
24 termin
25
26 define step A,B,C
27 index A,(B,C
28 termin
29
30 define setup A,B
31 law i B
32 dac A
33 termin
34
35 define exit R /**
36 jmp R
37 termin
38
39 /// only used in load
40 define move A,B
41 lac A
42 dac B
43 termin
44
45 define load A,B
46 move (B,A
47 termin
48
49 define count A,B
50 isp A
51 jmp B
52 termin
53
54 define test K,P
55 sad (K
56 jmp P
57 termin
/lisp 3-23-64 : 1 field Page 2
58
59 /// decrease (some number) by one
60 define undex A
61 /// load AC with -1, add A to it, and write it back
62 law i 1
63 add A
64 dac A
65 termin
66
67 /// swap AC & IO
68 define swap
69 rcl 9s
70 rcl 9s
71 termin
72
73 652000 smi=spi i
74 640500 szm=sza sma-szf
75 650500 spq=szm i
76 000000 xy=0
77 760400 xx=hlt
78 651600 clo=spa sma szo i-szf-szf
79 540000 mul=540000
80 560000 div=560000
81
82 000100 start
83 /Lisp interpreter 3-20-64, part 1
84
85 000004 4/
86 /go
87 00004 764607 go, hlt+cla+cli+7-opr-opr
88 00005 760016 stf 6
89 /// does nothing
90 extend
91 00006 340077 dzm 77
92 00007 700077 law 77
93 00010 261136 dap avx
94
95 /// beginning
96 00011 702350 beg, law pdo-1
97 00012 242344 dac pdl
98 00013 200234 lac n
99 00014 242346 dac ar2
100 00015 161304 cal rin
101 00016 161564 cal evo
102 00017 161235 cal pnt
103 00020 600011 jmp beg
104
105 /// temporary storage, sub zero
106 00021 000000 t0, 0
107
108 /// temporary storage, sub one
109 00022 000000 t1, 0
110
111 /// garbage collector, temporary storage, sub zero
112 00023 000000 g0, 0
113
114 /// garbage collector, temporary storage, sub one
/lisp 3-23-64 : 1 field Page 3
115 00024 000000 g1, 0
116 00025 000000 hi, 0
117 00026 000072 csi, 72
118 00027 000072 cso, 72
119 00030 000000 ffi, 0
120
121 /// garbage collector, argument one
122 00031 000000 ga1, 0
123 00032 000000 0
124
125 /// input string initial (points to a string of characters just read in)
126 00033 000032 isi, isi-1
127
128 /// table for symbol generator
129 00034 000020 gst, repeat 5,20
00035 000020
00036 000020
00037 000020
00040 000020
130
131 /// Argument sub 0
132 00041 000000 a0, 0
133
134 /// Argument sub 1
135 00042 000000 a1, 0
136 00043 000000 a2, 0
137
138 /// push word on list (append word to push-down list)
139 /append word to pdl
140 00044 000000 pwl, 0
141 /// put return address into jmp instruction
142 00045 260053 dap pwx
143 /// next position on push-down list
144 00046 442344 idx pdl
145 00047 502342 sad bfw
146 /// ran into bfw
147 00050 602214 jmp qg2
148 /// restore accumulator
149 00051 200044 lac pwl
150 /// put it onto list
151 00052 252344 dac i pdl
152 /// push word exit
153 pwx, exit
00053 600000
154
155 /retrieve word from pdl
156 /unsave word; retrieve word from push down list
157 /unsave word from list
158 00054 000000 uw, 0
159 00055 260062 uwl, dap uwx
160 00056 232344 lio i pdl
161 /// subtract 1 from pdl
162 undex pdl
00057 710001
00060 402344
00061 242344
163 /// unsave word, exit
/lisp 3-23-64 : 1 field Page 4
164 uwx, exit
00062 600000
165
166 /// buffer
167 buf,
168 000077 77/ 0
00077 000000
169
170 /// This is where cal goes!
171 /// This is the eval interpreter, duh-head!
172 /// so... where >is< rx? A fair question, methinks.
173 00100 000000 0
174 /// save return address
175 00101 260561 dap rx
176 /// get address of original cal instruction
177 00102 422243 sub (1
178 /// put it into next instruction
179 00103 260104 dap .+1
180 /// get what was at that address
181 00104 200000 lac xy
182 /// make that the return adddress from the interpreter
183 00105 260111 dap ave+1
184 /// get return address back and push on stack
185 00106 200561 lac rx
186 00107 170044 jda pwl
187 /// advance, end
188 /// restore AC
189 00110 200100 ave, lac 100
190 exit
00111 600000
191
192 /create number
193 00112 222244 crn, lio (jmp
194 00113 663003 rcl 2s
195 00114 671003 rar 2s
196 00115 240100 dac 100
197 00116 600762 jmp cpf
198
199 /print or punch character
200 00117 022245 pc, and (77
201 00120 502246 sad (76
202 00121 600556 jmp x
203 00122 042247 ior (ral
204 00123 240135 dac pcc
205 00124 502250 sad (ral 77
206 00125 600132 jmp pcc-3
207 00126 460143 isp pch
208 00127 600134 jmp pcc-1
209 00130 700277 law 277
210 00131 160210 cal out
211 00132 710100 law i 100
212 00133 240143 dac pch
213 00134 700252 law 252
214
215 /// punch character, computer correct parity for punching
216 00135 760400 pcc, xx
217 00136 022251 and (200
/lisp 3-23-64 : 1 field Page 5
218 00137 040135 ior pcc
219 00140 240100 dac 100
220 00141 760012 stf 2
221 00142 600210 jmp out
222
223 /// punch charater count, producing carriage return (generated after 64
224 /// (decimal) characters)
225 00143 777677 pch, -100
226
227 /get numeric value
228 00144 230100 vag, lio i 100
229 00145 760200 cla
230 00146 663003 rcl 2s
231 00147 522252 sas (3
232 00150 602222 jmp qi3
233 00151 440100 idx 100
234 00152 210100 lac i 100
235 00153 663377 rcl 8s
236 00154 663377 rcl 8s
237 00155 600556 jmp x
238
239 /get two values
240 00156 320042 vad, dio a1
241 00157 160144 cal vag
242 00160 240041 dac a0
243 00161 200042 lac a1
244 00162 160144 cal vag
245 00163 240042 dac a1
246 00164 600556 jmp x
247
248 /// output character
249 /pack character onto end of buffer
250 00165 671077 oc, rar 6s
251 00166 230033 lio i isi
252 00167 663077 rcl 6s
253 00170 502246 sad (76
254 00171 600206 jmp oc1
255 00172 200100 lac 100
256 00173 042253 ior (767600
257 00174 160761 cal cf
258 00175 220021 lio t0
259 00176 440021 idx t0
260 00177 440033 idx isi
261 00200 240042 dac a1
262 00201 320033 dio isi
263 00202 210042 lac i a1
264 00203 250021 dac i t0
265 00204 330042 dio i a1
266 00205 600556 jmp x
267
268 /// output character, sub one
269 00206 330033 oc1, dio i isi
270 00207 600556 jmp x
271
272 /output routine
273 00210 220100 out, lio 100
274 00211 640036 szs 36
/lisp 3-23-64 : 1 field Page 6
275 00212 730005 ppa
276 00213 650066 szs i 66
277 00214 730003 tyo
278 00215 600556 jmp x
279
280 /error printout
281 00216 760006 err, clf 6
282 00217 260226 dap erx
283 00220 210226 lac i erx
284 00221 240231 dac ern
285 00222 700227 law erm
286 00223 160712 cal pra
287 00224 760016 stf 6
288 00225 440226 idx erx
289
290 /// error exit
291 erx, exit
00226 600000
292
293 /// error message
294 00227 357776 erm, 357776
295 00230 000231 .+1
296
297 /// error name
298 00231 000000 ern, 0
299 00232 000233 .+1
300 00233 347776 347776
301
302 /// NIL (register containing)
303 00234 002500 n,fro, nil
304
305 define error F
306 jsp err
307 F
308 termin
309
310 /garbage collector, non-compacting
311 00235 260356 gc, dap gcx
312 00236 320031 dio ga1
313 00237 320267 dio gfr
314 00240 200267 lac gfr
315 00241 675003 sar 2s
316 00242 640100 sza
317 00243 620270 jsp gfr+1
318 00244 200030 lac ffi
319 00245 650100 sza i
320 00246 600251 jmp gco
321 00247 200100 lac 100
322 00250 170267 jda gfr
323 00251 212334 gco, lac i 1ob
324 00252 170267 jda gfr
325 00253 200033 lac isi
326 00254 522254 sas (isi-1
327 00255 600363 jmp gci
328 00256 702345 law pdl+1
329 00257 240024 dac g1
330
/lisp 3-23-64 : 1 field Page 7
331 /// garbage collector, push-down
332 00260 210024 gcp, lac i g1
333 00261 170267 jda gfr
334 00262 440024 idx g1
335 00263 422243 sub (1
336 00264 502344 sad pdl
337 00265 600341 jmp g2e
338 00266 600260 jmp gcp
339
340 /// garbage, free; (not returned to free storage)
341 /mark one list
342 00267 000000 gfr, 0
343 00270 260322 dap gfx
344 00271 200267 lac gfr
345 00272 661001 ral 1s
346 00273 650500 spq
347 00274 600322 jmp gfx
348 /// push pdl on stack
349 00275 202344 lac pdl
350 00276 170044 jda pwl
351
352 /// garbage, free, next
353 00277 230267 gfn, lio i gfr
354 00300 440267 idx gfr
355 00301 210267 lac i gfr
356 00302 640200 spa
357 00303 600316 jmp gfu
358 00304 042255 ior (add
359 00305 250267 dac i gfr
360 00306 642000 spi
361 /// push gfd on stack
362 00307 600313 jmp gfd
363 00310 170044 jda pwl
364 00311 320267 dio gfr
365 00312 600277 jmp gfn
366 00313 662001 gfd, ril 1s
367 00314 652000 spi i
368 00315 600323 jmp gfa
369
370 /// garbage, free, unsave
371 00316 620055 gfu, jsp uwl
372 00317 320267 dio gfr
373 00320 520267 sas gfr
374 00321 600277 jmp gfn
375 /// garbage, free, exit
376 gfx, exit
00322 600000
377
378 00323 672001 gfa, rir 1s
379 00324 320023 dio g0
380 00325 240267 dac gfr
381 00326 440023 gfl, idx g0
382 00327 210023 lac i g0
383 00330 640200 spa
384 00331 600277 jmp gfn
385 00332 042255 ior (add
386 00333 250023 dac i g0
/lisp 3-23-64 : 1 field Page 8
387 00334 240023 dac g0
388 00335 062255 xor (add
389 00336 520234 sas n
390 00337 600326 jmp gfl
391 00340 600277 jmp gfn
392
393 /// garbage collector, part 2, entry
394 / garbage collector, linear sweep phase
395 00341 200234 g2e, lac fro
396 00342 240023 dac g0
397
398 /// garbage collector, part 2, next
399 00343 440023 g2n, idx g0
400 00344 230023 lio i g0
401 00345 652000 smi
402 00346 600357 jmp g2f
403 00347 662001 ril 1s
404 00350 676001 sir 1s
405
406 /// garbage collector, part 2, advance
407 00351 330023 g2a, dio i g0
408 00352 440023 idx g0
409 00353 520025 sas hi
410 00354 600343 jmp g2n
411
412 /// garbage collector, part 2, exit
413 00355 220031 g2x, lio ga1
414
415 /// garbage collector, exit
416 gcx, exit
00356 600000
417
418 /// garbage collector, part 2, free
419 00357 222341 g2f, lio fre
420 00360 422243 sub (1
421 00361 242341 dac fre
422 00362 600351 jmp g2a
423
424 00363 500234 gci, sad n
425 00364 600256 jmp gcp-2
426 00365 240267 dac gfr
427 00366 240023 dac g0
428 /// push pdl on stack
429 00367 202344 lac pdl
430 00370 170044 jda pwl
431 00371 700256 law gcp-2
432 00372 260322 dap gfx
433 00373 600326 jmp gfl
434
435 /// ASSOC origin
436 /SASSOC
437 00374 160403 aso, cal asc
438 00375 600377 jmp ase
439 00376 600556 jmp x
440 /// ASSOC entry
441 00377 200043 ase, lac a2
442 00400 160613 cal cns-1
/lisp 3-23-64 : 1 field Page 9
443 00401 601564 jmp evo
444
445 00402 222346 asr, lio ar2 /**
446 00403 320042 asc, dio a1
447 00404 200042 lac a1
448
449 00405 500234 as1, sad n
450 00406 600556 jmp x
451 00407 210042 lac i a1
452 00410 240021 dac t0
453 00411 210021 lac i t0
454 00412 500100 sad 100
455 00413 600420 jmp as2
456 00414 440042 idx a1
457 00415 210042 lac i a1
458 00416 240042 dac a1
459 00417 600405 jmp as1
460
461 /// ASSOC sub 2
462 00420 452344 as2, idx i pdl
463 00421 200021 lac t0
464 00422 600556 jmp x
465
466 /program feature
467
468 /PROG
469 /// push pa3 on stack
470 00423 202347 pgm, lac pa3
471 00424 170044 jda pwl
472 /// push pa4 on stack
473 00425 202350 lac pa4
474 00426 170044 jda pwl
475 00427 342350 dzm pa4
476 00430 322346 dio ar2
477 00431 230100 lio i 100
478 00432 440100 idx 100
479 00433 210100 lac i 100
480 00434 242347 dac pa3
481 00435 322345 dio ar1
482
483 /append program variables
484
485 00436 202345 lac ar1
486
487 00437 500234 pg5, sad n
488 00440 600452 jmp pg6
489 00441 212345 lac i ar1
490 00442 160613 cal cns-1
491 00443 222346 lio ar2
492 00444 160614 cal cns
493 00445 242346 dac ar2
494 00446 442345 idx ar1
495 00447 212345 lac i ar1
496 00450 242345 dac ar1
497 00451 600437 jmp pg5
498
499 /expand go-list (on a-list)
/lisp 3-23-64 : 1 field Page 10
500
501 00452 202347 pg6, lac pa3
502
503 00453 242345 pg7, dac ar1
504 00454 500234 sad n
505 00455 600471 jmp pg0
506 00456 212345 lac i ar1
507 00457 160555 cal car
508 00460 640400 sma
509 00461 600466 jmp pg9
510 00462 202345 lac ar1
511 00463 222346 lio ar2
512 00464 160614 cal cns
513 00465 242346 dac ar2
514
515 00466 442345 pg9, idx ar1
516 00467 212345 lac i ar1
517 00470 600453 jmp pg7
518
519 /// program feature, sub zero
520 /process program
521 00471 202347 pg0, lac pa3
522 /// program feature, sub one
523 00472 500234 pg1, sad n
524 00473 600516 jmp pg2
525 00474 212347 lac i pa3
526 00475 160555 cal car
527 00476 640200 spa
528 00477 600511 jmp pg3
529 /// push ar2 on stack
530 00500 202346 lac ar2
531 00501 170044 jda pwl
532 00502 200100 lac 100
533 00503 161564 cal evo
534 00504 620055 jsp uwl
535 00505 322346 dio ar2
536 00506 760200 cla
537 00507 522350 sas pa4
538 00510 600515 jmp pg4
539
540 00511 442347 pg3, idx pa3
541 00512 212347 lac i pa3
542 00513 242347 dac pa3
543 00514 600472 jmp pg1
544
545 /terminate program
546
547 00515 202350 pg4, lac pa4
548 /// program feature, sub 2
549 00516 170054 pg2, jda uw
550 00517 322350 dio pa4
551 00520 620055 jsp uwl
552 00521 322347 dio pa3
553 00522 200054 lac uw
554 00523 600556 jmp x
555
556 /RETURN
/lisp 3-23-64 : 1 field Page 11
557 00524 242350 ret, dac pa4
558 00525 600556 jmp x
559
560 /// GOE (lengthened)
561 /GO
562 00526 220100 goe, lio 100
563 00527 200234 lac n
564 00530 160614 cal cns
565 00531 242347 dac pa3
566 00532 602241 jmp prx
567
568 /SETQ
569 00533 242345 stq, dac ar1
570 00534 320022 dio t1
571 00535 212345 lac i ar1
572 00536 160403 cal asc
573 /// push qa4 on stack
574 00537 602163 jmp qa4
575 00540 170044 jda pwl
576 00541 202345 lac ar1
577 00542 160554 cal cdr
578 00543 160555 cal car
579 00544 220022 lio t1
580 00545 161563 cal evl
581 00546 170054 jda uw
582 00547 320021 dio t0
583 00550 440021 idx t0
584 00551 200054 lac uw
585 00552 250021 dac i t0
586 00553 600556 jmp x
587
588 /// (Contents of Decrement Register)
589 /CDR
590 00554 440100 cdr, idx 100
591
592 /// (Contents of Address Register)
593 /CAR
594 00555 210100 car, lac i 100
595 /// exit from machine language LISP functions
596 00556 170054 x, jda uw
597 00557 320561 dio rx
598 00560 200054 lac uw
599 /// return to calling sequence of a subroutine
600 rx, exit
00561 600000
601
602 /ATOM
603 00562 210100 atm, lac i 100
604 00563 640400 sma
605 00564 602241 jmp fal
606
607 /// true
608 00565 202343 tru, lac tr
609 00566 600556 jmp x
610
611 /NULL
612 00567 220234 nul, lio n
/lisp 3-23-64 : 1 field Page 12
613
614 /// entry point of EQ (lengthened)
615 /EQ
616 00570 320042 eqq, dio a1
617 00571 500042 sad a1
618 00572 600565 jmp tru
619 00573 210042 lac i a1
620 00574 030100 and i 100
621 00575 022244 and (jmp
622 00576 522244 sas (jmp
623 00577 602241 jmp fal
624 00600 200100 lac 100
625 00601 160156 cal vad
626 00602 500041 sad a0
627 00603 600565 jmp tru
628 00604 602241 jmp fal
629
630 /RPLACD
631 00605 440100 rdc, idx 100
632 00606 422243 sub (1
633
634 /RPLACA
635 00607 330100 rda, dio i 100
636 00610 600556 jmp x
637
638 /create atom
639 00611 042255 mka, ior (add
640 00612 240100 dac 100
641 00613 220234 lio n
642
643 /CONS
644 00614 440030 cns, idx ffi
645
646 00615 202341 cnc, lac fre
647 00616 500234 sad n
648 00617 600673 jmp gcs
649
650 /// CONS, sub a
651 00620 240021 cna, dac t0
652 00621 200100 lac 100
653 00622 252341 dac i fre
654 00623 442341 idx fre
655 00624 212341 lac i fre
656 00625 332341 dio i fre
657 00626 242341 dac fre
658 00627 200021 lac t0
659 00630 600556 jmp x
660
661 /PLUS
662 00631 161770 pls, cal elc
663 00632 222256 lio (add a0
664 /// plus, zero sum storage register
665 00633 340041 plz, dzm a0
666 /// plus, sub one
667 00634 320642 pl1, dio plo
668 /// plus, sub two
669 00635 500234 pl2, sad n
/lisp 3-23-64 : 1 field Page 13
670 00636 600647 jmp ple
671 00637 240042 dac a1
672 00640 210042 lac i a1
673 00641 160144 cal vag
674 /// plus, operation
675 00642 000000 plo, 0
676 00643 240041 dac a0
677 00644 200042 lac a1
678 00645 160554 cal cdr
679 00646 600635 jmp pl2
680 /// plus, exit
681 00647 200041 ple, lac a0
682 00650 600112 jmp crn
683
684 /LOGAND, LOGOR, TIMES
685 /// LOGAND
686 00651 161770 lga, cal elc
687 00652 222257 lio (-0
688 00653 320041 dio a0
689 00654 222260 lio (and a0
690 00655 600634 jmp pl1
691
692 /// LOGOR
693 00656 161770 lgo, cal elc
694 00657 222261 lio (ior a0
695 00660 600633 jmp plz
696
697 /// TIMES
698 00661 161770 tim, cal elc
699 00662 222243 lio (1
700 00663 320041 dio a0
701 00664 222262 lio (jmp tic
702 00665 600634 jmp pl1
703
704 /// times, complete
705 00666 540041 tic, mul a0
706 00667 677001 scr 1s
707 00670 320100 dio 100
708 00671 400100 add 100
709 00672 600643 jmp plo+1
710
711 /// garbage collector, step
712 00673 620235 gcs, jsp gc
713 00674 202341 lac fre
714 00675 520234 sas n
715 00676 600620 jmp cna
716 00677 602217 jmp qg1
717
718 /// make a carriage return, TERPRI (terminate printing)
719 /TERPRI
720 00700 700077 tpr, law 77
721 00701 160117 cal pc
722 00702 602241 jmp prx
723
724 /PRIN1
725 00703 210100 pr1, lac i 100
726 00704 640400 sma
/lisp 3-23-64 : 1 field Page 14
727 00705 602237 jmp qp1
728 00706 422263 sub (lac
729 00707 640200 spa
730 00710 600730 jmp prn
731 00711 022264 and (-jmp
732
733 00712 500234 pra, sad n
734 00713 600556 jmp x
735 00714 240041 dac a0
736 00715 210041 lac i a0
737 00716 661077 ral 6s
738 00717 160117 cal pc
739 00720 210041 lac i a0
740 00721 671077 rar 6s
741 00722 160117 cal pc
742 00723 210041 lac i a0
743 00724 160117 cal pc
744 00725 440041 idx a0
745 00726 210041 lac i a0
746 00727 600712 jmp pra
747
748 00730 200100 prn, lac 100
749 00731 160144 cal vag
750 00732 240022 dac t1
751 00733 760002 clf 2
752 setup t0,6
00734 710006
00735 240021
753
754 00736 220022 prv, lio t1
755 00737 502265 sad (-1
756 00740 760012 stf 2
757 00741 760200 cla
758 00742 663007 rcl 3s
759 00743 320022 dio t1
760 00744 650100 sza i
761 00745 700020 law 20
762 00746 502266 sad (20
763 00747 640002 szf 2
764 00750 160117 cal pc
765 00751 460021 isp t0
766 00752 600736 jmp prv
767 00753 602241 jmp prx
768
769 /// ("is a number")
770 /NUMBERP
771 00754 210100 nmp, lac i 100
772 00755 022244 and (jmp
773 00756 502244 sad (jmp
774 00757 600565 jmp tru
775 00760 602241 jmp fal
776
777 /do a CONS into full word space
778 00761 220234 cf, lio n
779
780 /// CONS pair in full word space
781 00762 340030 cpf, dzm ffi
/lisp 3-23-64 : 1 field Page 15
782 00763 600615 jmp cnc
783
784 /MINUS
785 00764 160144 min, cal vag
786 00765 761000 cma
787 00766 600112 jmp crn
788
789 /XEQ
790
791 00767 160156 xeq, cal vad
792 00770 202343 lac tr
793 00771 240022 dac t1
794 00772 200043 lac a2
795 00773 160144 cal vag
796 00774 220041 lio a0
797 00775 321000 dio xei
798 00776 200042 lac a1
799 00777 220054 lio uw
800 01000 000000 xei, 0
801 01001 601017 jmp xen
802 01002 320043 dio a2
803 01003 160112 xer, cal crn
804 01004 242345 dac ar1
805 01005 200043 lac a2
806 01006 160112 cal crn
807 01007 242346 dac ar2
808 01010 200022 lac t1
809 01011 160613 cal cns-1
810 01012 222346 lio ar2
811 01013 161743 cal efc
812 01014 222345 lio ar1
813 01015 240100 dac 100
814 01016 601743 jmp efc
815 01017 320043 xen, dio a2
816 01020 220234 lio n
817 01021 320022 dio t1
818 01022 601003 jmp xer
819
820 /GENSYM
821 /// gensym, entry
822 01023 700034 gsm, law gst
823 01024 240021 dac t0
824 /// gensym, index
825 01025 450021 gsi, idx i t0
826 01026 502267 sad (12
827 01027 601051 jmp gsn
828 01030 502270 sad (21
829 01031 700001 law 1
830 01032 250021 dac i t0
831 /// gensym, produce
832 01033 200036 gsp, lac gst+2
833 01034 661077 ral 6s
834 01035 040035 ior gst+1
835 01036 661077 ral 6s
836 01037 040034 ior gst
837 01040 160761 cal cf
838 01041 706700 law 6700
/lisp 3-23-64 : 1 field Page 16
839 01042 040040 ior gst+4
840 01043 661077 ral 6s
841 01044 040037 ior gst+3
842 01045 220021 lio t0
843 01046 160762 cal cpf
844 01047 160611 cal mka
845 01050 600556 jmp x
846 /// gensym, next
847 01051 700020 gsn, law 20
848 01052 250021 dac i t0
849 01053 440021 idx t0
850 01054 522271 sas (gst+5
851 01055 601025 jmp gsi
852 01056 601033 jmp gsp
853
854 /QUOTIENT
855
856 01057 160156 qot, cal vad
857 01060 220041 lio a0
858 01061 760200 cla
859 01062 642000 spi
860 01063 761200 clc
861 01064 663001 rcl 1s
862 01065 560042 div a1
863 01066 602233 jmp qi4
864 01067 600112 jmp crn
865
866 /COND
867 01070 322346 cnd, dio ar2
868 /// COND sub one
869 01071 242345 cd1, dac ar1
870 01072 500234 sad n
871 /// push qa3 on stack
872 01073 602154 jmp qa3
873 01074 170044 jda pwl
874 /// push ar2 on stack
875 01075 202346 lac ar2
876 01076 170044 jda pwl
877 01077 212345 lac i ar1
878 01100 160555 cal car
879 01101 161564 cal evo
880 01102 170054 jda uw
881 01103 322346 dio ar2
882 01104 620055 jsp uwl
883 01105 322345 dio ar1
884 01106 200054 lac uw
885 01107 520234 sas n
886 01110 601114 jmp cdy
887 01111 442345 idx ar1
888 01112 212345 lac i ar1
889 01113 601071 jmp cd1
890 /// COND sub y
891 01114 212345 cdy, lac i ar1
892 01115 160554 cal cdr
893 01116 160555 cal car
894 01117 601564 jmp evo
895
/lisp 3-23-64 : 1 field Page 17
896 /STOP
897 01120 160144 stp, cal vag
898 01121 764400 hlt+cli-opr
899 01122 602241 jmp prx
900
901 /GREATERP
902 /// (is greater than)
903 01123 160156 grp, cal vad
904 01124 651600 clo
905 01125 420041 sub a0
906 01126 641000 szo
907 01127 200042 lac a1
908 01130 640400 sma
909 01131 602241 jmp fal
910 01132 600565 jmp tru
911
912 /get a character
913 /// get a character, advance
914 01133 640050 ava, szs 50
915 01134 601204 jmp avi
916 01135 764000 cli
917 /// advance, index
918 01136 200077 avx, lac 77
919 01137 650100 sza i
920 01140 601165 jmp avr
921 01141 663777 rcl 9s
922 01142 331136 dio i avx
923 01143 661003 ral 2s
924 01144 650500 spq
925 01145 601133 jmp ava
926 01146 661177 ral 7s
927 01147 042272 ior (rar
928 01150 241152 dac avc
929 01151 700525 law 525
930 /// advance, compute parity
931 01152 760400 avc, xx
932 01153 640400 sma
933 01154 602200 jmp qc3
934 /// advance, truncate (to 6 bits from reader);
935 /// also, detect upper or lower case in sign bit.
936 01155 700077 avt, law 77
937 01156 021152 and avc
938 01157 522273 sas (72
939 01160 502274 sad (74
940 01161 240026 dac csi
941 01162 500026 sad csi
942 01163 601133 jmp ava
943 01164 600556 jmp x
944 /// advance, reader
945 avr, index avx,ave,avx
01165 441136
01166 520110
01167 601136
946 /// address of buf into avx
947 init avx,buf
01170 700063
01171 261136
/lisp 3-23-64 : 1 field Page 18
948 01172 261177 dap avs
949 /// advance, next
950 01173 730001 avn, rpa
951 01174 673777 rcr 9s
952 01175 730001 rpa
953 01176 663777 rcl 9s
954 /// advance, store
955 01177 320000 avs, dio xy
956 step avs,dio 100,avn
01200 441177
01201 522275
01202 601173
957 01203 601133 jmp ava
958 /// advance, in from typewriter
959 01204 650001 avi, szf i 1
960 01205 601133 jmp ava
961 01206 720004 tyi
962 01207 760001 clf 1
963 01210 321152 dio avc
964 01211 601155 jmp avt
965
966 /terminate a print name
967 /// terminate print name, and make name
968 01212 700072 mkn, law 72
969 01213 520027 sas cso
970 01214 160165 cal oc
971 01215 440033 idx isi
972 01216 240021 dac t0
973 01217 220234 lio n
974 01220 320033 dio isi
975 01221 210021 lac i t0
976 01222 330021 dio i t0
977 01223 600556 jmp x
978
979 /pack character into print name
980 01224 261232 pak, dap pk1
981 01225 200026 lac csi
982 01226 500027 sad cso
983 01227 601232 jmp pk1
984 01230 240027 dac cso
985 01231 160165 cal oc
986 /// pack character into print name, sub one
987 01232 700000 pk1, law
988 01233 240100 dac 100
989 01234 600165 jmp oc
990
991 000100 start
992 /Lisp interpreter 3-20-64, part 2
993
994 /PRINT
995 01235 240041 pnt, dac a0
996 01236 240042 dac a1
997 01237 160700 cal tpr
998 /// print, sub one
999 01240 230041 pn1, lio i a0
1000 01241 642000 spi
1001 01242 601253 jmp pn2
/lisp 3-23-64 : 1 field Page 19
1002 01243 700057 law 57
1003
1004 01244 160117 pn5, cal pc
1005 01245 200041 lac a0
1006 01246 160554 cal cdr
1007 /// push result on stack
1008 01247 170044 jda pwl
1009 01250 230041 lio i a0
1010 01251 320041 dio a0
1011 01252 601240 jmp pn1
1012 /// print, sub two
1013 01253 200041 pn2, lac a0
1014 01254 160703 cal pr1
1015
1016 01255 620055 pn6, jsp uwl
1017 01256 760200 cla
1018 01257 320041 dio a0
1019 01260 642000 spi
1020 01261 601277 jmp pn7
1021 01262 230041 lio i a0
1022 01263 652000 spi i
1023 01264 601244 jmp pn5
1024 01265 200041 lac a0
1025 01266 500234 sad n
1026 01267 601274 jmp pn3
1027 01270 700073 law 73
1028 01271 160117 cal pc
1029 01272 200041 lac a0
1030 01273 160703 cal pr1
1031
1032 01274 700055 pn3, law 55
1033 01275 160117 cal pc
1034 01276 601255 jmp pn6
1035
1036 01277 160117 pn7, cal pc
1037 01300 200042 lac a1
1038 01301 600041 jmp a0
1039
1040 /READ
1041
1042 01302 000000 ri8, 0
1043 01303 000000 ri9, 0
1044 /// READ in
1045 01304 200561 rin, lac rx
1046 01305 242345 dac ar1
1047 01306 341303 dzm ri9
1048 /// read ins symbol
1049 01307 621333 ris, jsp rhe
1050 01310 650100 sza i
1051 01311 601504 jmp ric
1052 01312 502276 sad (57
1053 01313 601526 jmp ria
1054 01314 502277 sad (55
1055 01315 601543 jmp rib
1056
1057 /.
1058 /// read in, dot
/lisp 3-23-64 : 1 field Page 20
1059 01316 642000 rid, spi
1060 01317 601330 jmp ri2
1061 /// read in, sub q
1062 01320 442345 riq, idx ar1
1063 01321 212345 lac i ar1
1064 01322 332345 dio i ar1
1065 01323 241303 dac ri9
1066 01324 621333 jsp rhe
1067 01325 601547 jmp rix
1068 /// read in, sub 3
1069 01326 241303 ri3, dac ri9
1070 01327 601324 jmp ri3-2
1071
1072 /// push this on stack
1073 01330 202300 ri2, lac (jmp ri3
1074 01331 170044 jda pwl
1075 01332 701504 law ric
1076
1077 /read symbol and terminator
1078 /// read in, entry;
1079 /// (a "terminator" is a left parenthesis, period, space,
1080 /// comma, or tab) (mnemonic: h precedes i)
1081 01333 261503 rhe, dap rhx
1082 01334 760005 clf 5
1083 01335 340022 dzm t1
1084 01336 700032 law isi-1
1085 01337 240033 dac isi
1086 01340 340032 dzm isi-1
1087 01341 700072 law 72
1088 01342 240027 dac cso
1089 /// read symbol and terminator, next
1090 01343 161133 rhn, cal ava
1091 01344 240100 dac 100
1092 01345 220026 lio csi
1093 01346 672007 rir 3s
1094 01347 642000 spi
1095 01350 601360 jmp rhb
1096 01351 502301 sad (33
1097 01352 760200 cla
1098 01353 522276 sas (57
1099 01354 502277 sad (55
1100 01355 601411 jmp rye
1101 01356 502302 sad (73
1102 01357 601411 jmp rye /**
1103 01360 502303 rhb, sad (56
1104 01361 601407 jmp ryo
1105 01362 502245 sad (77
1106 01363 601343 jmp rhn
1107 01364 502304 sad (36
1108 01365 760200 cla
1109 01366 650100 sza i
1110 01367 601411 jmp rye
1111 01370 502305 sad (75
1112 01371 601334 jmp rhe+1
1113 01372 710007 law i 7
1114 01373 020100 and 100
1115 01374 650100 sza i
/lisp 3-23-64 : 1 field Page 21
1116 01375 601464 jmp ryn
1117 01376 200100 lac 100
1118 01377 502266 sad (20
1119 01400 601464 jmp ryn
1120 /// symbol lookup, pack
1121 01401 760015 ryp, stf 5
1122 01402 161224 cal pak
1123 01403 601343 jmp rhn
1124 /// symbol lookup, sub j
1125 01404 200022 ryj, lac t1
1126 01405 160112 cal crn
1127 01406 601476 jmp rhr
1128 /// symbol lookup, sub o
1129 01407 161133 ryo, cal ava
1130 01410 601401 jmp ryp
1131
1132 /symbol lookup
1133 /// search for symbol in object list and
1134 /// if not found, put at beginning
1135 01411 241302 rye, dac ri8
1136 01412 161212 cal mkn
1137 01413 240041 dac a0
1138 01414 500234 sad n
1139 01415 601473 jmp ryy
1140 01416 650005 szf i 5
1141 01417 601404 jmp ryj
1142 01420 212334 lac i 1ob
1143 /// symbol lookup, search for symbol
1144 01421 240021 rys, dac t0
1145 01422 500234 sad n
1146 01423 601455 jmp ryc
1147 01424 210021 lac i t0
1148 01425 240022 dac t1
1149 01426 210022 lac i t1
1150 01427 240022 dac t1
1151 01430 200041 lac a0
1152 /// symbol lookup, search for word
1153 01431 240042 ryw, dac a1
1154 01432 520234 sas n
1155 01433 601441 jmp ryt
1156 01434 500022 sad t1
1157 01435 601462 jmp rhh
1158 /// symbol lookup, index
1159 01436 440021 ryd, idx t0
1160 01437 210021 lac i t0
1161 01440 601421 jmp rys
1162 /// symbol lookup, test
1163 01441 200022 ryt, lac t1
1164 01442 500234 sad n
1165 01443 601436 jmp ryd
1166 01444 210042 lac i a1
1167 01445 530022 sas i t1
1168 01446 601436 jmp ryd
1169 01447 440022 idx t1
1170 01450 210022 lac i t1
1171 01451 240022 dac t1
1172 01452 440042 idx a1
/lisp 3-23-64 : 1 field Page 22
1173 01453 210042 lac i a1
1174 01454 601431 jmp ryw
1175 /// symbol lookupm create (creating what is necessary to
1176 /// put something on the OBLIST
1177 01455 200041 ryc, lac a0
1178 01456 160611 cal mka
1179 01457 232334 lio i 1ob
1180 01460 160614 cal cns
1181 01461 252334 dac i 1ob
1182 01462 210021 rhh, lac i t0
1183 01463 601476 jmp rhr
1184 /// symbol lookup, number
1185 01464 220100 ryn, lio 100
1186 01465 200022 lac t1
1187 01466 672007 rir 3s
1188 01467 663007 rcl 3s
1189 01470 240022 dac t1
1190 01471 200100 lac 100
1191 01472 601402 jmp ryp+1
1192 /// symbol lookup, exit
1193 01473 761200 ryy, clc
1194 01474 222254 lio (isi-1
1195 01475 320033 dio isi
1196 /// read symbol and terminator, sub r
1197 01476 240021 rhr, dac t0
1198 01477 201303 lac ri9
1199 01500 221302 lio ri8
1200 01501 321303 dio ri9
1201 01502 220021 lio t0
1202 /// read symbol and terminator, exit
1203 rhx, exit
01503 600000
1204
1205 /, space tab
1206 /// read in, comma
1207 01504 202345 ric, lac ar1
1208 01505 642000 spi
1209 01506 601307 jmp ris
1210 01507 640200 spa
1211 01510 601524 jmp ri4
1212 /// read in, sub o
1213 01511 320021 rio, dio t0
1214 01512 160554 cal cdr
1215 01513 220021 lio t0
1216 /// read in, sub e
1217 rie, swap
01514 663777
01515 663777
1218 /// swap AC & IO
1219 01516 160614 cal cns
1220 01517 442345 idx ar1
1221 01520 200021 lac t0
1222 01521 252345 dac i ar1
1223 01522 242345 dac ar1
1224 01523 601307 jmp ris
1225 /// read in, sub 4
1226 01524 200021 ri4, lac t0
/lisp 3-23-64 : 1 field Page 23
1227 01525 602345 jmp ar1
1228
1229 /(
1230 /// read in, left parenthesis
1231 01526 320021 ria, dio t0
1232 /// push ar1 on stack
1233 01527 202345 lac ar1
1234 01530 170044 jda pwl
1235 01531 200021 lac t0
1236 01532 640200 spa
1237 01533 601541 jmp riz
1238 /// read in, sub y
1239 01534 160613 riy, cal cns-1
1240 01535 242345 dac ar1
1241 01536 222345 lio ar1
1242 01537 160605 cal rdc
1243 01540 601307 jmp ris
1244 /// read in, zeroing
1245 01541 342345 riz, dzm ar1
1246 01542 601307 jmp ris
1247
1248 /)
1249 /// read in, right parenthesis
1250 01543 442345 rib, idx ar1
1251 01544 212345 lac i ar1
1252 01545 220234 lio n
1253 01546 332345 dio i ar1
1254 /// read in, exit
1255 01547 170054 rix, jda uw
1256 01550 322345 dio ar1
1257 01551 662001 ril 1s
1258 01552 200054 lac uw
1259 01553 642000 spi
1260 01554 602345 jmp ar1
1261 01555 220054 lio uw
1262 01556 202345 lac ar1
1263 01557 640100 sza
1264 01560 601511 jmp rio
1265 01561 200054 lac uw
1266 01562 601534 jmp riy
1267
1268 /EVAL
1269 01563 322346 evl, dio ar2
1270 /// EVAL, old
1271 01564 242345 evo, dac ar1
1272
1273 /evaluate current expression
1274 /// evaluate current expression, sub 2
1275 01565 202345 ev2, lac ar1
1276 01566 640010 szs 10
1277 01567 161235 cal pnt
1278 01570 212345 lac i ar1
1279 01571 640200 spa
1280 01572 601626 jmp e1
1281 01573 240021 dac t0
1282 01574 210021 lac i t0
1283 01575 640200 spa
/lisp 3-23-64 : 1 field Page 24
1284 01576 601661 jmp e2
1285
1286 /car[x] not atomic
1287
1288 01577 502332 sad 1la
1289 01600 602077 jmp e3
1290 /// push ar2 on stack
1291 01601 202346 lac ar2
1292 01602 170044 jda pwl
1293 /// push ar1 on stack
1294 01603 202345 lac ar1
1295 01604 170044 jda pwl
1296 01605 212345 lac i ar1
1297 01606 161564 cal evo
1298 01607 620055 jsp uwl
1299 01610 322345 dio ar1
1300 01611 620055 jsp uwl
1301 01612 322346 dio ar2
1302 01613 601620 jmp evc
1303
1304 /evaluate function name and try again
1305 /// evaluate, sub 3
1306 01614 212345 ev3, lac i ar1
1307 01615 160402 cal asr
1308 01616 602171 jmp qa8
1309 01617 160554 cal cdr
1310 /// evaluate, construct
1311 01620 442345 evc, idx ar1
1312 01621 232345 lio i ar1
1313 01622 200054 lac uw
1314 01623 342345 dzm ar1
1315 01624 160614 cal cns
1316 01625 601564 jmp evo
1317
1318 /x is atomic : search a-list,
1319 / then p-list
1320 /// evaluate, sub one
1321 01626 661001 e1, ral 1s
1322 01627 640200 spa
1323 01630 601655 jmp en1
1324 01631 202345 lac ar1
1325 01632 160402 cal asr
1326 01633 601636 jmp ev5
1327 01634 160554 cal cdr
1328 01635 601656 jmp ex
1329
1330 01636 202345 ev5, lac ar1
1331 /// evaluate, sub 4
1332 01637 160554 ev4, cal cdr
1333 01640 500234 sad n
1334 01641 602171 jmp qa8
1335 01642 240021 dac t0
1336 01643 210021 lac i t0
1337 01644 502333 sad 1ap
1338 01645 601651 jmp ev6
1339 01646 440021 idx t0
1340 01647 210021 lac i t0
/lisp 3-23-64 : 1 field Page 25
1341 01650 601637 jmp ev4
1342
1343 01651 440021 ev6, idx t0
1344 01652 210021 lac i t0
1345 01653 160555 cal car
1346 01654 601656 jmp ex
1347 /// evaluate, number, sub one
1348 01655 202345 en1, lac ar1
1349
1350 /exit from EVAL
1351 01656 640010 ex, szs 10
1352 01657 601235 jmp pnt
1353 01660 600556 jmp x
1354
1355 /car[x] is atomic : search
1356 / its p-list
1357 /// evaluate, sub 2; CAR X is atomic, search its P-list
1358 01661 200021 e2, lac t0
1359
1360 01662 160554 ev8, cal cdr
1361 01663 500234 sad n
1362 01664 601614 jmp ev3
1363 01665 210054 lac i uw
1364 01666 502336 sad 1fs
1365 01667 601701 jmp efs
1366 01670 502335 sad 1sb
1367 01671 601757 jmp esb
1368 01672 502337 sad 1xp
1369 01673 601746 jmp exp
1370 01674 502340 sad 1fx
1371 01675 601715 jmp efx
1372 01676 440022 idx t1
1373 01677 210022 lac i t1
1374 01700 601662 jmp ev8
1375
1376 /function is FSUBR
1377 01701 440054 efs, idx uw
1378 01702 210054 lac i uw
1379 01703 160555 cal car
1380 01704 160144 cal vag
1381 01705 241713 dac exx
1382 01706 442345 idx ar1
1383 01707 212345 lac i ar1
1384 01710 222346 lio ar2
1385
1386 01711 240100 exy, dac 100
1387 01712 342345 dzm ar1
1388 /// evaluate, exit, execute
1389 01713 000000 exx, 0
1390 01714 601656 jmp ex
1391
1392 /function is FEXPR
1393 01715 440054 efx, idx uw
1394 01716 210054 lac i uw
1395 01717 160555 cal car
1396 /// push result on stack
1397 01720 170044 jda pwl
/lisp 3-23-64 : 1 field Page 26
1398 01721 202345 lac ar1
1399 01722 160554 cal cdr
1400 01723 161736 cal efq
1401 01724 170044 jda pwl
1402 01725 202346 lac ar2
1403 01726 161736 cal efq
1404 01727 160613 cal cns-1
1405 01730 620055 jsp uwl
1406 01731 161743 cal efc
1407 01732 620055 jsp uwl
1408 01733 161743 cal efc
1409 01734 242345 dac ar1
1410 01735 601565 jmp ev2
1411 /// evaluate, function sub q
1412 01736 160613 efq, cal cns-1
1413 01737 220021 lio t0
1414 01740 202331 lac 1qu
1415 01741 240100 dac 100
1416 01742 600614 jmp cns
1417 /// evaluate, function sub c
1418 01743 320100 efc, dio 100
1419 01744 220021 lio t0
1420 01745 600614 jmp cns
1421
1422 /function is EXPR
1423 01746 440054 exp, idx uw
1424 01747 210054 lac i uw
1425 01750 240042 dac a1
1426 01751 442345 idx ar1
1427 01752 232345 lio i ar1
1428 01753 342345 dzm ar1
1429 01754 210042 lac i a1 /**
1430 01755 160614 cal cns
1431 01756 601564 jmp evo
1432
1433 /function is SUBR
1434 01757 440054 esb, idx uw
1435 01760 210054 lac i uw
1436 01761 160555 cal car
1437 01762 170044 jda pwl
1438 01763 202345 lac ar1
1439 01764 160554 cal cdr
1440 01765 222346 lio ar2
1441 01766 161770 cal elc
1442 01767 602050 jmp els
1443
1444 /evaluate argument list : also LIST
1445 /// evaluate, argument is a list; also LIST
1446 01770 500234 elc, sad n
1447 01771 600556 jmp x
1448 01772 242345 dac ar1
1449 01773 322346 dio ar2
1450 01774 202346 lac ar2
1451 01775 170044 jda pwl
1452 01776 202345 lac ar1
1453 01777 342345 dzm ar1
1454 /// evaluate, list, entry
/lisp 3-23-64 : 1 field Page 27
1455 02000 232344 ele, lio i pdl
1456 02001 240021 dac t0
1457 02002 170044 jda pwl
1458 02003 202345 lac ar1
1459 02004 170044 jda pwl
1460 02005 210021 lac i t0
1461 02006 161563 cal evl
1462 02007 160613 cal cns-1
1463 02010 620055 jsp uwl
1464 02011 322345 dio ar1
1465 02012 220021 lio t0
1466 02013 202345 lac ar1
1467 02014 650100 sza i
1468 02015 322345 dio ar1
1469 02016 442345 idx ar1
1470 02017 422243 sub (1
1471 02020 520021 sas t0
1472 02021 232345 lio i ar1
1473 02022 200021 lac t0
1474 02023 252345 dac i ar1
1475 02024 242345 dac ar1
1476 02025 440021 idx t0
1477 02026 330021 dio i t0
1478 02027 620055 jsp uwl
1479 /// swap AC & IO
1480 swap
02030 663777
02031 663777
1481 02032 160554 cal cdr
1482 02033 520234 sas n
1483 02034 602000 jmp ele
1484 02035 620055 jsp uwl
1485 02036 322346 dio ar2
1486 02037 442345 idx ar1
1487 02040 212345 lac i ar1
1488 02041 220234 lio n
1489 02042 332345 dio i ar1
1490 02043 242345 dac ar1
1491 02044 640010 szs 10
1492 02045 161235 cal pnt
1493 02046 202345 lac ar1
1494 02047 600556 jmp x
1495 /// evaluate, list, subroutine
1496 02050 242345 els, dac ar1
1497 02051 620055 jsp uwl
1498 /// swap AC & IO
1499 swap
02052 663777
02053 663777
1500 02054 160144 cal vag
1501 02055 241713 dac exx
1502 /// address of a0-1 into esa
1503 init esa,a0-1
02056 700040
02057 262067
1504
1505 /store arguments for subroutine
/lisp 3-23-64 : 1 field Page 28
1506
1507 02060 202345 lac ar1
1508 /// entry, deposit argument
1509 /// (store arguments for subroutine)
1510 02061 500234 eda, sad n
1511 02062 602074 jmp exs
1512 02063 442067 idx esa
1513 02064 502306 sad (dac a2+1
1514 02065 602166 jmp qa7
1515 02066 212345 lac i ar1
1516 /// evaluate, store argument
1517 02067 240000 esa, dac xy
1518 02070 442345 idx ar1
1519 02071 212345 lac i ar1
1520 02072 242345 dac ar1
1521 02073 602061 jmp eda
1522 /// eval, exit, subroutine
1523 02074 200041 exs, lac a0
1524 02075 220042 lio a1
1525 02076 601711 jmp exy
1526
1527 /caar[x] = LAMBDA
1528 /// evaluate, sub 3; CAAR X equals LAMBDA
1529 02077 202345 e3, lac ar1
1530 02100 170044 jda pwl
1531 02101 202346 lac ar2
1532 02102 170044 jda pwl
1533 02103 212345 lac i ar1
1534 02104 160554 cal cdr
1535 02105 160555 cal car
1536 02106 170044 jda pwl
1537 02107 202345 lac ar1
1538 02110 160554 cal cdr
1539 02111 222346 lio ar2
1540 02112 161770 cal elc
1541 02113 242345 dac ar1
1542 02114 620055 jsp uwl
1543 02115 320041 dio a0
1544 02116 620055 jsp uwl
1545 02117 322346 dio ar2
1546 /// evaluate, pair, sub one
1547 02120 200041 ep1, lac a0
1548 02121 500234 sad n
1549 02122 602143 jmp ep2
1550 02123 202345 lac ar1
1551 02124 500234 sad n
1552 02125 602211 jmp qf3
1553 02126 210041 lac i a0
1554 02127 232345 lio i ar1
1555 02130 160614 cal cns
1556 02131 222346 lio ar2
1557 02132 160614 cal cns
1558 02133 242346 dac ar2
1559 02134 440041 idx a0
1560 02135 210041 lac i a0
1561 02136 240041 dac a0
1562 02137 442345 idx ar1
/lisp 3-23-64 : 1 field Page 29
1563 02140 212345 lac i ar1
1564 02141 242345 dac ar1
1565 02142 602120 jmp ep1
1566 /// evaluate, pair, sub two
1567 02143 522345 ep2, sas ar1
1568 02144 602206 jmp qf2
1569 02145 620055 jsp uwl
1570 02146 322345 dio ar1
1571 02147 212345 lac i ar1
1572 02150 160554 cal cdr
1573 02151 160554 cal cdr
1574 02152 160555 cal car
1575 02153 601564 jmp evo
1576
1577 /error halt entries
1578 /// error halt, illegal COND ; icd
1579 02154 200234 qa3, lac n
1580 02155 522347 sas pa3
1581 02156 600556 jmp x
1582 error flex icd /illegal COND
02157 620216
02160 716364
1583 02161 200234 lac n
1584 02162 600556 jmp x
1585 /// error halt, undefined atom in SETQ; uss
1586 qa4, error flex uss /undefined atom in SETQ
02163 620216
02164 242222
1587 02165 602241 jmp prx
1588 /// error halt, too many arguments; tma
1589 qa7, error flex tma /too many args
02166 620216
02167 234461
1590 02170 602074 jmp exs
1591 /// error halt, unbound atomic symbol; uas
1592 qa8, error flex uas /unbound atomic symbol
02171 620216
02172 246122
1593 02173 760006 clf 6
1594 02174 202345 lac ar1
1595 02175 161235 cal pnt
1596 02176 160700 cal tpr
1597 02177 600004 jmp go
1598 /// error halt, illegal parity; ilp
1599 qc3, error flex ilp /illegal parity
02200 620216
02201 714347
1600 02202 700377 law 377
1601 02203 021152 and avc
1602 02204 764401 hlt+cli-opr+1
1603 02205 601133 jmp ava
1604 /// error halt, LAMBDA list too short; lts
1605 qf2, error flex lts /LAMBDA list too short
02206 620216
02207 432322
1606 02210 600004 jmp go
1607 /// error halt, argument list too short; ats
/lisp 3-23-64 : 1 field Page 30
1608 qf3, error flex ats /arglist too short
02211 620216
02212 612322
1609 02213 600004 jmp go
1610 /// error halt, pushdown capacity exceeded; pce
1611 qg2, error flex pce /pushdown cap. exc.
02214 620216
02215 476365
1612 02216 600004 jmp go
1613 /// error halt, storage capacity exceeded; sce
1614 qg1, error flex sce /storage cap. exc.
02217 620216
02220 226365
1615 02221 600004 jmp go
1616 /// error halt, nonnumeric argument for arithmetic; nna
1617 02222 200100 qi3, lac 100
1618 02223 240043 dac a2
1619 error flex nna /non-numeric arg for arith.
02224 620216
02225 454561
1620 02226 760006 clf 6
1621 02227 200043 lac a2
1622 02230 161235 cal pnt
1623 02231 160700 cal tpr
1624 02232 602235 jmp qix
1625 /// error halt, overflow; ovf
1626 qi4, error flex ovf /overflow
02233 620216
02234 462566
1627 /// error halt, exit
1628 02235 760216 qix, cla 16
1629 02236 600112 jmp crn
1630 /// error halt, argument non-atom for PRIN1
1631 qp1, error flex ana /arg non-atom for PRIN1
02237 620216
02240 614561
1632 /// false (value is NIL)
1633 /// print, exit after finishing print
1634 02241 200234 prx,fal, lac n
1635 02242 600556 jmp x
1636
1637 000100 start
1638
1639 /lisp storage 3-23-64
1640
1641 002243 constants
1642
1643 /special symbols
1644
1645 ssy,
1646
1647 02331 003074 1qu, quo
1648 02332 003104 1la, lam
1649 02333 003110 1ap, apv
1650 02334 002520 1ob, obl
1651 02335 003114 1sb, sbr
1652 02336 003124 1fs, fsb
/lisp 3-23-64 : 1 field Page 31
1653 02337 003120 1xp, xpr
1654 02340 003130 1fx, fxp
1655 /// pointer to beginning of the free storage
1656 02341 002500 fre, nil
1657 /// beginning of full words (end of push down list)
1658 02342 002474 bfw, frs-4
1659 02343 002502 tr, t
1660 /// push down list
1661 02344 002350 pdl, pdo-1
1662 /// Argument one
1663 02345 002500 ar1, nil
1664 02346 002500 ar2, nil
1665 /// PROG argument, sub 3
1666 02347 002500 pa3, nil
1667 /// PROG argument, sub 4
1668 02350 000000 pa4, 0
1669 /// push down list, origin
1670 pdo,
1671
1672 /load storage parameters
1673 02351 222473 lio mz
1674 02352 761600 clc+hlt-opr
1675 02353 766200 lat+cli-opr
1676 02354 022470 and ad
1677 02355 242472 dac hi1
1678 02356 760400 hlt
1679 02357 762200 lat
1680 02360 022470 and ad
1681 02361 242471 dac lp1
1682
1683 02362 713530 law i end
1684 02363 402472 add hi1
1685 02364 640200 spa
1686 02365 602351 jmp pdo
1687 02366 710127 law i frs-pdo
1688 02367 402471 add lp1
1689 02370 640200 spa
1690 02371 602351 jmp pdo
1691 02372 713401 law i pdo+end-frs
1692 02373 402472 add hi1
1693 02374 422471 sub lp1
1694 02375 640200 spa
1695 02376 602351 jmp pdo
1696
1697 /set up registers
1698
1699 02377 702351 stu, law pdo
1700 02400 402471 add lp1
1701 02401 240234 dac fro
1702 02402 222472 lio hi1
1703 02403 673001 rcr 1s
1704 02404 662001 ril 1s
1705 02405 320025 dio hi
1706 02406 703530 law end
1707 02407 240021 dac t0
1708
1709 /relocate storage
/lisp 3-23-64 : 1 field Page 32
1710
1711 02410 710001 rrs, law i 1
1712 02411 400021 add t0
1713 02412 240021 dac t0
1714 02413 710004 law i 4
1715 02414 410021 add i t0
1716 02415 640400 sma
1717 02416 622445 jsp rrl
1718 02417 622460 jsp mvs
1719 02420 710001 law i 1
1720 02421 400021 add t0
1721 02422 240021 dac t0
1722 02423 422475 sub frl
1723 02424 640200 spa
1724 02425 622445 jsp rrl
1725 02426 622460 jsp mvs
1726 02427 200021 lac t0
1727 02430 522474 sas ofs
1728 02431 602410 jmp rrs
1729 02432 702331 law ssy
1730 02433 240021 dac t0
1731
1732 /relocate special registers
1733
1734 02434 622445 rss, jsp rrl
1735 02435 440021 idx t0
1736 02436 522476 sas esy
1737 02437 602434 jmp rss
1738 02440 212334 lac i 1ob
1739 02441 170267 jda gfr
1740 02442 700004 law go
1741 02443 260356 dap gcx
1742 02444 600341 jmp g2e
1743
1744 /relocate 1 word, move 1 word
1745
1746 02445 262457 rrl, dap rrx
1747 02446 210021 lac i t0
1748 02447 022470 and ad
1749 02450 422477 sub ofr
1750 02451 640200 spa
1751 02452 602457 jmp rrx
1752 02453 210021 lac i t0
1753 02454 400234 add fro
1754 02455 422474 sub ofs
1755 02456 250021 dac i t0
1756 02457 602457 rrx, jmp .
1757
1758 02460 262467 mvs, dap mvx
1759 02461 200021 lac t0
1760 02462 400234 add fro
1761 02463 422474 sub ofs
1762 02464 240022 dac t1
1763 02465 210021 lac i t0
1764 02466 250022 dac i t1
1765
1766 02467 602467 mvx, jmp .
/lisp 3-23-64 : 1 field Page 33
1767
1768 /constants etc.
1769
1770 02470 177777 ad, 177777
1771 02471 000000 lp1, 0
1772 02472 000000 hi1, 0
1773 02473 777777 mz, -0
1774 02474 002500 ofs, frs
1775 02475 003170 frl, fws
1776 02476 002351 esy, pdo
1777 02477 002351 ofr, pdo
1778
1779 define item X
1780 .+2
1781 .+3
1782 add X
1783 nil
1784 termin
1785
1786 define next A
1787 A
1788 .+1
1789 termin
1790
1791 define subr F
1792 .+2
1793 .+7
1794 add F+2
1795 .+1
1796 sbr
1797 .+1
1798 F
1799 nil
1800 termin
1801
1802 define fsubr F
1803 .+2
1804 .+7
1805 add F+2
1806 .+1
1807 fsb
1808 .+1
1809 F
1810 nil
1811 termin
1812
1813 define apval A
1814 apv
1815 .+1
1816 A
1817 nil
1818 termin
1819 /// origin of free storage
1820 frs,
1821
1822 02500 403470 nil, add f38
1823 02501 002504 kz
/lisp 3-23-64 : 1 field Page 34
1824
1825 02502 403526 t, add f37
1826 02503 002510 kt
1827 /// property list for NIL
1828 kz, apval nil
02504 003110
02505 002506
02506 002500
02507 002500
1829 /// property list for T
1830 kt, apval t
02510 003110
02511 002512
02512 002502
02513 002500
1831 /// location of atom OBLIST
1832 02514 403522 obj, add fb0
1833 02515 002516 .+1
1834 02516 003110 apv
1835 02517 002520 .+1
1836 02520 002522 obl, ols
1837 02521 002500 nil
1838
1839 /object list
1840 /// location of OBLIST
1841 ols, subr f2
02522 002524
02523 002532
02524 403172
02525 002526
02526 003114
02527 002530
02530 003170
02531 002500
1842
1843 subr f3
02532 002534
02533 002542
02534 403200
02535 002536
02536 003114
02537 002540
02540 003176
02541 002500
1844
1845 subr f4
02542 002544
02543 002552
02544 403204
02545 002546
02546 003114
02547 002550
02550 003202
02551 002500
1846
1847 fsubr f6
02552 002554
/lisp 3-23-64 : 1 field Page 35
02553 002562
02554 403210
02555 002556
02556 003124
02557 002560
02560 003206
02561 002500
1848
1849 subr f7
02562 002564
02563 002572
02564 403216
02565 002566
02566 003114
02567 002570
02570 003214
02571 002500
1850
1851 subr f8
02572 002574
02573 002602
02574 403224
02575 002576
02576 003114
02577 002600
02600 003222
02601 002500
1852
1853 subr f12
02602 002604
02603 002612
02604 403230
02605 002606
02606 003114
02607 002610
02610 003226
02611 002500
1854
1855 subr f13
02612 002614
02613 002622
02614 403236
02615 002616
02616 003114
02617 002620
02620 003234
02621 002500
1856
1857 fsubr f14
02622 002624
02623 002632
02624 403246
02625 002626
02626 003124
02627 002630
02630 003244
02631 002500
/lisp 3-23-64 : 1 field Page 36
1858
1859 subr f18
02632 002634
02633 002642
02634 403254
02635 002636
02636 003114
02637 002640
02640 003252
02641 002500
1860
1861 subr f21
02642 002644
02643 002652
02644 403262
02645 002646
02646 003114
02647 002650
02650 003260
02651 002500
1862
1863 subr f24
02652 002654
02653 002662
02654 403272
02655 002656
02656 003114
02657 002660
02660 003270
02661 002500
1864
1865 subr f26
02662 002664
02663 002672
02664 403300
02665 002666
02666 003114
02667 002670
02670 003276
02671 002500
1866
1867 subr f27
02672 002674
02673 002702
02674 403306
02675 002676
02676 003114
02677 002700
02700 003304
02701 002500
1868
1869 subr f32
02702 002704
02703 002712
02704 403316
02705 002706
02706 003114
/lisp 3-23-64 : 1 field Page 37
02707 002710
02710 003314
02711 002500
1870
1871 subr f33
02712 002714
02713 002722
02714 403324
02715 002716
02716 003114
02717 002720
02720 003322
02721 002500
1872
1873 subr f34
02722 002724
02723 002732
02724 403342
02725 002726
02726 003114
02727 002730
02730 003340
02731 002500
1874
1875 fsubr f50
02732 002734
02733 002742
02734 403350
02735 002736
02736 003124
02737 002740
02740 003346
02741 002500
1876
1877 subr f51
02742 002744
02743 002752
02744 403356
02745 002746
02746 003114
02747 002750
02750 003354
02751 002500
1878
1879 subr f52
02752 002754
02753 002762
02754 403364
02755 002756
02756 003114
02757 002760
02760 003362
02761 002500
1880
1881 fsubr f53
02762 002764
02763 002772
/lisp 3-23-64 : 1 field Page 38
02764 403370
02765 002766
02766 003124
02767 002770
02770 003366
02771 002500
1882
1883 subr f54
02772 002774
02773 003002
02774 403376
02775 002776
02776 003114
02777 003000
03000 003374
03001 002500
1884
1885 fsubr f60
03002 003004
03003 003012
03004 403442
03005 003006
03006 003124
03007 003010
03010 003440
03011 002500
1886
1887 fsubr f61
03012 003014
03013 003022
03014 403450
03015 003016
03016 003124
03017 003020
03020 003446
03021 002500
1888
1889 fsubr f62
03022 003024
03023 003032
03024 403456
03025 003026
03026 003124
03027 003030
03030 003454
03031 002500
1890
1891 fsubr f63
03032 003034
03033 003042
03034 403464
03035 003036
03036 003124
03037 003040
03040 003462
03041 002500
1892
/lisp 3-23-64 : 1 field Page 39
1893 subr f00
03042 003044
03043 003052
03044 403332
03045 003046
03046 003114
03047 003050
03050 003330
03051 002500
1894
1895 subr f01
03052 003054
03053 003062
03054 403336
03055 003056
03056 003114
03057 003060
03060 003334
03061 002500
1896
1897 subr fa3
03062 003064
03063 003072
03064 403434
03065 003066
03066 003114
03067 003070
03070 003432
03071 002500
1898
1899 003074 quo=. 2 /**
1900 fsubr fb5
03072 003074
03073 003102
03074 403426
03075 003076
03076 003124
03077 003100
03100 003424
03101 002500
1901
1902 003104 lam=. 2 /**
1903 item f40
03102 003104
03103 003106
03104 403472
03105 002500
1904
1905 003110 apv=. 2 /**
1906 item f42
03106 003110
03107 003112
03110 403476
03111 002500
1907
1908 003114 sbr=. 2 /**
1909 item f43
/lisp 3-23-64 : 1 field Page 40
03112 003114
03113 003116
03114 403502
03115 002500
1910
1911 003120 xpr=. 2 /**
1912 item f44
03116 003120
03117 003122
03120 403506
03121 002500
1913
1914 003124 fsb=. 2 /**
1915 item f45
03122 003124
03123 003126
03124 403512
03125 002500
1916
1917 003130 fxp=. 2 /**
1918 item f46
03126 003130
03127 003132
03130 403516
03131 002500
1919
1920 next t
03132 002502
03133 003134
1921 next obj
03134 002514
03135 003136
1922
1923 subr fb2
03136 003140
03137 003146
03140 403404
03141 003142
03142 003114
03143 003144
03144 003402
03145 002500
1924
1925 subr fb3
03146 003150
03147 003156
03150 403412
03151 003152
03152 003114
03153 003154
03154 003410
03155 002500
1926
1927 subr fb4
03156 003160
03157 003166
03160 403420
/lisp 3-23-64 : 1 field Page 41
03161 003162
03162 003114
03163 003164
03164 003416
03165 002500
1928
1929 03166 002500 nil
1930 03167 002500 nil
1931 /// full word space
1932 fws,
1933
1934 define loca A
1935 opr A
1936 0
1937 termin
1938
1939 define nam1 X
1940 X
1941 nil
1942 termin
1943
1944 define nam2 X,Y
1945 X
1946 .+1
1947 nam1 Y
1948 termin
1949
1950 define nam3 X,Y,Z
1951 X
1952 .+1
1953 nam2 Y,Z
1954 termin
1955
1956 /SUBRs and FSUBRs
1957
1958 f2, loca atm
03170 760562
03171 000000
1959 nam2 flex ato,767644
03172 612346
03173 003174
03174 767644
03175 002500
1960
1961 f3, loca car
03176 760555
03177 000000
1962 nam1 flex car
03200 636151
03201 002500
1963
1964 f4, loca cdr
03202 760554
03203 000000
1965 nam1 flex cdr
03204 636451
03205 002500
/lisp 3-23-64 : 1 field Page 42
1966
1967 f6, loca cnd
03206 761070
03207 000000
1968 nam2 flex con,767664
03210 634645
03211 003212
03212 767664
03213 002500
1969
1970 f7, loca cns
03214 760614
03215 000000
1971 nam2 flex con,767622
03216 634645
03217 003220
03220 767622
03221 002500
1972
1973 f8, loca eqq
03222 760570
03223 000000
1974 nam1 766550
03224 766550
03225 002500
1975
1976 f12, loca gsm
03226 761023
03227 000000
1977 nam2 flex gen,flex sym
03230 676545
03231 003232
03232 223044
03233 002500
1978
1979 f13, loca grp
03234 761123
03235 000000
1980 nam3 flex gre,flex ate,765147
03236 675165
03237 003240
03240 612365
03241 003242
03242 765147
03243 002500
1981
1982 f14, loca elc
03244 761770
03245 000000
1983 nam2 flex lis,767623
03246 437122
03247 003250
03250 767623
03251 002500
1984
1985 f18, loca min
03252 760764
/lisp 3-23-64 : 1 field Page 43
03253 000000
1986 nam2 flex min,762422
03254 447145
03255 003256
03256 762422
03257 002500
1987
1988 f21, loca nmp
03260 760754
03261 000000
1989 nam3 flex num,flex ber,767647
03262 452444
03263 003264
03264 626551
03265 003266
03266 767647
03267 002500
1990
1991 f24, loca stp
03270 761120
03271 000000
1992 nam2 flex sto,767647
03272 222346
03273 003274
03274 767647
03275 002500
1993
1994 f26, loca pr1
03276 760703
03277 000000
1995 nam2 flex pri,764501
03300 475171
03301 003302
03302 764501
03303 002500
1996
1997 f27, loca qot
03304 761057
03305 000000
1998 nam3 flex quo,flex tie,764523
03306 502446
03307 003310
03310 237165
03311 003312
03312 764523
03313 002500
1999
2000 f32, loca rda
03314 760607
03315 000000
2001 nam2 flex rpl,flex aca
03316 514743
03317 003320
03320 616361
03321 002500
2002
2003 f33, loca rdc
/lisp 3-23-64 : 1 field Page 44
03322 760605
03323 000000
2004 nam2 flex rpl,flex acd
03324 514743
03325 003326
03326 616364
03327 002500
2005
2006 f00, loca xeq
03330 760767
03331 000000
2007 nam1 flex xeq
03332 276550
03333 002500
2008
2009 f01, loca crn
03334 760112
03335 000000
2010 nam1 flex loc
03336 434663
03337 002500
2011
2012 f34, loca tpr
03340 760700
03341 000000
2013 nam2 flex ter,flex pri
03342 236551
03343 003344
03344 475171
03345 002500
2014
2015 f50, loca pgm
03346 760423
03347 000000
2016 nam2 flex pro,767667
03350 475146
03351 003352
03352 767667
03353 002500
2017
2018 f51, loca ret
03354 760524
03355 000000
2019 nam2 flex ret,flex urn
03356 516523
03357 003360
03360 245145
03361 002500
2020
2021 f52, loca goe
03362 760526
03363 000000
2022 nam1 766746
03364 766746
03365 002500
2023
2024 f53, loca stq
/lisp 3-23-64 : 1 field Page 45
03366 760533
03367 000000
2025 nam2 flex set,767650
03370 226523
03371 003372
03372 767650
03373 002500
2026
2027 f54, loca aso
03374 760374
03375 000000
2028 nam2 flex sas,flex soc
03376 226122
03377 003400
03400 224663
03401 002500
2029
2030 fb2, loca rin
03402 761304
03403 000000
2031 nam2 flex rea,767664
03404 516561
03405 003406
03406 767664
03407 002500
2032
2033 fb3, loca evl
03410 761563
03411 000000
2034 nam2 flex eva,767643
03412 652561
03413 003414
03414 767643
03415 002500
2035
2036 fb4, loca pnt
03416 761235
03417 000000
2037 nam2 flex pri,764523
03420 475171
03421 003422
03422 764523
03423 002500
2038
2039 fb5, loca car /**
03424 760555
03425 000000
2040 nam2 flex quo,762365
03426 502446
03427 003430
03430 762365
03431 002500
2041
2042 fa3, loca nul
03432 760567
03433 000000
2043 nam2 flex nul,767643
/lisp 3-23-64 : 1 field Page 46
03434 452443
03435 003436
03436 767643
03437 002500
2044
2045 f60, loca pls
03440 760631
03441 000000
2046 nam2 flex plu,767622
03442 474324
03443 003444
03444 767622
03445 002500
2047
2048 f61, loca tim
03446 760661
03447 000000
2049 nam2 flex tim,766522
03450 237144
03451 003452
03452 766522
03453 002500
2050
2051 f62, loca lga
03454 760651
03455 000000
2052 nam2 flex log,flex and
03456 434667
03457 003460
03460 614564
03461 002500
2053
2054 f63, loca lgo
03462 760656
03463 000000
2055 nam2 flex log,764651
03464 434667
03465 003466
03466 764651
03467 002500
2056
2057 /miscellany
2058
2059 f38, nam1 flex nil
03470 457143
03471 002500
2060
2061 f40, nam2 flex lam,flex bda
03472 436144
03473 003474
03474 626461
03475 002500
2062
2063 f42, nam2 flex apv,766143
03476 614725
03477 003500
03500 766143
/lisp 3-23-64 : 1 field Page 47
03501 002500
2064
2065 f43, nam2 flex sub,767651
03502 222462
03503 003504
03504 767651
03505 002500
2066
2067 f44, nam2 flex exp,767651
03506 652747
03507 003510
03510 767651
03511 002500
2068
2069 f45, nam2 flex fsu,766251
03512 662224
03513 003514
03514 766251
03515 002500
2070
2071 f46, nam2 flex fex,764751
03516 666527
03517 003520
03520 764751
03521 002500
2072
2073 fb0, nam2 flex obl,flex ist
03522 466243
03523 003524
03524 712223
03525 002500
2074
2075 f37, nam1 767623
03526 767623
03527 002500
2076
2077 end,
2078 002351 start pdo
02243 000001
02244 600000
02245 000077
02246 000076
02247 661000
02250 661077
02251 000200
02252 000003
02253 767600
02254 000032
02255 400000
02256 400041
02257 777777
02260 020041
02261 040041
02262 600666
02263 200000
02264 177777
02265 777776
/lisp 3-23-64 : 1 field Page 48
02266 000020
02267 000012
02270 000021
02271 000041
02272 671000
02273 000072
02274 000074
02275 320100
02276 000057
02277 000055
02300 601326
02301 000033
02302 000073
02303 000056
02304 000036
02305 000075
02306 240044
No detected errors
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment