... | ... |
@@ -3,7 +3,7 @@ |
3 | 3 |
|00 @System &vector $2 &pad $6 &r $2 &g $2 &b $2 |
4 | 4 |
|10 @Console &vector $2 &read $1 &pad $5 &write $1 |
5 | 5 |
|20 @Screen &vector $2 &width $2 &height $2 &auto $1 &pad $1 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1 |
6 |
-|b0 @Disk &vector $2 &success $2 &stat $2 &delete $1 &append $1 &name $2 &length $2 &read $2 &write $2 |
|
6 |
+|b0 @File &vector $2 &success $2 &stat $2 &delete $1 &append $1 &name $2 &length $2 &read $2 &write $2 |
|
7 | 7 |
|
8 | 8 |
|0000 |
9 | 9 |
|
... | ... |
@@ -11,9 +11,9 @@ |
11 | 11 |
|
12 | 12 |
|0100 ( -> ) |
13 | 13 |
|
14 |
- #f0af .System/r DEO2 |
|
15 |
- #f0af .System/g DEO2 |
|
16 |
- #f0af .System/b DEO2 |
|
14 |
+ #630f .System/r DEO2 |
|
15 |
+ #840f .System/g DEO2 |
|
16 |
+ #c60f .System/b DEO2 |
|
17 | 17 |
|
18 | 18 |
#0150 .Screen/width DEO2 |
19 | 19 |
#0050 .Screen/height DEO2 |
... | ... |
@@ -23,6 +23,9 @@ |
23 | 23 |
|
24 | 24 |
BRK |
25 | 25 |
|
26 |
+( |
|
27 |
+@|vectors ) |
|
28 |
+ |
|
26 | 29 |
@await-src ( -> ) |
27 | 30 |
|
28 | 31 |
.Console/read DEI .src ;skey JSR2 |
... | ... |
@@ -34,113 +37,133 @@ BRK |
34 | 37 |
|
35 | 38 |
;src |
36 | 39 |
DUP2 ;pstr JSR2 #0a18 DEO |
37 |
- ;draw-metadata JSR2 |
|
40 |
+ ;has-metadata JSR2 |
|
41 |
+ ,&on-metadata JCN |
|
42 |
+ |
|
43 |
+ #004c .Screen/x DEO2 |
|
44 |
+ #0024 .Screen/y DEO2 |
|
45 |
+ |
|
46 |
+ ;dict/empty ;draw-txt JSR2 POP2 |
|
38 | 47 |
|
39 | 48 |
BRK |
40 | 49 |
|
41 |
-@draw-metadata ( str* -- ) |
|
50 |
+&on-metadata ( -> ) |
|
42 | 51 |
|
43 |
- .Disk/name DEO2 |
|
44 |
- ( read ) |
|
45 |
- #0006 .Disk/length DEO2 |
|
46 |
- ;&header .Disk/read DEO2 |
|
52 |
+ ;load-metadata JSR2 |
|
53 |
+ ;metadata/body ;pstr JSR2 #0a18 DEO |
|
54 |
+ ;draw-metadata JSR2 |
|
47 | 55 |
|
48 |
- ;&deo LDA2 #f037 NEQ2 |
|
49 |
- ;&missing JCN2 |
|
56 |
+BRK |
|
50 | 57 |
|
51 |
- ;&start LDA2 #0100 SUB2 ;seek JSR2 |
|
52 |
- #0004 .Disk/length DEO2 |
|
53 |
- ;&end |
|
54 |
- DUP2 .Disk/read DEO2 |
|
55 |
- LDA2 ;&start LDA2 SUB2 .Disk/length DEO2 |
|
56 |
- ;data |
|
57 |
- DUP2 .Disk/read DEO2 |
|
58 |
+( |
|
59 |
+@|core ) |
|
58 | 60 |
|
59 |
- ( draw ) |
|
60 |
- #0058 STH2k .Screen/x DEO2 |
|
61 |
- #0018 .Screen/y DEO2 |
|
61 |
+@has-metadata ( src* -- bool ) |
|
62 |
+ |
|
63 |
+ .File/name DEO2 |
|
64 |
+ #0006 .File/length DEO2 |
|
65 |
+ ;metadata/header .File/read DEO2 |
|
66 |
+ ;metadata/deo LDA2 #0637 EQU2 |
|
67 |
+ |
|
68 |
+JMP2r |
|
69 |
+ |
|
70 |
+@load-metadata ( -- ) |
|
71 |
+ |
|
72 |
+ ;metadata/start LDA2 #0100 SUB2 ;seek JSR2 |
|
73 |
+ |
|
74 |
+ ( version ) |
|
75 |
+ #0001 .File/length DEO2 |
|
76 |
+ ;metadata/version .File/read DEO2 |
|
62 | 77 |
|
63 | 78 |
( body ) |
64 |
- ;draw-str JSR2 |
|
65 |
- #20 ;draw-chr JSR2 |
|
66 |
- #02 ;draw-str-color JSR2 ;draw-lb JSR2 |
|
67 |
- STH2kr .Screen/x DEO2 |
|
68 |
- #01 ;draw-str-color JSR2 ;draw-lb JSR2 |
|
69 |
- STH2r .Screen/x DEO2 |
|
70 |
- ;draw-str JSR2 ;draw-lb JSR2 |
|
71 |
- POP2 |
|
72 |
- |
|
73 |
- ( icon ) |
|
74 |
- ;&icon LDA2 #0100 SUB2 ;seek JSR2 |
|
75 |
- #0200 .Disk/length DEO2 |
|
76 |
- ;data |
|
77 |
- DUP2 .Disk/read DEO2 |
|
78 |
- #76 ;draw-icon JSR2 |
|
79 |
+ ;metadata/body STH2 |
|
80 |
+ &s |
|
81 |
+ STH2kr |
|
82 |
+ DUP2 .File/read DEO2 |
|
83 |
+ INC2r LDA ,&s JCN |
|
84 |
+ POP2r |
|
85 |
+ |
|
86 |
+ ( fields ) |
|
87 |
+ ;metadata/fields |
|
88 |
+ DUP2 .File/read DEO2 |
|
89 |
+ LDAk #03 MUL #00 SWP .File/length DEO2 |
|
90 |
+ INC2 .File/read DEO2 |
|
79 | 91 |
|
80 | 92 |
JMP2r |
81 |
- &header $1 &start $3 &deo $2 &end $2 &icon $2 |
|
82 | 93 |
|
83 |
-&missing ( -- ) |
|
94 |
+( |
|
95 |
+@|drawing ) |
|
84 | 96 |
|
85 |
- ;blank-icn #72 ;draw-icon JSR2 |
|
86 |
- #0058 STH2k .Screen/x DEO2 |
|
97 |
+@draw-metadata ( -- ) |
|
98 |
+ |
|
99 |
+ #004c .Screen/x DEO2 |
|
87 | 100 |
#0018 .Screen/y DEO2 |
88 |
- ;src ;draw-str JSR2 POP2 |
|
89 |
- ;draw-lb JSR2 |
|
90 |
- STH2r .Screen/x DEO2 |
|
91 |
- ;dict/empty ;draw-str JSR2 POP2 |
|
101 |
+ ;metadata/body ;draw-txt JSR2 POP2 |
|
102 |
+ ( find picture ) |
|
103 |
+ ;metadata/fields LDAk LITr 00 STH |
|
104 |
+ INC2 DUP2 STH2r ADD2 SWP2 |
|
105 |
+ &l |
|
106 |
+ LDAk #83 NEQ ,&no-pict JCN |
|
107 |
+ INC2k LDA2 #0100 SUB2 ;draw-icon JSR2 |
|
108 |
+ &no-pict |
|
109 |
+ INC2 GTH2k ,&l JCN |
|
110 |
+ POP2 POP2 |
|
92 | 111 |
|
93 | 112 |
JMP2r |
94 | 113 |
|
95 |
-@draw-icon ( addr* auto -- ) |
|
114 |
+@draw-icon ( location* -- ) |
|
96 | 115 |
|
97 |
- #0008 |
|
116 |
+ ;seek JSR2 |
|
117 |
+ #0090 .File/length DEO2 |
|
118 |
+ ;metadata/icon |
|
119 |
+ DUP2 .File/read DEO2 |
|
120 |
+ .Screen/addr DEO2 |
|
121 |
+ #26 .Screen/auto DEO |
|
122 |
+ #001c |
|
98 | 123 |
DUP2 .Screen/x DEO2 |
99 | 124 |
.Screen/y DEO2 |
100 |
- .Screen/auto DEO |
|
101 |
- .Screen/addr DEO2 |
|
102 |
- #01 .Screen/sprite |
|
103 |
- DEOk DEOk DEOk DEOk |
|
104 |
- DEOk DEOk DEOk DEO |
|
125 |
+ #81 .Screen/sprite DEOk DEOk DEO |
|
105 | 126 |
|
106 | 127 |
JMP2r |
107 | 128 |
|
108 |
-@draw-lb ( -- ) |
|
129 |
+@draw-txt ( txt* -- end* ) |
|
109 | 130 |
|
110 |
- .Screen/y DEI2k #000c ADD2 ROT DEO2 |
|
131 |
+ #01 .Screen/auto DEO |
|
132 |
+ .Screen/x DEI2 ,&anchor STR2 |
|
133 |
+ &w |
|
134 |
+ LDAk #20 SUB #00 SWP #30 SFT2 ;font ADD2 .Screen/addr DEO2 |
|
135 |
+ #03 .Screen/sprite DEO |
|
136 |
+ LDAk #0a NEQ ,&no-lb JCN |
|
137 |
+ [ LIT2 &anchor $2 ] ,draw-lb JSR |
|
138 |
+ &no-lb |
|
139 |
+ INC2 LDAk ,&w JCN |
|
111 | 140 |
|
112 | 141 |
JMP2r |
113 | 142 |
|
114 |
-@draw-str-color ( str* color -- str* ) |
|
115 |
- |
|
116 |
- ;draw-chr/color STA |
|
143 |
+@draw-lb ( anchor* -- ) |
|
117 | 144 |
|
118 |
-@draw-str ( str* -- str* ) |
|
119 |
- |
|
120 |
- LDAk #00 EQU ,&skip JCN |
|
121 |
- #01 .Screen/auto DEO |
|
122 |
- &while |
|
123 |
- LDAk ,draw-chr JSR |
|
124 |
- INC2 LDAk ,&while JCN |
|
125 |
- &skip |
|
126 |
- INC2 |
|
145 |
+ .Screen/x DEO2 |
|
146 |
+ .Screen/y DEI2k #0008 ADD2 ROT DEO2 |
|
127 | 147 |
|
128 | 148 |
JMP2r |
129 | 149 |
|
130 |
-@draw-chr ( char -- ) |
|
150 |
+( |
|
151 |
+@|stdlib ) |
|
152 |
+ |
|
153 |
+@phex ( short* -- ) |
|
131 | 154 |
|
132 |
- #20 SUB #00 SWP #30 SFT2 ;font ADD2 .Screen/addr DEO2 |
|
133 |
- [ LIT &color 01 ] .Screen/sprite DEO |
|
155 |
+ SWP ,&byte JSR |
|
156 |
+ &byte ( byte -- ) DUP #04 SFT ,&char JSR |
|
157 |
+ &char ( char -- ) #0f AND DUP #09 GTH #27 MUL ADD #30 ADD #18 DEO |
|
134 | 158 |
|
135 | 159 |
JMP2r |
136 | 160 |
|
137 | 161 |
@seek ( length* -- ) |
138 | 162 |
|
139 |
- .Disk/name DEI2k ROT DEO2 |
|
140 |
- #0001 .Disk/length DEO2 |
|
141 |
- #0000 |
|
163 |
+ .File/name DEI2k ROT DEO2 |
|
164 |
+ #0000 INC2k .File/length DEO2 |
|
142 | 165 |
&l |
143 |
- ;&b .Disk/read DEO2 |
|
166 |
+ ;&b .File/read DEO2 |
|
144 | 167 |
INC2 GTH2k ,&l JCN |
145 | 168 |
POP2 POP2 |
146 | 169 |
|
... | ... |
@@ -152,13 +175,13 @@ JMP2r |
152 | 175 |
@skey ( key buf -- proc ) OVR #21 LTH ,&eval JCN #00 SWP ;sput JSR2 #00 JMP2r &eval POP2 #01 JMP2r |
153 | 176 |
@pstr ( str* -- ) &w LDAk #18 DEO INC2 LDAk ,&w JCN POP2 JMP2r |
154 | 177 |
|
178 |
+( |
|
179 |
+@|assets ) |
|
180 |
+ |
|
155 | 181 |
@dict |
156 | 182 |
&input "Input(.tal): 20 $1 |
157 | 183 |
&empty "Metadata 20 "Missing $1 |
158 | 184 |
|
159 |
-@blank-icn |
|
160 |
- aa55 aa55 aa55 aa55 |
|
161 |
- |
|
162 | 185 |
@font ( atari8 ) |
163 | 186 |
0000 0000 0000 0000 6060 6060 6000 6000 |
164 | 187 |
6666 6600 0000 0000 006c fe6c 6cfe 6c00 |
... | ... |
@@ -209,5 +232,9 @@ c060 3018 0c06 0300 3c0c 0c0c 0c0c 3c00 |
209 | 232 |
1818 1818 1818 1818 380c 0c06 0c0c 3800 |
210 | 233 |
0000 60f2 9e0c 0000 3c42 9985 8599 423c |
211 | 234 |
|
212 |
-@data |
|
235 |
+@metadata |
|
236 |
+ &header $1 &start $3 &deo $2 &version $1 |
|
237 |
+ &body $100 |
|
238 |
+ &fields $100 |
|
239 |
+ &icon $90 |
|
213 | 240 |
|