Crossword

Products: Crossword
Date: 1982
Type: Program
Platform(s): TS 1000

This is a quickload program. It is comprised of a short speed loader in normal ZX81/TS1000 format followed by the actual program in a format similar to the Spectrum and TS2068 tape format.

  • ZWord.z81 is an EightyOne emulator snapshot of the running program.
  • ZWord.wav is the file directly from the tape with fades and dropouts corrected.
  • ZWord1.wav has been edited to remove noise and provide more of a square wave signal.
  • ZWord.b81 is an EightyOne emulator text listing.

Content

Appears On

Related Products

Create and play your own crosswords.

Related Articles

Related Content

Image Gallery

Crossword

Source Code

   5 REM **%C%R%O%S%S%W%O%R%D**
   6 REM COPYRIGHT: C.J.JONES
   7 REM MARCH 1982
  10 IF INKEY$<>"" THEN GOTO 10
  30 IF INKEY$="" THEN GOTO 30
  35 LET W=(CODE INKEY$)-28
  40 RETURN 
  50 REM DRAW DIAGRAM
  60 PRINT AT 1,7;"\ .";AT 2+A,7;"\ '"
  70 FOR X=8 TO A+7
  80 PRINT AT 1,X;"\.."
  90 PRINT AT 2+A,X;"\''"
 100 NEXT X
 105 PRINT AT 1,A+8;"\. ";AT 2+A,A+8;"\' "
 110 FOR X=2 TO A+1
 120 PRINT AT X,7;"\ :";AT X,A+8;"\: "
 130 NEXT X
 140 REM COORDINATES
 150 FOR X=8 TO A+7
 160 PRINT AT 0,X;CHR$ (X+30)
 170 NEXT X
 180 FOR X=1 TO A
 190 PRINT AT X+1,6;CHR$ (X+28)
 200 NEXT X
 210 RETURN 
 220 REM DRAW BLANKS
 230 FOR X=1 TO A
 240 FOR Y=1 TO A
 250 IF A$(X,Y)="% " THEN PRINT AT X+1,Y+7;A$(X,Y)
 260 NEXT Y
 270 NEXT X
 280 RETURN 
 290 REM GRID SIZE
 300 CLS 
 305 PRINT "ENTER REFERENCE (E.G. BOOK,UNIT,NEWSPAPER,DATE)"
 306 INPUT R$
 310 PRINT AT 5,0;R$;AT 8,0;"ENTER GRID SIZE"
 320 INPUT A
 330 IF (A<5 OR A>15) THEN GOTO 310
 333 CLS 
 335 DIM A$(A,A)
 340 RETURN 
 350 REM ENTER COMPLETE DIAGRAM
 360 FOR X=1 TO A
 370 PRINT AT 21,0;"                               ";AT 21,0;"ENTER LINE ";X
 380 INPUT A$(X)
 390 FOR Y=1 TO A
 400 IF A$(X,Y)=" " THEN LET A$(X,Y)="% "
 405 NEXT Y
 410 PRINT AT X+1,8;A$(X)
 420 PRINT AT 21,0;"IS THIS OK?(Y/N)"
 430 GOSUB 10
 450 IF W=23 THEN GOTO 370
 460 IF W<>34 THEN GOTO 430
 470 NEXT X
 480 RETURN 
 481 LET AA=AA+1
 482 LET P(AA,1)=X
 483 LET P(AA,2)=Y
 484 RETURN 
 486 LET DA=DA+1
 487 LET Q(DA,1)=X
 488 LET Q(DA,2)=Y
 489 RETURN 
 490 REM PRINT ALL DATA
 495 CLS 
 496 GOSUB 50
 500 FOR X=1 TO A
 510 PRINT AT X+1,8;A$(X)
 520 NEXT X
 525 PRINT AT 18,0;R$;AT 21,11;"M = MENU"
 526 IF INKEY$<>"M" THEN GOTO 526
 530 GOTO 5000
 550 REM COUNT ACROSS ANS
 552 PRINT AT 18,0;"PLEASE WAIT"
 553 PRINT AT 21,0;"CLUE WRITING COMING UP   "
 555 DIM P(20,2)
 560 LET AA=0
 570 FOR X=1 TO A
 580 FOR Y=1 TO (A-1)
 590 IF Y=1 THEN GOTO 610
 600 IF A$(X,Y-1)<>"% " THEN GOTO 620
 610 IF (A$(X,Y)<>"% " AND A$(X,Y+1)<>"% ") THEN GOSUB 481
 620 NEXT Y
 630 NEXT X
 640 REM COUNT DOWN ANS
 650 LET DA=0
 655 DIM Q(20,2)
 660 LET DA=0
 670 FOR Y=1 TO A
 680 FOR X=1 TO A-1
 690 IF X=1 THEN GOTO 710
 700 IF A$(X-1,Y)<>"% " THEN GOTO 720
 710 IF (A$(X,Y)<>"% " AND A$(X+1,Y)<>"% ") THEN GOSUB 486
 720 NEXT X
 730 NEXT Y
 740 RETURN 
 750 REM WRITE ACROSS CLUES
 760 DIM P$(AA,64)
 765 DIM X$(AA,7)
 770 FOR X=1 TO AA
 780 FOR Y=P(X,2) TO A
 790 IF Y=A THEN GOTO 810
 795 IF A$(P(X,1),Y+1)="% " THEN GOTO 810
 800 NEXT Y
 810 PRINT AT 18,0;"ENTER CLUE FOR: ";A$(P(X,1),P(X,2) TO Y) 
 820 INPUT P$(X)
 830 PRINT AT 19,0;P$(X)
 840 PRINT AT 18,0;"IS THIS OK?(Y/N)           "
 850 GOSUB 10
 870 IF INKEY$=CHR$ 51 THEN GOTO 810
 880 IF INKEY$<>CHR$ 62 THEN GOTO 840
 890 PRINT AT 18,0;"ENTER NO. OF LETTERS"
 900 INPUT X$(X)
 905 GOSUB 1300
 910 NEXT X
 920 REM WRITE DOWN CLUES
 930 DIM Q$(DA,64)
 940 DIM Y$(DA,7)
 950 FOR Y=1 TO DA
 960 FOR X=Q(Y,1) TO A
 970 IF X=A THEN GOTO 1000
 980 IF A$(X+1,Q(Y,2))="% " THEN GOTO 1000
 990 NEXT X
