Ported keys example to new vectors

This commit is contained in:
neauoire 2021-04-05 13:00:55 -07:00
parent 4c370d96d1
commit 3f98a2a832
13 changed files with 85 additions and 95 deletions

View File

@ -28,7 +28,7 @@ else
fi
echo "Assembling.."
./bin/assembler projects/examples/dev.controller.usm bin/boot.rom
./bin/assembler projects/examples/dev.keys.usm bin/boot.rom
echo "Running.."
if [ "${2}" = '--cli' ];

View File

@ -82,10 +82,6 @@ BRK
BRK
@ERROR
BRK
@touch-trk ( -- )
,clear-notes JSR2

View File

@ -30,6 +30,3 @@ RTN
@text1 [ Welcome 20 to 20 UxnVM 0a00 ]
@text2 [ Hello 20 World 0a00 ]
@FRAME BRK
@ERROR BRK

View File

@ -13,9 +13,9 @@
|0100 ;System { vector 2 pad 6 r 2 g 2 b 2 }
|0110 ;Console { pad 8 char 1 byte 1 short 2 }
|0120 ;Screen { vector 2 width 2 height 2 pad 2 x 2 y 2 color 1 }
|0130 ;Sprite { pad 8 x 2 y 2 addr 2 color 1 }
|0140 ;Controller { p1 1 }
|0150 ;Keys { key 1 }
|0130 ;Sprite { vector 2 pad 6 x 2 y 2 addr 2 color 1 }
|0140 ;Controller { vector 2 p1 1 }
|0150 ;Keys { vector 2 key 1 }
|0160 ;Mouse { x 2 y 2 state 1 chord 1 change 1 }
|0170 ;File { pad 8 name 2 length 2 load 2 save 2 }
|0180 ;Audio { ch1adsr 2 ch2adsr 2 ch3adsr 2 ch4adsr 2 ch1vol 1 ch1pitch 1 ch2vol 1 ch2pitch 1 ch3vol 1 ch3pitch 1 ch4vol 1 ch4pitch 1 }
@ -34,13 +34,7 @@
BRK
@FRAME
~Controller.p1 ,on-ctrl-arrows JNZ2
BRK
@on-ctrl-arrows
@FRAME
#0a =slime
,default_icn =Sprite.addr
@ -81,5 +75,3 @@ BRK
@left_icn [ 3c7e ef1f 1fef 7e3c ]
@right_icn [ 3c7e f7f8 f8f7 7e3c ]
@slime_icn [ 0000 183c 3c18 0000 ]
@ERROR BRK

View File

