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