| ... | ... |
@@ -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 |
|