This is the routine to leave the program 3399 REM ****** Quit ****** ! 3400 INPUT ;: PRINT OVER 1;AT 2 !Check the validity of the ,16;" ": GO SUB Coff: PR !intent to leave. NT #1;"Are you sure you want to ! quit?": GO SUB 400: IF NOT (q$= ! y" OR q$="Y") THEN RETURN ! 3410 CLS : PRINT " This program ! will self-destructbut the chara ! ters will remain intact in mem ! ory." ! 3420 PRINT ''" To turn the char ! cters on, you use"' PAPER 2'" !Print out a farewell message POKE 23606,0: POKE 23607,";ch;" !and instructions to turn on the "'" POKE 23676,";CH+4;": POKE !characters. 3675,88", ! 3430 PRINT '" To turn the chara ! ters off, youuse"' PAPER 2'" ! OKE 23606,0: POKE 23607,60 " ! 3440 PRINT ''" Press a key, and ! this program will"; ! LASH 1;" NEW " ! 3450 PRINT '" Bye!!" ! 3460 PAUSE 0: PAUSE 0: PAUSE 0 !Wait for a key, then remove 3470 NEW !program. ================================================================ This is the other diagonal reflection routine. The explanation is with the other routine. 3499 REM ********Spin \******** ! 3500 PRINT OVER 1;AT 6,20;" !Highlight the function name. " ! 3505 FOR q=0 TO 6: FOR w=0 TO 6 !Reflect. q ! 3510 LET dog=POINT (96+q,24+w): ! PLOT INVERSE NOT POINT (103-w,3 ! -q);96+q,24+w ! 3520 PLOT INVERSE NOT dog;103-w ! 31-q ! 3530 NEXT w: NEXT q ! 3550 PRINT OVER 1;AT 6,20;" !Remove the highlighting. " ! 3560 RETURN !And return. ================================================================ This routine superimposes one character ontop of the one already on the grid. For the XOR part, the routine uses PRINT OVER 1; which prints by doing XOR. For the OR part, the routine goes through every pixel on the left grid and ORs it with the appropriate one on 3599 REM *****Superimpose***** ! 3600 PRINT OVER 1;AT 13,20;" !Highlight the function name. " ! 3610 GO SUB 300 !Get the character. 3620 GO SUB coff: PRINT AT 21,0 !Select XOR or OR. " XOR or OR ...? (X/O)" ! 3625 GO SUB 400: IF q$="O" THEN !Get the key-press and go to the GO TO 3650 !appropriate part. 3630 IF q$<>"X" THEN GO TO 3770 ! 3633 REM ******** XOR ********* ! 3635 PRINT OVER 1;AT 21,2;" " !Highlight 'XOR'. 3640 OVER 1: GO SUB 1500: OVER !Print the character on top of !the small grid using OVER 1. 3645 GOTO 3770 !Jump forward to exit the !routine. 3649 REM ******** OR ********* ! 3650 PRINT OVER 1;AT 21,11;" " !Highlight 'OR'. 3660 PRINT AT 18,13;: GO SUB 15 !Print the character next to the 5 !small grid. 3670 FOR Q=0 TO 7: FOR W=0 TO 7 !Loop round for each row and !each line. 3680 PLOT INVERSE NOT (POINT (9 !Take each pixel and OR it with +W,24+Q) OR POINT (104+W,24+Q)) !the other grid. 96+W,24+Q ! 3690 NEXT W: NEXT Q !Loop back. 3700 PRINT AT 18,13;" " !Remove the second grid. 3770 PRINT OVER 1;AT 13,20;" !Remove the highlighting. " ! 3780 PRINT AT 21,0;" ! " ! 3790 RETURN !And return. ================================================================