1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
( directory renderer )
|10 @Console &vector $2 &read $1 &pad $4 &type $1 &write $1 &error $1
|a0 @File &vector $2 &success $2 &stat $2 &delete $1 &append $1 &name $2 &length $2 &read $2 &write $2
|b0 @File2 &vector $2 &success $2 &stat $2 &delete $1 &append $1 &name $2 &length $2 &read $2 &write $2
|0000
@path $40
|0100
(
@|vectors )
@on-reset
.Console/type DEI ?&on-arg
;Dict/usage perr
#010f DEO
BRK
&on-arg ( -> )
;await-src .Console/vector DEO2
BRK
@await-src ( -> )
.Console/read DEI .path skey ?on-ready
BRK
@on-ready ( -> )
;path
DUP2 load-dir
;Dict/index OVR2 scap scpy
render
#800f DEO
BRK
(
@|core )
@load-dir ( path* -- )
.File/name DEO2
#8000 .File/length DEO2
;dir .File/read DEO2
JMP2r
@render ( path* -- )
.File/name DEO2
( head )
;El/<head> wstr
;El/<title> wstr
;path wstr
;El/</title> wstr
;El/</head> wstr
( body )
;El/<body> wstr
;El/<pre> wstr
;dir &w write-line LDAk ?&w POP2
;El/</pre> wstr
;El/</body>
!wstr
@write-line ( line* -- next* )
LDA2k LIT2 "-- EQU2 ?&skip
( length )
#0005 write-length
( link )
write-link INC2
;El/<br/>
!wstr
&skip wcap INC2 wcap INC2
JMP2r
@write-link ( word* -- next* )
;El/a1 wstr
DUP2 write-word POP2
;El/a2 wstr
write-word
;El/a3
!wstr
@write-word ( str* -- next* )
DUP2 DUP2 wcap SWP2 SUB2
@write-length ( str* length* -- next* )
DUP2 .File/length DEO2
OVR2 .File/write DEO2
ADD2
JMP2r
(
@|stdlib )
@wstr ( str* -- next* )
DUP2 slen .File/length DEO2
.File/write DEO2
JMP2r
@wcap ( str* -- end* )
!&a
&w ( ~- )
INC2 &a LDAk #20 GTH ?&w
JMP2r
@scap ( str* -- end* )
LDAk ?&w JMP2r
&w ( ~- )
INC2 LDAk ?&w
JMP2r
@slen ( str* -- len* )
DUP2 scap SWP2 SUB2
JMP2r
@perr ( err* -- )
LDAk ?&w POP2 JMP2r
&w ( err* ~- )
LDAk #19 DEO INC2 LDAk ?&w POP2
JMP2r
@skey ( key buf -- proc )
OVR #21 LTH ?&eval #00 SWP sput #00 JMP2r
&eval POP2 #01 JMP2r
@sput ( chr str* -- )
scap INC2k #00 ROT ROT STA STA JMP2r
@scpy ( src* dst* -- )
STH2
&w LDAk #00 STH2kr STA2 INC2r INC2 LDAk ?&w
POP2 POP2r
JMP2r
(
@|assets )
@Dict
&usage "usage: 20 "directory.rom 20 "folder/ 0a $1
&index "index.html $1
@El ( HTML elements )
&<head> "<head> $1
&</head> "</head> $1
&<title> "<title> $1
&</title> "</title> $1
&<body> "<body> $1
&</body> "<body> $1
&<br/> "<br/> $1
&<pre> "<pre> $1
&</pre> "<pre> $1
&a1 "<a 20 "href=' $1
&a2 "'> $1
&a3 "</a> $1
@dir