Browse Source

Progress on removing MUL/DIV opcodes

main
neauoire 5 years ago
parent
commit
aa21593539
  1. 90
      src/main.tal

90
src/main.tal

@ -17,16 +17,25 @@
ctrl+v - paste
)
%+ { ADD } %- { SUB } %* { MUL } %/ { DIV }
%+ { ADD } %- { SUB } %* { MUL }
%< { LTH } %> { GTH } %= { EQU } %! { NEQ }
%++ { ADD2 } %-- { SUB2 } %** { MUL2 } %// { DIV2 }
%++ { ADD2 } %-- { SUB2 } %** { MUL2 }
%<< { LTH2 } %>> { GTH2 } %== { EQU2 } %!! { NEQ2 }
%DEBUG { ;print-hex JSR2 #0a .Console/write DEO }
%DEBUG2 { SWP ;print-hex JSR2 ;print-hex JSR2 #0a .Console/write DEO }
%2** { #10 SFT2 } %2// { #01 SFT2 }
%8** { #30 SFT2 } %8// { #03 SFT2 }
%2* { #10 SFT } %2/ { #01 SFT }
%4* { #20 SFT } %4/ { #02 SFT }
%8* { #30 SFT } %8/ { #03 SFT }
%20* { #50 SFT }
%2** { #10 SFT2 } %2// { #01 SFT2 }
%4// { #02 SFT2 }
%8** { #30 SFT2 } %8// { #03 SFT2 }
%10** { #40 SFT2 }
%200// { #09 SFT2 }
%TOS { #00 SWP }
%MOD { DIVk MUL SUB } %MOD2 { DIV2k MUL2 SUB2 }
@ -35,26 +44,25 @@
%ROL { DUP #07 SFT SWP #10 SFT + }
%ROR { DUP #70 SFT SWP #01 SFT + }
%SFL { #40 SFT SFT }
%LTS2 { #8000 ++ SWP2 #8000 ++ >> }
%GTS2 { #8000 ++ SWP2 #8000 ++ << }
%STEP8 { #33 SFT2 }
%TOGGLE { LDZk #00 = SWP STZ }
%GET-ITER { OVR2 NIP OVR SWP }
%BRK? { #01 JCN BRK }
%HOR { #20 } %VER { #10 }
%WIDTH { HOR TOS 8** }
%LENGTH { HOR TOS VER TOS ** #0010 ** }
%HOR { #20 } %VER { #10 }
%WIDTH { #0100 }
%LENGTH { #2000 }
%DATA-CLIP { #f000 } ( copy/paste )
%BANK { #2000 }
%BANK-TEMP { #4000 }
%GET-COLOR { .settings/color LDZ STHk #02 / + DEI #01 STHr #01 AND - #04 * SFT #0f AND }
%GET-POSITION { .settings/focus LDZ2 BANK -- DUP2 2// WIDTH MOD2 SWP2 WIDTH 2** // 8** }
%GET-COLOR { .settings/color LDZ STHk 2/ + DEI #01 STHr #01 AND - 4* SFT #0f AND }
%GET-POSITION { .settings/focus LDZ2 BANK -- DUP2 2// WIDTH MOD2 SWP2 200// 8** }
%ADD-POSITIONS { ROT2 ++ ROT2 ROT2 ++ SWP2 }
%RELEASE-MOUSE { #00 .Mouse/state DEO }
%RESET-SELECTION { .selection/x1 LDZ2 .selection/x2 STZ2 }
%GET-ADDR { TOS HOR TOS ** ROT TOS ++ #0010 ** BANK ++ }
%GET-ADDR { TOS HOR TOS ** ROT TOS ++ 10** BANK ++ }
%SET-STATE { #01 .state/changed STZ ;draw-state JSR2 }
%RESET-STATE { #00 .state/changed STZ ;draw-state JSR2 }
@ -180,7 +188,7 @@ BRK
#08 ! ,&no-toggle JCN
.state/blink TOGGLE
#01 .state/blink LDZ #08 * + ;draw-filepath JSR2
#01 .state/blink LDZ 8* + ;draw-filepath JSR2
#00 .state/timer STZ
&no-toggle
@ -223,10 +231,10 @@ BRK
.Controller/button DEI #f0 AND
DUP #04 SFT #01 AND #01 ! ,&no-up JCN
( clamp ) .settings/focus LDZ2 BANK HOR TOS #0010 ** ++ << ,&no-up JCN
( clamp ) .settings/focus LDZ2 BANK HOR TOS 10** ++ << ,&no-up JCN
( up ) .settings/focus LDZ2 #0010 HOR TOS ** -- .settings/focus STZ2 &no-up
DUP #05 SFT #01 AND #01 ! ,&no-down JCN
( clamp ) .settings/focus LDZ2 BANK LENGTH HOR TOS #0010 ** -- ++ >> ,&no-down JCN
( clamp ) .settings/focus LDZ2 BANK LENGTH HOR TOS 10** -- ++ >> ,&no-down JCN
( down ) .settings/focus LDZ2 #0010 HOR TOS ** ++ .settings/focus STZ2 &no-down
DUP #06 SFT #01 AND #01 ! ,&no-left JCN
( clamp ) .settings/focus LDZ2 BANK #0001 ++ << ,&no-left JCN
@ -509,8 +517,8 @@ BRK
&no-mod
( paint )
.Mouse/x DEI2 .zoomview/x1 LDZ2 -- #0004 //
.Mouse/y DEI2 .zoomview/y1 LDZ2 -- #0004 //
.Mouse/x DEI2 .zoomview/x1 LDZ2 -- 4//
.Mouse/y DEI2 .zoomview/y1 LDZ2 -- 4//
.settings/focus LDZ2 ++
( detect erase )
#00 .Mouse/state DEI #10 = ,&do-erase JCN
@ -533,7 +541,7 @@ BRK
( skip ) .Mouse/state DEI #00 ! BRK?
.Mouse/x DEI2 .blendview/x1 LDZ2 -- 8// NIP
.Mouse/y DEI2 .blendview/y1 LDZ2 -- 8// NIP #04 * +
.Mouse/y DEI2 .blendview/y1 LDZ2 -- 8// NIP 4* +
.settings/blending STZ
;redraw JSR2
@ -550,15 +558,15 @@ BRK
DUP #00 ! ,&no-r JCN
.System/r STHk ,&set-color JSR
STHr [ .settings/color LDZ #02 / + ] DEO
STHr [ .settings/color LDZ 2/ + ] DEO
&no-r
DUP #01 ! ,&no-g JCN
.System/g STHk ,&set-color JSR
STHr [ .settings/color LDZ #02 / + ] DEO
STHr [ .settings/color LDZ 2/ + ] DEO
&no-g
DUP #02 ! ,&no-b JCN
.System/b STHk ,&set-color JSR
STHr [ .settings/color LDZ #02 / + ] DEO
STHr [ .settings/color LDZ 2/ + ] DEO
&no-b
POP
@ -567,12 +575,12 @@ BRK
BRK
&set-color
.settings/color LDZ STHk #02 / + DEI
.settings/color LDZ STHk 2/ + DEI
STHr #02 MOD STHk
#0f SWP [ #40 * SFT ] AND
STHr #00 =
.Mouse/x DEI2 .colorview/x1 LDZ2 -- 2// NIP
( clamp to #0f ) DUP #10 = #01 * -
( clamp to #0f ) DUP #10 = -
SWP [ #40 * SFT ] +
RTN
@ -785,10 +793,10 @@ RTN
;pixel-icn .Screen/addr DEO2
VER #00
&ver
DUP #08 * TOS .tileview/y1 LDZ2 ++ .Screen/y DEO2
DUP 8* TOS .tileview/y1 LDZ2 ++ .Screen/y DEO2
HOR #00
&hor
DUP #08 * TOS .tileview/x1 LDZ2 ++ .Screen/x DEO2
DUP 8* TOS .tileview/x1 LDZ2 ++ .Screen/x DEO2
( get pixel offset ) GET-ITER SWP TOS ROT TOS
( add focus ) STH2kr SWP2r STH2kr SWP2r ADD-POSITIONS
;get-pixel JSR2 #00 + .Screen/sprite DEO
@ -799,7 +807,7 @@ RTN
POP2r POP2r
( guides )
VER #08 / #01 - #00
VER 8/ #01 - #00
&guides-hor
DUP STH
.tileview/x1 LDZ2
@ -810,7 +818,7 @@ RTN
#01 + GTHk ,&guides-hor JCN
POP2
HOR #08 / #01 - #00
HOR 8/ #01 - #00
&guides-ver
DUP STH
.tileview/x1 LDZ2 STHr #01 + #40 * #01 - TOS ++
@ -832,7 +840,7 @@ RTN
( channel 2 )
[ STHr ] [ STH2r ] #0008 ++ LDA SWP
#07 SWP - SFT #01 AND
#02 *
2*
+
RTN
@ -879,7 +887,7 @@ RTN
@get-tile-addr ( x* y* -- addr* )
STEP8 WIDTH ** #0004 // SWP2
STEP8 WIDTH ** 4// SWP2
STEP8 2** ++
BANK ++
@ -949,7 +957,7 @@ RTN
#10 #00
&loop
DUP #04 MOD #00 SWP 8** .blendview/x1 LDZ2 ++ .Screen/x DEO2
DUP #04 / #00 SWP 8** .blendview/y1 LDZ2 ++ .Screen/y DEO2
DUP 4/ #00 SWP 8** .blendview/y1 LDZ2 ++ .Screen/y DEO2
#00 .Screen/sprite DEO
DUP #00 + .settings/depth LDZ #80 * + .Screen/sprite DEO
#01 + GTHk ,&loop JCN
@ -968,10 +976,10 @@ RTN
.settings/focus LDZ2 STH2k .Screen/addr DEO2
#04 #00
&ver
DUP #08 * TOS .preview/y1 LDZ2 ++ .Screen/y DEO2
DUP 8* TOS .preview/y1 LDZ2 ++ .Screen/y DEO2
#04 #00
&hor
DUP #08 * TOS .preview/x1 LDZ2 ++ .Screen/x DEO2
DUP 8* TOS .preview/x1 LDZ2 ++ .Screen/x DEO2
( get x,y )
GET-ITER
( check if within ratio )
@ -982,7 +990,7 @@ RTN
( get blending ) .settings/blending LDZ
( get depth ) .settings/depth LDZ #80 *
( draw ) + .Screen/sprite DEO
( incr ) STH2r #0008 [ .settings/depth LDZ #08 * TOS ++ ] ++ STH2
( incr ) STH2r #0008 [ .settings/depth LDZ 8* TOS ++ ] ++ STH2
,&resume JMP
&outside
;halftone-icn .Screen/addr DEO2
@ -1024,7 +1032,7 @@ RTN
.Screen/x DEO2
#10 #00
&loop
DUP STHkr > #08 * TOS ;slider-icns ++ .Screen/addr DEO2
DUP STHkr > 8* TOS ;slider-icns ++ .Screen/addr DEO2
#02 .Screen/sprite DEO
.Screen/x DEI2 #0002 ++ .Screen/x DEO2
#01 + GTHk ,&loop JCN
@ -1044,10 +1052,10 @@ RTN
#04 #00
&loop
.dataview/x1 LDZ2 .Screen/x DEO2
DUP #08 * TOS .dataview/y1 LDZ2 ++ .Screen/y DEO2
DUP #02 * TOS .settings/focus LDZ2 ++ LDA2 #03 ;draw-short JSR2
DUP 8* TOS .dataview/y1 LDZ2 ++ .Screen/y DEO2
DUP 2* TOS .settings/focus LDZ2 ++ LDA2 #03 ;draw-short JSR2
.dataview/x1 LDZ2 #0020 ++ .Screen/x DEO2
DUP #02 * TOS .settings/focus LDZ2 ++ #0008 ++ LDA2 #03 ;draw-short JSR2
DUP 2* TOS .settings/focus LDZ2 ++ #0008 ++ LDA2 #03 ;draw-short JSR2
#01 + GTHk ,&loop JCN
POP2
@ -1058,10 +1066,10 @@ RTN
;bigpixel-icn .Screen/addr DEO2
#08 #00
&ver
DUP #04 * TOS .zoomview/y1 LDZ2 ++ .Screen/y DEO2
DUP 4* TOS .zoomview/y1 LDZ2 ++ .Screen/y DEO2
#08 #00
&hor
DUP #04 * TOS .zoomview/x1 LDZ2 ++ .Screen/x DEO2
DUP 4* TOS .zoomview/x1 LDZ2 ++ .Screen/x DEO2
( get pixel )
GET-ITER
( ch 1 )
@ -1070,7 +1078,7 @@ RTN
( ch2 )
[ STHr ] [ STH2r ] #0008 ++ LDA SWP
#07 SWP - SFT #01 AND
#02 * +
2* +
.Screen/sprite DEO
#01 + GTHk ,&hor JCN
POP2
@ -1107,7 +1115,7 @@ RTN
.Mouse/y DEI2 DUP2 .cursor/y STZ2 .Screen/y DEO2
( draw new cursor )
;tool-brush #00 .settings/tool LDZ #08 * ++ .Screen/addr DEO2
;tool-brush #00 .settings/tool LDZ 8* ++ .Screen/addr DEO2
#42 .Mouse/state DEI #00 ! + .Screen/sprite DEO
RTN
@ -1119,7 +1127,7 @@ RTN
.toolview/y1 LDZ2 .Screen/y DEO2
;path/name
&loop
LDAk DUP #00 ! #20 * - TOS 8** ;font ++ .Screen/addr DEO2
LDAk DUP #00 ! 20* - TOS 8** ;font ++ .Screen/addr DEO2
STHkr .Screen/sprite DEO
.Screen/x DEI2 #0008 ++ .Screen/x DEO2
#0001 ++

Loading…
Cancel
Save