uxn

Varvara Ordinator, written in ANSI C(SDL2)
git clone https://git.eamoncaddigan.net/uxn.git
Log | Files | Refs | README | LICENSE

commit 94882720be8c030582227a4d0808539217fcbb45
parent b486d9585bedbb130ee7297882f7f8eafa79cb99
Author: neauoire <aliceffekt@gmail.com>
Date:   Sun, 23 Jan 2022 14:19:10 -0800

(dos.tal) Improved error reporting

Diffstat:
Mprojects/software/dos.tal | 211++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----------------------
1 file changed, 149 insertions(+), 62 deletions(-)

diff --git a/projects/software/dos.tal b/projects/software/dos.tal @@ -1,4 +1,4 @@ -( gui/terminal ) +( UXN-DOS ) %+ { ADD } %- { SUB } %* { MUL } %/ { DIV } %< { LTH } %> { GTH } %= { EQU } %! { NEQ } @@ -37,7 +37,7 @@ %RTN { JMP2r } -%WIDTH { #40 } +%WIDTH { #38 } %HEIGHT { #20 } %PAD { #0018 } @@ -53,7 +53,8 @@ |0000 -@buffer $80 +@buffer $3 + &input $80 @path $40 @frame $1 @@ -62,9 +63,9 @@ |0100 ( -> ) ( theme ) - #05f5 .System/r DEO2 - #0cf5 .System/g DEO2 - #0af5 .System/b DEO2 + #50f8 .System/r DEO2 + #c0f8 .System/g DEO2 + #a0f8 .System/b DEO2 ( vectors ) ;on-button .Controller/vector DEO2 @@ -119,7 +120,7 @@ BRK &ver WIDTH #00 &hor - #03 .Screen/sprite DEO + #02 .Screen/sprite DEO INC GTHk ,&hor JCN POP2 PAD .Screen/x DEO2 @@ -131,6 +132,8 @@ BRK RTN &blank-icn 8000 0000 0000 0000 +( DOS ) + @validate ( -- ) ;clear JSR2 @@ -151,15 +154,13 @@ JMP2r NIP2 ;commands -- RTN &continue INC2 INC2 GTH2k ,&loop JCN - &end POP2 ;commands -- RTN -@cmd-ls "ls $1 - &docs "list_folder_content $1 - &func +@cmd-ls "ls $1 &docs "list 20 "folder 20 "content $1 &func + ( load ) ;path .File/name DEO2 #8000 .File/length DEO2 ;view .File/read DEO2 @@ -168,53 +169,97 @@ RTN RTN -@cmd-cp "cp $1 &docs "copy_file_to_name $1 - &func +@cmd-mk "mk $1 &docs "make 20 "file $1 &func + + ;buffer/input ;file-exists JSR2 #01 ! ,&no-exists JCN + ;error-exists-txt ;buffer/input ;draw-message JSR2 RTN + &no-exists + ( save ) + ;buffer/input .File/name DEO2 + #0001 .File/length DEO2 + ;&buf .File/write DEO2 + ( message ) + ;make-success-txt ;buffer/input ;draw-message JSR2 RTN + &buf 0a -@cmd-mv "mv $1 &docs "move_file_to_name $1 +@cmd-cp "cp $1 &docs "copy 20 "file 20 "to 20 "name $1 &func + + ( b ) ;buffer/input #20 ;next-char JSR2 STH2k INC2 + #00 STH2r STA + ( a ) ;buffer/input + ( a exists ) + ;buffer/input ;file-exists JSR2 ,&valid JCN + ;error-unexists-txt ;buffer/input ;draw-message JSR2 POP2 POP2 RTN + &valid + ( b unexists ) + OVR2 ;file-exists JSR2 #00 = ,&available JCN + OVR2 ;error-exists-txt SWP2 ;draw-message JSR2 POP2 POP2 RTN + &available + ( load ) + .File/name DEO2 + #8000 .File/length DEO2 + ;view .File/read DEO2 + ( save ) + DUP2 .File/name DEO2 + #8000 .File/length DEO2 + ;view .File/write DEO2 + ( message ) + ;copy-success-txt SWP2 ;draw-message JSR2 + +RTN + +@cmd-mv "mv $1 &docs "move 20 "file 20 "to 20 "name $1 &func + ( todo ) + RTN -@cmd-rm "rm $1 &docs "remove_file $1 +@cmd-rm "rm $1 &docs "remove 20 "file $1 &func - ;buffer #0003 ++ .File/name DEO2 + ( exists ) + ;buffer/input ;file-exists JSR2 ,&valid JCN + ;error-unexists-txt ;buffer/input ;draw-message JSR2 RTN + &valid + ( delete ) + ;buffer/input .File/name DEO2 #01 .File/delete DEO - - ;&remove-txt #01 ;draw-str JSR2 - ;buffer #0003 ++ #01 ;draw-str JSR2 + ( message ) + ;remove-success-txt ;buffer/input ;draw-message JSR2 RTN - &remove-txt "removed_file: $1 -@cmd-tx "tx $1 &docs "display_file_as_text $1 +@cmd-tx "tx $1 &docs "display 20 "file 20 "as 20 "text $1 &func - ;buffer #0003 ++ .File/name DEO2 + ( exists ) + ;buffer/input ;file-exists JSR2 ,&valid JCN + ;error-unexists-txt ;buffer/input ;draw-message JSR2 RTN + &valid + ( load ) + ;buffer/input .File/name DEO2 #8000 .File/length DEO2 ;view .File/read DEO2 - - .File/success DEI2 #0000 >> ,&valid JCN - ;&error-txt #02 ;draw-str JSR2 RTN &valid - + ( message ) ;view #01 ;draw-tx JSR2 RTN - &error-txt "unknown_file $1 -@cmd-hx "hx $1 &docs "display_file_as_hex $1 +@cmd-hx "hx $1 &docs "display 20 "file 20 "as 20 "hex $1 &func - ;buffer #0003 ++ .File/name DEO2 + ( exists ) + ;buffer/input ;file-exists JSR2 ,&valid JCN + ;error-unexists-txt ;buffer/input ;draw-message JSR2 RTN + &valid + ( load ) + ;buffer/input .File/name DEO2 #8000 .File/length DEO2 ;view .File/read DEO2 - - .File/success DEI2 #0000 >> ,&valid JCN - ;&error-txt #02 ;draw-str JSR2 RTN &valid - + ( message ) AUTO-YADDR .File/success DEI2 #0000 &loop @@ -234,15 +279,14 @@ RTN POP2 POP2 RTN - &error-txt "unknown_file $1 -@cmd-do "do $1 &docs "run_file_as_rom $1 +@cmd-do "do $1 &docs "run 20 "file 20 "as 20 "rom $1 &func ( release inputs ) #0000 .Controller/button DEO2 - ;buffer #0003 ++ + ;buffer/input DUP2 ;check-rom JSR2 ,&valid JCN PAD .Screen/x DEO2 PAD .Screen/y DEO2 @@ -253,9 +297,9 @@ RTN ;load-rom JSR2 RTN - &invalid-txt "invalid_rom: $1 + &invalid-txt "invalid 20 "rom: $1 -@cmd-tm "tm $1 &docs "display_time $1 +@cmd-tm "tm $1 &docs "display 20 "time $1 &func #00 .DateTime/month DEI 4* ;month-txt ++ #01 ;draw-str JSR2 @@ -272,7 +316,28 @@ RTN RTN -@cmd-?? "-- $1 &docs "display_commands $1 +@cmd-1b "1b $1 &docs "display 20 "1bit 20 "file $1 + &func + + ( todo ) + +RTN + +@cmd-2b "2b $1 &docs "display 20 "2bit 20 "file $1 + &func + + ( todo ) + +RTN + +@cmd-sn "sn $1 &docs "play 20 "sound 20 "file $1 + &func + + ( todo ) + +RTN + +@cmd-?? "-- $1 &docs "display 20 "commands $1 &func ;&help-txt #01 ;draw-tx JSR2 @@ -281,30 +346,42 @@ RTN ;commands/end ;commands &loop PAD .Screen/x DEO2 - ( name ) LDA2k #08 ;draw-str JSR2 + ( name ) LDA2k #04 ;draw-str JSR2 PAD #0020 ++ .Screen/x DEO2 ( docs ) DUP2 ;commands -- ;commands-docs ++ LDA2 #01 ;draw-str JSR2 .Screen/y DEI2k #0010 ++ ROT DEO2 INC2 INC2 GTH2k ,&loop JCN - &end POP2 POP2 RTN &help-txt "Commands: $1 @commands - :cmd-ls :cmd-cp :cmd-mv :cmd-rm + :cmd-ls :cmd-mk :cmd-cp :cmd-mv :cmd-rm :cmd-hx :cmd-tx :cmd-do :cmd-tm + :cmd-1b :cmd-2b :cmd-sn &end :cmd-?? @commands-docs - :cmd-ls/docs :cmd-cp/docs :cmd-mv/docs :cmd-rm/docs + :cmd-ls/docs :cmd-mk/docs :cmd-cp/docs :cmd-mv/docs :cmd-rm/docs :cmd-hx/docs :cmd-tx/docs :cmd-do/docs :cmd-tm/docs + :cmd-1b/docs :cmd-2b/docs :cmd-sn/docs &end :cmd-??/docs @commands-func - :cmd-ls/func :cmd-cp/func :cmd-mv/func :cmd-rm/func + :cmd-ls/func :cmd-mk/func :cmd-cp/func :cmd-mv/func :cmd-rm/func :cmd-hx/func :cmd-tx/func :cmd-do/func :cmd-tm/func + :cmd-1b/func :cmd-2b/func :cmd-sn/func &end :cmd-??/func +@file-exists ( name* -- bool ) + + .File/name DEO2 + #0040 .File/length DEO2 + ;&buf .File/stat DEO2 + .File/success DEI2 #0000 >> + +RTN + &buf $40 + ( gui ) @draw-input ( color -- ) @@ -331,6 +408,13 @@ RTN JMP2r +@draw-message ( a* b* -- ) + + SWP2 #02 ;draw-str JSR2 + #01 ;draw-str JSR2 + +RTN + @draw-tx ( str* color -- ) AUTO-YADDR @@ -402,6 +486,18 @@ RTN ( utils ) +@next-char ( addr* char -- addr* ) + + STH + &while + LDAk STHkr = ,&end JCN + LDAk #00 = ,&end JCN + INC2 LDAk ,&while JCN + &end + POPr + +RTN + @slen ( str* -- len* ) DUP2 ,scap JSR SWP2 -- @@ -428,22 +524,6 @@ RTN RTN -@scmp ( a* b* -- flag ) - - STH2 - &loop - LDAk LDAkr STHr = ,&not-diff JCN - POP2 POP2r #00 RTN - &not-diff - LDAk LDAkr STHr #0000 !! ,&not-end JCN - POP2 POP2r #01 RTN - &not-end - INC2 INC2r - ,&loop JMP - POP2 POP2r #00 - -RTN - @scmp-seg ( a* b* -- flag ) STH2 @@ -491,8 +571,12 @@ JMP2r JMP2r -~projects/library/check-rom.tal -~projects/library/load-rom.tal +@error-exists-txt "file_exists: 20 $1 +@error-unexists-txt "file_does_not_exists: 20 $1 + +@make-success-txt "made: 20 $1 +@copy-success-txt "copied: 20 $1 +@remove-success-txt "removed: 20 $1 @week-txt "Sun $1 "Mon $1 "Tue $1 "Wed $1 "Thu $1 "Fri $1 @@ -616,4 +700,7 @@ JMP2r 0000 1818 1818 0018 1818 1818 0000 0000 0000 7018 1818 0e18 1818 1870 0000 0000 +~projects/library/check-rom.tal +~projects/library/load-rom.tal + @view