about summary refs log tree commit diff stats
path: root/editor/subx.el
blob: 8d92c78e08a6e8505fc205ba76192edab0b7beda (plain) (blame)
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
;;; Emacs major mode for editing SubX files. -*- coding: utf-8; lexical-binding: t; -*-

;; Author: Kartik Agaram (subx.el@akkartik.com)
;; Version: 0.0.1
;; Created: 28 Dec 2019
;; Keywords: languages
;; Homepage: https://github.com/akkartik/mu

;;; Commentary:

;; I don't know how to define new faces in an emacs package, so I'm
;; cannibalizing existing faces.
;;
;; I load this file like so in my .emacs:
;;    (load "/absolute/path/to/subx.el")
;;    (add-to-list 'auto-mode-alist '("\\.subx" . subx-mode))
;;
;; Education on the right way to do this most appreciated.

(setq subx-font-lock-keywords
  '(
    ; tests
    ("^test-[^ ]*:" . font-lock-type-face)
    ; functions
    ("^[a-z][^ ]*:" . font-lock-function-name-face)
    ; globals
    ("^[A-Z][^ ]*:" . font-lock-variable-name-face)
    ; minor labels
    ("^[^a-zA-Z#( ][^ ]*:" . font-lock-doc-face)
    ; string literals
    ; ("\"[^\"]*\"" . font-lock-constant-face)  ; strings colorized already, albeit buggily
    ; 4 colors for comments; ugly but functional
    ("# \\. \\. .*" . font-lock-doc-face)
    ("# \\. .*" . font-lock-constant-face)
    ("# - .*" . font-lock-comment-face)
    ("#.*" . font-lock-preprocessor-face)
    ))

