Scr#1
\ UDG EDITOR deel 1

1 WIDTH !
: ^^ HERE 2+ C@ 79 + [COMPILE]
  LITERAL ; IMMEDIATE
31 WIDTH !

CREATE UDGS 21 8 * ALLOT

: CHADDR DUP 128 < IF 8 * 23606
@ + ELSE 144 - 8 * UDGS + THEN ;

UDGS 23675 !
&A CHADDR ^A CHADDR 21 8 * CMOVE

: ULIST 7 0 DO 3 0 DO J 3 * I +
 DUP &A + EMIT &= EMIT ^A +
 EMIT SPACE LOOP CR LOOP ;

CREATE XCHAR 255 C, 129 C, 129
C, 129 C, 129 C, 129 C, 129 C,
255 C,

CREATE TEMP 8 ALLOT
: SHOW XCHAR 23675 ! TEMP 8 0
  DO DUP C@  8 0 DO DUP 1 AND
  3 * 7 SWAP - PAPER J 23 I - AT
  ^A EMIT 2/ LOOP DROP 1+ LOOP
  DROP 7 PAPER UDGS 23675 !
  0 0 AT ULIST ;
-->


Scr#2
\ UDG EDITOR deel 2

: GETCH 22 0 AT ." Which charact
er? ^" KEY DUP && = IF BS && EMI
T DROP KEY 47 - THEN 47 + DUP
 EMIT 10 PAUSE 22 0 AT 32 SPACES
 CHADDR ;
: FETCH GETCH  TEMP 8
  CMOVE SHOW ;
: STORE TEMP GETCH 8
  CMOVE SHOW ;
: GAND GETCH TEMP 8 0 DO OVER I
+ C@ OVER I + C@ AND OVER I + C!
  LOOP 2DROP SHOW ;
: GXOR GETCH TEMP 8 0 DO OVER I
+ C@ OVER I + C@ XOR OVER I + C!
  LOOP 2DROP SHOW ;
: GOR  GETCH TEMP 8 0 DO OVER I
+ C@ OVER I + C@  OR OVER I + C!
  LOOP 2DROP SHOW ;
: GINV TEMP 8 0 DO DUP -1 TOGGLE
  1+ LOOP DROP SHOW ;

-->









Scr#3
\ UDG EDITOR deel 3
: XREF 8 0 DO TEMP I + C@ LOOP
       8 0 DO TEMP I + C! LOOP
       SHOW ;
: BIT@ 16 + ATTR 32 = ;

: YREF 8 0 DO 0 8 0 DO
   2* J 7 I - BIT@ 1 AND + LOOP
   TEMP I + C! LOOP SHOW ;

: GROT 8 0 DO 0 8 0 DO
   2* I 7 J - BIT@ 1 AND + LOOP
   TEMP I + C! LOOP SHOW ;

VARIABLE YCUR VARIABLE XCUR
HEX : GCUR YCUR @ 20 * XCUR @
10 + + 5800 + 80 TOGGLE ;
DECIMAL

: INIT CLS 0 XCUR ! 0 YCUR !
  GCUR TEMP 8 ERASE SHOW 9 0
  AT 0 23658 C! NORMAL
   ." @=FETCH !=STORE EDIT=END"
CR ." R=ROTATE I=INVERT"
CR ." X=X-AXIS MIRROR"
CR ." Y=Y-AXIS MIRROR"
CR ." A=AND O=OR E=EXOR"
CR ." CURSOR KEYS ENTER"
CR ." SPACE=PIXEL " GCUR  ;
: PIXEL TEMP YCUR @ + 128 XCUR @
  0 ?DO 2/ LOOP TOGGLE SHOW ;
-->

Scr#4
\ UDG EDITOR deel 4
: UED INIT BEGIN KEY GCUR
  DUP 8 = IF -1 XCUR +! THEN
  DUP 9 = IF 1  XCUR +! THEN
  DUP 10 = IF 1 YCUR +! THEN
  DUP 11 = IF -1 YCUR +! THEN
  DUP 13 = IF 1 YCUR +! 0 XCUR !
  THEN
  XCUR @ 0 MAX 7 MIN XCUR !
  YCUR @ 0 MAX 7 MIN YCUR !
  DUP BL = IF PIXEL THEN
  DUP &x = IF XREF THEN
  DUP &y = IF YREF THEN
  DUP &r = IF GROT THEN
  DUP &a = IF GAND THEN
  DUP &o = IF GOR THEN
  DUP &e = IF GXOR THEN
  DUP &i = IF GINV THEN
  DUP &@ = IF FETCH THEN
  DUP &! = IF STORE THEN
  GCUR 7 = UNTIL GCUR 22 0 AT
  CAP ;

