| ... | ... |
@@ -46,7 +46,7 @@ Program p; |
| 46 | 46 |
|
| 47 | 47 |
char ops[][4] = {
|
| 48 | 48 |
"BRK", "NOP", "LIT", "LDR", "STR", "---", "JMP", "JSR", |
| 49 |
- "EQU", "NEQ", "GTH", "LTH", "AND", "ORA", "SHL", "SHR", |
|
| 49 |
+ "EQU", "NEQ", "GTH", "LTH", "AND", "ORA", "SHL", "SFT", |
|
| 50 | 50 |
"POP", "DUP", "SWP", "OVR", "ROT", "---", "CLN", "STH", |
| 51 | 51 |
"ADD", "SUB", "MUL", "DIV", "---", "---", "---", "XOR" |
| 52 | 52 |
}; |
| ... | ... |
@@ -20,5 +20,5 @@ cc -std=c89 -DDEBUG -Wall -Wno-unknown-pragmas -Wpedantic -Wshadow -Wextra -Werr |
| 20 | 20 |
# cc uxn.c emulator.c -std=c89 -Os -DNDEBUG -g0 -s -Wall -Wno-unknown-pragmas -L/usr/local/lib -lSDL2 -o bin/emulator |
| 21 | 21 |
|
| 22 | 22 |
# run |
| 23 |
-./bin/assembler projects/software/left.usm bin/boot.rom |
|
| 23 |
+./bin/assembler projects/software/noodle.usm bin/boot.rom |
|
| 24 | 24 |
./bin/emulator bin/boot.rom |
| ... | ... |
@@ -34,13 +34,13 @@ BRK |
| 34 | 34 |
|
| 35 | 35 |
( detect movement ) |
| 36 | 36 |
~Controller.buttons #f0 AND |
| 37 |
- DUP #04 SHR #01 AND #01 NEQ ,$no-up ROT JMP2? |
|
| 37 |
+ DUP #04 SFT #01 AND #01 NEQ ,$no-up ROT JMP2? |
|
| 38 | 38 |
( move ) ~Sprite.y -- =Sprite.y ,up_icn =Sprite.addr $no-up |
| 39 |
- DUP #05 SHR #01 AND #01 NEQ ,$no-down ROT JMP2? |
|
| 39 |
+ DUP #05 SFT #01 AND #01 NEQ ,$no-down ROT JMP2? |
|
| 40 | 40 |
( move ) ~Sprite.y ++ =Sprite.y ,down_icn =Sprite.addr $no-down |
| 41 |
- DUP #06 SHR #01 AND #01 NEQ ,$no-left ROT JMP2? |
|
| 41 |
+ DUP #06 SFT #01 AND #01 NEQ ,$no-left ROT JMP2? |
|
| 42 | 42 |
( move ) ~Sprite.x -- =Sprite.x ,left_icn =Sprite.addr $no-left |
| 43 |
- DUP #07 SHR #01 AND #01 NEQ ,$no-right ROT JMP2? |
|
| 43 |
+ DUP #07 SFT #01 AND #01 NEQ ,$no-right ROT JMP2? |
|
| 44 | 44 |
( move ) ~Sprite.x ++ =Sprite.x ,right_icn =Sprite.addr $no-right |
| 45 | 45 |
POP |
| 46 | 46 |
|
| ... | ... |
@@ -81,7 +81,7 @@ RTN |
| 81 | 81 |
$hor |
| 82 | 82 |
( get bit ) |
| 83 | 83 |
,cell0_icn #00 |
| 84 |
- ~editor.addr #00 ~pixel.y ADD2 LDR #07 ~pixel.x SUB SHR #01 AND ( get bit ) |
|
| 84 |
+ ~editor.addr #00 ~pixel.y ADD2 LDR #07 ~pixel.x SUB SFT #01 AND ( get bit ) |
|
| 85 | 85 |
#0008 MUL2 ADD2 =Sprite.addr ( add *8 ) |
| 86 | 86 |
( draw ) #08 =Sprite.color |
| 87 | 87 |
( incr ) ~Sprite.x #0008 ADD2 =Sprite.x |
| ... | ... |
@@ -19,7 +19,7 @@ |
| 19 | 19 |
%RTN? { JMP2r? }
|
| 20 | 20 |
|
| 21 | 21 |
%++ { #0001 ADD2 } %-- { #0001 SUB2 }
|
| 22 |
-%8/ { #0003 SHR2 } %8* { #0003 SHL2 }
|
|
| 22 |
+%8/ { #0003 SFT2 } %8* { #0003 SHL2 }
|
|
| 23 | 23 |
%8- { #0008 SUB2 } %8+ { #0008 ADD2 }
|
| 24 | 24 |
|
| 25 | 25 |
;lock { byte 1 }
|
| ... | ... |
@@ -78,37 +78,37 @@ BRK |
| 78 | 78 |
@no-ctrl-right |
| 79 | 79 |
( alt ) |
| 80 | 80 |
,no-alt ~Controller #0f AND #02 NEQ JMP2? |
| 81 |
- ,no-aup ~Controller #04 SHR #01 NEQ JMP2? |
|
| 81 |
+ ,no-aup ~Controller #04 SFT #01 NEQ JMP2? |
|
| 82 | 82 |
,find-wordstart JSR2 =selection.to |
| 83 | 83 |
,clamp-selection JSR2 ,redraw JSR2 ,ctrl-end JMP2 |
| 84 | 84 |
@no-aup |
| 85 |
- ,no-adown ~Controller #04 SHR #02 NEQ JMP2? |
|
| 85 |
+ ,no-adown ~Controller #04 SFT #02 NEQ JMP2? |
|
| 86 | 86 |
,find-wordend JSR2 =selection.to |
| 87 | 87 |
,clamp-selection JSR2 ,redraw JSR2 ,ctrl-end JMP2 |
| 88 | 88 |
@no-adown |
| 89 |
- ,no-aleft ~Controller #04 SHR #04 NEQ JMP2? |
|
| 89 |
+ ,no-aleft ~Controller #04 SFT #04 NEQ JMP2? |
|
| 90 | 90 |
~selection.to -- =selection.to |
| 91 | 91 |
,clamp-selection JSR2 ,redraw JSR2 ,ctrl-end JMP2 |
| 92 | 92 |
@no-aleft |
| 93 |
- ,no-aright ~Controller #04 SHR #08 NEQ JMP2? |
|
| 93 |
+ ,no-aright ~Controller #04 SFT #08 NEQ JMP2? |
|
| 94 | 94 |
~selection.to ++ =selection.to |
| 95 | 95 |
,clamp-selection JSR2 ,redraw JSR2 ,ctrl-end JMP2 |
| 96 | 96 |
@no-aright |
| 97 | 97 |
@no-alt |
| 98 | 98 |
( ctrl ) |
| 99 | 99 |
,no-ctrl ~Controller #0f AND #01 NEQ JMP2? |
| 100 |
- ,no-cup ~Controller #04 SHR #01 NEQ JMP2? |
|
| 100 |
+ ,no-cup ~Controller #04 SFT #01 NEQ JMP2? |
|
| 101 | 101 |
#0004 ,scroll-up JSR2 |
| 102 | 102 |
,redraw JSR2 ,ctrl-end JMP2 |
| 103 | 103 |
@no-cup |
| 104 |
- ,no-cdown ~Controller #04 SHR #02 NEQ JMP2? |
|
| 104 |
+ ,no-cdown ~Controller #04 SFT #02 NEQ JMP2? |
|
| 105 | 105 |
#0004 ,scroll-down JSR2 |
| 106 | 106 |
,redraw JSR2 ,ctrl-end JMP2 |
| 107 | 107 |
@no-cdown |
| 108 |
- ,no-cleft ~Controller #04 SHR #04 NEQ JMP2? |
|
| 108 |
+ ,no-cleft ~Controller #04 SFT #04 NEQ JMP2? |
|
| 109 | 109 |
,goto-linestart JSR2 ,redraw JSR2 ,ctrl-end JMP2 |
| 110 | 110 |
@no-cleft |
| 111 |
- ,no-cright ~Controller #04 SHR #08 NEQ JMP2? |
|
| 111 |
+ ,no-cright ~Controller #04 SFT #08 NEQ JMP2? |
|
| 112 | 112 |
,goto-lineend JSR2 ,redraw JSR2 ,ctrl-end JMP2 |
| 113 | 113 |
@no-cright |
| 114 | 114 |
@no-ctrl |
| ... | ... |
@@ -468,13 +468,13 @@ RTN |
| 468 | 468 |
@draw-short ( short ) |
| 469 | 469 |
|
| 470 | 470 |
=addr |
| 471 |
- ,font_hex #00 ,addr LDR #f0 AND #04 SHR #08 MUL ADD2 =Sprite.addr |
|
| 471 |
+ ,font_hex #00 ,addr LDR #f0 AND #04 SFT #08 MUL ADD2 =Sprite.addr |
|
| 472 | 472 |
( draw ) #0e =Sprite.color |
| 473 | 473 |
~Sprite.x 8+ =Sprite.x |
| 474 | 474 |
,font_hex #00 ,addr LDR #0f AND #08 MUL ADD2 =Sprite.addr |
| 475 | 475 |
( draw ) #0e =Sprite.color |
| 476 | 476 |
~Sprite.x 8+ =Sprite.x |
| 477 |
- ,font_hex #00 ,addr ++ LDR #f0 AND #04 SHR #08 MUL ADD2 =Sprite.addr |
|
| 477 |
+ ,font_hex #00 ,addr ++ LDR #f0 AND #04 SFT #08 MUL ADD2 =Sprite.addr |
|
| 478 | 478 |
( draw ) #0e =Sprite.color |
| 479 | 479 |
~Sprite.x 8+ =Sprite.x |
| 480 | 480 |
,font_hex #00 ,addr ++ LDR #0f AND #08 MUL ADD2 =Sprite.addr |
| ... | ... |
@@ -556,7 +556,7 @@ RTN |
| 556 | 556 |
#0000 =Sprite.x |
| 557 | 557 |
~scroll.y ~Sprite.y 8/ ADD2 DUP2 SWP POP =k |
| 558 | 558 |
~position.y EQU2 #0c MUL =l |
| 559 |
- ,font_hex #00 ~k #f0 AND #04 SHR #08 MUL ADD2 =Sprite.addr |
|
| 559 |
+ ,font_hex #00 ~k #f0 AND #04 SFT #08 MUL ADD2 =Sprite.addr |
|
| 560 | 560 |
#02 ~l ADD =Sprite.color |
| 561 | 561 |
#0008 =Sprite.x |
| 562 | 562 |
,font_hex #00 ~k #0f AND #08 MUL ADD2 =Sprite.addr |
| ... | ... |
@@ -8,11 +8,11 @@ |
| 8 | 8 |
|
| 9 | 9 |
%RTN { JMP2r }
|
| 10 | 10 |
%RTN? { JMP2r? }
|
| 11 |
-%STEP8 { #0003 SHR2 #0003 SHL2 }
|
|
| 11 |
+%STEP8 { #0003 SFT2 #0003 SHL2 }
|
|
| 12 | 12 |
|
| 13 | 13 |
%++ { #0001 ADD2 }
|
| 14 |
-%2/ { #0001 SHR2 } %2* { #0001 SHL2 }
|
|
| 15 |
-%8/ { #0003 SHR2 } %8* { #0003 SHL2 }
|
|
| 14 |
+%2/ { #0001 SFT2 } %2* { #0001 SHL2 }
|
|
| 15 |
+%8/ { #0003 SFT2 } %8* { #0003 SHL2 }
|
|
| 16 | 16 |
%8- { #0008 SUB2 } %8+ { #0008 ADD2 }
|
| 17 | 17 |
|
| 18 | 18 |
;bankview { x 2 y 2 mode 1 addr 2 }
|
| ... | ... |
@@ -359,7 +359,7 @@ RTN |
| 359 | 359 |
#00 =i |
| 360 | 360 |
$bytes |
| 361 | 361 |
~tileview.x #0088 ADD2 =SPRT.x |
| 362 |
- ,font_hex #00 ~tileview.addr #00 ~i ADD2 LDR #f0 AND #04 SHR #08 MUL ADD2 =SPRT.addr |
|
| 362 |
+ ,font_hex #00 ~tileview.addr #00 ~i ADD2 LDR #f0 AND #04 SFT #08 MUL ADD2 =SPRT.addr |
|
| 363 | 363 |
( draw ) #02 =SPRT.color |
| 364 | 364 |
~SPRT.x 8+ =SPRT.x |
| 365 | 365 |
,font_hex #00 ~tileview.addr #00 ~i ADD2 LDR #0f AND #08 MUL ADD2 =SPRT.addr |
| ... | ... |
@@ -404,7 +404,7 @@ RTN |
| 404 | 404 |
$hor |
| 405 | 405 |
( get bit ) |
| 406 | 406 |
,blank_icn #00 |
| 407 |
- ~tileview.addr #00 ~pt.y ADD2 LDR #07 ~pt.x SUB SHR #01 AND ( get bit ) |
|
| 407 |
+ ~tileview.addr #00 ~pt.y ADD2 LDR #07 ~pt.x SUB SFT #01 AND ( get bit ) |
|
| 408 | 408 |
8* ADD2 =SPRT.addr ( add *8 ) |
| 409 | 409 |
( draw ) #01 =SPRT.color |
| 410 | 410 |
( incr ) ~SPRT.x 8+ =SPRT.x |
| ... | ... |
@@ -445,13 +445,13 @@ RTN |
| 445 | 445 |
@draw-short ( short ) |
| 446 | 446 |
|
| 447 | 447 |
=addr |
| 448 |
- ,font_hex #00 ,addr LDR #f0 AND #04 SHR #08 MUL ADD2 =SPRT.addr |
|
| 448 |
+ ,font_hex #00 ,addr LDR #f0 AND #04 SFT #08 MUL ADD2 =SPRT.addr |
|
| 449 | 449 |
( draw ) #02 =SPRT.color |
| 450 | 450 |
~SPRT.x 8+ =SPRT.x |
| 451 | 451 |
,font_hex #00 ,addr LDR #0f AND #08 MUL ADD2 =SPRT.addr |
| 452 | 452 |
( draw ) #02 =SPRT.color |
| 453 | 453 |
~SPRT.x 8+ =SPRT.x |
| 454 |
- ,font_hex #00 ,addr ++ LDR #f0 AND #04 SHR #08 MUL ADD2 =SPRT.addr |
|
| 454 |
+ ,font_hex #00 ,addr ++ LDR #f0 AND #04 SFT #08 MUL ADD2 =SPRT.addr |
|
| 455 | 455 |
( draw ) #02 =SPRT.color |
| 456 | 456 |
~SPRT.x 8+ =SPRT.x |
| 457 | 457 |
,font_hex #00 ,addr ++ LDR #0f AND #08 MUL ADD2 =SPRT.addr |
| ... | ... |
@@ -21,8 +21,8 @@ |
| 21 | 21 |
%RTN { JMP2r }
|
| 22 | 22 |
%RTN? { JMP2r? }
|
| 23 | 23 |
%++ { #0001 ADD2 } %-- { #0001 SUB2 }
|
| 24 |
-%2/ { #0001 SHR2 }
|
|
| 25 |
-%8/ { #0003 SHR2 } %8* { #0003 SHL2 }
|
|
| 24 |
+%2/ { #0001 SFT2 }
|
|
| 25 |
+%8/ { #0003 SFT2 } %8* { #0003 SHL2 }
|
|
| 26 | 26 |
%8+ { #0008 ADD2 }
|
| 27 | 27 |
%MOD8 { #0007 AND2 }
|
| 28 | 28 |
|
| ... | ... |
@@ -149,13 +149,13 @@ BRK |
| 149 | 149 |
$no-touch |
| 150 | 150 |
|
| 151 | 151 |
~Controller.buttons #f0 AND |
| 152 |
- DUP #04 SHR #01 AND #01 NEQ ,$no-up ROT JMP2? |
|
| 152 |
+ DUP #04 SFT #01 AND #01 NEQ ,$no-up ROT JMP2? |
|
| 153 | 153 |
( move ) ~zoom.y -- =zoom.y $no-up |
| 154 |
- DUP #05 SHR #01 AND #01 NEQ ,$no-down ROT JMP2? |
|
| 154 |
+ DUP #05 SFT #01 AND #01 NEQ ,$no-down ROT JMP2? |
|
| 155 | 155 |
( move ) ~zoom.y ++ =zoom.y $no-down |
| 156 |
- DUP #06 SHR #01 AND #01 NEQ ,$no-left ROT JMP2? |
|
| 156 |
+ DUP #06 SFT #01 AND #01 NEQ ,$no-left ROT JMP2? |
|
| 157 | 157 |
( move ) ~zoom.x -- =zoom.x $no-left |
| 158 |
- DUP #07 SHR #01 AND #01 NEQ ,$no-right ROT JMP2? |
|
| 158 |
+ DUP #07 SFT #01 AND #01 NEQ ,$no-right ROT JMP2? |
|
| 159 | 159 |
( move ) ~zoom.x ++ =zoom.x $no-right |
| 160 | 160 |
#00 NEQ ,draw-canvas ROT JSR2? |
| 161 | 161 |
|
| ... | ... |
@@ -231,7 +231,7 @@ RTN |
| 231 | 231 |
#00 =px.x |
| 232 | 232 |
$hor |
| 233 | 233 |
( addr ) ,size_icn #00 ~cursor.size 8* ADD2 |
| 234 |
- ( byte ) #00 ~px.y ADD2 LDR #07 ~px.x SUB SHR #01 AND |
|
| 234 |
+ ( byte ) #00 ~px.y ADD2 LDR #07 ~px.x SUB SFT #01 AND |
|
| 235 | 235 |
#00 EQU ,$no-pixel ROT JMP2? |
| 236 | 236 |
,$no-pixel ,patternize JSR2 #00 EQU JMP2? |
| 237 | 237 |
~pt0.x #00 ~px.x ADD2 ~pt0.y #00 ~px.y ADD2 ,add-pixel JSR2 |
| ... | ... |
@@ -267,7 +267,7 @@ RTN |
| 267 | 267 |
#00 =px.x |
| 268 | 268 |
$hor |
| 269 | 269 |
( addr ) ,size_icn #00 ~cursor.size 8* ADD2 |
| 270 |
- ( byte ) #00 ~px.y ADD2 LDR #07 ~px.x SUB SHR #01 AND |
|
| 270 |
+ ( byte ) #00 ~px.y ADD2 LDR #07 ~px.x SUB SFT #01 AND |
|
| 271 | 271 |
#00 EQU ,$no-pixel ROT JMP2? |
| 272 | 272 |
,$no-pixel ,patternize JSR2 #00 EQU JMP2? |
| 273 | 273 |
~pt0.x #00 ~px.x ADD2 ~pt0.y #00 ~px.y ADD2 ,remove-pixel JSR2 |
| ... | ... |
@@ -336,7 +336,7 @@ RTN |
| 336 | 336 |
SWP POP #07 AND =px.x |
| 337 | 337 |
( get tile ) ~pt1.x 8/ ~pt1.y 8/ ~canvas.w MUL2 ADD2 8* |
| 338 | 338 |
( add addr ) ,data ADD2 |
| 339 |
- #00 ~px.y ADD2 LDR #07 ~px.x SUB SHR #01 AND |
|
| 339 |
+ #00 ~px.y ADD2 LDR #07 ~px.x SUB SFT #01 AND |
|
| 340 | 340 |
|
| 341 | 341 |
RTN |
| 342 | 342 |
|
| ... | ... |
@@ -517,14 +517,14 @@ RTN |
| 517 | 517 |
|
| 518 | 518 |
( draw width ) |
| 519 | 519 |
~Screen.width #0048 SUB2 =Sprite.x |
| 520 |
- ,font_hex ~canvas.w #f0 AND #04 SHR #08 MUL ADD2 =Sprite.addr |
|
| 520 |
+ ,font_hex ~canvas.w #f0 AND #04 SFT #08 MUL ADD2 =Sprite.addr |
|
| 521 | 521 |
( draw ) #02 =Sprite.color |
| 522 | 522 |
~Sprite.x 8+ =Sprite.x |
| 523 | 523 |
,font_hex ~canvas.w #0f AND #08 MUL ADD2 =Sprite.addr |
| 524 | 524 |
( draw ) #02 =Sprite.color |
| 525 | 525 |
~Sprite.x 8+ =Sprite.x |
| 526 | 526 |
( draw height ) |
| 527 |
- ,font_hex ~canvas.h #f0 AND #04 SHR #08 MUL ADD2 =Sprite.addr |
|
| 527 |
+ ,font_hex ~canvas.h #f0 AND #04 SFT #08 MUL ADD2 =Sprite.addr |
|
| 528 | 528 |
( draw ) #02 =Sprite.color |
| 529 | 529 |
~Sprite.x 8+ =Sprite.x |
| 530 | 530 |
,font_hex ~canvas.h #0f AND #08 MUL ADD2 =Sprite.addr |