Browse code

(metadata.tal) Updated to new format

Devine Lu Linvega authored on 08/01/2023 20:08:01
Showing 1 changed files
... ...
@@ -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