\n1000 PRINT AT 18,0;"ENTER CLUE FOR: ";
\n1010 FOR Z=Q(Y,1) TO X
\n1020 PRINT A$(Z,Q(Y,2));
\n1030 NEXT Z
\n1040 INPUT Q$(Y)
\n1050 PRINT AT 19,0;Q$(Y)
\n1060 PRINT AT 18,0;"IS THIS OK?(Y/N)              "
\n1070 GOSUB 10
\n1090 IF INKEY$=CHR$ 51 THEN GOTO 1000
\n1100 IF INKEY$<>CHR$ 62 THEN GOTO 1060
\n1120 PRINT AT 18,0;"ENTER NO.OF LETTERS"
\n1130 INPUT Y$(Y)
\n1135 GOSUB 1300
\n1140 NEXT Y
\n1150 RETURN 
\n1160 REM FIND ACROSS CLUE
\n1170 FOR J=1 TO AA
\n1180 IF (P(J,1)=M AND P(J,2)=N) THEN GOTO 1200
\n1190 NEXT J
\n1195 IF (P(J,1)<>M OR P(J,2)<>N) THEN GOTO 3250
\n1200 PRINT AT 18,0;P$(J)
\n1210 PRINT "LETTERS: ";X$(J);"       "
\n1220 RETURN 
\n1230 REM FIND DOWN CLUE
\n1240 FOR J=1 TO DA
\n1250 IF (Q(J,1)=M AND Q(J,2)=N) THEN GOTO 1260
\n1255 NEXT J
\n1256 IF (Q(J,1)<>M OR Q(J,2)<>N) THEN GOTO 3250
\n1260 PRINT AT 18,0;Q$(J)
\n1270 PRINT "LETTERS: ";Y$(J);"       "
\n1280 RETURN 
\n1300 REM BLANK LAST LINES
\n1310 FOR F=18 TO 21
\n1320 PRINT AT F,0;"                                "
\n1330 NEXT F
\n1340 RETURN 
\n1350 FOR X=1 TO LEN (U$)
\n1351 IF N-1+X>A THEN GOTO 3380
\n1352 IF U$(X)<>A$(M,N-1+X) THEN GOTO 3380
\n1353 NEXT X
\n1355 GOSUB 1300
\n1360 FOR X=1 TO LEN (U$)
\n1370 IF N-1+X>A THEN GOTO 1400
\n1371 IF A$(M,N-1+X)="% " THEN GOTO 1400
\n1380 PRINT AT M+1,N+6+X;U$(X)
\n1390 NEXT X
\n1400 RETURN 
\n1410 FOR X=1 TO LEN (U$)
\n1411 IF M-1+X>A THEN GOTO 3380
\n1412 IF U$(X)<>A$(M-1+X,N) THEN GOTO 3380
\n1413 NEXT X
\n1415 GOSUB 1300
\n1420 FOR X=1 TO LEN (U$)
\n1430 IF M+X-1>A THEN GOTO 1460
\n1431 IF A$(M+X-1,N)="% " THEN GOTO 1460
\n1440 PRINT AT M+X,N+7;U$(X)
\n1450 NEXT X
\n1460 RETURN 
\n1500 GOSUB 1300
\n1505 IF IK=38 THEN GOSUB 1600
\n1510 IF IK=41 THEN GOSUB 1700
\n1520 GOTO 3250
\n1600 FOR X=N TO A
\n1610 PRINT AT M+1,X+7;A$(M,X)
\n1620 IF A$(M,X)="% " THEN GOTO 1640
\n1630 NEXT X
\n1640 RETURN 
\n1700 FOR X=M TO A
\n1710 PRINT AT X+1,N+7;A$(X,N)
\n1720 IF A$(X,N)="% " THEN GOTO 1740
\n1730 NEXT X
\n1740 RETURN 
\n2000 PRINT AT 21,0;"ENTER ANSWER                    "
\n2010 INPUT U$
\n2020 IF IK=38 THEN GOSUB 1350
\n2030 IF IK=41 THEN GOSUB 1410
\n2040 GOTO 3250
\n2500 CLS 
\n2501 PRINT AT 11,0;"YOU WANT TO WRITE A NEW PUZZLE"
\n2502 PRINT AT 13,5;"IS THAT RIGHT? (Y/N)"
\n2503 GOSUB 10
\n2505 IF INKEY$<>CHR$ 62 THEN GOTO 5000
\n2510 GOSUB 290
\n2520 GOSUB 50
\n2530 GOSUB 350
\n2540 GOSUB 550
\n2545 GOSUB 1300
\n2550 GOSUB 750
\n2560 GOTO 5000
\n3200 CLS 
\n3201 PRINT AT 19,0;R$
\n3203 GOSUB 50
\n3210 GOSUB 220
\n3250 GOSUB 1300
\n3260 PRINT AT 14,26;"      ";AT 15,26;"      "
\n3265 PRINT AT 18,0;"ACROSS OR DOWN CLUE?(A/D)       X = EXIT"
\n3270 GOSUB 30
\n3280 IF W=33 THEN GOTO 5000
\n3285 LET IK=W+28
\n3290 IF IK<>38 AND IK<>41 THEN GOTO 3260
\n3291 IF IK=38 THEN PRINT AT 14,26;"%A%C%R%O%S%S"
\n3292 IF IK=41 THEN PRINT AT 14,26;"%D%O%W%N"
\n3300 PRINT AT 19,0;"          ";AT 18,0;"LINE NUMBER?                    "
\n3301 GOSUB 10
\n3310 LET M=W
\n3311 IF (M<1 OR M>A) THEN GOTO 3300
\n3315 PRINT AT 15,26;CHR$ (M+28);","
\n3320 PRINT AT 18,0;"COLUMN LETTER?        "
\n3321 GOSUB 10
\n3340 LET N=W-9
\n3345 GOSUB 1300
\n3350 IF (N<1 OR N>A) THEN GOTO 3320
\n3355 PRINT AT 15,28;CHR$ (N+37)
\n3360 IF IK=38 THEN GOSUB 1160
\n3370 IF IK=41 THEN GOSUB 1230
\n3380 PRINT AT 21,0;"% A = ANSWER% B = BACK% C = CHEAT% "
\n3390 GOSUB 10
\n3400 IF W=10 THEN GOTO 2000
\n3405 IF W=12 THEN GOTO 1500
\n3410 IF W<>11 THEN GOTO 3380
\n3420 GOTO 3250
\n4950 CLS 
\n4960 PRINT "START TAPE AND THEN PRESS S"
\n4965 PRINT AT 5,0;"M = MENU"
\n4970 GOSUB 10
\n4976 IF INKEY$=CHR$ 50 THEN GOTO 5000
\n4980 IF INKEY$<>CHR$ 56 THEN GOTO 4970
\n4990 SAVE "XWOR%D"
\n4995 SLOW 
\n5000 CLS 
\n5010 PRINT AT 3,4;"% W% "
\n5020 PRINT AT 4,3;"CROSS      (C) C. JONES"
\n5030 PRINT AT 5,4;"% R% "
\n5040 PRINT AT 6,5;"DO YOU WANT TO...."
\n5050 PRINT AT 8,5;"1 - SOLVE A PUZZLE?"
\n5060 PRINT AT 10,5;"2 - SAVE A PUZZLE?"
\n5070 PRINT AT 12,5;"3 - WRITE A NEW PUZZLE?"
\n5080 PRINT AT 14,5;"4 - SEE THE ANSWERS?"
\n5085 GOSUB 10
\n5110 IF W=1 THEN GOTO 3200
\n5120 IF W=2 THEN GOTO 4950
\n5130 IF W=3 THEN GOTO 2500
\n5140 IF W=4 THEN GOTO 490
\n5150 GOTO 5085

People

No people associated with this content.

Scroll to Top