mirror of
https://git.sr.ht/~rabbits/uxn
synced 2024-11-29 09:13:01 +00:00
Started implementing 2-bit mode in nasu
This commit is contained in:
parent
59f362f441
commit
2e496e8d55
6 changed files with 99 additions and 98 deletions
2
build.sh
2
build.sh
|
@ -32,7 +32,7 @@ else
|
|||
fi
|
||||
|
||||
echo "Assembling.."
|
||||
./bin/assembler projects/examples/gui.picture.usm bin/boot.rom
|
||||
./bin/assembler projects/software/nasu.usm bin/boot.rom
|
||||
|
||||
echo "Running.."
|
||||
if [ "${2}" = '--cli' ];
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
( load ) ,icn1_path =File.name #1800 =File.length ,image =File.load
|
||||
( draw ) #0008 #0008 #0100 #00c0 #27 ,image ,draw-icn JSR2
|
||||
|
||||
( load ) ,icn2_path =File.name #1800 =File.length ,image =File.load
|
||||
( load ) ,icn2_path =File.name #0800 =File.length ,image =File.load
|
||||
( draw ) #0010 #0078 #0080 #0080 #27 ,image ,draw-icn JSR2
|
||||
|
||||
( load ) ,chr1_path =File.name #4000 =File.length ,image =File.load
|
||||
|
|
|
@ -71,7 +71,7 @@ RTN
|
|||
( draw ) ~rect.x1 =Screen.x ~color DUP =Screen.color
|
||||
( draw ) ~rect.x2 =Screen.x =Screen.color
|
||||
( incr ) SWP2 ++ SWP2
|
||||
OVR2 OVR2 LTH2 ^$ver JNZ
|
||||
OVR2 OVR2 LTS2 ^$ver JNZ
|
||||
POP2 POP2
|
||||
~rect.x1 ~rect.x2
|
||||
$hor
|
||||
|
@ -79,7 +79,7 @@ RTN
|
|||
( draw ) ~rect.y1 =Screen.y ~color DUP =Screen.color
|
||||
( draw ) ~rect.y2 =Screen.y =Screen.color
|
||||
( incr ) SWP2 ++ SWP2
|
||||
OVR2 OVR2 ++ LTH2 ^$hor JNZ
|
||||
OVR2 OVR2 ++ LTS2 ^$hor JNZ
|
||||
POP2 POP2
|
||||
|
||||
RTN
|
||||
|
@ -95,10 +95,10 @@ RTN
|
|||
( save ) OVR2 =Screen.x
|
||||
( draw ) ~color =Screen.color
|
||||
( incr ) SWP2 ++ SWP2
|
||||
OVR2 OVR2 LTH2 ^$hor JNZ
|
||||
OVR2 OVR2 LTS2 ^$hor JNZ
|
||||
POP2 POP2 STH2r STH2r
|
||||
( incr ) SWP2 ++ SWP2
|
||||
OVR2 OVR2 LTH2 ^$ver JNZ
|
||||
OVR2 OVR2 LTS2 ^$ver JNZ
|
||||
POP2 POP2 POP2 POP2
|
||||
|
||||
RTN
|
||||
|
|
BIN
projects/pictures/zerotwo10x10.chr
Normal file
BIN
projects/pictures/zerotwo10x10.chr
Normal file
Binary file not shown.
|
@ -8,7 +8,6 @@
|
|||
)
|
||||
|
||||
%RTN { JMP2r }
|
||||
%RTN? { #00 EQU #02 JNZ STH2r JMP2 }
|
||||
%STEP8 { #0033 SFT2 }
|
||||
|
||||
%++ { #0001 ADD2 }
|
||||
|
@ -16,10 +15,13 @@
|
|||
%8/ { #0003 SFT2 } %8* { #0030 SFT2 }
|
||||
%8- { #0008 SUB2 } %8+ { #0008 ADD2 }
|
||||
%SFL { #40 SFT SFT }
|
||||
%MOD { DUP2 DIV MUL SUB }
|
||||
|
||||
%BANK { #2000 }
|
||||
|
||||
( variables )
|
||||
|
||||
;bankview { x 2 y 2 mode 1 addr 2 }
|
||||
;bankview { x 2 y 2 mode 1 addr 2 depth 1 }
|
||||
;tileview { x 2 y 2 addr 2 }
|
||||
;rect { x1 2 y1 2 x2 2 y2 2 }
|
||||
;mouse { x 2 y 2 }
|
||||
|
@ -42,21 +44,22 @@
|
|||
|
||||
|0200
|
||||
|
||||
( theme ) #e0fc =System.r #30cc =System.g #30ac =System.b
|
||||
( theme ) #0efc =System.r #03cc =System.g #03ac =System.b
|
||||
( vectors ) ,on-button =Controller.vector
|
||||
( vectors ) ,on-mouse =Mouse.vector
|
||||
( vectors ) ,on-transfer =File.vector
|
||||
|
||||
~Screen.width 2/ #008a SUB2 =bankview.x
|
||||
~Screen.height 2/ #003f SUB2 =bankview.y
|
||||
,bank =bankview.addr
|
||||
BANK =bankview.addr
|
||||
|
||||
~Screen.width 2/ #0002 ADD2 =tileview.x
|
||||
~Screen.height 2/ #003f SUB2 =tileview.y
|
||||
,bank #0448 ADD2 =tileview.addr
|
||||
BANK #0448 ADD2 =tileview.addr
|
||||
|
||||
,filepath1 =File.name #0800 =File.length ,bank =File.load
|
||||
,filepath2 =File.name #0800 =File.length ,bank #0800 ADD2 =File.load
|
||||
,filepath1 =File.name #0800 =File.length BANK =File.load
|
||||
,filepath2 =File.name #0800 =File.length BANK #0800 ADD2 =File.load
|
||||
,filepath3 =File.name #1000 =File.length BANK #1000 ADD2 =File.load
|
||||
|
||||
,redraw JSR2
|
||||
|
||||
|
@ -101,19 +104,18 @@ BRK
|
|||
~Mouse.x ~bankview.x SUB2 8/ #000d LTH2 ^$no-brush-click JNZ
|
||||
~Mouse.x ~bankview.x SUB2 8/ #000f GTH2 ^$no-brush-click JNZ
|
||||
( select ) ~mouse.x ~bankview.x SUB2 8/ #000d SUB2 SWP POP =bankview.mode
|
||||
( release ) #00 =Mouse.state
|
||||
,redraw JSR2 ,$click-end JMP2
|
||||
$no-brush-click
|
||||
~Mouse.x ~tileview.x SUB2 8/ #000e NEQ2 ^$no-load-click JNZ
|
||||
( load ) ,filepath1 =File.name #0800 =File.length ~bankview.addr =File.load
|
||||
( release ) #00 =Mouse.state
|
||||
,redraw JSR2 ,$click-end JMP2
|
||||
$no-load-click
|
||||
~Mouse.x ~tileview.x SUB2 8/ #000f NEQ2 ^$no-save-click JNZ
|
||||
( save ) ,filepath1 =File.name #0800 =File.length ~bankview.addr =File.save
|
||||
$no-save-click
|
||||
~Mouse.x ~bankview.x SUB2 8/ #0005 NEQ2 ^$no-toggle-depth JNZ
|
||||
( toggle ) ~bankview.depth #00 EQU =bankview.depth
|
||||
$no-toggle-depth
|
||||
( release ) #00 =Mouse.state
|
||||
,redraw JSR2 ,$click-end JMP2
|
||||
$no-save-click
|
||||
$no-toolbar-click
|
||||
|
||||
( bankview )
|
||||
|
@ -253,8 +255,13 @@ RTN
|
|||
|
||||
( toolbar )
|
||||
|
||||
~bankview.x #0068 ADD2 =Screen.x
|
||||
~bankview.y #0010 SUB2 =Screen.y
|
||||
|
||||
~bankview.x #0028 ADD2 =Screen.x
|
||||
,depth_icn #00 ~bankview.depth 8* ADD2 =Screen.addr
|
||||
#23 =Screen.color
|
||||
|
||||
~bankview.x #0068 ADD2 =Screen.x
|
||||
,tool_selector =Screen.addr
|
||||
#21 ~bankview.mode #00 EQU ADD =Screen.color
|
||||
|
||||
|
@ -290,23 +297,21 @@ RTN
|
|||
|
||||
( body )
|
||||
|
||||
~bankview.x =Screen.x ~bankview.y =Screen.y
|
||||
#00 =pt.x #00 =pt.y ~bankview.addr =Screen.addr
|
||||
( load ) ~bankview.addr =Screen.addr
|
||||
~bankview.y DUP2 #0080 ADD2
|
||||
$ver
|
||||
#00 =pt.x
|
||||
~bankview.x =Screen.x
|
||||
$hor
|
||||
( draw ) #21
|
||||
~Screen.addr ~tileview.addr LTH2
|
||||
~Screen.addr ~tileview.addr #0018 ADD2 GTH2
|
||||
#0000 EQU2 #06 MUL ADD =Screen.color
|
||||
( incr ) ~Screen.x 8+ =Screen.x
|
||||
( incr ) ~Screen.addr 8+ =Screen.addr
|
||||
( incr ) ~pt.x #01 ADD =pt.x
|
||||
~pt.x #10 LTH ,$hor JNZ2
|
||||
( incr ) ~pt.y #01 ADD =pt.y
|
||||
( incr ) ~Screen.y 8+ =Screen.y
|
||||
~pt.y #10 LTH ,$ver JNZ2
|
||||
( save ) OVR2 =Screen.y
|
||||
~bankview.x DUP2 #0080 ADD2
|
||||
$hor
|
||||
( save ) OVR2 =Screen.x
|
||||
( draw ) #21 ~Screen.addr ~tileview.addr EQU2 #06 MUL ADD ~bankview.depth #2e MUL ADD =Screen.color
|
||||
( incr ) SWP2 8+ SWP2
|
||||
( incr ) ~Screen.addr 8+ #00 ~bankview.depth #0008 MUL2 ADD2 =Screen.addr
|
||||
OVR2 OVR2 LTH2 ^$hor JNZ
|
||||
POP2 POP2
|
||||
( incr ) SWP2 8+ SWP2
|
||||
OVR2 OVR2 LTH2 ^$ver JNZ
|
||||
POP2 POP2
|
||||
|
||||
RTN
|
||||
|
||||
|
@ -431,11 +436,6 @@ RTN
|
|||
|
||||
@draw-cursor
|
||||
|
||||
~mouse.x ~Mouse.x NEQ2
|
||||
~mouse.y ~Mouse.y NEQ2
|
||||
|
||||
#0000 EQU2 RTN? ( Return if unchanged )
|
||||
|
||||
( clear last cursor )
|
||||
~mouse.x =Screen.x
|
||||
~mouse.y =Screen.y
|
||||
|
@ -450,7 +450,7 @@ RTN
|
|||
~mouse.x =Screen.x
|
||||
~mouse.y =Screen.y
|
||||
,tool_selector #00 ~bankview.mode #08 MUL ADD2 =Screen.addr
|
||||
#32 =Screen.color
|
||||
#32 ~Mouse.state #00 NEQ ADD =Screen.color
|
||||
|
||||
RTN
|
||||
|
||||
|
@ -473,34 +473,46 @@ RTN
|
|||
|
||||
( Utils )
|
||||
|
||||
@line-rect ( x1 y1 x2 y2 color )
|
||||
@line-rect ( x1 y1 x2 y2 color -- )
|
||||
|
||||
( load ) =color =rect.y2 =rect.x2 DUP2 =Screen.y =rect.y1 DUP2 =Screen.x =rect.x1
|
||||
$hor
|
||||
( incr ) ~Screen.x ++ =Screen.x
|
||||
( draw ) ~rect.y1 =Screen.y ~color =Screen.color
|
||||
( draw ) ~rect.y2 =Screen.y ~color =Screen.color
|
||||
~Screen.x ~rect.x2 LTH2 ^$hor JNZ
|
||||
~rect.y1 =Screen.y
|
||||
( load ) =color DUP2 STH2 =rect.y2 =rect.x2 DUP2 STH2 =rect.y1 =rect.x1
|
||||
STH2r STH2r
|
||||
$ver
|
||||
( draw ) ~rect.x1 =Screen.x ~color =Screen.color
|
||||
( draw ) ~rect.x2 =Screen.x ~color =Screen.color
|
||||
( incr ) ~Screen.y ++ =Screen.y
|
||||
~Screen.y ~rect.y2 ++ LTH2 ^$ver JNZ
|
||||
( save ) OVR2 =Screen.y
|
||||
( draw ) ~rect.x1 =Screen.x ~color DUP =Screen.color
|
||||
( draw ) ~rect.x2 =Screen.x =Screen.color
|
||||
( incr ) SWP2 ++ SWP2
|
||||
OVR2 OVR2 LTS2 ^$ver JNZ
|
||||
POP2 POP2
|
||||
~rect.x1 ~rect.x2
|
||||
$hor
|
||||
( save ) OVR2 =Screen.x
|
||||
( draw ) ~rect.y1 =Screen.y ~color DUP =Screen.color
|
||||
( draw ) ~rect.y2 =Screen.y =Screen.color
|
||||
( incr ) SWP2 ++ SWP2
|
||||
OVR2 OVR2 ++ LTS2 ^$hor JNZ
|
||||
POP2 POP2
|
||||
|
||||
RTN
|
||||
|
||||
@tool_selector [ 80c0 e0f0 f8e0 1000 ]
|
||||
@tool_hand [ 4040 4070 f8f8 f870 ]
|
||||
@tool_eraser [ 2050 b87c 3e1c 0800 ]
|
||||
@blank_icn [ 0000 0000 0000 0000 ]
|
||||
@cell1_icn [ 7cfe fefe fefe 7c00 ]
|
||||
@blank_icn [
|
||||
0000 0000 0000 0000
|
||||
7cfe fefe fefe 7c00
|
||||
]
|
||||
@depth_icn [
|
||||
00fe 8282 fe82 82fe
|
||||
00fe 9292 fe92 92fe
|
||||
]
|
||||
@load_icn [ feaa d6aa d4aa f400 ]
|
||||
@save_icn [ fe82 8282 848a f400 ]
|
||||
@moveup_icn [ 0010 387c fe10 1000 ]
|
||||
@movedown_icn [ 0010 1010 fe7c 3810 ]
|
||||
@filepath1 [ projects/fonts/specter8.bit 00 ]
|
||||
@filepath2 [ projects/pictures/cibo.bit 00 ]
|
||||
@filepath3 [ projects/pictures/zerotwo10x10.chr 00 ]
|
||||
|
||||
@font_hex ( 0-F )
|
||||
[
|
||||
|
@ -513,5 +525,3 @@ RTN
|
|||
007c 8280 8080 827c 00fc 8282 8282 82fc
|
||||
007c 8280 f080 827c 007c 8280 f080 8080
|
||||
]
|
||||
|
||||
|2000 @bank [ ]
|
||||
|
|
|
@ -14,7 +14,6 @@
|
|||
)
|
||||
|
||||
%RTN { JMP2r }
|
||||
%RTN? { #00 EQU #02 JNZ STH2r JMP2 }
|
||||
%ABS2 { DUP2 #000f SFT2 EQU #04 JNZ #ffff MUL2 }
|
||||
%CLN2r { DUP2 STH2 }
|
||||
%STEP8 { #0033 SFT2 }
|
||||
|
@ -68,7 +67,6 @@
|
|||
( vectors ) ,on-screen =Screen.vector
|
||||
( vectors ) ,on-button =Controller.vector
|
||||
( vectors ) ,on-mouse =Mouse.vector
|
||||
( vectors ) ,on-transfer =File.vector
|
||||
|
||||
~theme.r0 =System.r ~theme.g0 =System.g ~theme.b0 =System.b
|
||||
|
||||
|
@ -96,13 +94,6 @@
|
|||
|
||||
BRK
|
||||
|
||||
@on-transfer ( -> )
|
||||
|
||||
,draw-canvas JSR2
|
||||
( release ) #00 =Mouse.state
|
||||
|
||||
BRK
|
||||
|
||||
@on-screen ( -> )
|
||||
|
||||
~document.edit #01 NEQ ^$no-edit JNZ
|
||||
|
@ -365,7 +356,6 @@ BRK
|
|||
~Screen.height #0002 DIV2 ~canvas.h 8* 2/ SUB2 =canvas.y1
|
||||
|
||||
,fit-canvas JSR2
|
||||
|
||||
,draw-foreground JSR2
|
||||
|
||||
RTN
|
||||
|
@ -412,19 +402,6 @@ RTN
|
|||
|
||||
RTN
|
||||
|
||||
@load-file ( path -- )
|
||||
|
||||
=File.name FILESIZE =File.length ,data =File.load
|
||||
~File.name ,path.name ,strcpy JSR2
|
||||
|
||||
RTN
|
||||
|
||||
@save-file ( path -- )
|
||||
|
||||
=File.name FILESIZE =File.length ,data =File.save
|
||||
|
||||
RTN
|
||||
|
||||
@fit-canvas
|
||||
|
||||
~canvas.w 8* ~canvas.x1 ADD2 =canvas.x2
|
||||
|
@ -600,6 +577,22 @@ RTN
|
|||
|
||||
RTN
|
||||
|
||||
( file )
|
||||
|
||||
@load-file ( path -- )
|
||||
|
||||
=File.name FILESIZE =File.length ,data =File.load
|
||||
~File.name ,path.name ,strcpy JSR2
|
||||
,draw-canvas JSR2
|
||||
|
||||
RTN
|
||||
|
||||
@save-file ( path -- )
|
||||
|
||||
=File.name FILESIZE =File.length ,data =File.save
|
||||
|
||||
RTN
|
||||
|
||||
( Drawing )
|
||||
|
||||
@redraw ( -- )
|
||||
|
@ -650,13 +643,6 @@ RTN
|
|||
|
||||
@draw-cursor ( -- )
|
||||
|
||||
~cursor.x ~Mouse.x NEQ2
|
||||
~cursor.y ~Mouse.y NEQ2
|
||||
#0000 EQU2
|
||||
~Mouse.state
|
||||
#00 NEQ
|
||||
#0101 EQU2 RTN? ( Return if unchanged )
|
||||
|
||||
,blank_icn =Screen.addr
|
||||
( clear brush size )
|
||||
~cursor.x #0003 SUB2 =Screen.x ~cursor.y #0003 SUB2 =Screen.y #30 =Screen.color
|
||||
|
@ -819,18 +805,23 @@ RTN
|
|||
|
||||
@line-rect ( x1 y1 x2 y2 color -- )
|
||||
|
||||
( load ) =color =rect.y2 =rect.x2 DUP2 =Screen.y =rect.y1 DUP2 =Screen.x =rect.x1
|
||||
$hor
|
||||
( incr ) ~Screen.x ++ =Screen.x
|
||||
( draw ) ~rect.y1 =Screen.y ~color =Screen.color
|
||||
( draw ) ~rect.y2 =Screen.y ~color =Screen.color
|
||||
~Screen.x ~rect.x2 NEQ2 ^$hor JNZ
|
||||
~rect.y1 =Screen.y
|
||||
( load ) =color DUP2 STH2 =rect.y2 =rect.x2 DUP2 STH2 =rect.y1 =rect.x1
|
||||
STH2r STH2r
|
||||
$ver
|
||||
( draw ) ~rect.x1 =Screen.x ~color =Screen.color
|
||||
( draw ) ~rect.x2 =Screen.x ~color =Screen.color
|
||||
( incr ) ~Screen.y ++ =Screen.y
|
||||
~Screen.y ~rect.y2 ++ NEQ2 ^$ver JNZ
|
||||
( save ) OVR2 =Screen.y
|
||||
( draw ) ~rect.x1 =Screen.x ~color DUP =Screen.color
|
||||
( draw ) ~rect.x2 =Screen.x =Screen.color
|
||||
( incr ) SWP2 ++ SWP2
|
||||
OVR2 OVR2 LTS2 ^$ver JNZ
|
||||
POP2 POP2
|
||||
~rect.x1 ~rect.x2
|
||||
$hor
|
||||
( save ) OVR2 =Screen.x
|
||||
( draw ) ~rect.y1 =Screen.y ~color DUP =Screen.color
|
||||
( draw ) ~rect.y2 =Screen.y =Screen.color
|
||||
( incr ) SWP2 ++ SWP2
|
||||
OVR2 OVR2 ++ LTS2 ^$hor JNZ
|
||||
POP2 POP2
|
||||
|
||||
RTN
|
||||
|
||||
|
|
Loading…
Reference in a new issue