| ... | ... |
@@ -7,6 +7,8 @@ |
| 7 | 7 |
%++ { ADD2 } %-- { SUB2 } %// { DIV2 }
|
| 8 | 8 |
%<< { LTH2 } %>> { GTH2 } %== { EQU2 } %!! { NEQ2 }
|
| 9 | 9 |
|
| 10 |
+%!~ { NEQk NIP }
|
|
| 11 |
+ |
|
| 10 | 12 |
%2* { #10 SFT }
|
| 11 | 13 |
%4* { #20 SFT } %4/ { #02 SFT }
|
| 12 | 14 |
%8* { #30 SFT } %8/ { #03 SFT }
|
| ... | ... |
@@ -83,39 +85,31 @@ |
| 83 | 85 |
#0110 .Audio0/adsr DEO2 |
| 84 | 86 |
;sin-pcm .Audio0/addr DEO2 |
| 85 | 87 |
#0100 .Audio0/length DEO2 |
| 86 |
- #dd .Audio0/volume DEO ( TODO: turn ON ) |
|
| 88 |
+ #dd .Audio0/volume DEO |
|
| 87 | 89 |
|
| 88 | 90 |
( center ) |
| 89 | 91 |
.Screen/width DEI2 2// .center/x STZ2 |
| 90 | 92 |
.Screen/height DEI2 2// .center/y STZ2 |
| 91 | 93 |
|
| 92 | 94 |
.center/x LDZ2 #0020 -- |
| 93 |
- DUP2 .keypad-frame/x STZ2 |
|
| 94 |
- #0040 ++ .keypad-frame/x2 STZ2 |
|
| 95 |
+ DUP2 .keypad-frame/x STZ2 #0040 ++ .keypad-frame/x2 STZ2 |
|
| 95 | 96 |
.center/y LDZ2 #0018 -- |
| 96 |
- DUP2 .keypad-frame/y STZ2 |
|
| 97 |
- #003f ++ .keypad-frame/y2 STZ2 |
|
| 97 |
+ DUP2 .keypad-frame/y STZ2 #003f ++ .keypad-frame/y2 STZ2 |
|
| 98 | 98 |
|
| 99 | 99 |
.keypad-frame/x LDZ2 |
| 100 |
- DUP2 .modpad-frame/x STZ2 |
|
| 101 |
- #0040 ++ .modpad-frame/x2 STZ2 |
|
| 100 |
+ DUP2 .modpad-frame/x STZ2 #0040 ++ .modpad-frame/x2 STZ2 |
|
| 102 | 101 |
.keypad-frame/y LDZ2 #0040 ++ |
| 103 |
- DUP2 .modpad-frame/y STZ2 |
|
| 104 |
- #001f ++ .modpad-frame/y2 STZ2 |
|
| 102 |
+ DUP2 .modpad-frame/y STZ2 #001f ++ .modpad-frame/y2 STZ2 |
|
| 105 | 103 |
|
| 106 | 104 |
.keypad-frame/x LDZ2 |
| 107 |
- DUP2 .bitpad-frame/x STZ2 |
|
| 108 |
- #0040 ++ .bitpad-frame/x2 STZ2 |
|
| 105 |
+ DUP2 .bitpad-frame/x STZ2 #0040 ++ .bitpad-frame/x2 STZ2 |
|
| 109 | 106 |
.modpad-frame/y2 LDZ2 #0008 ++ |
| 110 |
- DUP2 .bitpad-frame/y STZ2 |
|
| 111 |
- #000f ++ .bitpad-frame/y2 STZ2 |
|
| 107 |
+ DUP2 .bitpad-frame/y STZ2 #000f ++ .bitpad-frame/y2 STZ2 |
|
| 112 | 108 |
|
| 113 | 109 |
.center/x LDZ2 #0020 -- |
| 114 |
- DUP2 .input-frame/x STZ2 |
|
| 115 |
- #0040 ++ .input-frame/x2 STZ2 |
|
| 110 |
+ DUP2 .input-frame/x STZ2 #0040 ++ .input-frame/x2 STZ2 |
|
| 116 | 111 |
.center/y LDZ2 #002a -- |
| 117 |
- DUP2 .input-frame/y STZ2 |
|
| 118 |
- #0010 ++ .input-frame/y2 STZ2 |
|
| 112 |
+ DUP2 .input-frame/y STZ2 #0010 ++ .input-frame/y2 STZ2 |
|
| 119 | 113 |
|
| 120 | 114 |
( theme support ) |
| 121 | 115 |
;load-theme JSR2 |
| ... | ... |
@@ -124,40 +118,26 @@ BRK |
| 124 | 118 |
|
| 125 | 119 |
@on-button ( -> ) |
| 126 | 120 |
|
| 127 |
- .Controller/key DEI #00 ! ,&continue JCN |
|
| 128 |
- ;redraw JSR2 BRK |
|
| 129 |
- &continue |
|
| 130 |
- |
|
| 131 | 121 |
.Controller/key DEI |
| 132 |
- DUP #0d ! ,&no-enter JCN |
|
| 133 |
- ;do-push JSR2 POP BRK |
|
| 134 |
- &no-enter |
|
| 135 |
- ( arithmetic ) |
|
| 136 |
- DUP LIT '+ ! ,&no-add JCN |
|
| 137 |
- ;do-add JSR2 POP BRK &no-add |
|
| 138 |
- DUP LIT '- ! ,&no-sub JCN |
|
| 139 |
- ;do-sub JSR2 POP BRK &no-sub |
|
| 140 |
- DUP LIT '* ! ,&no-mul JCN |
|
| 141 |
- ;do-mul JSR2 POP BRK &no-mul |
|
| 142 |
- DUP LIT '/ ! ,&no-div JCN |
|
| 143 |
- ;do-div JSR2 POP BRK &no-div |
|
| 144 |
- ( bitwise ) |
|
| 145 |
- DUP LIT '& ! ,&no-and JCN |
|
| 146 |
- ;do-and JSR2 POP BRK &no-and |
|
| 147 |
- DUP LIT '| ! ,&no-ora JCN |
|
| 148 |
- ;do-ora JSR2 POP BRK &no-ora |
|
| 149 |
- DUP LIT '^ ! ,&no-eor JCN |
|
| 150 |
- ;do-eor JSR2 POP BRK &no-eor |
|
| 151 |
- DUP LIT '~ ! ,&no-not JCN |
|
| 152 |
- ;do-not JSR2 POP BRK &no-not |
|
| 153 |
- ( clear ) |
|
| 154 |
- DUP #1b ! ,&no-esc JCN |
|
| 155 |
- ;do-pop JSR2 POP BRK &no-esc |
|
| 156 |
- DUP #08 ! ,&no-backspace JCN |
|
| 122 |
+ ( generics ) |
|
| 123 |
+ #00 !~ ,&no-release JCN ;redraw JSR2 POP BRK &no-release |
|
| 124 |
+ #0d !~ ,&no-enter JCN ;do-push JSR2 POP BRK &no-enter |
|
| 125 |
+ #1b !~ ,&no-esc JCN ;do-pop JSR2 POP BRK &no-esc |
|
| 126 |
+ #08 !~ ,&no-backspace JCN |
|
| 157 | 127 |
.input/value LDZ2 #04 SFT2 .input/value STZ2 |
| 158 |
- #ff ;draw-input JSR2 |
|
| 159 |
- POP BRK |
|
| 128 |
+ #ff ;draw-input JSR2 POP BRK |
|
| 160 | 129 |
&no-backspace |
| 130 |
+ ( arithmetic ) |
|
| 131 |
+ LIT '+ !~ ,&no-add JCN ;do-add JSR2 POP BRK &no-add |
|
| 132 |
+ LIT '- !~ ,&no-sub JCN ;do-sub JSR2 POP BRK &no-sub |
|
| 133 |
+ LIT '* !~ ,&no-mul JCN ;do-mul JSR2 POP BRK &no-mul |
|
| 134 |
+ LIT '/ !~ ,&no-div JCN ;do-div JSR2 POP BRK &no-div |
|
| 135 |
+ ( bitwise ) |
|
| 136 |
+ LIT '& !~ ,&no-and JCN ;do-and JSR2 POP BRK &no-and |
|
| 137 |
+ LIT '| !~ ,&no-ora JCN ;do-ora JSR2 POP BRK &no-ora |
|
| 138 |
+ LIT '^ !~ ,&no-eor JCN ;do-eor JSR2 POP BRK &no-eor |
|
| 139 |
+ LIT '~ !~ ,&no-not JCN ;do-not JSR2 POP BRK &no-not |
|
| 140 |
+ ( value ) |
|
| 161 | 141 |
;key-value JSR2 ;push-input JSR2 |
| 162 | 142 |
|
| 163 | 143 |
BRK |
| ... | ... |
@@ -182,14 +162,10 @@ BRK |
| 182 | 162 |
.Mouse/state DEI .pointer/last STZ |
| 183 | 163 |
POP2 |
| 184 | 164 |
.Mouse/x DEI2 .Mouse/y DEI2 |
| 185 |
- OVR2 OVR2 .keypad-frame |
|
| 186 |
- ;within-rect JSR2 ;click-keypad JCN2 |
|
| 187 |
- OVR2 OVR2 .input-frame |
|
| 188 |
- ;within-rect JSR2 ;click-input JCN2 |
|
| 189 |
- OVR2 OVR2 .modpad-frame |
|
| 190 |
- ;within-rect JSR2 ;click-modpad JCN2 |
|
| 191 |
- OVR2 OVR2 .bitpad-frame |
|
| 192 |
- ;within-rect JSR2 ;click-bitpad JCN2 |
|
| 165 |
+ OVR2 OVR2 .keypad-frame ;within-rect JSR2 ;click-keypad JCN2 |
|
| 166 |
+ OVR2 OVR2 .input-frame ;within-rect JSR2 ;click-input JCN2 |
|
| 167 |
+ OVR2 OVR2 .modpad-frame ;within-rect JSR2 ;click-modpad JCN2 |
|
| 168 |
+ OVR2 OVR2 .bitpad-frame ;within-rect JSR2 ;click-bitpad JCN2 |
|
| 193 | 169 |
POP2 POP2 |
| 194 | 170 |
BRK |
| 195 | 171 |
&no-down |
| ... | ... |
@@ -217,17 +193,7 @@ BRK |
| 217 | 193 |
|
| 218 | 194 |
( y ) .modpad-frame/y LDZ2 -- #24 SFT2 NIP STH |
| 219 | 195 |
( x ) .modpad-frame/x LDZ2 -- 10// |
| 220 |
- ( value ) NIP STHr + |
|
| 221 |
- DUP #00 ! ,&no-add JCN ;do-add JSR2 &no-add |
|
| 222 |
- DUP #01 ! ,&no-sub JCN ;do-sub JSR2 &no-sub |
|
| 223 |
- DUP #02 ! ,&no-mul JCN ;do-mul JSR2 &no-mul |
|
| 224 |
- DUP #03 ! ,&no-div JCN ;do-div JSR2 &no-div |
|
| 225 |
- DUP #04 ! ,&no-and JCN ;do-and JSR2 &no-and |
|
| 226 |
- DUP #05 ! ,&no-ora JCN ;do-ora JSR2 &no-ora |
|
| 227 |
- DUP #06 ! ,&no-eor JCN ;do-eor JSR2 &no-eor |
|
| 228 |
- DUP #07 ! ,&no-not JCN ;do-not JSR2 &no-not |
|
| 229 |
- POP |
|
| 230 |
- |
|
| 196 |
+ ( lookup ) STHr + 2** ;keypad/ops ++ LDA2 JSR2 |
|
| 231 | 197 |
;draw-bitpad JSR2 |
| 232 | 198 |
RELEASE-MOUSE |
| 233 | 199 |
|
| ... | ... |
@@ -595,25 +561,16 @@ RTN |
| 595 | 561 |
|
| 596 | 562 |
#10 #00 |
| 597 | 563 |
&loop |
| 598 |
- ( state ) DUP #0f SWP - .input/value LDZ2 ROT SFT2 2MOD2 NIP STH |
|
| 599 |
- ( y ) DUP 8/ TOS 8** .bitpad-frame/y LDZ2 ++ STH2 |
|
| 600 |
- ( x ) DUP 8MOD TOS 8** .bitpad-frame/x LDZ2 ++ |
|
| 601 |
- STH2r STHr #01 ,draw-bit JSR |
|
| 564 |
+ ( y ) DUP 8/ TOS 8** .bitpad-frame/y LDZ2 ++ .Screen/y DEO2 |
|
| 565 |
+ ( x ) DUP 8MOD TOS 8** .bitpad-frame/x LDZ2 ++ .Screen/x DEO2 |
|
| 566 |
+ ( state ) DUP #0f SWP - .input/value LDZ2 ROT SFT2 2MOD2 |
|
| 567 |
+ ( addr ) 8** ;bit-icns ++ .Screen/addr DEO2 |
|
| 568 |
+ #01 .Screen/sprite DEO |
|
| 602 | 569 |
INC GTHk ,&loop JCN |
| 603 | 570 |
POP2 |
| 604 | 571 |
|
| 605 | 572 |
RTN |
| 606 | 573 |
|
| 607 |
-@draw-bit ( x* y* state color -- ) |
|
| 608 |
- |
|
| 609 |
- STH |
|
| 610 |
- ( addr ) 8* TOS ;bit-icns ++ .Screen/addr DEO2 |
|
| 611 |
- ( y ) .Screen/y DEO2 |
|
| 612 |
- ( x ) .Screen/x DEO2 |
|
| 613 |
- STHr .Screen/sprite DEO |
|
| 614 |
- |
|
| 615 |
-RTN |
|
| 616 |
- |
|
| 617 | 574 |
@draw-key ( x* y* glyph* state color -- ) |
| 618 | 575 |
|
| 619 | 576 |
( auto x addr ) #05 .Screen/auto DEO |
| ... | ... |
@@ -628,8 +585,7 @@ RTN |
| 628 | 585 |
,&color LDR .Screen/sprite DEO |
| 629 | 586 |
.Screen/x DEI2 #0010 -- .Screen/x DEO2 |
| 630 | 587 |
.Screen/y DEI2 #0008 ++ .Screen/y DEO2 |
| 631 |
- ,&color LDR .Screen/sprite DEO |
|
| 632 |
- ,&color LDR .Screen/sprite DEO |
|
| 588 |
+ ,&color LDR .Screen/sprite DEOk DEO |
|
| 633 | 589 |
( glyph ) |
| 634 | 590 |
,&glyph LDR2 .Screen/addr DEO2 |
| 635 | 591 |
.Screen/x DEI2 #000c -- .Screen/x DEO2 |
| ... | ... |
@@ -650,8 +606,7 @@ RTN |
| 650 | 606 |
( y ) .Screen/y DEO2 |
| 651 | 607 |
( x ) .Screen/x DEO2 |
| 652 | 608 |
( draw background ) |
| 653 |
- ,&color LDR .Screen/sprite DEO |
|
| 654 |
- ,&color LDR .Screen/sprite DEO |
|
| 609 |
+ ,&color LDR .Screen/sprite DEOk DEO |
|
| 655 | 610 |
( glyph ) |
| 656 | 611 |
,&glyph LDR2 .Screen/addr DEO2 |
| 657 | 612 |
.Screen/y DEI2 #000c -- .Screen/y DEO2 |
| ... | ... |
@@ -742,6 +697,9 @@ RTN |
| 742 | 697 |
0101 0102 |
| 743 | 698 |
0101 0102 |
| 744 | 699 |
0102 0202 |
| 700 |
+ &ops |
|
| 701 |
+ :do-add :do-sub :do-mul :do-div |
|
| 702 |
+ :do-and :do-ora :do-eor :do-not |
|
| 745 | 703 |
|
| 746 | 704 |
@sin-pcm |
| 747 | 705 |
8083 8689 8c8f 9295 989b 9ea1 a4a7 aaad |
| ... | ... |
@@ -783,29 +741,29 @@ RTN |
| 783 | 741 |
0000 0060 920c 0000 |
| 784 | 742 |
|
| 785 | 743 |
@button-icns |
| 786 |
- &outline |
|
| 744 |
+ ( outline ) |
|
| 787 | 745 |
3f40 8080 8080 8080 |
| 788 | 746 |
f804 0202 0202 0202 |
| 789 | 747 |
8080 8080 8040 3f00 |
| 790 | 748 |
0202 0202 0204 f800 |
| 791 |
- &full |
|
| 749 |
+ ( full ) |
|
| 792 | 750 |
3f7f ffff ffff ffff |
| 793 | 751 |
f8fc fefe fefe fefe |
| 794 | 752 |
ffff ffff ff7f 3f00 |
| 795 | 753 |
fefe fefe fefc f800 |
| 796 | 754 |
|
| 797 | 755 |
@button-thin-icns |
| 798 |
- &outline |
|
| 756 |
+ ( outline ) |
|
| 799 | 757 |
3844 8282 8282 8282 |
| 800 | 758 |
8282 8282 8244 3800 |
| 801 |
- &full |
|
| 759 |
+ ( full ) |
|
| 802 | 760 |
387c fefe fefe fefe |
| 803 | 761 |
fefe fefe fe7c 3800 |
| 804 | 762 |
|
| 805 | 763 |
@bit-icns |
| 806 |
- &outline |
|
| 764 |
+ ( outline ) |
|
| 807 | 765 |
3844 8282 8244 3800 |
| 808 |
- &full |
|
| 766 |
+ ( full ) |
|
| 809 | 767 |
387c fefe fe7c 3800 |
| 810 | 768 |
|
| 811 | 769 |
@stack-icns |