1REM +++++++++++++++++++++++++++++++++
2REM ! Program ..... KRYSS.BAS
3REM ! Utg}va 1.1 86-01-27
4REM ! av David Andersson <5201>
5REM ! f|r ABC80 minne 16 Kbytes
6REM ! ins{nt av 5201
7REM +++++++++++++++++++++++++++++++++
10REM ST\D VID L\SANDE AV KORSORD
11REM TYP KRYPTO. (RUTORNA HAR NUMMER
12REM SOM MOTSVARAR EN BOKSTAV)
13REM
140W%=PEEK(590%)
141DEFFNC%(X%,Y%)=PEEK(884%+2%*X%)+SWAP%(PEEK(885%+2%*X%))+Y%
150X9%=22%:Y9%=28%:T9%=32%
160DIMK%(X9%,Y9%),T$(T9%)=1%,T%(T9%)
200E0$=CUR(23%,10%)+CHR$(7%)
480X8%=9%:Y8%=9%
510GOSUB6000
590X0%=1%:Y0%=1%
1000REM MAIN
1010T%=K%(X0%,Y0%)
1020;CUR(0%,0%);:IFT%<0%;'Odef.ruta';ELSEGOSUB2300
1021IFD%=1%;' Riktn.ner}t ';ELSEIFD%=2%;' Riktn.fram}t';ELSE;SPACE$(14%);
1030;CUR(X0%,Y0%);:GETG$:G%=ASC(G$):IFG%>95%ANDG%<127%G%=G%-32%:G$=CHR$(G%)
1031;CUR(23%,10%)SPACE$(29%);
1040IFG%=8%ORG%=1%IFY0%>1%Y0%=Y0%-1%
1050IFG%=9%ORG%=19%IFY0%1%X0%=X0%-1%
1070IFG%=26%IFX0%='0'ANDG$<='9'GOSUB1500:GOTO1000
1090IFG$>='@'ANDG$<='^'GOSUB1600:GOTO1000
1100IFG$=' 'GOSUB1700:GOTO1000
1120IFG$=''ORG$='-'GOSUB1800:GOTO1000
1130IFG%=12%GOSUB2000
1140IFG%=20%GOSUB1900
1141IFG%=13%Y0%=1%:IFX0%'9';E0$'Ange tv} siffror';:RETURN
1540T1%=ASC(G$)*10%-480%+ASC(G1$)-48%
1541IFT1%>T9%;E0$'Kod f}r vara max'T9%;:RETURN
1545IFT%=T1%GOTO1577
1560IFT%>=0%T%(T%)=T%(T%)-1%:IFT%(T%)=0%T$(T%)=''
1570T%(T1%)=T%(T1%)+1%:IFT$(T1%)=''T$(T1%)=' '
1575K%(X0%,Y0%)=T1%
1576;CUR(X0%,Y0%)T$(T1%);:GOSUB2200
1577GOSUB1400
1580RETURN
1600REM BOKSTAV
1610IFT%<0%GOTO1790
1615IFG$=T$(T%)GOTO1656
1620FORT1%=0%TOT9%
1630IFT1%<>T%ANDT$(T1%)=G$;E0$'Bokstaven redan anv{nd';:GOTO1670
1640NEXTT1%
1650T$(T%)=G$
1655GOSUB2400:GOSUB2200
1656GOSUB1400
1660RETURN
1670GOSUB2400
1671IFINP(56%)AND128%GOTO1671
1672G$=T$(K%(X0%,Y0%)):GOSUB2400:GOSUB2200:G$=CHR$(G%)
1673RETURN
1700REM SPACE
1710IFT%<0%GOTO1790
1720IFT$(T%)<>' 'GOTO1650
1730GOSUB1400:RETURN
1790;E0$'Rutan har ingen kod';:RETURN
1800REM BLAFFA
1801IFG$=''T1%=-1%ELSET1%=-2%
1802IFT%=T1%GOSUB1400:RETURN
1810IFT%>=0%T%(T%)=T%(T%)-1%:IFT%(T%)=0%T$(T%)=''
1820K%(X0%,Y0%)=T1%:;CUR(X0%,Y0%)G$;:GOSUB2200:GOSUB1400
1830RETURN
1900REM TRIM AREA
1910IFX0%=X8%ANDY0%=Y8%X8%=X9%:Y8%=Y9%:GOSUB2100:RETURN
1920FORX%=X0%+1%TOX8%:FORY%=1%TOY8%
1930IFK%(X%,Y%)>=0%GOTO1995
1940NEXTY%:NEXTX%
1950FORX%=1%TOX0%:FORY%=Y0%+1%TOY8%
1960IFK%(X%,Y%)>=0%GOTO1995
1970NEXTY%:NEXTX%
1980X8%=X0%:Y8%=Y0%:GOSUB2000
1990RETURN
1995;E0$'Def. rutor blir utanf|r arean';:RETURN
2000REM UPDATE FULL SCREEN
2010;CHR$(12%)CUR(23%,1%)'?=Help';
2020GOSUB2100:GOSUB2200
2030RETURN
2100REM DISPLAY MATRIX
2120FORX%=1%TOX8%:;CUR(X%,1%);:FORY%=1%TOY8%
2130T%=K%(X%,Y%):IFT%>=0%;T$(T%);ELSEIFT%=-1%;'';ELSE;'-';
2150NEXTY%:NEXTX%
2160RETURN
2200REM DISPLAY TABLE
2205T1%=0%
2210FORT%=0%TOT9%
2220IFT$(T%)<>'';CUR(T1%,W%-10%);:GOSUB2300:T1%=T1%+1%
2250IFT1%<=22%NEXTT%
2251FORT1%=T1%TO22%:;CUR(T1%,W%-10%)SPACE$(9%);:NEXTT1%
2290RETURN
2300REM DISPLAY ENTRY
2310;RIGHT$(NUM$(T%+100%),3%)'='T$(T%)' ('RIGHT$(NUM$(T%(T%)),2%)')';:IFT%(T%)<10%;' ';
2320RETURN
2400REM DISPLAY CHANGED CHAR
2410FORX%=1%TOX8%:FORY%=1%TOY8%
2420IFK%(X%,Y%)=T%;CUR(X%,Y%)G$;
2430NEXTY%:NEXTX%
2440RETURN
3000REM HELP
3010;CHR$(12%)'KRYSS, st|d f|r att l|sa krypto korsord'
3015;
3020;'_Tangent_______Funktion_______________'
3030;'CTRL-W,A,S,Z Flyttar mark|ren'
3031;'RETURN,<-,-> Flyttar mark|ren'
3039;
3040;'Siffror(0-9) Definiera kod f|r en ruta'
3041;,'Tv} siffror m}ste anges'
3042;,'t.ex 05 f|r ruta med kod 5'
3043;
3050;'Bokstav(A-\) S{tt bokstav i ruta'
3051;,'Andra rutor med samma kod'
3052;,'{ndras automatiskt'
3053;
3059;'-','S{tt odefinierad ruta'
3060;'CTRL-< ()','S{tt odefinierad ruta'
3090;'CTRL-D','S{tt autom.riktning ner}t'
3100;'CTRL-F','S{tt autom.riktning fram}t'
3110;'CTRL-R','Rita om sk{rmen'
3120;'CTRL-T','[ndra storlek p} krysset'
3121;,'Tryck i nedr.h|rnet=v{xer'
3200;CUR(23%,0%)'Tryck p} en tangent';:GETA$
3210GOSUB2000:RETURN
6000REM CLEAR DATA
6010GOSUB6100:GOSUB6200
6040GOSUB2000
6050RETURN
6100REM CLEAR KRYSS
6110FORX%=1%TOX9%:FORY%=1%TOY9%
6120K%(X%,Y%)=-2%
6130NEXTY%:NEXTX%
6140RETURN
6200REM CLEAR TABELL
6210FORT%=0%TOT9%:T$(T%)='':T%(T%)=0%:NEXTT%
6220RETURN
7000REM SAVE
8000REM LOAD