( uxncli format-c.rom file.bin ) |10 @Console &vector $2 &read $1 &pad $5 &write $1 &error $1 |a0 @File &vector $2 &success $2 &stat $2 &delete $1 &append $1 &name $2 &length $2 &read $2 &write $2 |0000 @src $40 |0100 @on-reset ( -> ) ;on-console .Console/vector DEO2 BRK @on-console ( -> ) [ LIT2r =src ] ( read input ) .Console/read DEI DUP #20 LTH OVR #7f GTH ORA ?&>end STH2kr slen #003f GTH2 ?&>end STH2kr scap STA POP2r BRK &>end POP STH2r #010f DEO BRK @ ( src* -- ) .File/name DEO2 #0001 .File/length DEO2 ;dict/header pstr LIT2r 0000 &stream ( -- ) #00 ,&buf STR ;&buf .File/read DEO2 .File/success DEI2 #0000 EQU2 ?&end [ LIT2 "0 18 ] DEO [ LIT2 "x 18 ] DEO [ LIT &buf $1 ] phex/b [ LIT2 ", 18 ] DEO #2018 DEO INC2r ( linebreak ) STH2kr #000f AND2 ORA ?&no-lb #0a18 DEO #0918 DEO &no-lb .File/success DEI2 ORA ?&stream &end POP2r #0a18 DEO ;dict/footer !pstr ( @|stdlib ) @slen ( str* -- len* ) DUP2 scap SWP2 SUB2 JMP2r @scap ( str* -- end* ) LDAk #00 NEQ [ JMP JMP2r ] &w INC2 LDAk ?&w JMP2r @phex ( short* -- ) SWP phex/b &b DUP #04 SFT phex/c &c #0f AND DUP #09 GTH #27 MUL ADD #30 ADD #18 DEO JMP2r @pstr ( str* -- ) &while LDAk #18 DEO INC2 LDAk ?&while POP2 JMP2r @dict &header "unsigned 20 "char 20 "rom[] 20 "= 20 "{ 0a 09 $1 &footer "}; 0a 00