Browse Source

Fixed issue with long filepaths

main
neauoire 4 years ago
parent
commit
165ef2a8aa
  1. 21
      .clang-format
  2. 1
      .gitignore
  3. 1
      README.md
  4. BIN
      ako10x10.chr
  5. 2
      build.sh
  6. 280
      src/main.tal
  7. 53
      src/utils.tal

21
.clang-format

@ -1,21 +0,0 @@
AlignAfterOpenBracket: DontAlign
AlignEscapedNewlines: DontAlign
AlignOperands: DontAlign
AllowShortBlocksOnASingleLine: Always
AllowShortCaseLabelsOnASingleLine: true
AllowShortEnumsOnASingleLine: true
AllowShortIfStatementsOnASingleLine: true
AllowShortLoopsOnASingleLine: true
AlwaysBreakAfterDefinitionReturnType: TopLevel
BinPackArguments: false
BinPackParameters: false
BreakBeforeBraces: WebKit
IndentCaseLabels: false
TabWidth: 4
IndentWidth: 4
ContinuationIndentWidth: 4
UseTab: ForContinuationAndIndentation
ColumnLimit: 0
ReflowComments: false
SortIncludes: false
SpaceBeforeParens: false

1
.gitignore vendored

@ -3,7 +3,6 @@
*png
*bmp
/bin
*.chr
*snarf
*theme
*nametable

1
README.md