(define-derived-mode subx-mode fundamental-mode "subx mode"
  "Major mode for editing SubX (Mu project)"
  (setq font-lock-defaults '((subx-font-lock-keywords)))
  )

(provide 'subx-mode)
'#n343'>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
parse/0: instruction: 38
parse/0:   ingredient: {name: "location", value: 0, type: 0, properties: ["location": "type"]}
parse/0:   ingredient: {name: "30", value: 0, type: 0, properties: ["30": "literal"]}
parse/0:   product: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]}
parse/0: instruction: 101
parse/0:   ingredient: {name: "3", value: 0, type: 0, properties: ["3": "literal"]}
parse/0:   product: {name: "x", value: 0, type: 2-9, properties: ["x": "address":"buffer"]}
parse/0: instruction: 20
parse/0:   ingredient: {name: "x", value: 0, type: 2-9, properties: ["x": "address":"buffer", "deref": ]}
parse/0:   ingredient: {name: "data", value: 0, type: 0, properties: ["data": "offset"]}
parse/0:   product: {name: "s1", value: 0, type: 2-5-4, properties: ["s1": "address":"array":"character"]}
parse/0: instruction: 104
parse/0:   ingredient: {name: "x", value: 0, type: 2-9, properties: ["x": "address":"buffer"]}
parse/0:   ingredient: {name: "97", value: 0, type: 0, properties: ["97": "literal"]}
parse/0:   product: {name: "x", value: 0, type: 2-9, properties: ["x": "address":"buffer"]}
parse/0: instruction: 104
parse/0:   ingredient: {name: "x", value: 0, type: 2-9, properties: ["x": "address":"buffer"]}
parse/0:   ingredient: {name: "98", value: 0, type: 0, properties: ["98": "literal"]}
parse/0:   product: {name: "x", value: 0, type: 2-9, properties: ["x": "address":"buffer"]}
parse/0: instruction: 104
parse/0:   ingredient: {name: "x", value: 0, type: 2-9, properties: ["x": "address":"buffer"]}
parse/0:   ingredient: {name: "99", value: 0, type: 0, properties: ["99": "literal"]}
parse/0:   product: {name: "x", value: 0, type: 2-9, properties: ["x": "address":"buffer"]}
parse/0: instruction: 20
parse/0:   ingredient: {name: "x", value: 0, type: 2-9, properties: ["x": "address":"buffer", "deref": ]}
parse/0:   ingredient: {name: "data", value: 0, type: 0, properties: ["data": "offset"]}
parse/0:   product: {name: "s2", value: 0, type: 2-5-4, properties: ["s2": "address":"array":"character"]}
parse/0: instruction: 13
parse/0:   ingredient: {name: "s1", value: 0, type: 2-5-4, properties: ["s1": "address":"array":"character"]}
parse/0:   ingredient: {name: "s2", value: 0, type: 2-5-4, properties: ["s2": "address":"array":"character"]}
parse/0:   product: {name: "1", value: 0, type: 3, properties: ["1": "boolean", "raw": ]}
parse/0: instruction: 1
parse/0:   ingredient: {name: "s2", value: 0, type: 2-5-4, properties: ["s2": "address":"array":"character", "deref": ]}
parse/0:   product: {name: "2", value: 0, type: 5-4, properties: ["2": "array":"character", "raw": ]}
parse/0: label: +buffer-filled
parse/0: instruction: 104
parse/0:   ingredient: {name: "x", value: 0, type: 2-9, properties: ["x": "address":"buffer"]}
parse/0:   ingredient: {name: "100", value: 0, type: 0, properties: ["100": "literal"]}
parse/0:   product: {name: "x", value: 0, type: 2-9, properties: ["x": "address":"buffer"]}
parse/0: instruction: 20
parse/0:   ingredient: {name: "x", value: 0, type: 2-9, properties: ["x": "address":"buffer", "deref": ]}
parse/0:   ingredient: {name: "data", value: 0, type: 0, properties: ["data": "offset"]}
parse/0:   product: {name: "s3", value: 0, type: 2-5-4, properties: ["s3": "address":"array":"character"]}
parse/0: instruction: 13
parse/0:   ingredient: {name: "s1", value: 0, type: 2-5-4, properties: ["s1": "address":"array":"character"]}
parse/0:   ingredient: {name: "s3", value: 0, type: 2-5-4, properties: ["s3": "address":"array":"character"]}
parse/0:   product: {name: "10", value: 0, type: 3, properties: ["10": "boolean", "raw": ]}
parse/0: instruction: 20
parse/0:   ingredient: {name: "x", value: 0, type: 2-9, properties: ["x": "address":"buffer", "deref": ]}
parse/0:   ingredient: {name: "length", value: 0, type: 0, properties: ["length": "offset"]}
parse/0:   product: {name: "11", value: 0, type: 1, properties: ["11": "integer", "raw": ]}
parse/0: instruction: 1
parse/0:   ingredient: {name: "s3", value: 0, type: 2-5-4, properties: ["s3": "address":"array":"character", "deref": ]}
parse/0:   product: {name: "12", value: 0, type: 5-4, properties: ["12": "array":"character", "raw": ]}
new/0: location -> 1
name/0: assign x 1
name/0: element data of type buffer is at offset 1
name/0: assign s1 2
name/0: element data of type buffer is at offset 1
name/0: assign s2 3
name/0: element data of type buffer is at offset 1
name/0: assign s3 4
name/0: element length of type buffer is at offset 0
after-brace/0: recipe test-buffer-append-works
after-brace/0: new ...
after-brace/0: init-buffer ...
after-brace/0: get ...
after-brace/0: buffer-append ...
after-brace/0: buffer-append ...
after-brace/0: buffer-append ...
after-brace/0: get ...
after-brace/0: equal ...
after-brace/0: copy ...
after-brace/0: buffer-append ...
after-brace/0: get ...
after-brace/0: equal ...
after-brace/0: get ...
after-brace/0: copy ...
new/0: routine allocated memory from 1000 to 101000
schedule/0: test-buffer-append-works
run/0: instruction test-buffer-append-works/0
mem/0: array size is 30
mem/0: new alloc: 1000
run/0: instruction test-buffer-append-works/1
run/0: instruction init-buffer/0
mem/0: array size is 30
mem/0: new alloc: 1030
run/0: instruction init-buffer/1
mem/0: new alloc: 1060
mem/0: storing 1060 in location 1032
run/0: instruction init-buffer/2
run/0: ingredient 0 is result
mem/0: location 1032 is 1060
run/0: ingredient 1 is length
run/0: address to copy is 1060
run/0: product 0 is 1060
mem/0: storing 1060 in location 1033
run/0: instruction init-buffer/3
run/0: ingredient 0 is 0
mem/0: location 1033 is 1060
mem/0: storing 0 in location 1060
run/0: instruction init-buffer/4
run/0: ingredient 0 is result
mem/0: location 1032 is 1060
run/0: ingredient 1 is data
run/0: address to copy is 1061
run/0: product 0 is 1061
mem/0: storing 1061 in location 1034
run/0: instruction init-buffer/5
run/0: product 0 is 3
mem/0: storing 3 in location 1035
run/0: instruction init-buffer/6
mem/0: location 1035 is 3
mem/0: array size is 3
mem/0: new alloc: 1062
mem/0: location 1034 is 1061
mem/0: storing 1062 in location 1061
run/0: instruction init-buffer/7
mem/0: location 1032 is 1060
run/0: result 0 is 1060
mem/0: storing 1060 in location 1002
run/0: instruction test-buffer-append-works/2
run/0: ingredient 0 is x
mem/0: location 1002 is 1060
run/0: ingredient 1 is data
run/0: address to copy is 1061
run/0: its type is 2
mem/0: location 1061 is 1062
run/0: product 0 is 1062
mem/0: storing 1062 in location 1003
run/0: instruction test-buffer-append-works/3
mem/0: location 1002 is 1060
run/0: instruction buffer-append/0
mem/0: array size is 30
mem/0: new alloc: 1065
run/0: instruction buffer-append/1
run/0: product 0 is 1060
mem/0: storing 1060 in location 1067
run/0: instruction buffer-append/2
run/0: product 0 is 97
mem/0: storing 97 in location 1068
run/0: instruction buffer-append/4
mem/0: location 1067 is 1060
run/0: instruction buffer-full?/0
mem/0: array size is 30
mem/0: new alloc: 1095
run/0: instruction buffer-full?/1
run/0: product 0 is 1060
mem/0: storing 1060 in location 1097
run/0: instruction buffer-full?/2
run/0: ingredient 0 is in
mem/0: location 1097 is 1060
run/0: ingredient 1 is length
run/0: address to copy is 1060
run/0: its type is 1
mem/0: location 1060 is 0
run/0: product 0 is 0
mem/0: storing 0 in location 1098
run/0: instruction buffer-full?/3
run/0: ingredient 0 is in
mem/0: location 1097 is 1060
run/0: ingredient 1 is data
run/0: address to copy is 1061
run/0: its type is 2
mem/0: location 1061 is 1062
run/0: product 0 is 1062
mem/0: storing 1062 in location 1099
run/0: instruction buffer-full?/4
mem/0: location 1099 is 1062
mem/0: storing 3 in location 1100
run/0: instruction buffer-full?/5
run/0: ingredient 0 is len
mem/0: location 1098 is 0
run/0: ingredient 1 is capacity
mem/0: location 1100 is 3
run/0: product 0 is 0
mem/0: storing 0 in location 1101
run/0: instruction buffer-full?/6
mem/0: location 1101 is 0
run/0: result 0 is 0
mem/0: storing 0 in location 1069
run/0: instruction buffer-append/5
mem/0: location 1069 is 0
run/0: ingredient 0 is 0
run/0: ingredient 1 is 
run/0: jumping to instruction 7
run/0: instruction buffer-append/8
run/0: ingredient 0 is in
mem/0: location 1067 is 1060
run/0: ingredient 1 is length
run/0: address to copy is 1060
run/0: product 0 is 1060
mem/0: storing 1060 in location 1070
run/0: instruction buffer-append/9
run/0: ingredient 0 is in
mem/0: location 1067 is 1060
run/0: ingredient 1 is data
run/0: address to copy is 1061
run/0: its type is 2
mem/0: location 1061 is 1062
run/0: product 0 is 1062
mem/0: storing 1062 in location 1071
run/0: instruction buffer-append/10
run/0: ingredient 0 is s
mem/0: location 1071 is 1062
run/0: ingredient 1 is {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]}
mem/0: location 1070 is 1060
mem/0: location 1060 is 0
run/0: address to copy is 1063
run/0: product 0 is 1063
mem/0: storing 1063 in location 1072
run/0: instruction buffer-append/11
run/0: ingredient 0 is c
mem/0: location 1068 is 97
mem/0: location 1072 is 1063
mem/0: storing 97 in location 1063
run/0: instruction buffer-append/12
run/0: ingredient 0 is len
mem/0: location 1070 is 1060
mem/0: location 1060 is 0
run/0: ingredient 1 is 1
run/0: product 0 is 1
mem/0: location 1070 is 1060
mem/0: storing 1 in location 1060
run/0: instruction buffer-append/13
mem/0: location 1067 is 1060
run/0: result 0 is 1060
mem/0: storing 1060 in location 1002
run/0: instruction test-buffer-append-works/4
mem/0: location 1002 is 1060
run/0: instruction buffer-append/0
mem/0: array size is 30
mem/0: new alloc: 1125
run/0: instruction buffer-append/1
run/0: product 0 is 1060
mem/0: storing 1060 in location 1127
run/0: instruction buffer-append/2
run/0: product 0 is 98
mem/0: storing 98 in location 1128
run/0: instruction buffer-append/4
mem/0: location 1127 is 1060
run/0: instruction buffer-full?/0
mem/0: array size is 30
mem/0: new alloc: 1155
run/0: instruction buffer-full?/1
run/0: product 0 is 1060
mem/0: storing 1060 in location 1157
run/0: instruction buffer-full?/2
run/0: ingredient 0 is in
mem/0: location 1157 is 1060
run/0: ingredient 1 is length
run/0: address to copy is 1060
run/0: its type is 1
mem/0: location 1060 is 1
run/0: product 0 is 1
mem/0: storing 1 in location 1158
run/0: instruction buffer-full?/3
run/0: ingredient 0 is in
mem/0: location 1157 is 1060
run/0: ingredient 1 is data
run/0: address to copy is 1061
run/0: its type is 2
mem/0: location 1061 is 1062
run/0: product 0 is 1062
mem/0: storing 1062 in location 1159
run/0: instruction buffer-full?/4
mem/0: location 1159 is 1062
mem/0: storing 3 in location 1160
run/0: instruction buffer-full?/5
run/0: ingredient 0 is len
mem/0: location 1158 is 1
run/0: ingredient 1 is capacity
mem/0: location 1160 is 3
run/0: product 0 is 0
mem/0: storing 0 in location 1161
run/0: instruction buffer-full?/6
mem/0: location 1161 is 0
run/0: result 0 is 0
mem/0: storing 0 in location 1129
run/0: instruction buffer-append/5
mem/0: location 1129 is 0
run/0: ingredient 0 is 0
run/0: ingredient 1 is 
run/0: jumping to instruction 7
run/0: instruction buffer-append/8
run/0: ingredient 0 is in
mem/0: location 1127 is 1060
run/0: ingredient 1 is length
run/0: address to copy is 1060
run/0: product 0 is 1060
mem/0: storing 1060 in location 1130
run/0: instruction buffer-append/9
run/0: ingredient 0 is in
mem/0: location 1127 is 1060
run/0: ingredient 1 is data
run/0: address to copy is 1061
run/0: its type is 2
mem/0: location 1061 is 1062
run/0: product 0 is 1062
mem/0: storing 1062 in location 1131
run/0: instruction buffer-append/10
run/0: ingredient 0 is s
mem/0: location 1131 is 1062
run/0: ingredient 1 is {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]}
mem/0: location 1130 is 1060
mem/0: location 1060 is 1
run/0: address to copy is 1064
run/0: product 0 is 1064
mem/0: storing 1064 in location 1132
run/0: instruction buffer-append/11
run/0: ingredient 0 is c
mem/0: location 1128 is 98
mem/0: location 1132 is 1064
mem/0: storing 98 in location 1064
run/0: instruction buffer-append/12
run/0: ingredient 0 is len
mem/0: location 1130 is 1060
mem/0: location 1060 is 1
run/0: ingredient 1 is 1
run/0: product 0 is 2
mem/0: location 1130 is 1060
mem/0: storing 2 in location 1060
run/0: instruction buffer-append/13
mem/0: location 1127 is 1060
run/0: result 0 is 1060
mem/0: storing 1060 in location 1002
run/0: instruction test-buffer-append-works/5
mem/0: location 1002 is 1060
run/0: instruction buffer-append/0
mem/0: array size is 30
mem/0: new alloc: 1185
run/0: instruction buffer-append/1
run/0: product 0 is 1060
mem/0: storing 1060 in location 1187
run/0: instruction buffer-append/2
run/0: product 0 is 99
mem/0: storing 99 in location 1188
run/0: instruction buffer-append/4
mem/0: location 1187 is 1060
run/0: instruction buffer-full?/0
mem/0: array size is 30
mem/0: new alloc: 1215
run/0: instruction buffer-full?/1
run/0: product 0 is 1060
mem/0: storing 1060 in location 1217
run/0: instruction buffer-full?/2
run/0: ingredient 0 is in
mem/0: location 1217 is 1060
run/0: ingredient 1 is length
run/0: address to copy is 1060
run/0: its type is 1
mem/0: location 1060 is 2
run/0: product 0 is 2
mem/0: storing 2 in location 1218
run/0: instruction buffer-full?/3
run/0: ingredient 0 is in
mem/0: location 1217 is 1060
run/0: ingredient 1 is data
run/0: address to copy is 1061
run/0: its type is 2
mem/0: location 1061 is 1062
run/0: product 0 is 1062
mem/0: storing 1062 in location 1219
run/0: instruction buffer-full?/4
mem/0: location 1219 is 1062
mem/0: storing 3 in location 1220
run/0: instruction buffer-full?/5
run/0: ingredient 0 is len
mem/0: location 1218 is 2
run/0: ingredient 1 is capacity
mem/0: location 1220 is 3
run/0: product 0 is 0
mem/0: storing 0 in location 1221
run/0: instruction buffer-full?/6
mem/0: location 1221 is 0
run/0: result 0 is 0
mem/0: storing 0 in location 1189
run/0: instruction buffer-append/5
mem/0: location 1189 is 0
run/0: ingredient 0 is 0
run/0: ingredient 1 is 
run/0: jumping to instruction 7
run/0: instruction buffer-append/8
run/0: ingredient 0 is in
mem/0: location 1187 is 1060
run/0: ingredient 1 is length
run/0: address to copy is 1060
run/0: product 0 is 1060
mem/0: storing 1060 in location 1190
run/0: instruction buffer-append/9
run/0: ingredient 0 is in
mem/0: location 1187 is 1060
run/0: ingredient 1 is data
run/0: address to copy is 1061
run/0: its type is 2
mem/0: location 1061 is 1062
run/0: product 0 is 1062
mem/0: storing 1062 in location 1191
run/0: instruction buffer-append/10
run/0: ingredient 0 is s
mem/0: location 1191 is 1062
run/0: ingredient 1 is {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]}
mem/0: location 1190 is 1060
mem/0: location 1060 is 2
run/0: address to copy is 1065
run/0: product 0 is 1065
mem/0: storing 1065 in location 1192
run/0: instruction buffer-append/11
run/0: ingredient 0 is c
mem/0: location 1188 is 99
mem/0: location 1192 is 1065
mem/0: storing 99 in location 1065
run/0: instruction buffer-append/12
run/0: ingredient 0 is len
mem/0: location 1190 is 1060
mem/0: location 1060 is 2
run/0: ingredient 1 is 1
run/0: product 0 is 3
mem/0: location 1190 is 1060
mem/0: storing 3 in location 1060
run/0: instruction buffer-append/13
mem/0: location 1187 is 1060
run/0: result 0 is 1060
mem/0: storing 1060 in location 1002
run/0: instruction test-buffer-append-works/6
run/0: ingredient 0 is x
mem/0: location 1002 is 1060
run/0: ingredient 1 is data
run/0: address to copy is 1061
run/0: its type is 2
mem/0: location 1061 is 1062
run/0: product 0 is 1062
mem/0: storing 1062 in location 1004
run/0: instruction test-buffer-append-works/7
run/0: ingredient 0 is s1
mem/0: location 1003 is 1062
run/0: ingredient 1 is s2
mem/0: location 1004 is 1062
run/0: product 0 is 1
mem/0: storing 1 in location 1
run/0: instruction test-buffer-append-works/8
run/0: ingredient 0 is s2
mem/0: location 1004 is 1062
mem/0: location 1062 is 3
mem/0: location 1063 is 97
mem/0: location 1064 is 98
mem/0: location 1065 is 99
mem/0: storing 3 in location 2
mem/0: storing 97 in location 3
mem/0: storing 98 in location 4
mem/0: storing 99 in location 5
run/0: instruction test-buffer-append-works/10
mem/0: location 1002 is 1060
run/0: instruction buffer-append/0
mem/0: array size is 30
mem/0: new alloc: 1245
run/0: instruction buffer-append/1
run/0: product 0 is 1060
mem/0: storing 1060 in location 1247
run/0: instruction buffer-append/2
run/0: product 0 is 100
mem/0: storing 100 in location 1248
run/0: instruction buffer-append/4
mem/0: location 1247 is 1060
run/0: instruction buffer-full?/0
mem/0: array size is 30
mem/0: new alloc: 1275
run/0: instruction buffer-full?/1
run/0: product 0 is 1060
mem/0: storing 1060 in location 1277
run/0: instruction buffer-full?/2
run/0: ingredient 0 is in
mem/0: location 1277 is 1060
run/0: ingredient 1 is length
run/0: address to copy is 1060
run/0: its type is 1
mem/0: location 1060 is 3
run/0: product 0 is 3
mem/0: storing 3 in location 1278
run/0: instruction buffer-full?/3
run/0: ingredient 0 is in
mem/0: location 1277 is 1060
run/0: ingredient 1 is data
run/0: address to copy is 1061
run/0: its type is 2
mem/0: location 1061 is 1062
run/0: product 0 is 1062
mem/0: storing 1062 in location 1279
run/0: instruction buffer-full?/4
mem/0: location 1279 is 1062
mem/0: storing 3 in location 1280
run/0: instruction buffer-full?/5
run/0: ingredient 0 is len
mem/0: location 1278 is 3
run/0: ingredient 1 is capacity
mem/0: location 1280 is 3
run/0: product 0 is 1
mem/0: storing 1 in location 1281
run/0: instruction buffer-full?/6
mem/0: location 1281 is 1
run/0: result 0 is 1
mem/0: storing 1 in location 1249
run/0: instruction buffer-append/5
mem/0: location 1249 is 1
run/0: ingredient 0 is 1
run/0: jump-unless fell through
run/0: instruction buffer-append/6
mem/0: location 1247 is 1060
run/0: instruction grow-buffer/0
mem/0: array size is 30
mem/0: new alloc: 1305
run/0: instruction grow-buffer/1
run/0: product 0 is 1060
mem/0: storing 1060 in location 1307
run/0: instruction grow-buffer/2
run/0: ingredient 0 is in
mem/0: location 1307 is 1060
run/0: ingredient 1 is data
run/0: address to copy is 1061
run/0: product 0 is 1061
mem/0: storing 1061 in location 1308
run/0: instruction grow-buffer/3
mem/0: location 1308 is 1061
mem/0: location 1061 is 1062
mem/0: storing 3 in location 1309
run/0: instruction grow-buffer/4
run/0: ingredient 0 is oldlen
mem/0: location 1309 is 3
run/0: ingredient 1 is 2
run/0: ingredient 1 is 2
run/0: product 0 is 6
mem/0: storing 6 in location 1310
run/0: instruction grow-buffer/5
run/0: ingredient 0 is x
mem/0: location 1308 is 1061
mem/0: location 1061 is 1062
mem/0: storing 1062 in location 1311
run/0: instruction grow-buffer/6
mem/0: location 1310 is 6
mem/0: array size is 6
mem/0: new alloc: 1335
mem/0: location 1308 is 1061
mem/0: storing 1335 in location 1061
run/0: instruction grow-buffer/7
run/0: ingredient 0 is 0
mem/0: storing 0 in location 1312
run/0: instruction grow-buffer/9
run/0: ingredient 0 is i
mem/0: location 1312 is 0
run/0: ingredient 1 is oldlen
mem/0: location 1309 is 3
run/0: product 0 is 0
mem/0: storing 0 in location 1313
run/0: instruction grow-buffer/10
mem/0: location 1313 is 0
run/0: ingredient 0 is 0
run/0: jump-if fell through
run/0: instruction grow-buffer/11
run/0: ingredient 0 is {name: "olddata", value: 5, type: 2-5-4, properties: ["olddata": "address":"array":"character", "deref": ]}
mem/0: location 1311 is 1062
run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]}
mem/0: location 1312 is 0
run/0: address to copy is 1063
run/0: its type is 4
mem/0: location 1063 is 97
run/0: product 0 is 97
mem/0: storing 97 in location 1314
run/0: instruction grow-buffer/12
run/0: ingredient 0 is x
mem/0: location 1308 is 1061
mem/0: location 1061 is 1335
run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]}
mem/0: location 1312 is 0
run/0: address to copy is 1336
run/0: product 0 is 1336
mem/0: storing 1336 in location 1315
run/0: instruction grow-buffer/13
run/0: ingredient 0 is src
mem/0: location 1314 is 97
mem/0: location 1315 is 1336
mem/0: storing 97 in location 1336
run/0: instruction grow-buffer/14
run/0: ingredient 0 is i
mem/0: location 1312 is 0
run/0: ingredient 1 is 1
run/0: product 0 is 1
mem/0: storing 1 in location 1312
run/0: instruction grow-buffer/15
run/0: ingredient 0 is -7
run/0: jumping to instruction 9
run/0: instruction grow-buffer/9
run/0: ingredient 0 is i
mem/0: location 1312 is 1
run/0: ingredient 1 is oldlen
mem/0: location 1309 is 3
run/0: product 0 is 0
mem/0: storing 0 in location 1313
run/0: instruction grow-buffer/10
mem/0: location 1313 is 0
run/0: ingredient 0 is 0
run/0: jump-if fell through
run/0: instruction grow-buffer/11
run/0: ingredient 0 is {name: "olddata", value: 5, type: 2-5-4, properties: ["olddata": "address":"array":"character", "deref": ]}
mem/0: location 1311 is 1062
run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]}
mem/0: location 1312 is 1
run/0: address to copy is 1064
run/0: its type is 4
mem/0: location 1064 is 98
run/0: product 0 is 98
mem/0: storing 98 in location 1314
run/0: instruction grow-buffer/12
run/0: ingredient 0 is x
mem/0: location 1308 is 1061
mem/0: location 1061 is 1335
run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]}
mem/0: location 1312 is 1
run/0: address to copy is 1337
run/0: product 0 is 1337
mem/0: storing 1337 in location 1315
run/0: instruction grow-buffer/13
run/0: ingredient 0 is src
mem/0: location 1314 is 98
mem/0: location 1315 is 1337
mem/0: storing 98 in location 1337
run/0: instruction grow-buffer/14
run/0: ingredient 0 is i
mem/0: location 1312 is 1
run/0: ingredient 1 is 1
run/0: product 0 is 2
mem/0: storing 2 in location 1312
run/0: instruction grow-buffer/15
run/0: ingredient 0 is -7
run/0: jumping to instruction 9
run/0: instruction grow-buffer/9
run/0: ingredient 0 is i
mem/0: location 1312 is 2
run/0: ingredient 1 is oldlen
mem/0: location 1309 is 3
run/0: product 0 is 0
mem/0: storing 0 in location 1313
run/0: instruction grow-buffer/10
mem/0: location 1313 is 0
run/0: ingredient 0 is 0
run/0: jump-if fell through
run/0: instruction grow-buffer/11
run/0: ingredient 0 is {name: "olddata", value: 5, type: 2-5-4, properties: ["olddata": "address":"array":"character", "deref": ]}
mem/0: location 1311 is 1062
run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]}
mem/0: location 1312 is 2
run/0: address to copy is 1065
run/0: its type is 4
mem/0: location 1065 is 99
run/0: product 0 is 99
mem/0: storing 99 in location 1314
run/0: instruction grow-buffer/12
run/0: ingredient 0 is x
mem/0: location 1308 is 1061
mem/0: location 1061 is 1335
run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]}
mem/0: location 1312 is 2
run/0: address to copy is 1338
run/0: product 0 is 1338
mem/0: storing 1338 in location 1315
run/0: instruction grow-buffer/13
run/0: ingredient 0 is src
mem/0: location 1314 is 99
mem/0: location 1315 is 1338
mem/0: storing 99 in location 1338
run/0: instruction grow-buffer/14
run/0: ingredient 0 is i
mem/0: location 1312 is 2
run/0: ingredient 1 is 1
run/0: product 0 is 3
mem/0: storing 3 in location 1312
run/0: instruction grow-buffer/15
run/0: ingredient 0 is -7
run/0: jumping to instruction 9
run/0: instruction grow-buffer/9
run/0: ingredient 0 is i
mem/0: location 1312 is 3
run/0: ingredient 1 is oldlen
mem/0: location 1309 is 3
run/0: product 0 is 1
mem/0: storing 1 in location 1313
run/0: instruction grow-buffer/10
mem/0: location 1313 is 1
run/0: ingredient 0 is 1
run/0: ingredient 1 is 
run/0: jumping to instruction 16
run/0: instruction grow-buffer/17
mem/0: location 1307 is 1060
run/0: result 0 is 1060
mem/0: storing 1060 in location 1247
run/0: instruction buffer-append/8
run/0: ingredient 0 is in
mem/0: location 1247 is 1060
run/0: ingredient 1 is length
run/0: address to copy is 1060
run/0: product 0 is 1060
mem/0: storing 1060 in location 1250
run/0: instruction buffer-append/9
run/0: ingredient 0 is in
mem/0: location 1247 is 1060
run/0: ingredient 1 is data
run/0: address to copy is 1061
run/0: its type is 2
mem/0: location 1061 is 1335
run/0: product 0 is 1335
mem/0: storing 1335 in location 1251
run/0: instruction buffer-append/10
run/0: ingredient 0 is s
mem/0: location 1251 is 1335
run/0: ingredient 1 is {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]}
mem/0: location 1250 is 1060
mem/0: location 1060 is 3
run/0: address to copy is 1339
run/0: product 0 is 1339
mem/0: storing 1339 in location 1252
run/0: instruction buffer-append/11
run/0: ingredient 0 is c
mem/0: location 1248 is 100
mem/0: location 1252 is 1339
mem/0: storing 100 in location 1339
run/0: instruction buffer-append/12
run/0: ingredient 0 is len
mem/0: location 1250 is 1060
mem/0: location 1060 is 3
run/0: ingredient 1 is 1
run/0: product 0 is 4
mem/0: location 1250 is 1060
mem/0: storing 4 in location 1060
run/0: instruction buffer-append/13
mem/0: location 1247 is 1060
run/0: result 0 is 1060
mem/0: storing 1060 in location 1002
run/0: instruction test-buffer-append-works/11
run/0: ingredient 0 is x
mem/0: location 1002 is 1060
run/0: ingredient 1 is data
run/0: address to copy is 1061
run/0: its type is 2
mem/0: location 1061 is 1335
run/0: product 0 is 1335
mem/0: storing 1335 in location 1005
run/0: instruction test-buffer-append-works/12
run/0: ingredient 0 is s1
mem/0: location 1003 is 1062
run/0: ingredient 1 is s3
mem/0: location 1005 is 1335
run/0: product 0 is 0
mem/0: storing 0 in location 10
run/0: instruction test-buffer-append-works/13
run/0: ingredient 0 is x
mem/0: location 1002 is 1060
run/0: ingredient 1 is length
run/0: address to copy is 1060
run/0: its type is 1
mem/0: location 1060 is 4
run/0: product 0 is 4
mem/0: storing 4 in location 11
run/0: instruction test-buffer-append-works/14
run/0: ingredient 0 is s3
mem/0: location 1005 is 1335
mem/0: location 1335 is 6
mem/0: location 1336 is 97
mem/0: location 1337 is 98
mem/0: location 1338 is 99
mem/0: location 1339 is 100
mem/0: location 1340 is 0
mem/0: location 1341 is 0
mem/0: storing 6 in location 12
mem/0: storing 97 in location 13
mem/0: storing 98 in location 14
mem/0: storing 99 in location 15
mem/0: storing 100 in location 16
mem/0: storing 0 in location 17
mem/0: storing 0 in location 18