... | ... |
@@ -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 |