@ -1,56 +1,60 @@
( Dev/Keys )
%RTN { JMP2r }
%8+ { #0008 ADD2 }
%8* { #0030 SFT2 }
%MOD2 { #03 AND }
;cursor { x 2 y 2 blink 1 }
;cursor { x 2 y 2 }
|0100 ;Console { pad 8 char 1 byte 1 short 2 }
|0110 ;Screen { width 2 height 2 pad 4 y 2 x 2 color 1 }
|0120 ;Sprite { pad 8 x 2 y 2 addr 2 color 1 }
|0130 ;Controller { buttons 1 }
|0140 ;Keys { key 1 }
|01F0 ;System { pad 8 r 2 g 2 b 2 }
|0200 ^RESET JMP
|0204 ,ERROR JMP2
|0208 ,FRAME JMP2
|0100 ;System { vector 2 pad 6 r 2 g 2 b 2 }
|0110 ;Console { pad 8 char 1 byte 1 short 2 }
|0120 ;Screen { vector 2 width 2 height 2 pad 2 x 2 y 2 color 1 }
|0130 ;Sprite { vector 2 pad 6 x 2 y 2 addr 2 color 1 }
|0140 ;Controller { vector 2 button 1 }
|0150 ;Keys { vector 2 key 1 }
@RESET
( program )
( theme ) #127f =System.r #34e7 =System.g #56c4 =System.b
|0200 @RESET
( theme ) #0f73 =System.r #0fe3 =System.g #0fc3 =System.b
( vectors ) ,KEY =Keys.vector
( vectors ) ,BUTTON =Controller.vector
,draw-cursor JSR2
BRK
@FRAME
( theme ) #0daf =System.r #02ff =System.g #035f =System.b
@KEY
( update cursor )
#02 =Sprite.color
,cursor_icn =Sprite.addr
~cursor.blink MOD2 #00 EQU =cursor.blink
,font #00 ~Keys.key 8* ADD2 =Sprite.addr
( draw ) #01 =Sprite.color
~Sprite.x 8+ =Sprite.x
( release ) #00 =Keys.key
,draw-cursor JSR2
~Keys #00 EQU ^$end JNZ
BRK
@BUTTON
( enter key )
~Keys #0d NEQ ^$no-return JNZ
~Controller.button #08 NEQ ^$no-return JNZ
#00 =Sprite.color
#0000 =Sprite.x
( incr ) ~Sprite.y 8+ =Sprite.y
( release ) #00 =Keys
BRK
( release ) #00 =Controller.button
,draw-cursor JSR2
$no-return
,font #00 ~Keys 8* ADD2 =Sprite.addr
( draw ) #01 =Sprite.color
( incr ) ~Sprite.x 8+ =Sprite.x
( release ) #00 =Keys
$end
BRK
@draw-cursor
,cursor_icn =Sprite.addr #02 =Sprite.color
RTN
@cursor_icn [ ffff ffff ffff ffff ]
@font ( spectrum-zx font )
@ -89,6 +93,4 @@ BRK
0008 0808 0808 0800 0030 1008 0810 3000 0000 0032 4c00 0000 3c42 99a1 a199 423c
]
@ERROR BRK
;text { body 2 }

View File

@ -16,13 +16,13 @@
|0150 ;Mouse { x 2 y 2 state 1 chord 1 }
|0170 ;Audio { ch1adsr 2 ch2adsr 2 ch3adsr 2 ch4adsr 2 ch1vol 1 ch1pitch 1 ch2vol 1 ch2pitch 1 ch3vol 1 ch3pitch 1 ch4vol 1 ch4pitch 1 }
|01F0 ;System { pad 8 r 2 g 2 b 2 }
|0200 ^RESET JMP
|0204 ,ERROR JMP2
|0208 ,FRAME JMP2
@RESET
( program )
|0200 @RESET
( theme ) #03fd =System.r #0ef3 =System.g #0bf2 =System.b
( vectors ) ,FRAME =Screen.vector
#004f =Audio.ch1adsr #33 =Audio.ch1vol

View File

@ -26,13 +26,13 @@
|0120 ;Sprite { pad 8 x 2 y 2 addr 2 color 1 }
|0150 ;Mouse { x 2 y 2 state 1 chord 1 }
|01F0 ;System { pad 8 r 2 g 2 b 2 }
|0200 ^RESET JMP
|0204 ,ERROR JMP2
|0208 ,FRAME JMP2
@RESET
( program )
|0200 @RESET
( theme ) #127f =System.r #34e7 =System.g #56c4 =System.b
( vectors ) ,FRAME =Screen.vector
#00a0 =window.w
#0050 =window.h

View File

@ -21,17 +21,12 @@
|0190 ;Time { year 2 month 1 day 1 hour 1 minute 1 second 1 dow 1 doy 2 isdst 1 get 1 }
|01F0 ;System { pad 8 r 2 g 2 b 2 }
( vectors )
|0200 ^RESET JMP
|0204 ,ERROR JMP2
|0208 ,FRAME JMP2
( program )
@RESET
|0200 @RESET
( theme ) #0ff8 =System.r #0f08 =System.g #0f08 =System.b
( vectors ) ,FRAME =Screen.vector
#1000 =Audio.ch1adsr
#66 =Audio.ch1vol

View File

@ -14,13 +14,13 @@
|0120 ;Sprite { pad 8 x 2 y 2 addr 2 color 1 }
|0150 ;Mouse { x 2 y 2 state 1 chord 1 }
|01F0 ;System { pad 8 r 2 g 2 b 2 }
|0200 ^RESET JMP
|0204 ,ERROR JMP2
|0208 ,FRAME JMP2
@RESET
( program )
|0200 @RESET
( theme ) #0f0f =System.r #0fff =System.g #0ff0 =System.b
( vectors ) ,FRAME =Screen.vector
#0020 #0030 #0060 #0060 =r1.y2 =r1.x2 =r1.y1 =r1.x1
#0058 #0050 #0090 #0080 =r2.y2 =r2.x2 =r2.y1 =r2.x1

View File

@ -10,13 +10,13 @@
|0110 ;Screen { width 2 height 2 pad 4 x 2 y 2 color 1 }
|0120 ;Sprite { pad 8 x 2 y 2 addr 2 color 1 }
|01F0 ;System { pad 8 r 2 g 2 b 2 }
|0200 ^RESET JMP
|0204 ,ERROR JMP2
|0208 ,FRAME JMP2
@RESET
( program )
|0200 @RESET
( theme ) #0f0f =System.r #0fff =System.g #0ff0 =System.b
( vectors ) ,FRAME =Screen.vector
( find screen center )
~Screen.width #0002 DIV2 =center.x

View File

@ -6,13 +6,13 @@
|0120 ;Sprite { pad 8 x 2 y 2 addr 2 color 1 }
|01F0 ;System { pad 8 r 2 g 2 b 2 }
|0200 ^RESET JMP
|0204 ,ERROR JMP2
|0208 ,FRAME JMP2
@RESET
( program )
|0200 @RESET
( theme ) #0ffc =System.r #0f0b =System.g #0f03 =System.b
( vectors ) ,FRAME =Screen.vector
#0000 #0000 #0100 #0100 #01 ,pict_large ,draw-picture JSR2
#0098 #0060 #0080 #0080 #01 ,pict_medium ,draw-picture JSR2

View File

@ -16,11 +16,10 @@
|0110 ;Screen { width 2 height 2 pad 4 x 2 y 2 color 1 }
|0120 ;Sprite { pad 8 x 2 y 2 addr 2 color 1 }
|01F0 ;System { pad 8 r 2 g 2 b 2 }
|0200 ^RESET JMP
|0204 ,ERROR JMP2
|0208 ,FRAME JMP2
@RESET
( program )
|0200 @RESET
( theme ) #13fd =System.r #1ef3 =System.g #1bf2 =System.b
@ -160,6 +159,3 @@ RTN
8f83 8383 8383 83ff fff7 fdff c0e2 f1ff
7fef bfff 07af 5fff ffff ffff ffff ffff
]
@FRAME BRK
@ERROR BRK

View File

@ -351,7 +351,7 @@ void
domouse(Uxn *u, SDL_Event *event)
{
Uint8 flag = 0x00;
Uint16 addr = devmouse->addr;
Uint16 addr = devmouse->addr + 2;
Uint16 x = clamp(event->motion.x / ZOOM - PAD * 8, 0, HOR * 8 - 1);
Uint16 y = clamp(event->motion.y / ZOOM - PAD * 8, 0, VER * 8 - 1);
u->ram.dat[addr + 0] = (x >> 8) & 0xff;
@ -381,7 +381,7 @@ void
dotext(Uxn *u, SDL_Event *event)
{
int i;
Uint16 addr = devkey->addr;
Uint16 addr = devkey->addr + 2;
if(SDL_GetModState() & KMOD_LCTRL || SDL_GetModState() & KMOD_RCTRL)
return;
for(i = 0; i < SDL_TEXTINPUTEVENT_TEXT_SIZE; ++i) {
@ -396,7 +396,7 @@ void
doctrl(Uxn *u, SDL_Event *event, int z)
{
Uint8 flag = 0x00;
Uint16 addr = devctrl->addr;
Uint16 addr = devctrl->addr + 2;
if(z && event->key.keysym.sym == SDLK_h) {
if(SDL_GetModState() & KMOD_LCTRL)
toggledebug(u);
@ -408,11 +408,11 @@ doctrl(Uxn *u, SDL_Event *event, int z)
case SDLK_LALT: flag = 0x02; break;
case SDLK_BACKSPACE:
flag = 0x04;
if(z) u->ram.dat[devkey->addr] = 0x08;
if(z) u->ram.dat[devkey->addr + 2] = 0x08;
break;
case SDLK_RETURN:
flag = 0x08;
if(z) u->ram.dat[devkey->addr] = 0x0d;
if(z) u->ram.dat[devkey->addr + 2] = 0x0d;
break;
case SDLK_UP: flag = 0x10; break;
case SDLK_DOWN: flag = 0x20; break;
@ -592,10 +592,22 @@ start(Uxn *u)
case SDL_QUIT: quit(); break;
case SDL_MOUSEBUTTONUP:
case SDL_MOUSEBUTTONDOWN:
case SDL_MOUSEMOTION: domouse(u, &event); break;
case SDL_TEXTINPUT: dotext(u, &event); break;
case SDL_KEYDOWN: doctrl(u, &event, 1); break;
case SDL_KEYUP: doctrl(u, &event, 0); break;
case SDL_MOUSEMOTION:
domouse(u, &event);
evaluxn(u, devmouse->vector);
break;
case SDL_TEXTINPUT:
dotext(u, &event);
evaluxn(u, devkey->vector);
break;
case SDL_KEYDOWN:
doctrl(u, &event, 1);
evaluxn(u, devctrl->vector);
break;
case SDL_KEYUP:
doctrl(u, &event, 0);
evaluxn(u, devctrl->vector);
break;
case SDL_WINDOWEVENT:
if(event.window.event == SDL_WINDOWEVENT_EXPOSED)
redraw(pixels, u);