... | ... |
@@ -35,7 +35,7 @@ typedef struct { |
35 | 35 |
|
36 | 36 |
typedef struct { |
37 | 37 |
Uint8 data[256 * 256], llen, mlen; |
38 |
- Uint16 ptr; |
|
38 |
+ Uint16 ptr, count; |
|
39 | 39 |
Label labels[256]; |
40 | 40 |
Macro macros[256]; |
41 | 41 |
} Program; |
... | ... |
@@ -69,6 +69,7 @@ pushbyte(Uint8 b, int lit) |
69 | 69 |
{ |
70 | 70 |
if(lit) pushbyte(0x02, 0); |
71 | 71 |
p.data[p.ptr++] = b; |
72 |
+ p.count++; |
|
72 | 73 |
} |
73 | 74 |
|
74 | 75 |
void |
... | ... |
@@ -418,7 +419,7 @@ void |
418 | 419 |
cleanup(char *filename) |
419 | 420 |
{ |
420 | 421 |
int i; |
421 |
- printf("Assembled %s, %d labels, %d macros.\n\n", filename, p.llen, p.mlen); |
|
422 |
+ printf("Assembled %s(%0.2fkb), %d labels, %d macros.\n\n", filename, p.count / 1000.0, p.llen, p.mlen); |
|
422 | 423 |
for(i = 0; i < p.llen; ++i) |
423 | 424 |
if(!p.labels[i].refs) |
424 | 425 |
printf("--- Unused label: %s\n", p.labels[i].name); |
... | ... |
@@ -12,6 +12,8 @@ |
12 | 12 |
- Toggle guides |
13 | 13 |
- Set eye option |
14 | 14 |
- Complete save/load |
15 |
+ - Limit size |
|
16 |
+ - Draw point inbetween |
|
15 | 17 |
) |
16 | 18 |
|
17 | 19 |
%RTN { JMP2r } |
... | ... |
@@ -24,13 +26,12 @@ |
24 | 26 |
|
25 | 27 |
;center { x 2 y 2 } |
26 | 28 |
;toolbar { x1 2 y1 2 x2 2 y2 2 } |
27 |
-;cursor { x 2 y 2 x0 2 y0 2 size 1 patt 1 drag 1 view 1 } |
|
29 |
+;cursor { x 2 y 2 x0 2 y0 2 size 1 patt 1 drag 1 zoom 1 } |
|
28 | 30 |
;rect { x1 2 y1 2 x2 2 y2 2 } |
29 | 31 |
;color { byte 1 } |
30 | 32 |
;pos { x 2 y 2 } |
31 | 33 |
;pix { x 2 y 2 } |
32 | 34 |
;px { x 1 y 1 } |
33 |
-;label { x 2 y 2 color 1 addr 2 } ( remove ) |
|
34 | 35 |
|
35 | 36 |
|0100 @RESET |
36 | 37 |
|
... | ... |
@@ -53,8 +54,11 @@ |
53 | 54 |
|
54 | 55 |
,draw-background JSR2 |
55 | 56 |
,fit-canvas JSR2 |
56 |
- ,draw-titlebar JSR2 |
|
57 |
- ,fit-toolbar JSR2 |
|
57 |
+ |
|
58 |
+ ( fit toolbar ) |
|
59 |
+ ~toolbar.x1 #0010 ADD2 =toolbar.x2 |
|
60 |
+ ~toolbar.y1 #0040 ADD2 =toolbar.y2 |
|
61 |
+ ,draw-toolbar JSR2 |
|
58 | 62 |
|
59 | 63 |
BRK |
60 | 64 |
|
... | ... |
@@ -68,8 +72,7 @@ BRK |
68 | 72 |
~canvas.x1 -- ~canvas.y1 -- ~canvas.x2 ~canvas.y2 #10 ,line-rect JSR2 |
69 | 73 |
,draw-background JSR2 |
70 | 74 |
,fit-canvas JSR2 |
71 |
- ,draw-titlebar JSR2 |
|
72 |
- ,fit-toolbar JSR2 |
|
75 |
+ ,draw-toolbar JSR2 |
|
73 | 76 |
#00 =cursor.drag |
74 | 77 |
$no-release |
75 | 78 |
|
... | ... |
@@ -112,15 +115,12 @@ BRK |
112 | 115 |
( background interface ) |
113 | 116 |
~Mouse.x ~Screen.width #0020 SUB2 SUB2 8/ |
114 | 117 |
DUP2 |
115 |
- #0000 NEQ2 ,$no-toggle-guides ROT JMP2? |
|
116 |
- ~cursor.view #00 EQU =cursor.view |
|
118 |
+ #0000 NEQ2 ,$no-toggle-zoom ROT JMP2? |
|
119 |
+ ~cursor.zoom #00 EQU =cursor.zoom |
|
117 | 120 |
( release ) #00 =Mouse.state |
118 |
- ~cursor.view =Console.byte |
|
119 |
- ~Screen.width #0020 SUB2 =Sprite.x |
|
120 |
- ~Screen.height #0010 SUB2 =Sprite.y |
|
121 |
- ,mode_guidesoff #00 ~cursor.view #0008 MUL2 ADD2 =Sprite.addr |
|
122 |
- #01 =Sprite.color |
|
123 |
- $no-toggle-guides |
|
121 |
+ ~cursor.zoom =Console.byte |
|
122 |
+ ,redraw JSR2 |
|
123 |
+ $no-toggle-zoom |
|
124 | 124 |
DUP2 |
125 | 125 |
#0001 NEQ2 ,$no-load-button ROT JMP2? |
126 | 126 |
( release ) #00 =Mouse.state |
... | ... |
@@ -266,6 +266,16 @@ RTN |
266 | 266 |
|
267 | 267 |
RTN |
268 | 268 |
|
269 |
+( Drawing ) |
|
270 |
+ |
|
271 |
+@redraw |
|
272 |
+ |
|
273 |
+ ,draw-background JSR2 |
|
274 |
+ ,draw-canvas JSR2 |
|
275 |
+ ,draw-toolbar JSR2 |
|
276 |
+ |
|
277 |
+RTN |
|
278 |
+ |
|
269 | 279 |
@draw-canvas |
270 | 280 |
|
271 | 281 |
~canvas.y1 =Sprite.y |
... | ... |
@@ -282,44 +292,18 @@ RTN |
282 | 292 |
|
283 | 293 |
RTN |
284 | 294 |
|
285 |
-@line-rect ( x1 y1 x2 y2 color ) |
|
286 |
- |
|
287 |
- ( load ) =color =rect.y2 =rect.x2 DUP2 =Screen.y =rect.y1 DUP2 =Screen.x =rect.x1 |
|
288 |
- $hor |
|
289 |
- ( incr ) ~Screen.x ++ =Screen.x |
|
290 |
- ( draw ) ~rect.y1 =Screen.y ~color =Screen.color |
|
291 |
- ( draw ) ~rect.y2 =Screen.y ~color =Screen.color |
|
292 |
- ,$hor ~Screen.x ~rect.x2 NEQ2 JMP2? |
|
293 |
- ~rect.y1 =Screen.y |
|
294 |
- $ver |
|
295 |
- ( draw ) ~rect.x1 =Screen.x ~color =Screen.color |
|
296 |
- ( draw ) ~rect.x2 =Screen.x ~color =Screen.color |
|
297 |
- ( incr ) ~Screen.y ++ =Screen.y |
|
298 |
- ,$ver ~Screen.y ~rect.y2 ++ NEQ2 JMP2? |
|
299 |
- |
|
300 |
-RTN |
|
301 |
- |
|
302 |
-@fill-rect ( x1 y1 x2 y2 color ) |
|
303 |
- |
|
304 |
- ( load ) =color =rect.y2 =rect.x2 DUP2 =Screen.y =rect.y1 DUP2 =Screen.x =rect.x1 |
|
305 |
- $ver |
|
306 |
- ~rect.x1 =Screen.x |
|
307 |
- $hor |
|
308 |
- ( draw ) ~color =Screen.color |
|
309 |
- ( incr ) ~Screen.x ++ =Screen.x |
|
310 |
- ,$hor ~Screen.x ~rect.x2 NEQ2 JMP2? |
|
311 |
- ( incr ) ~Screen.y ++ =Screen.y |
|
312 |
- ,$ver ~Screen.y ~rect.y2 NEQ2 JMP2? |
|
313 |
- |
|
314 |
-RTN |
|
315 |
- |
|
316 | 295 |
@draw-cursor |
317 | 296 |
|
318 | 297 |
~cursor.x ~Mouse.x NEQU2 |
319 | 298 |
~cursor.y ~Mouse.y NEQU2 |
299 |
+ #0000 EQU2 |
|
300 |
+ ~Mouse.state |
|
301 |
+ #00 NEQ |
|
302 |
+ #0101 EQU2 RTN? ( Return if unchanged ) |
|
320 | 303 |
|
321 |
- #0000 EQU2 ~Mouse.state #00 NEQ #0101 EQU2 RTN? ( Return if unchanged ) |
|
304 |
+ ,blank_icn =Sprite.addr |
|
322 | 305 |
|
306 |
+ ( clear brush size ) |
|
323 | 307 |
~cursor.x #0003 SUB2 =Sprite.x |
324 | 308 |
~cursor.y #0003 SUB2 =Sprite.y |
325 | 309 |
#10 =Sprite.color |
... | ... |
@@ -327,7 +311,6 @@ RTN |
327 | 311 |
( clear last cursor ) |
328 | 312 |
~cursor.x =Sprite.x |
329 | 313 |
~cursor.y =Sprite.y |
330 |
- ,blank_icn =Sprite.addr |
|
331 | 314 |
#10 =Sprite.color |
332 | 315 |
|
333 | 316 |
( record cursor positions ) |
... | ... |
@@ -335,54 +318,23 @@ RTN |
335 | 318 |
~Mouse.y =cursor.y |
336 | 319 |
|
337 | 320 |
( draw new cursor ) |
338 |
- |
|
339 | 321 |
,$outside-canvas ~Mouse.x CLN2r ~canvas.x1 GTH2 STH2r ~canvas.x2 LTH2 #0101 NEQ2 JMP2? |
340 | 322 |
,$outside-canvas ~Mouse.y CLN2r ~canvas.y1 GTH2 STH2r ~canvas.y2 LTH2 #0101 NEQ2 JMP2? |
341 | 323 |
~cursor.x #0003 SUB2 =Sprite.x |
342 | 324 |
~cursor.y #0003 SUB2 =Sprite.y |
343 |
- ,brush_view #00 ~cursor.size #0008 MUL2 ADD2 =Sprite.addr |
|
344 |
- #11 ~Mouse.state ADD =Sprite.color |
|
325 |
+ ,brush_view #00 ~cursor.size 8* ADD2 =Sprite.addr |
|
326 |
+ #11 ~Mouse.state #02 MUL ADD =Sprite.color |
|
327 |
+ ,$outside-canvas ~Mouse.state #00 EQU JMP2? |
|
328 |
+ RTN |
|
345 | 329 |
$outside-canvas |
346 | 330 |
|
347 | 331 |
~cursor.x =Sprite.x |
348 | 332 |
~cursor.y =Sprite.y |
349 |
- |
|
350 |
- ,brush_pointer #00 ~Controller #02 EQU #0008 MUL2 ADD2 =Sprite.addr |
|
333 |
+ ,brush_pointer #00 ~Controller #02 EQU 8* ADD2 =Sprite.addr |
|
351 | 334 |
#1f =Sprite.color |
352 | 335 |
|
353 | 336 |
RTN |
354 | 337 |
|
355 |
-@draw-titlebar |
|
356 |
- |
|
357 |
- ~canvas.x1 #0001 SUB2 ~canvas.y2 #06 ,filepath |
|
358 |
- ( load ) =label.addr =label.color =Sprite.y =Sprite.x |
|
359 |
- ~label.addr |
|
360 |
- $loop NOP |
|
361 |
- ( draw ) DUP2 LDR #00 SWP #20 SUB 8* ,font ADD2 =Sprite.addr ~label.color =Sprite.color |
|
362 |
- ( incr ) ++ |
|
363 |
- ( incr ) ~Sprite.x 8+ =Sprite.x |
|
364 |
- DUP2 LDR #00 NEQ ^$loop MUL JMP |
|
365 |
- POP2 |
|
366 |
- |
|
367 |
-RTN |
|
368 |
- |
|
369 |
-@fit-canvas |
|
370 |
- |
|
371 |
- ~canvas.w 8* ~canvas.x1 ADD2 =canvas.x2 |
|
372 |
- ~canvas.h 8* ~canvas.y1 ADD2 =canvas.y2 |
|
373 |
- ~canvas.x1 -- ~canvas.y1 -- ~canvas.x2 ~canvas.y2 #01 ,line-rect JSR2 |
|
374 |
- ,draw-canvas JSR2 |
|
375 |
- |
|
376 |
-RTN |
|
377 |
- |
|
378 |
-@fit-toolbar |
|
379 |
- |
|
380 |
- ~toolbar.x1 #0010 ADD2 =toolbar.x2 |
|
381 |
- ~toolbar.y1 #0040 ADD2 =toolbar.y2 |
|
382 |
- ,draw-toolbar JSR2 |
|
383 |
- |
|
384 |
-RTN |
|
385 |
- |
|
386 | 338 |
@draw-toolbar |
387 | 339 |
|
388 | 340 |
~toolbar.x1 -- ~toolbar.y1 -- ~toolbar.x2 ~toolbar.y2 #02 ,line-rect JSR2 |
... | ... |
@@ -443,7 +395,7 @@ RTN |
443 | 395 |
,save_icn =Sprite.addr |
444 | 396 |
#01 =Sprite.color |
445 | 397 |
~Screen.width #0020 SUB2 =Sprite.x |
446 |
- ,mode_guidesoff =Sprite.addr |
|
398 |
+ ,zoom_icn #00 ~cursor.zoom 8* ADD2 =Sprite.addr |
|
447 | 399 |
#01 =Sprite.color |
448 | 400 |
|
449 | 401 |
( draw width ) |
... | ... |
@@ -463,6 +415,46 @@ RTN |
463 | 415 |
|
464 | 416 |
RTN |
465 | 417 |
|
418 |
+@line-rect ( x1 y1 x2 y2 color ) |
|
419 |
+ |
|
420 |
+ ( load ) =color =rect.y2 =rect.x2 DUP2 =Screen.y =rect.y1 DUP2 =Screen.x =rect.x1 |
|
421 |
+ $hor |
|
422 |
+ ( incr ) ~Screen.x ++ =Screen.x |
|
423 |
+ ( draw ) ~rect.y1 =Screen.y ~color =Screen.color |
|
424 |
+ ( draw ) ~rect.y2 =Screen.y ~color =Screen.color |
|
425 |
+ ,$hor ~Screen.x ~rect.x2 NEQ2 JMP2? |
|
426 |
+ ~rect.y1 =Screen.y |
|
427 |
+ $ver |
|
428 |
+ ( draw ) ~rect.x1 =Screen.x ~color =Screen.color |
|
429 |
+ ( draw ) ~rect.x2 =Screen.x ~color =Screen.color |
|
430 |
+ ( incr ) ~Screen.y ++ =Screen.y |
|
431 |
+ ,$ver ~Screen.y ~rect.y2 ++ NEQ2 JMP2? |
|
432 |
+ |
|
433 |
+RTN |
|
434 |
+ |
|
435 |
+@fill-rect ( x1 y1 x2 y2 color ) |
|
436 |
+ |
|
437 |
+ ( load ) =color =rect.y2 =rect.x2 DUP2 =Screen.y =rect.y1 DUP2 =Screen.x =rect.x1 |
|
438 |
+ $ver |
|
439 |
+ ~rect.x1 =Screen.x |
|
440 |
+ $hor |
|
441 |
+ ( draw ) ~color =Screen.color |
|
442 |
+ ( incr ) ~Screen.x ++ =Screen.x |
|
443 |
+ ,$hor ~Screen.x ~rect.x2 NEQ2 JMP2? |
|
444 |
+ ( incr ) ~Screen.y ++ =Screen.y |
|
445 |
+ ,$ver ~Screen.y ~rect.y2 NEQ2 JMP2? |
|
446 |
+ |
|
447 |
+RTN |
|
448 |
+ |
|
449 |
+@fit-canvas |
|
450 |
+ |
|
451 |
+ ~canvas.w 8* ~canvas.x1 ADD2 =canvas.x2 |
|
452 |
+ ~canvas.h 8* ~canvas.y1 ADD2 =canvas.y2 |
|
453 |
+ ~canvas.x1 -- ~canvas.y1 -- ~canvas.x2 ~canvas.y2 #01 ,line-rect JSR2 |
|
454 |
+ ,draw-canvas JSR2 |
|
455 |
+ |
|
456 |
+RTN |
|
457 |
+ |
|
466 | 458 |
@size_icn |
467 | 459 |
[ 0000 0010 0000 0000 ] |
468 | 460 |
[ 0000 1038 1000 0000 ] |
... | ... |
@@ -494,26 +486,23 @@ RTN |
494 | 486 |
[ 7c82 8282 8282 7c00 ] |
495 | 487 |
[ 7cfe fefe fefe 7c00 ] |
496 | 488 |
|
489 |
+@zoom_icn |
|
490 |
+ [ 3048 8484 4834 0200 ] |
|
491 |
+ [ 3245 8284 4834 0200 ] |
|
492 |
+ |
|
497 | 493 |
@brush_pointer [ 80c0 e0f0 f8e0 1000 ] |
498 | 494 |
@brush_hand [ 4040 4070 f8f8 f870 ] |
499 |
-@brush_eraser [ 2050 b87c 3e1c 0800 ] |
|
500 | 495 |
|
501 | 496 |
@mode_guidesoff [ 0038 4492 2810 0000 ] |
502 | 497 |
@mode_guideson [ 0000 0082 4438 0000 ] |
503 |
-@mode_zoomout [ 3048 8484 4834 0200 ] |
|
504 | 498 |
|
505 |
-[ 0000 0000 0000 0000 ] |
|
506 |
-[ 0000 0000 0000 0000 ] |
|
507 |
-[ 0000 0000 0000 0000 ] |
|
508 |
- |
|
509 |
-@mode_zoomin [ 3245 8284 4834 0200 ] |
|
510 | 499 |
@load_icn [ feaa d6aa d4aa f400 ] |
511 | 500 |
@save_icn [ fe82 8282 848a f400 ] |
512 | 501 |
|
513 | 502 |
@blank_icn [ 0000 0000 0000 0000 ] |
514 | 503 |
@filepath [ noodle-io.bit 00 ] |
515 | 504 |
|
516 |
-@font_hex ( 0-F TODO: should pull from @font instead.. ) |
|
505 |
+@font_hex |
|
517 | 506 |
[ |
518 | 507 |
003c 464a 5262 3c00 0018 0808 0808 1c00 |
519 | 508 |
003c 4202 3c40 7e00 003c 421c 0242 3c00 |
... | ... |
@@ -525,59 +514,6 @@ RTN |
525 | 514 |
007e 4078 4040 7e00 007e 4078 4040 4000 |
526 | 515 |
] |
527 | 516 |
|
528 |
-@font ( specter8-frag font ) |
|
529 |
-[ |
|
530 |
- 0000 0000 0000 0000 0008 0808 0800 0800 |
|
531 |
- 0014 1400 0000 0000 0024 7e24 247e 2400 |
|
532 |
- 0008 1e28 1c0a 3c08 0000 2204 0810 2200 |
|
533 |
- 0030 4832 4c44 3a00 0008 1000 0000 0000 |
|
534 |
- 0004 0808 0808 0400 0020 1010 1010 2000 |
|
535 |
- 0000 2214 0814 2200 0000 0808 3e08 0800 |
|
536 |
- 0000 0000 0000 0810 0000 0000 3e00 0000 |
|
537 |
- 0000 0000 0000 0800 0000 0204 0810 2000 |
|
538 |
- 003c 464a 5262 3c00 0018 0808 0808 1c00 |
|
539 |
- 003c 4202 3c40 7e00 003c 421c 0242 3c00 |
|
540 |
- 000c 1424 447e 0400 007e 407c 0242 3c00 |
|
541 |
- 003c 407c 4242 3c00 007e 0204 0810 1000 |
|
542 |
- 003c 423c 4242 3c00 003c 4242 3e02 3c00 |
|
543 |
- 0000 0010 0000 1000 0000 1000 0010 1020 |
|
544 |
- 0000 0810 2010 0800 0000 003e 003e 0000 |
|
545 |
- 0000 1008 0408 1000 003c 420c 1000 1000 |
|
546 |
- 003c 4232 4a42 3c00 003c 4242 7e42 4200 |
|
547 |
- 007c 427c 4242 7c00 003c 4240 4042 3c00 |
|
548 |
- 007c 4242 4242 7c00 007e 4078 4040 7e00 |
|
549 |
- 007e 4078 4040 4000 003c 4240 4642 3c00 |
|
550 |
- 0042 427e 4242 4200 001c 0808 0808 1c00 |
|
551 |
- 007e 0202 0242 3c00 0042 4478 4442 4200 |
|
552 |
- 0040 4040 4040 7e00 0042 665a 4242 4200 |
|
553 |
- 0042 6252 4a46 4200 003c 4242 4242 3c00 |
|
554 |
- 007c 4242 7c40 4000 003c 4242 4244 3a00 |
|
555 |
- 007c 4242 7c44 4200 003e 403c 0242 3c00 |
|
556 |
- 007e 0808 0808 1000 0042 4242 4244 3a00 |
|
557 |
- 0042 4242 4224 1800 0042 4242 5a66 4200 |
|
558 |
- 0042 423c 4242 4200 0042 423e 0242 3c00 |
|
559 |
- 007e 020c 3040 7e00 000c 0808 0808 0c00 |
|
560 |
- 0040 2010 0804 0200 0030 1010 1010 3000 |
|
561 |
- 0008 1400 0000 0000 0000 0000 0000 7e00 |
|
562 |
- 0008 0400 0000 0000 0000 3c02 3e42 3a00 |
|
563 |
- 0040 407c 4242 7c00 0000 3c42 4042 3c00 |
|
564 |
- 0002 023e 4242 3e00 0000 3c42 7e40 3e00 |
|
565 |
- 0000 3e40 7840 4000 0000 3c42 3e02 3c00 |
|
566 |
- 0040 405c 6242 4200 0008 0018 0808 0400 |
|
567 |
- 0008 0018 0808 4830 0040 4244 7844 4200 |
|
568 |
- 0010 1010 1010 0c00 0000 6c52 5252 5200 |
|
569 |
- 0000 5c62 4242 4200 0000 3c42 4242 3c00 |
|
570 |
- 0000 7c42 427c 4040 0000 3e42 423e 0202 |
|
571 |
- 0000 5c62 4040 4000 0000 3e40 3c02 7c00 |
|
572 |
- 0008 7e08 0808 1000 0000 4242 4244 3a00 |
|
573 |
- 0000 4242 4224 1800 0000 5252 5252 2e00 |
|
574 |
- 0000 4224 1824 4200 0000 4242 3e02 7c00 |
|
575 |
- 0000 7e02 3c40 7e00 000c 0810 1008 0c00 |
|
576 |
- 0008 0808 0808 0800 0030 1008 0810 3000 |
|
577 |
- 0000 0032 4c00 0000 3c42 99a1 a199 423c |
|
578 |
- |
|
579 |
-] |
|
580 |
- |
|
581 | 517 |
|2000 ;canvas { w 2 h 2 x1 2 y1 2 x2 2 y2 2 } |
582 | 518 |
|3000 @data [ ] |
583 | 519 |
|