@ -19,7 +19,6 @@ uxnasm src/main.tal bin/nasu.rom && uxnemu bin/nasu.rom
- `right-click`, remove pixel
- `1 2 3`, select color
- `q w e`, select tool
- `ctrl+p`, export [theme file](https://wiki.xxiivv.com/theme)
- `ctrl+n`, clear
- `ctrl+r`, rename
- `ctrl+o`, load

BIN
ako10x10.chr

Binary file not shown.

2
build.sh

@ -21,4 +21,4 @@ then
fi
echo "Running.."
uxnemu bin/nasu.rom
uxnemu bin/nasu.rom ako10x10.chr

280
src/main.tal

@ -17,77 +17,30 @@
ctrl+v - paste
)
%+ { ADD } %- { SUB } %* { MUL } %/ { DIV }
%< { LTH } %> { GTH } %= { EQU } %! { NEQ }
%++ { ADD2 } %-- { SUB2 } %** { MUL2 } %// { DIV2 }
%<< { LTH2 } %>> { GTH2 } %== { EQU2 } %!! { NEQ2 }
%2* { #10 SFT } %2/ { #01 SFT } %2** { #10 SFT2 } %2// { #01 SFT2 }
%4* { #20 SFT } %4/ { #02 SFT } %4** { #20 SFT2 } %4// { #02 SFT2 }
%8* { #30 SFT } %8/ { #03 SFT } %8** { #30 SFT2 } %8// { #03 SFT2 }
%10* { #40 SFT } %10/ { #04 SFT } %10** { #40 SFT2 } %10// { #04 SFT2 }
%20* { #50 SFT } %20/ { #05 SFT } %20** { #50 SFT2 } %20// { #05 SFT2 }
%40* { #60 SFT }
%80* { #70 SFT }
%80** { #70 SFT2 }
%100** { #80 SFT2 }
%200** { #90 SFT2 }
%2MOD { #01 AND } %2MOD2 { #0001 AND2 }
%4MOD { #03 AND } %4MOD2 { #0003 AND2 }
%8MOD { #07 AND } %8MOD2 { #0007 AND2 }
%10MOD { #0f AND } %10MOD2 { #000f AND2 }
%20MOD { #1f AND }
%100MOD2 { #00ff AND2 }
%TOS { #00 SWP }
%STEP8 { #33 SFT2 }
%!~ { NEQk NIP }
%DEBUG { ;print-hex/byte JSR2 #0a #18 DEO }
%DEBUG2 { ;print-hex JSR2 #0a #18 DEO }
%RTN { JMP2r }
%SFL { #40 SFT SFT }
%GTS2 { #8000 ++ SWP2 #8000 ++ << }
%TOGGLE { LDZk #00 = SWP STZ }
%GET-ITER { OVR2 NIP OVR SWP }
%BRK? { #01 JCN BRK }
%SWP? { #01 JCN SWP }
%ROL { DUP #07 SFT SWP #10 SFT + }
%ROR { DUP #70 SFT SWP #01 SFT + }
%AUTO-X { #01 .Screen/auto DEO }
%AUTO-NONE { #00 .Screen/auto DEO }
~src/utils.tal
( defines )
%HOR { #10 } %VER { #10 }
%LENGTH { #1000 }
(
8000-9000 : spritesheet
9000-9100 : tile
9100-9200 : color )
%DATA-CLIP { #6000 }
%BANK-SPRITESHEET { #8000 }
%BANK-NAMETABLE { #9000 }
%BANK-COLOR { #9100 }
( todo )
%STEP8 { #33 SFT2 }
%80** { #70 SFT2 }
%100** { #80 SFT2 }
%200** { #90 SFT2 }
%DATA-CLIP { #6000 }
%100MOD2 { #00ff AND2 }
%GET-ITER { OVR2 NIP OVR SWP }
%GET-HEX-ADDR { TOS 8** ;font-hex ++ .Screen/addr DEO2 }
%GET-COLOR { .settings/color LDZ STHk 2/ + DEI #01 STHr #01 AND - 4* SFT #0f AND }
%GET-POSITION { .settings/focus LDZ2 BANK-SPRITESHEET -- DUP2 2// 100MOD2 SWP2 #0080 2** DIV2 8** }
%ADD-POSITIONS { ROT2 ++ ROT2 ROT2 ++ SWP2 }
%RELEASE-MOUSE { #00 .Mouse/state DEO }
%RESET-SELECTION { .selection/x1 LDZ2 .selection/x2 STZ2 }
%GET-ADDR { TOS 10** ROT TOS ++ 10** BANK-SPRITESHEET ++ } ( x y -- addr* )
@ -132,7 +85,7 @@
&x2 $1 &y2 $1
&a $1
@path
&length $1 &name $20
&name $20 ( ext ) $4
@frame
&x1 $2 &y1 $2
&x2 $2 &y2 $2
@ -211,31 +164,32 @@
.zoomview/x2 LDZ2 INC2 .zoomview-frame/x2 STZ2
.zoomview/y2 LDZ2 #0007 -- .zoomview-frame/y2 STZ2
;untitled-txt ;new-file JSR2
;new-file JSR2
;load-theme JSR2
BRK
@on-console ( -- )
@on-console ( -> )
( starting )
;&trap LDA ,&started JCN
#00 ;draw-filepath JSR2
.Console/read DEI DUP
#0a = ,&counter LDR #20 = #0000 == ,&no-end JCN
( set length ) ,&counter LDR .path/length STZ
( null char ) #00 .path ,&counter LDR INC + STZ
( reset counter ) #00 ,&counter STR
( load ) ;load-file JSR2
POP BRK
&no-end
,&counter LDR
( length ) DUP .path/length STZ
INC
( inc counter ) DUP ,&counter STR
( write ) .path + STZ
;path/name #0020 ;mclr JSR2
#01 ,&trap STR
&started
( append )
.Console/read DEI #20 < ,&validate JCN
;path/name ;slen JSR2 #0020 == ,&validate JCN
;path/name .Console/read DEI ;sput JSR2
BRK
&validate
( validate )
;load-file JSR2
#01 ;draw-filepath JSR2
#00 ,&trap STR
BRK
&counter $1
&trap $1
@on-frame ( -> )
( inactive )
@ -261,7 +215,7 @@ BRK
@on-button ( -> )
.Controller/key DEI .Controller/button DEI ADD BRK?
.Controller/button DEI2 #0000 !! [ JMP BRK ]
.Controller/button DEI #01 AND ;on-control JCN2
@ -344,17 +298,14 @@ BRK
&no-name
DUP [ LIT 'R ] ! ,&no-rename JCN
#00 ;draw-filepath JSR2
#00 .Controller/key DEO
#00 .path/length STZ
#0000 .path/name STZ2
;path/name #0020 ;mclr JSR2
;on-frame-trap .Screen/vector DEO2
;on-button-trap .Controller/vector DEO2
POP BRK
&no-rename
DUP [ LIT 'n ] ! ,&no-new JCN
#25 ;draw-filepath JSR2
;untitled-txt ;new-file JSR2
;redraw JSR2 POP BRK &no-new
;new-file JSR2
POP BRK &no-new
DUP [ LIT 'o ] ! ,&no-open JCN
;load-file JSR2
POP BRK &no-open
@ -372,23 +323,22 @@ BRK
DUP ,&continue JCN
POP BRK
&continue
DUP ( backspace ) #08 ! ,&no-edit-backspace JCN
( clamp ) .path/length LDZ #00 = ,&edit-end JCN
( backspace ) #08 !~ ,&no-edit-backspace JCN
( clamp ) ;path/name ;slen JSR2 NIP #00 = ,&edit-end JCN
#00 ;draw-filepath JSR2
.path/length LDZ #01 - STHk .path/length STZ
#00 .path/name STHr + STZ
#01 ;draw-filepath JSR2 POP BRK
;path/name ;spop JSR2
#01 ;draw-filepath JSR2
POP BRK
&no-edit-backspace
DUP ( special ) #20 > ,&no-edit-enter JCN
( special ) #20 >~ ,&no-edit-enter JCN
;on-frame .Screen/vector DEO2
;on-button .Controller/vector DEO2
#00 .state/blink STZ
#01 ;draw-filepath JSR2 POP BRK
#01 ;draw-filepath JSR2
POP BRK
&no-edit-enter
( clamp ) .path/length LDZ #1f = ,&edit-end JCN
DUP .path/name .path/length LDZ STHk + STZ
STHr INC STHk .path/length STZ
#00 .path/name STHr + STZ
( append ) ;path/name ;slen JSR2 NIP #1f = ,&edit-end JCN
DUP ;path/name ROT ;sput JSR2
#01 ;draw-filepath JSR2
&edit-end
POP
@ -423,7 +373,7 @@ BRK
.settings/zoom LDZ #01 = ;&zoomed JCN2
.settings/tool LDZ #01 = ;&select JCN2
( skip ) .Mouse/state DEI #00 ! BRK?
( skip ) .Mouse/state DEI #00 ! [ JMP BRK ]
.Mouse/x DEI2 .tileview/x1 LDZ2 --
.Mouse/y DEI2 .tileview/y1 LDZ2 --
@ -484,7 +434,7 @@ BRK
&zoomed ( -> )
( skip ) .Mouse/state DEI #00 ! BRK?
( skip ) .Mouse/state DEI #00 ! [ JMP BRK ]
.Mouse/x DEI2 .tileview/x1 LDZ2 --
.Mouse/y DEI2 .tileview/y1 LDZ2 --
@ -501,7 +451,7 @@ BRK
@on-touch-nametable ( -> )
( skip ) .Mouse/state DEI #00 ! BRK?
( skip ) .Mouse/state DEI #00 ! [ JMP BRK ]
( get touch tile )
.Mouse/y DEI2 .nametable/y LDZ2 -- 8// 10**
@ -532,7 +482,7 @@ BRK
@on-touch-toolview ( -> )
( skip ) .Mouse/state DEI #00 ! BRK?
( skip ) .Mouse/state DEI #00 ! [ JMP BRK ]
.Mouse/x DEI2 .toolview/x1 LDZ2 -- 8// NIP
DUP #1f ! ,&no-save JCN
@ -545,9 +495,7 @@ BRK
POP RELEASE-MOUSE BRK
&no-load
DUP #1c ! ,&no-name JCN
#00 ;draw-filepath JSR2
;untitled-txt ;new-file JSR2
;redraw JSR2
;new-file JSR2
POP RELEASE-MOUSE BRK
&no-name
DUP #04 ! ,&no-brush JCN
@ -590,7 +538,7 @@ BRK
@on-touch-zoomview ( -> )
( skip ) .Mouse/state DEI #00 ! BRK?
( skip ) .Mouse/state DEI #00 ! [ JMP BRK ]
.Mouse/y DEI2 .zoomview/y1 LDZ2 -- 8// NIP #04 ! ;&no-mod JCN2
.Mouse/x DEI2 .zoomview/x1 LDZ2 -- 8// NIP
@ -633,7 +581,7 @@ BRK
@on-touch-blendview ( -> )
( skip ) .Mouse/state DEI #00 ! BRK?
( skip ) .Mouse/state DEI #00 ! [ JMP BRK ]
.Mouse/x DEI2 .blendview/x1 LDZ2 -- 8// NIP
.Mouse/y DEI2 .blendview/y1 LDZ2 -- 8// NIP 4* +
@ -655,7 +603,7 @@ BRK
@on-touch-colorview ( -> )
( skip ) .Mouse/state DEI #00 ! BRK?
( skip ) .Mouse/state DEI #00 ! [ JMP BRK ]
.Mouse/y DEI2 .colorview/y1 LDZ2 -- 8// NIP
@ -691,7 +639,7 @@ BRK
@on-touch-preview ( -> )
( skip ) .Mouse/state DEI #00 ! BRK?
( skip ) .Mouse/state DEI #00 ! [ JMP BRK ]
( y ) .Mouse/y DEI2 .preview/y1 LDZ2 -- 8// NIP
( x ) .Mouse/x DEI2 .preview/x1 LDZ2 -- 8// NIP
@ -875,16 +823,6 @@ RTN
RTN
@clear ( addr* length* -- )
OVR2 ++ SWP2
&loop
DUP2 #00 ROT ROT STA
INC2 NEQ2k ,&loop JCN
POP2 POP2
RTN
@redraw ( -- )
;draw-toolview JSR2
@ -1026,11 +964,11 @@ RTN
STH SWP2 NIP
STHr SWP
STH2r SFT #01 AND ,&do-set JCN
( mask ) #01 #07 ROT 8MOD - SFL #ff EOR AND
( mask ) #01 #07 ROT 8MOD - #40 SFT SFT #ff EOR AND
( save ) ROT ROT STA
RTN
&do-set
( mask ) #01 #07 ROT 8MOD - SFL ORA
( mask ) #01 #07 ROT 8MOD - #40 SFT SFT ORA
( save ) ROT ROT STA
RTN
@ -1282,14 +1220,21 @@ RTN
STH
.toolview/x1 LDZ2 #0040 ++ .Screen/x DEO2
.toolview/y1 LDZ2 .Screen/y DEO2
AUTO-X
;path/name
DUP2 ;slen JSR2 #0013 >> TOS
;path/name ;slen JSR2 #0013 -- ** ++
&loop
LDAk DUP #00 ! 20* - TOS 8** ;font ++ .Screen/addr DEO2
LDAk #20 - TOS 8** ;font ++ .Screen/addr DEO2
STHkr .Screen/sprite DEO
.Screen/x DEI2 #0008 ++ .Screen/x DEO2
INC2
LDAk #00 ! ,&loop JCN
INC2 LDAk ,&loop JCN
POP2
AUTO-NONE
POPr
( clear last )
#00 .Screen/sprite DEO
@ -1301,7 +1246,7 @@ RTN
.toolview/x2 LDZ2 #0008 -- .Screen/x DEO2
.toolview/y1 LDZ2 .Screen/y DEO2
;save-icn .Screen/addr DEO2
#0f05 .state/changed LDZ SWP? POP .Screen/sprite DEO
#0f05 .state/changed LDZ #01 JCN SWP POP .Screen/sprite DEO
RTN
@ -1327,28 +1272,26 @@ RTN
( file )
@new-file ( default* -- )
@new-file ( -- )
BANK-SPRITESHEET LENGTH ;clear JSR2
BANK-NAMETABLE #0200 ;clear JSR2
#00 ;draw-filepath JSR2
BANK-SPRITESHEET LENGTH ;mclr JSR2
BANK-NAMETABLE #0200 ;mclr JSR2
( rename to untitled.txt )
;path/name #0020 ;mclr JSR2
;untitled-txt ;path/name #000c ;mcpy JSR2
STH2
#0c #00
&loop
DUPk TOS STH2kr ++ LDA
SWP .path/name + STZ
INC GTHk ,&loop JCN
( end ) #00 SWP .path/name + STZ
.path/length STZ
POP2r
RESET-STATE
;redraw JSR2
RTN
@load-file ( -- )
BANK-SPRITESHEET LENGTH ;clear JSR2
BANK-NAMETABLE #0200 ;clear JSR2
BANK-SPRITESHEET LENGTH ;mclr JSR2
BANK-NAMETABLE #0200 ;mclr JSR2
( spritesheet )
;path/name .File/name DEO2
@ -1356,9 +1299,11 @@ RTN
BANK-SPRITESHEET .File/load DEO2
( nametable )
;nametable-txt .File/name DEO2
( append ) ;nametable-ext ;path/name ;scap JSR2 #0004 ;mcpy JSR2
;path/name .File/name DEO2
#0200 .File/length DEO2
BANK-NAMETABLE .File/load DEO2
( remove ) ;path/name ;scap JSR2 #0004 -- #0004 ;mclr JSR2
RESET-STATE
;redraw JSR2
@ -1373,9 +1318,11 @@ RTN
BANK-SPRITESHEET .File/save DEO2
( nametable )
;nametable-txt .File/name DEO2
( append ) ;nametable-ext ;path/name ;scap JSR2 #0004 ;mcpy JSR2
;path/name .File/name DEO2
#0200 .File/length DEO2
BANK-NAMETABLE .File/save DEO2
( remove ) ;path/name ;scap JSR2 #0004 -- #0004 ;mclr JSR2
RESET-STATE
@ -1532,6 +1479,69 @@ RTN
RTN
( memory generics )
@mclr ( addr* len* -- )
OVR2 ++ SWP2
&loop
STH2k #00 STH2r STA
INC2 GTH2k ,&loop JCN
POP2 POP2
RTN
@mcpy ( src* dst* len* -- )
SWP2 STH2 SWP2 STH2
#0000
&loop
( src ) STH2kr LDA
( dst ) OVR2r STH2r STA
( inc ) INC2r SWP2r INC2r SWP2r
INC2 GTH2k ,&loop JCN
POP2 POP2
POP2r POP2r
RTN
( string generics )
@slen ( str* -- len* )
DUP2 ,scap JSR SWP2 --
RTN
@scap ( str* -- str-end* )
( clamp ) LDAk #00 ! JMP RTN
&while INC2 LDAk ,&while JCN
RTN
@sput ( str* char -- )
ROT ROT ,scap JSR STA
RTN
@spop ( str* -- )
( clamp ) LDAk #00 ! JMP RTN
#00 ROT ROT ,scap JSR #0001 -- STA
RTN
@print-str ( string* -- )
#0001 SUB2
&while
INC2 LDAk DUP #18 DEO ,&while JCN
POP2
RTN
@print-hex ( value* -- )
SWP ,&byte JSR
@ -1544,8 +1554,8 @@ RTN
RTN
@nametable-txt "nametable $1
@untitled-txt "untitled.chr $1
@nametable-ext ".tbl $1
@tool-brush e0d0 8844 2212 0c00
@tool-selector 80c0 e0f0 f8e0 1000

53
src/utils.tal

@ -0,0 +1,53 @@
( generics )
%+ { ADD } %- { SUB } %* { MUL } %/ { DIV }
%< { LTH } %> { GTH } %= { EQU } %! { NEQ }
%++ { ADD2 } %-- { SUB2 } %** { MUL2 } %// { DIV2 }
%<< { LTH2 } %>> { GTH2 } %== { EQU2 } %!! { NEQ2 }
%=~ { EQUk NIP } %!~ { NEQk NIP }
%<~ { LTHk NIP } %>~ { GTHk NIP }
%2* { #10 SFT } %2/ { #01 SFT } %2** { #10 SFT2 } %2// { #01 SFT2 }
%4* { #20 SFT } %4/ { #02 SFT } %4** { #20 SFT2 } %4// { #02 SFT2 }
%8* { #30 SFT } %8/ { #03 SFT } %8** { #30 SFT2 } %8// { #03 SFT2 }
%10* { #40 SFT } %10/ { #04 SFT } %10** { #40 SFT2 } %10// { #04 SFT2 }
%20* { #50 SFT } %20/ { #05 SFT } %20** { #50 SFT2 } %20// { #05 SFT2 }
%40* { #60 SFT } %40/ { #06 SFT } %40** { #60 SFT2 } %60// { #05 SFT2 }
%2MOD { #01 AND } %2MOD2 { #0001 AND2 }
%4MOD { #03 AND } %4MOD2 { #0003 AND2 }
%8MOD { #07 AND } %8MOD2 { #0007 AND2 }
%10MOD { #0f AND } %10MOD2 { #000f AND2 }
%EMIT { #18 DEO }
%PRINT { ;print-str JSR2 #0a EMIT }
%DEBUG { ;print-hex/byte JSR2 #0a EMIT }
%DEBUG2 { ;print-hex JSR2 #0a EMIT }
%IS-VALID { DUP #1f > SWP #7f < AND }
%IS-UC { DUP #40 > SWP #5b < AND }
%IS-LC { DUP #60 > SWP #7b < AND }
%IS-NUM { DUP #2f > SWP #3a < AND }
%IS-PUNC { DUP #2b > SWP #30 < AND }
%IS-SPACER { #21 < } ( char -- flag )
%IS-LABEL { STHk #40 = STHr #26 = ORA } ( char -- flag )
%NOT-LINEBREAK { STHk #0d ! STHr #0a ! AND } ( char -- flag )
%TOGGLE { LDZk #00 = SWP STZ }
%TOS { #00 SWP }
%RTN { JMP2r }
%MIN2 { GTH2k JMP SWP2 POP2 }
%MAX2 { LTH2k JMP SWP2 POP2 }
%ROL { DUP #07 SFT SWP #10 SFT + }
%ROR { DUP #70 SFT SWP #01 SFT + }
%RELEASE-MOUSE { #0096 DEO }
%AUTO-NONE { #00 .Screen/auto DEO }
%AUTO-X { #01 .Screen/auto DEO }
%AUTO-Y { #02 .Screen/auto DEO }
%AUTO-ADDR { #04 .Screen/auto DEO }
%AUTO-Y-ADDR { #06 .Screen/auto DEO }
Loading…
Cancel
Save