mirror of
https://git.sr.ht/~rabbits/uxn
synced 2024-11-16 03:05:06 +00:00
Progress on Orca
This commit is contained in:
parent
09571b1084
commit
d6e707fd11
1 changed files with 124 additions and 8 deletions
|
@ -1,13 +1,28 @@
|
||||||
( Orca )
|
( Orca
|
||||||
|
|
||||||
|
TODO
|
||||||
|
- Clamp selection to grid
|
||||||
|
- Chorded copy/paste
|
||||||
|
- Locking ports
|
||||||
|
- Detect capitalization
|
||||||
|
- Fill grid with . characters on start
|
||||||
|
- Display guides
|
||||||
|
- Draw Frame number in UI
|
||||||
|
- Comments
|
||||||
|
- Load/Save
|
||||||
|
- Copy/Paste
|
||||||
|
)
|
||||||
|
|
||||||
%RTN { JMP2r }
|
%RTN { JMP2r }
|
||||||
%8* { #0008 MUL2 } %8/ { #0008 DIV2 }
|
%8* { #0008 MUL2 } %8/ { #0008 DIV2 }
|
||||||
|
%MOD { DUP2 DIV MUL SUB }
|
||||||
|
|
||||||
( variables )
|
( variables )
|
||||||
|
|
||||||
;timer { byte 1 frame 1 }
|
;timer { byte 1 frame 1 }
|
||||||
;grid { width 1 height 1 }
|
;grid { width 1 height 1 }
|
||||||
;selection { x1 1 y1 1 x2 1 y2 1 }
|
;selection { x1 1 y1 1 x2 1 y2 1 }
|
||||||
|
;cursor { x 2 y 2 }
|
||||||
|
|
||||||
( devices )
|
( devices )
|
||||||
|
|
||||||
|
@ -17,18 +32,23 @@
|
||||||
|0130 ;Sprite { vector 2 pad 6 x 2 y 2 addr 2 color 1 }
|
|0130 ;Sprite { vector 2 pad 6 x 2 y 2 addr 2 color 1 }
|
||||||
|0140 ;Controller { vector 2 button 1 }
|
|0140 ;Controller { vector 2 button 1 }
|
||||||
|0150 ;Keys { vector 2 key 1 }
|
|0150 ;Keys { vector 2 key 1 }
|
||||||
|
|0160 ;Mouse { vector 2 x 2 y 2 state 1 chord 1 }
|
||||||
|
|
||||||
|0200
|
|0200
|
||||||
|
|
||||||
( theme ) #0faf =System.r #0fff =System.g #0f5f =System.b
|
( theme ) #0faf =System.r #0fff =System.g #0f5f =System.b
|
||||||
( vectors ) ,on-button =Controller.vector
|
( vectors ) ,on-button =Controller.vector
|
||||||
( vectors ) ,on-key =Keys.vector
|
( vectors ) ,on-key =Keys.vector
|
||||||
|
( vectors ) ,on-mouse =Mouse.vector
|
||||||
( vectors ) ,on-frame =Screen.vector
|
( vectors ) ,on-frame =Screen.vector
|
||||||
|
|
||||||
( find size )
|
( find size )
|
||||||
~Screen.width 8/ SWP POP =grid.width
|
~Screen.width 8/ SWP POP =grid.width
|
||||||
~Screen.height 8/ SWP POP =grid.height
|
~Screen.height 8/ SWP POP =grid.height
|
||||||
|
|
||||||
|
( fill grid with dots )
|
||||||
|
|
||||||
|
,start JSR2
|
||||||
,redraw JSR2
|
,redraw JSR2
|
||||||
|
|
||||||
BRK
|
BRK
|
||||||
|
@ -75,10 +95,59 @@ BRK
|
||||||
~selection.x1 #01 ADD =selection.x1
|
~selection.x1 #01 ADD =selection.x1
|
||||||
~selection.x2 #01 ADD =selection.x2 $no-right
|
~selection.x2 #01 ADD =selection.x2 $no-right
|
||||||
POP
|
POP
|
||||||
|
|
||||||
|
~Controller.button #04 NEQ ^$no-backspace JNZ
|
||||||
|
~Controller.button =Console.byte
|
||||||
|
~selection.x1 ~selection.y1 #2e ,put-char JSR2 ( put . char )
|
||||||
|
$no-backspace
|
||||||
|
|
||||||
,redraw JSR2
|
,redraw JSR2
|
||||||
|
|
||||||
BRK
|
BRK
|
||||||
|
|
||||||
|
@on-mouse
|
||||||
|
|
||||||
|
~Mouse.state #00 EQU ^$no-touch JNZ
|
||||||
|
~Mouse.x 8/ SWP POP =selection.x1
|
||||||
|
~Mouse.y 8/ SWP POP =selection.y1
|
||||||
|
,redraw JSR2
|
||||||
|
$no-touch
|
||||||
|
|
||||||
|
( clear last cursor )
|
||||||
|
~cursor.x =Sprite.x
|
||||||
|
~cursor.y =Sprite.y
|
||||||
|
,blank_icn =Sprite.addr
|
||||||
|
#10 =Sprite.color
|
||||||
|
|
||||||
|
( record cursor positions )
|
||||||
|
~Mouse.x =cursor.x
|
||||||
|
~Mouse.y =cursor.y
|
||||||
|
|
||||||
|
( draw new cursor )
|
||||||
|
~cursor.x =Sprite.x
|
||||||
|
~cursor.y =Sprite.y
|
||||||
|
,cursor_icn =Sprite.addr
|
||||||
|
#12 ~Mouse.state #01 EQU ADD =Sprite.color
|
||||||
|
|
||||||
|
BRK
|
||||||
|
|
||||||
|
@start ( -- )
|
||||||
|
|
||||||
|
#00 ~grid.height
|
||||||
|
$ver
|
||||||
|
#00 ~grid.width
|
||||||
|
$hor
|
||||||
|
( get x,y ) SWP2 OVR STH SWP2 OVR STHr
|
||||||
|
#2e ,put-char JSR2
|
||||||
|
( incr ) SWP #01 ADD SWP
|
||||||
|
DUP2 LTH ^$hor JNZ
|
||||||
|
POP2
|
||||||
|
( incr ) SWP #01 ADD SWP
|
||||||
|
DUP2 LTH ^$ver JNZ
|
||||||
|
POP2
|
||||||
|
|
||||||
|
RTN
|
||||||
|
|
||||||
@is-selected ( x y -- flag )
|
@is-selected ( x y -- flag )
|
||||||
|
|
||||||
~selection.x1 ~selection.y1 EQU2
|
~selection.x1 ~selection.y1 EQU2
|
||||||
|
@ -103,9 +172,21 @@ RTN
|
||||||
|
|
||||||
RTN
|
RTN
|
||||||
|
|
||||||
|
@get-char-value ( char -- value )
|
||||||
|
|
||||||
|
#00 SWP ,values ADD2 PEK2
|
||||||
|
|
||||||
|
RTN
|
||||||
|
|
||||||
|
@get-value-char ( value -- char )
|
||||||
|
|
||||||
|
#00 SWP ,b36clc ADD2 PEK2
|
||||||
|
|
||||||
|
RTN
|
||||||
|
|
||||||
@get-value ( x y -- value )
|
@get-value ( x y -- value )
|
||||||
|
|
||||||
POP2 #01
|
,get-char JSR2 #20 SUB ,get-char-value JSR2
|
||||||
|
|
||||||
RTN
|
RTN
|
||||||
|
|
||||||
|
@ -118,11 +199,12 @@ RTN
|
||||||
@op-a ( x y char -- )
|
@op-a ( x y char -- )
|
||||||
|
|
||||||
POP
|
POP
|
||||||
|
|
||||||
( get left ) DUP2 SWP #01 SUB SWP ,get-value JSR2 STH
|
( get left ) DUP2 SWP #01 SUB SWP ,get-value JSR2 STH
|
||||||
( get right ) DUP2 SWP #01 ADD SWP ,get-value JSR2 STH
|
( get right ) DUP2 SWP #01 ADD SWP ,get-value JSR2 STH
|
||||||
|
( incr y ) #01 ADD
|
||||||
#01 ADD ADDr STHr ( remove this extra addition -> ) #30 ADD ,put-char JSR2
|
( get result ) ADDr STHr
|
||||||
|
,get-value-char JSR2
|
||||||
|
,put-char JSR2
|
||||||
|
|
||||||
RTN
|
RTN
|
||||||
|
|
||||||
|
@ -136,7 +218,7 @@ RTN
|
||||||
|
|
||||||
POP
|
POP
|
||||||
#01 ADD
|
#01 ADD
|
||||||
#30 ~timer.frame ADD ,put-char JSR2
|
#30 ~timer.frame #08 MOD ADD ,put-char JSR2
|
||||||
|
|
||||||
RTN
|
RTN
|
||||||
|
|
||||||
|
@ -165,7 +247,6 @@ RTN
|
||||||
( incr ) SWP #01 ADD SWP
|
( incr ) SWP #01 ADD SWP
|
||||||
DUP2 LTH ^$ver JNZ
|
DUP2 LTH ^$ver JNZ
|
||||||
POP2
|
POP2
|
||||||
|
|
||||||
,redraw JSR2
|
,redraw JSR2
|
||||||
|
|
||||||
RTN
|
RTN
|
||||||
|
@ -190,7 +271,42 @@ RTN
|
||||||
|
|
||||||
RTN
|
RTN
|
||||||
|
|
||||||
@blank_icn [ ffff ffff ffff ffff ]
|
( char to b36 )
|
||||||
|
|
||||||
|
@values [
|
||||||
|
|
||||||
|
00 00 00 00 00 00 00 00
|
||||||
|
00 00 00 00 00 00 00 00
|
||||||
|
|
||||||
|
00 01 02 03 04 05 06 07
|
||||||
|
08 09 00 00 00 00 00 00
|
||||||
|
|
||||||
|
00 0a 0b 0c 0d 0e 0f 10
|
||||||
|
11 12 13 14 15 16 17 18
|
||||||
|
19 1a 1b 1c 1d 1e 1f 20
|
||||||
|
21 22 23 00 00 00 00 00
|
||||||
|
|
||||||
|
00 0a 0b 0c 0d 0e 0f 10
|
||||||
|
11 12 13 14 15 16 17 18
|
||||||
|
19 1a 1b 1c 1d 1e 1f 20
|
||||||
|
21 22 23 00 00 00 00 00
|
||||||
|
|
||||||
|
]
|
||||||
|
|
||||||
|
( b36 to char-lc )
|
||||||
|
|
||||||
|
@b36clc [
|
||||||
|
|
||||||
|
30 31 32 33 34 35 36 37
|
||||||
|
38 39 61 62 63 64 65 66
|
||||||
|
67 68 69 6a 6b 6c 6d 6e
|
||||||
|
6f 70 71 72 73 74 75 76
|
||||||
|
77 78 79 7a
|
||||||
|
|
||||||
|
]
|
||||||
|
|
||||||
|
@cursor_icn [ 80c0 e0f0 f8e0 1000 ]
|
||||||
|
@blank_icn [ 0000 0000 0000 0000 ]
|
||||||
|
|
||||||
@font ( specter8-frag font )
|
@font ( specter8-frag font )
|
||||||
[
|
[
|
||||||
|
|
Loading…
Reference in a new issue