-
Notifications
You must be signed in to change notification settings - Fork 0
/
zork_code.txt
executable file
·9540 lines (8630 loc) · 347 KB
/
zork_code.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
Resident data ends at 4e37, program starts at 4f04, file ends at 14b8c
Starting analysis pass at address 4e37
End of analysis pass, low address = 4e38, high address = 10b04
[Start of code]
Routine R0001, 1 local (0000)
PRINT "a "
PRINT_OBJ L00
RTRUE
Routine R0002, 1 local (0000)
JZ G3c [TRUE] L0001
RANDOM #64 -> -(SP)
JG L00,(SP)+ [TRUE] RTRUE
RFALSE
L0001: RANDOM #012c -> -(SP)
JG L00,(SP)+ [TRUE] RTRUE
RFALSE
Routine R0003, 1 local (0000)
LOADW L00,#00 -> -(SP)
RANDOM (SP)+ -> -(SP)
LOADW L00,(SP)+ -> -(SP)
RET_POPPED
Routine R0004, 6 locals (0000, 0000, 0000, 0000, 0000, 0000)
LOADW L00,#00 -> L01
LOADW L00,#01 -> L02
DEC L01
ADD L00,#02 -> L00
MUL L02,#02 -> -(SP)
ADD L00,(SP)+ -> L05
SUB L01,L02 -> -(SP)
RANDOM (SP)+ -> L03
LOADW L05,L03 -> L04
LOADW L05,#01 -> -(SP)
STOREW L05,L03,(SP)+
STOREW L05,#01,L04
INC L02
JE L02,L01 [FALSE] L0001
STORE L02,#00
L0001: STOREW L00,#00,L02
RET L04
Routine R0005, 0 locals ()
JE G78,#2b [FALSE] RFALSE
CALL R0235 (#a3) -> -(SP)
RFALSE
Routine R0006, 0 locals ()
JZ G2e [TRUE] L0002
TEST_ATTR "grating",#0b [FALSE] L0001
RET #39
L0001: PRINT "The grating is closed!"
NEW_LINE
CALL R0255 (#ae) -> -(SP)
RFALSE
L0002: PRINT "You can't go that way."
NEW_LINE
RFALSE
Routine R0007, 1 local (0000)
JE L00,#01 [FALSE] RFALSE
JE G78,#45 [FALSE] RFALSE
JZ G76 [FALSE] RFALSE
CALL R0431 (S148) -> -(SP)
RTRUE
Main routine R0008, 0 locals ()
L0001: CALL R0022 (#8010,#ffff) -> -(SP)
STOREW (SP)+,#00,#01
CALL R0022 (#807c,#ffff) -> -(SP)
CALL R0022 (#80f0,#ffff) -> -(SP)
STOREW (SP)+,#00,#01
CALL R0022 (#6f6a,#28) -> -(SP)
CALL R0022 (#6f55,#c8) -> -(SP)
PUT_PROP "magic boat",#06,#04
ADD G10,#02 -> -(SP)
STOREW G0a,#01,(SP)+
ADD G10,#04 -> -(SP)
STOREW G0a,#02,(SP)+
ADD G0e,#02 -> -(SP)
STOREW G09,#02,(SP)+
ADD G0e,#04 -> -(SP)
STOREW G09,#03,(SP)+
ADD G0d,#02 -> -(SP)
STOREW G08,#01,(SP)+
ADD G0c,#02 -> -(SP)
STOREW G08,#03,(SP)+
STORE G00,#b4
CALL R0255 (#a0) -> -(SP)
TEST_ATTR G00,#03 [TRUE] L0002
CALL R0077 -> -(SP)
NEW_LINE
L0002: STORE G42,#01
STORE G6f,#04
STORE G80,G6f
INSERT_OBJ G6f,G00
CALL R0144 -> -(SP)
CALL R0025 -> -(SP)
JUMP L0001
Routine R0009, 3 locals (0000, 0001, 0000)
JE G76,#0b [FALSE] L0001
JE G77,#0b [FALSE] L0001
PRINT_RET "Those things aren't here!"
L0001: JE G76,#0b [FALSE] L0002
STORE L00,G56
JUMP L0003
L0002: STORE L00,G55
STORE L01,#00
L0003: STORE G6c,#00
STORE G60,#00
JE G6f,G80 [FALSE] L0004
PRINT "You can't see any"
CALL R0012 (L01) -> -(SP)
PRINT_RET " here!"
L0004: PRINT "The "
PRINT_OBJ G6f
PRINT " seems confused. "I don't see any"
CALL R0012 (L01) -> -(SP)
PRINT_RET " here!""
Routine R0010, 4 locals (0000, 0000, 0000, 0000)
CALL R0052 (L00) -> L02
JG L02,#01 [FALSE] L0001
LOADW L00,#01 -> -(SP)
GET_PROP (SP)+,#05 -> L03
JZ L03 [TRUE] L0001
STORE L02,#01
STORE G4c,L03
L0001: JE #01,L02 [FALSE] L0003
JZ L01 [TRUE] L0002
STORE G76,G4c
RFALSE
L0002: STORE G77,G4c
RFALSE
L0003: JZ L01 [FALSE] L0004
PRINT "You wouldn't find any"
CALL R0012 (L01) -> -(SP)
PRINT_RET " there."
L0004: RET #0b
Routine R0011, 1 local (0000)
STORE G6c,#00
STORE G60,#00
PRINT "You can't see any"
JE L00,G76 [FALSE] L0001
CALL R0064 -> -(SP)
JUMP L0002
L0001: CALL R0065 -> -(SP)
L0002: PRINT_RET " here."
Routine R0012, 2 locals (0000, 0000)
JZ G69 [TRUE] L0002
JZ G4a [TRUE] L0001
PRINT " "
PRINT_ADDR G49
L0001: JZ G4b [TRUE] RFALSE
PRINT " "
PRINT_ADDR G4b
RTRUE
L0002: JZ L00 [TRUE] L0003
LOADW G64,#06 -> L01
LOADW G64,#07 -> -(SP)
CALL R0040 (L01,(SP)+,#00) -> -(SP)
RET_POPPED
L0003: LOADW G64,#08 -> L01
LOADW G64,#09 -> -(SP)
CALL R0040 (L01,(SP)+,#00) -> -(SP)
RET_POPPED
Routine R0013, 2 locals (0000, 0000)
RFALSE
Routine R0014, 0 locals ()
JE G78,#22 [FALSE] RFALSE
PRINT_RET "You should say whether you want to go up or down."
Routine R0015, 0 locals ()
JE G78,#42 [FALSE] RFALSE
INC G45
CALL R0013 -> -(SP)
MOD G45,#14 -> -(SP)
JZ (SP)+ [FALSE] L0001
PRINT_RET "You seem to be repeating yourself."
L0001: MOD G45,#0a -> -(SP)
JZ (SP)+ [FALSE] L0002
PRINT_RET "I think that phrase is getting a bit worn out."
L0002: PRINT_RET "Nothing happens here."
Routine R0016, 0 locals ()
JE G78,#32,#12 [FALSE] L0001
JE G77,#08 [FALSE] L0001
CALL R0026 (#31,G76) -> -(SP)
RTRUE
L0001: JE G00,#7e [FALSE] L0002
CALL R0385 -> -(SP)
RET_POPPED
L0002: JE G78,#2c [FALSE] RFALSE
PRINT_RET "The ground is too hard for digging here."
Routine R0017, 0 locals ()
JE G78,#38 [FALSE] L0001
PRINT_RET "The grue is a sinister, lurking presence in the dark
places of the earth. Its favorite diet is adventurers, but its insatiable
appetite is tempered by its fear of light. No grue has ever been seen by the
light of day, and few have survived its fearsome jaws to tell the tale."
L0001: JE G78,#3c [FALSE] L0002
PRINT_RET "There is no grue here, but I'm sure there is at least
one lurking in the darkness nearby. I wouldn't let my light go out if I were
you!"
L0002: JE G78,#4d [FALSE] RFALSE
PRINT_RET "It makes no sound but is always lurking in the darkness
nearby."
Routine R0018, 1 local (0000)
JE G78,#6f [FALSE] L0001
STORE G6c,#00
STORE G60,#00
PRINT_RET "Talking to yourself is said to be a sign of impending
mental collapse."
L0001: JE G78,#3f [FALSE] L0002
JE G77,#05 [FALSE] L0002
CALL R0026 (#5d,G76) -> -(SP)
RTRUE
L0002: JE G78,#56 [FALSE] L0003
PRINT_RET "Only you can do that."
L0003: JE G78,#2d [FALSE] L0004
PRINT_RET "You'll have to do that on your own."
L0004: JE G78,#33 [FALSE] L0005
PRINT_RET "Auto-cannibalism is not the answer."
L0005: JE G78,#2a,#13 [FALSE] L0007
JZ G77 [TRUE] L0006
TEST_ATTR G77,#1d [FALSE] L0006
CALL R0431 (S164) -> -(SP)
RET_POPPED
L0006: PRINT_RET "Suicide is not the answer."
L0007: JE G78,#5d [FALSE] L0008
PRINT_RET "How romantic!"
L0008: JE G78,#38 [FALSE] RFALSE
GET_PARENT "mirror" -> L00
GET_PARENT "mirror" -> -(SP)
JE G00,L00,(SP)+ [FALSE] L0009
PRINT_RET "Your image in the mirror looks tired."
L0009: PRINT_RET "That's difficult unless your eyes are prehensile."
Routine R0019, 0 locals ()
JE G78,#3d,#5d [FALSE] L0001
PRINT_RET "You must specify a direction to go."
L0001: JE G78,#3c [FALSE] L0002
PRINT_RET "I can't help you there...."
L0002: JE G78,#2c [FALSE] RFALSE
PRINT_RET "Not a chance."
Routine R0020, 0 locals ()
JE G78,#38 [FALSE] L0001
PRINT_RET "The zorkmid is the unit of currency of the Great
Underground Empire."
L0001: JE G78,#3c [FALSE] RFALSE
PRINT_RET "The best way to find zorkmids is to go out and look for
them."
Routine R0021, 3 locals (0000, 0000, 0000)
CALL R0023 (L00,#01) -> L02
STOREW L02,#01,L01
RET L02
Routine R0022, 3 locals (0000, 0000, 0000)
CALL R0023 (L00) -> L02
STOREW L02,#01,L01
RET L02
Routine R0023, 5 locals (0000, 0000, 0000, 0000, 0000)
ADD G84,#b4 -> L02
ADD G84,G82 -> L03
L0001: JE L03,L02 [FALSE] L0003
SUB G82,#06 -> G82
JZ L01 [TRUE] L0002
SUB G83,#06 -> G83
L0002: ADD G84,G82 -> L04
STOREW L04,#02,L00
RET L04
L0003: LOADW L03,#02 -> -(SP)
JE (SP)+,L00 [FALSE] L0004
RET L03
L0004: ADD L03,#06 -> L03
JUMP L0001
Routine R0024, 4 locals (0000, 0000, 0000, 0000)
JZ G81 [TRUE] L0001
STORE G81,#00
RFALSE
L0001: JZ G7f [TRUE] L0002
PUSH G82
JUMP L0003
L0002: PUSH G83
L0003: ADD G84,(SP)+ -> L00
ADD G84,#b4 -> L01
L0004: JE L00,L01 [FALSE] L0006
INC_CHK G02,#03e7 [FALSE] L0005
STORE G02,#00
L0005: RET L03
L0006: LOADW L00,#00 -> -(SP)
JZ (SP)+ [TRUE] L0008
LOADW L00,#01 -> L02
JZ L02 [FALSE] L0007
JUMP L0008
L0007: SUB L02,#01 -> -(SP)
STOREW L00,#01,(SP)+
JG L02,#01 [TRUE] L0008
LOADW L00,#02 -> -(SP)
CALL (SP)+ -> -(SP)
JZ (SP)+ [TRUE] L0008
STORE L03,#01
L0008: ADD L00,#06 -> L00
JUMP L0004
Routine R0025, 10 locals (0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000,
0000)
L0001: STORE L03,#00
STORE L04,#00
STORE L07,#01
CALL R0027 -> G7f
JZ G7f [TRUE] L0039
LOADW G55,G51 -> L00
LOADW G56,G51 -> L01
JZ L01 [FALSE] L0002
PUSH L01
JUMP L0007
L0002: JG L01,#01 [FALSE] L0005
STORE L05,G56
JZ L00 [FALSE] L0003
STORE L04,#00
JUMP L0004
L0003: LOADW G55,#01 -> L04
L0004: PUSH L01
JUMP L0007
L0005: JG L00,#01 [FALSE] L0006
STORE L07,#00
STORE L05,G55
LOADW G56,#01 -> L04
PUSH L00
JUMP L0007
L0006: PUSH #01
L0007: STORE L02,(SP)+
JZ L04 [FALSE] L0008
JE L00,#01 [FALSE] L0008
LOADW G55,#01 -> L04
L0008: JE G78,#89 [FALSE] L0009
CALL R0026 (G78,G76) -> L06
JUMP L0035
L0009: JZ L02 [FALSE] L0012
LOADB G73,#00 -> -(SP)
AND (SP)+,#03 -> -(SP)
JZ (SP)+ [FALSE] L0010
CALL R0026 (G78) -> L06
STORE G76,#00
JUMP L0035
L0010: JZ G42 [FALSE] L0011
PRINT "It's too dark to see."
NEW_LINE
JUMP L0035
L0011: PRINT "It's not clear what you're referring to."
NEW_LINE
STORE L06,#00
JUMP L0035
L0012: STORE G7a,#00
STORE G7b,#00
JG L02,#01 [FALSE] L0013
STORE G7b,#01
L0013: STORE L09,#00
L0014: INC_CHK L03,L02 [FALSE] L0020
JG G7a,#00 [FALSE] L0019
PRINT "The "
JE G7a,L02 [TRUE] L0015
PRINT "other "
L0015: PRINT "object"
JE G7a,#01 [TRUE] L0016
PRINT "s"
L0016: PRINT " that you mentioned "
JE G7a,#01 [TRUE] L0017
PRINT "are"
JUMP L0018
L0017: PRINT "is"
L0018: PRINT "n't here."
NEW_LINE
JUMP L0035
L0019: JZ L09 [FALSE] L0035
PRINT "There's nothing here you can take."
NEW_LINE
JUMP L0035
L0020: JZ L07 [TRUE] L0021
LOADW G56,L03 -> L08
JUMP L0022
L0021: LOADW G55,L03 -> L08
L0022: JZ L07 [TRUE] L0023
PUSH L08
JUMP L0024
L0023: PUSH L04
L0024: STORE G76,(SP)+
JZ L07 [TRUE] L0025
PUSH L04
JUMP L0026
L0025: PUSH L08
L0026: STORE G77,(SP)+
JG L02,#01 [TRUE] L0027
LOADW G64,#06 -> -(SP)
LOADW (SP)+,#00 -> -(SP)
JE (SP)+,"all" [FALSE] L0034
L0027: JE L08,#0b [FALSE] L0028
INC G7a
JUMP L0014
L0028: JE G78,#5d [FALSE] L0029
JZ G77 [TRUE] L0029
LOADW G64,#06 -> -(SP)
LOADW (SP)+,#00 -> -(SP)
JE (SP)+,"all" [FALSE] L0029
JIN G76,G77 [TRUE] L0029
JUMP L0014
L0029: JE G50,#01 [FALSE] L0031
JE G78,#5d [FALSE] L0031
GET_PARENT L08 -> -(SP)
JE (SP)+,G6f,G00 [TRUE] L0030
GET_PARENT L08 -> -(SP)
TEST_ATTR (SP)+,#0a [FALSE] L0014
L0030: TEST_ATTR L08,#11 [TRUE] L0031
TEST_ATTR L08,#0d [TRUE] L0031
JUMP L0014
L0031: JE L08,#0c [FALSE] L0032
PRINT_OBJ G6b
JUMP L0033
L0032: PRINT_OBJ L08
L0033: PRINT ": "
L0034: STORE L09,#01
CALL R0026 (G78,G76,G77) -> L06
JE L06,#02 [FALSE] L0014
JUMP L0035
L0035: JE L06,#02 [TRUE] L0036
GET_PARENT G6f -> -(SP)
GET_PROP (SP)+,#11 -> -(SP)
CALL (SP)+ (#06) -> L06
L0036: JE G78,#08,#89,#0f [TRUE] L0038
JE G78,#0c,#09,#07 [FALSE] L0037
JUMP L0038
L0037: STORE G7e,G78
STORE G7d,G76
STORE G7c,G77
L0038: JE L06,#02 [FALSE] L0040
STORE G6c,#00
JUMP L0040
L0039: STORE G6c,#00
L0040: JZ G7f [TRUE] L0001
JE G78,#02,#01,#6f [TRUE] L0001
JE G78,#0c,#08,#00 [TRUE] L0001
JE G78,#09,#06,#05 [TRUE] L0001
JE G78,#07,#0b,#0a [FALSE] L0041
JUMP L0001
L0041: CALL R0024 -> L06
JUMP L0001
Routine R0026, 7 locals (0000, 0000, 0000, 0000, 0000, 0000, 0000)
STORE L04,G78
STORE L05,G76
STORE L06,G77
JE #0c,L02,L01 [FALSE] L0001
JE G6a,G00 [TRUE] L0001
PRINT "I don't see what you are referring to."
NEW_LINE
RET #02
L0001: JE L01,#0c [FALSE] L0002
STORE L01,G6b
L0002: JE L02,#0c [FALSE] L0003
STORE L02,G6b
L0003: STORE G78,L00
STORE G76,L01
JZ G76 [TRUE] L0004
JE G77,#0c [TRUE] L0004
JE G78,#89 [TRUE] L0004
STORE G6b,G76
STORE G6a,G00
L0004: STORE G77,L02
JE #0b,G76,G77 [FALSE] L0005
CALL R0009 -> L03
JZ L03 [TRUE] L0005
JUMP L0012
L0005: STORE L01,G76
STORE L02,G77
GET_PROP G6f,#11 -> -(SP)
CALL (SP)+ -> L03
JZ L03 [TRUE] L0006
JUMP L0012
L0006: GET_PARENT G6f -> -(SP)
GET_PROP (SP)+,#11 -> -(SP)
CALL (SP)+ (#01) -> L03
JZ L03 [TRUE] L0007
JUMP L0012
L0007: LOADW G9c,L00 -> -(SP)
CALL (SP)+ -> L03
JZ L03 [TRUE] L0008
JUMP L0012
L0008: JZ L02 [TRUE] L0009
GET_PROP L02,#11 -> -(SP)
CALL (SP)+ -> L03
JZ L03 [TRUE] L0009
JUMP L0012
L0009: JZ L01 [TRUE] L0010
JE L00,#89 [TRUE] L0010
GET_PARENT L01 -> -(SP)
JZ (SP)+ [TRUE] L0010
GET_PARENT L01 -> -(SP)
GET_PROP (SP)+,#02 -> -(SP)
CALL (SP)+ -> L03
JZ L03 [TRUE] L0010
JUMP L0012
L0010: JZ L01 [TRUE] L0011
JE L00,#89 [TRUE] L0011
GET_PROP L01,#11 -> -(SP)
CALL (SP)+ -> L03
JZ L03 [TRUE] L0011
JUMP L0012
L0011: LOADW G9b,L00 -> -(SP)
CALL (SP)+ -> L03
JZ L03 [TRUE] L0012
L0012: STORE G78,L04
STORE G76,L05
STORE G77,L06
RET L03
Routine R0027, 11 locals (0001, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000,
0000, ffff)
L0001: INC_CHK L0a,#09 [FALSE] L0002
JUMP L0003
L0002: STOREW G64,L0a,#00
JUMP L0001
L0003: STORE G58,#00
STORE G68,#00
STOREW G56,G51,#00
STOREW G55,G51,#00
STOREW G54,G51,#00
JZ G60 [FALSE] L0005
JE G6f,G80 [TRUE] L0005
STORE G6f,G80
GET_PARENT G6f -> -(SP)
TEST_ATTR (SP)+,#1b [TRUE] L0004
GET_PARENT G6f -> G00
L0004: CALL R0063 (G00) -> G42
L0005: JZ G6c [TRUE] L0007
STORE L00,G6c
JZ G46 [FALSE] L0006
JE G80,G6f [FALSE] L0006
JE G78,#70 [TRUE] L0006
NEW_LINE
L0006: STORE G6c,#00
JUMP L0010
L0007: STORE G6f,G80
STORE G60,#00
GET_PARENT G6f -> -(SP)
TEST_ATTR (SP)+,#1b [TRUE] L0008
GET_PARENT G6f -> G00
L0008: CALL R0063 (G00) -> G42
JZ G46 [FALSE] L0009
NEW_LINE
L0009: PRINT ">"
READ G6d,G6e
L0010: LOADB G6e,#01 -> G71
JZ G71 [FALSE] L0011
PRINT "I beg your pardon?"
NEW_LINE
RFALSE
L0011: STORE L04,G71
STORE G70,#00
STORE G61,#00
STORE G50,#00
L0012: DEC_CHK G71,#00 [FALSE] L0013
STORE G60,#00
JUMP L0040
L0013: LOADW G6e,L00 -> L01
JZ L01 [FALSE] L0014
CALL R0030 (L00) -> L01
JZ L01 [TRUE] L0038
L0014: JE L01,"to" [FALSE] L0015
JE L03,#ef [FALSE] L0015
STORE L01,"""
JUMP L0016
L0015: JE L01,"then" [FALSE] L0016
JZ L03 [FALSE] L0016
JZ G60 [FALSE] L0016
STOREW G64,#00,#ef
STOREW G64,#01,#00
STORE L01,"""
L0016: JE L01,"then","." [TRUE] L0017
JE L01,""" [FALSE] L0021
L0017: JE L01,""" [FALSE] L0019
JZ G60 [TRUE] L0018
STORE G60,#00
JUMP L0019
L0018: STORE G60,#01
L0019: JZ G71 [TRUE] L0020
ADD L00,#02 -> G6c
L0020: STOREB G6e,#01,G71
JUMP L0040
L0021: CALL R0028 (L01,#10,#03) -> L02
JZ L02 [TRUE] L0027
JE L03,#00,#f8 [FALSE] L0027
JE L04,#01 [TRUE] L0025
JE L04,#02 [FALSE] L0022
JE L03,#f8 [TRUE] L0025
L0022: ADD L00,#02 -> -(SP)
LOADW G6e,(SP)+ -> L06
JE L06,"then",".",""" [FALSE] L0023
JL L04,#02 [FALSE] L0025
L0023: JZ G60 [TRUE] L0024
JE L04,#02 [FALSE] L0024
JE L06,""" [TRUE] L0025
L0024: JG L04,#02 [FALSE] L0027
JE L06,",","and" [FALSE] L0027
L0025: STORE L05,L02
JE L06,",","and" [FALSE] L0026
ADD L00,#02 -> -(SP)
STOREW G6e,(SP)+,"then"
L0026: JG L04,#02 [TRUE] L0039
STORE G60,#00
JUMP L0040
L0027: CALL R0028 (L01,#40,#01) -> L02
JZ L02 [TRUE] L0028
JZ L03 [FALSE] L0028
STORE L03,L02
STOREW G64,#00,L02
STOREW G64,#01,G62
STOREW G62,#00,L01
MUL L00,#02 -> -(SP)
ADD (SP)+,#02 -> L08
LOADB G6e,L08 -> -(SP)
STOREB G62,#02,(SP)+
ADD L08,#01 -> -(SP)
LOADB G6e,(SP)+ -> -(SP)
STOREB G62,#03,(SP)+
JUMP L0039
L0028: CALL R0028 (L01,#08,#00) -> L02
JZ L02 [FALSE] L0030
JE L01,"all","one" [TRUE] L0029
CALL R0028 (L01,#20) -> -(SP)
JZ (SP)+ [FALSE] L0029
CALL R0028 (L01,#80) -> -(SP)
JZ (SP)+ [TRUE] L0035
L0029: STORE L02,#00
L0030: JG G71,#00 [FALSE] L0031
ADD L00,#02 -> -(SP)
LOADW G6e,(SP)+ -> -(SP)
JE (SP)+,"of" [FALSE] L0031
JZ L02 [FALSE] L0031
JE L01,"all","one","a" [TRUE] L0031
JUMP L0039
L0031: JZ L02 [TRUE] L0033
JZ G71 [TRUE] L0032
ADD L00,#02 -> -(SP)
LOADW G6e,(SP)+ -> -(SP)
JE (SP)+,"then","." [FALSE] L0033
L0032: JL G61,#02 [FALSE] L0039
STOREW G64,#02,L02
STOREW G64,#03,L01
JUMP L0039
L0033: JE G61,#02 [FALSE] L0034
PRINT "There were too many nouns in that sentence."
NEW_LINE
RFALSE
L0034: INC G61
CALL R0029 (L00,L02,L01) -> L00
JZ L00 [TRUE] RFALSE
JL L00,#00 [FALSE] L0039
STORE G60,#00
JUMP L0040
L0035: CALL R0028 (L01,#04) -> -(SP)
JZ (SP)+ [TRUE] L0036
JUMP L0039
L0036: JE L03,#ef [FALSE] L0037
CALL R0028 (L01,#40,#01) -> -(SP)
JZ (SP)+ [TRUE] L0037
PRINT "Please consult your manual for the correct way to talk
to other people or creatures."
NEW_LINE
RFALSE
L0037: CALL R0035 (L00) -> -(SP)
RFALSE
L0038: CALL R0034 (L00) -> -(SP)
RFALSE
L0039: STORE L07,L01
ADD L00,#02 -> L00
JUMP L0012
L0040: JZ L05 [TRUE] L0041
STORE G78,#89
STORE G76,L05
STORE G5f,L05
RET #01
L0041: STORE G5f,#00
JZ G69 [TRUE] L0042
CALL R0031 -> -(SP)
L0042: CALL R0036 -> -(SP)
JZ (SP)+ [TRUE] RFALSE
CALL R0048 -> -(SP)
JZ (SP)+ [TRUE] RFALSE
CALL R0060 -> -(SP)
JZ (SP)+ [TRUE] RFALSE
CALL R0058 -> -(SP)
JZ (SP)+ [TRUE] RFALSE
RTRUE
Routine R0028, 5 locals (0000, 0000, 0005, 0005, 0000)
LOADB L00,#04 -> L04
TEST L04,L01 [FALSE] RFALSE
JG L02,#04 [TRUE] RTRUE
AND L04,#03 -> L04
JE L04,L02 [TRUE] L0001
INC L03
L0001: LOADB L00,L03 -> -(SP)
RET_POPPED
Routine R0029, 10 locals (0000, 0000, 0000, 0000, 0000, 0000, 0001, 0000, 0000,
0000)
SUB G61,#01 -> -(SP)
MUL (SP)+,#02 -> L03
JZ L01 [TRUE] L0001
ADD #02,L03 -> L04
STOREW G64,L04,L01
ADD L04,#01 -> -(SP)
STOREW G64,(SP)+,L02
ADD L00,#02 -> L00
JUMP L0002
L0001: INC G71
L0002: JZ G71 [FALSE] L0003
DEC G61
RET #ffff
L0003: ADD #06,L03 -> L04
MUL L00,#02 -> -(SP)
ADD G6e,(SP)+ -> -(SP)
STOREW G64,L04,(SP)+
LOADW G6e,L00 -> -(SP)
JE (SP)+,"the","a","an" [FALSE] L0004
LOADW G64,L04 -> -(SP)
ADD (SP)+,#04 -> -(SP)
STOREW G64,L04,(SP)+
L0004: DEC_CHK G71,#00 [FALSE] L0005
ADD L04,#01 -> L09
MUL L00,#02 -> -(SP)
ADD G6e,(SP)+ -> -(SP)
STOREW G64,L09,(SP)+
RET #ffff
L0005: LOADW G6e,L00 -> L02
JZ L02 [FALSE] L0006
CALL R0030 (L00) -> L02
JZ L02 [TRUE] L0022
L0006: JZ G71 [FALSE] L0007
STORE L07,#00
JUMP L0008
L0007: ADD L00,#02 -> -(SP)
LOADW G6e,(SP)+ -> L07
L0008: JE L02,"and","," [FALSE] L0009
STORE L05,#01
JUMP L0023
L0009: JE L02,"all","one" [FALSE] L0010
JE L07,"of" [FALSE] L0023
DEC G71
ADD L00,#02 -> L00
JUMP L0023
L0010: JE L02,"then","." [TRUE] L0011
CALL R0028 (L02,#08) -> -(SP)
JZ (SP)+ [TRUE] L0012
LOADW G64,#00 -> -(SP)
JZ (SP)+ [TRUE] L0012
JZ L06 [FALSE] L0012
L0011: INC G71
ADD L04,#01 -> L09
MUL L00,#02 -> -(SP)
ADD G6e,(SP)+ -> -(SP)
STOREW G64,L09,(SP)+
SUB L00,#02 -> -(SP)
RET (SP)+
L0012: CALL R0028 (L02,#80) -> -(SP)
JZ (SP)+ [TRUE] L0016
JG G71,#00 [FALSE] L0013
JE L07,"of" [FALSE] L0013
JE L02,"all","one" [TRUE] L0013
JUMP L0023
L0013: CALL R0028 (L02,#20,#02) -> -(SP)
JZ (SP)+ [TRUE] L0014
JZ L07 [TRUE] L0014
CALL R0028 (L07,#80) -> -(SP)
JZ (SP)+ [TRUE] L0014
JUMP L0023
L0014: JZ L05 [FALSE] L0015
JE L07,"but","except" [TRUE] L0015
JE L07,"and","," [TRUE] L0015
ADD L04,#01 -> L09
ADD L00,#02 -> -(SP)
MUL (SP)+,#02 -> -(SP)
ADD G6e,(SP)+ -> -(SP)
STOREW G64,L09,(SP)+
RET L00
L0015: STORE L05,#00
JUMP L0023
L0016: JZ G68 [FALSE] L0017
JZ G69 [FALSE] L0017
LOADW G64,#00 -> -(SP)
JZ (SP)+ [TRUE] L0018
L0017: CALL R0028 (L02,#20) -> -(SP)
JZ (SP)+ [FALSE] L0023
CALL R0028 (L02,#04) -> -(SP)
JZ (SP)+ [TRUE] L0018
JUMP L0023
L0018: JZ L05 [TRUE] L0020
CALL R0028 (L02,#10) -> -(SP)
JZ (SP)+ [FALSE] L0019
CALL R0028 (L02,#40) -> -(SP)
JZ (SP)+ [TRUE] L0020
L0019: SUB L00,#04 -> L00
ADD L00,#02 -> -(SP)
STOREW G6e,(SP)+,"then"
ADD G71,#02 -> G71
JUMP L0023
L0020: CALL R0028 (L02,#08) -> -(SP)
JZ (SP)+ [TRUE] L0021
JUMP L0023
L0021: CALL R0035 (L00) -> -(SP)
RFALSE
L0022: CALL R0034 (L00) -> -(SP)
RFALSE
L0023: STORE L08,L02
STORE L06,#00
ADD L00,#02 -> L00
JUMP L0004
Routine R0030, 7 locals (0000, 0000, 0000, 0000, 0000, 0000, 0000)
MUL L00,#02 -> -(SP)
ADD G6e,(SP)+ -> -(SP)
LOADB (SP)+,#02 -> L01
MUL L00,#02 -> -(SP)
ADD G6e,(SP)+ -> -(SP)
LOADB (SP)+,#03 -> L02
L0001: DEC_CHK L01,#00 [FALSE] L0002
JUMP L0005
L0002: LOADB G6d,L02 -> L03
JE L03,#3a [FALSE] L0003
STORE L05,L04
STORE L04,#00
JUMP L0004
L0003: JG L04,#2710 [TRUE] RFALSE
JL L03,#3a [FALSE] RFALSE
JG L03,#2f [FALSE] RFALSE
MUL L04,#0a -> L06
SUB L03,#30 -> -(SP)
ADD L06,(SP)+ -> L04
L0004: INC L02
JUMP L0001
L0005: STOREW G6e,L00,"intnum"
JG L04,#03e8 [TRUE] RFALSE
JZ L05 [TRUE] L0008
JL L05,#08 [FALSE] L0006
ADD L05,#0c -> L05
JUMP L0007
L0006: JG L05,#17 [TRUE] RFALSE
L0007: MUL L05,#3c -> -(SP)
ADD L04,(SP)+ -> L04
L0008: STORE G5e,L04
RET "intnum"
Routine R0031, 8 locals (ffff, 0000, 0000, 0000, 0000, 0000, 0000, 0000)
STORE G69,#00
LOADW G64,#01 -> -(SP)
LOADW (SP)+,#00 -> -(SP)
CALL R0028 ((SP)+,#20,#02) -> -(SP)
JZ (SP)+ [TRUE] L0001
STORE L05,#01
L0001: LOADW G64,#00 -> L02
JZ L02 [TRUE] L0002
JZ L05 [FALSE] L0002
LOADW G63,#00 -> -(SP)
JE L02,(SP)+ [FALSE] RFALSE
L0002: JE G61,#02 [TRUE] RFALSE
LOADW G63,#06 -> -(SP)
JE (SP)+,#01 [FALSE] L0005
LOADW G64,#02 -> L01
LOADW G63,#02 -> -(SP)
JE L01,(SP)+ [TRUE] L0003
JZ L01 [FALSE] RFALSE
L0003: JZ L05 [TRUE] L0004
ADD G6e,#02 -> -(SP)
STOREW G63,#06,(SP)+
ADD G6e,#06 -> -(SP)
STOREW G63,#07,(SP)+
JUMP L0018
L0004: LOADW G64,#06 -> -(SP)
STOREW G63,#06,(SP)+
LOADW G64,#07 -> -(SP)
STOREW G63,#07,(SP)+
JUMP L0018
L0005: LOADW G63,#08 -> -(SP)
JE (SP)+,#01 [FALSE] L0008
LOADW G64,#02 -> L01
LOADW G63,#04 -> -(SP)
JE L01,(SP)+ [TRUE] L0006
JZ L01 [FALSE] RFALSE
L0006: JZ L05 [TRUE] L0007
ADD G6e,#02 -> -(SP)
STOREW G64,#06,(SP)+
ADD G6e,#06 -> -(SP)
STOREW G64,#07,(SP)+
L0007: LOADW G64,#06 -> -(SP)
STOREW G63,#08,(SP)+
LOADW G64,#07 -> -(SP)
STOREW G63,#09,(SP)+
STORE G61,#02
JUMP L0018
L0008: JZ G67 [TRUE] L0018
JE G61,#01 [TRUE] L0009
JZ L05 [FALSE] L0009
STORE G67,#00
RFALSE
L0009: LOADW G64,#06 -> L03
JZ L05 [TRUE] L0010
ADD G6e,#02 -> L03
STORE L05,#00
L0010: LOADW G64,#07 -> L04
L0011: LOADW L03,#00 -> L06
JE L03,L04 [FALSE] L0013
JZ L05 [TRUE] L0012
CALL R0032 (L05) -> -(SP)
JUMP L0018
L0012: STORE G67,#00
RFALSE
L0013: JZ L05 [FALSE] L0015
LOADB L06,#04 -> -(SP)
TEST (SP)+,#20 [TRUE] L0014
JE L06,"all","one" [FALSE] L0015
L0014: STORE L05,L06
JUMP L0017
L0015: LOADB L06,#04 -> -(SP)
TEST (SP)+,#80 [TRUE] L0016
JE L06,"one" [FALSE] L0017
L0016: JE L06,G66,"one" [FALSE] RFALSE
CALL R0032 (L05) -> -(SP)
JUMP L0018
L0017: ADD L03,#04 -> L03
JZ L04 [FALSE] L0011
STORE L04,L03
STORE G61,#01
SUB L03,#04 -> -(SP)
STOREW G64,#06,(SP)+
STOREW G64,#07,L03
JUMP L0011
L0018: INC_CHK L00,#09 [FALSE] L0019
STORE G68,#01
RTRUE
L0019: LOADW G63,L00 -> -(SP)
STOREW G64,L00,(SP)+
JUMP L0018
Routine R0032, 1 local (0000)
LOADW G63,#00 -> -(SP)
STOREW G64,#00,(SP)+
STORE G72,G63
ADD G67,#01 -> -(SP)
CALL R0043 (G67,(SP)+,L00) -> -(SP)
LOADW G63,#08 -> -(SP)
JZ (SP)+ [TRUE] L0001