run I > Menu/b Loader for JSW : (!a$(a)=("YES"a)+("NO"a) 2: <23732\,255:23733\,255:32766:0:23693\,71G:23624H\,71G:enter=33792:enter,0 F`drv="0"+23766\:int1=0:0:23734\244int1=1 P0drv<"1"drv>"8"int1=0drv="T" Zint1#:9 ,"b" d 1200 n" 1: DefRoom Room Editor" x " 2: DefSprite Sprite Editor" " 3: JSWMap"  " 5: Load code and data" " 6: Load code"  " 0: Start Game" q$=:q$=""190 Rq$="1"32767,drv:38655:drv=32767:f$="DefRoom":1100L Tq$="2"32767,drv:38655:drv=32767:f$="DefSprite":1100L Qq$="3"32767,drv:38655:drv=32767:f$="JSWMap":1100L q$="4" )q$="5"400:300,:100d q$="6"400:100d q$="0"500  190 ": ,Load all parts 671200:5,0;"Loading...";:300, @f$:f$="*" T91000:a=164@:8;:a:320@ ^b"Sprites0","Sprites128","Objects","Rooms","Room087","Room091","Room094","Room095","Room103+","*" : Load code only ,1200:5,0;"Loading..."; f$="CODE":1000: :  Start Game 21200:enter=0400:500 4" 1: Number of lives [";1+34785;"] " 8" 2: Infinite lives [";a$(35899;=0);"] " 7" 3: Invincability [";a$(37982^=0);"] " &9" 4: Drop any height [";a$(36477}=1);"] " 07" 5: Super jumping [";a$(36358=0);"] " :@" 6: Remove all guardians [";a$(37319Ǒ=201);"] " D," 7: Set start room [";34795;"] " N9" 8: Number of objects [";256-41983;"] " X:" 9: Enable teleport [";a$(34275=10 );"] " ]'" 0: Return to main menu" b!'" Press SPACE to start game" lq$=:q$=""620l vq$=" "enter q$<"0"q$>"9" 620l q$="1"750:510 q$="2"8204:510 q$="3"830>:510 q$="4"860\:510 q$="5"870f:510 q$="6"880p:510 q$="7"890z:510 q$="8"900:510 q$="9"910:510 q$="0"100d : "Number of lives (1-32): ";a -a>0a<33!34785,a-1   b=a  b=ya,n  b=na,y * 4Aa=35899;:y=0:n=535:780 :Infinite lives >2a=37982^:y=0:n=192:780  H2a=37994j:y=0:n=192:780  RCa=384513:y=201:n=202:780 :Invincibility \Ba=36477}:y=1:n=502:780 :Drop any height f@a=36358:y=0:n=60<:780 :Super jumping pFa=37319Ǒ:y=201:n=200:780 :Remove guardians z$"Start room: ";a: 34795,a: 4"Number of objects: ";a:41983,256-a: Ba=34275:y=10 :n=0:780 :Enable teleport :  Load code f$=drv+":"+f$ \f$(11)"1"f$(11)"8"*"m";f$(11);f$(3): %f$(11)="S"1040 f$(3): int1=0 k#9 ;"L";(f$(3))'q$;#2;(q$)':q$""#0;0,0;q$(2);:25: $ *"b": B: LLoad program Mf$=drv+":"+f$ V[f$(11)"1"f$(11)"8"*"m";f$(11);f$(3): `%f$(11)="S"1040 jf$(3): tint1=0 ~k#9 ;"L";(f$(3))'q$;#2;(q$)':q$""#0;0,0;q$(2);:25: *"b": : I:3,9 ;"Jet Set Willy";4,9 ;"============="'': ]DefRoom 44X4 > DefRoom 1.24  Define rooms for Jet Set Willy (C)1985-2003 J.G.Harston 8-:"23693","71":"23624","71":"38655":&9700-1 #+z=-:l="1":bs="8":sp=" ":bw="71" (Edrv="0"+"23766":int1=z:z:"23734"ɰ"244"int1=l -*drv<"1"drv>"8"int1=zdrv="T" 2int1#:9 ,"b" 7)sflg=z:"23675","200":"23676","91" <#kbd=z:joy=z:31"`"q$=(q$-" ")  Wait for a key: l:205:q$=""key q$=crq$=""  4q$=:q$=crq$=12 (q$" "q$127) Qq$bsq$11 q$=(232+q$-(l(q$>bs))+(3(q$=9 ))): yq$>128qq=l+((q$-194)(q$>194))-20*(q$>205):q$=(127+"|*][ *}{\~")(qqqq): joy320@ Joystick: qq=31:qq=z330J qq=lq$=243: qq=l+lq$=240: qq=4q$=241: "qq=bsq$=242: ,qq=16q$="0": @Serial port: Jint1=z380| K q$=#9 :q$=""380| Tq$135q$139q$=((104h+q$)+(2(q$=137))-(l(q$>137))-(191(q$=135))): ^ rExternal keyboard: | kbd=z "l:qq=253:qq=255 qq=127q$=12 : qq=zq$=127: qq=26q$=242: qq=25q$=241: qq=21q$=240: qq=11 q$=243: qq=12 q$="0": 1qq>176qq<188q$=(qq-128):  q$=qq:  Edit name 116,xc;l;"";:key:16,xc;l;""; !q$=""yc=yc+l:xc=z:550& %q$>230900:550& C16,xc;q$;:st+128+xc,q$:xc=xc+l:xc>31xc=z &yc=15edit 0yc=172150f : 510 NRoom Editing loop X2xm=31:ym=23:yc>15510 b4attr=(yc,xc):l;9 ;bs;bs;bs;yc,xc;"+"; l7key:23693\,attr:l;yc,xc;"+";:23693\,bw v q$>"0"q$<"5"810*:edit 0q$>230(q$>"4"q$<"9")900:edit  q$="0"q$=" "990:edit up q$="R"1050:edit &q$="G"2700 :1070.:edit .q$="C"2450 :sflg=l:1070.:edit q$="H"3000 :edit .q$="E"1100L:sflg=l:1060$:edit q$="M"menu q$="O"2050:edit q$="D"21004:edit q$=""yc=yc+l:xc=z  edit  Select a block *,#z;z,10 +2*blk;" ";:blk=q$-l >Display status line Hq=(st+222) Iqbsq=q-bs:841I M21,24;"Border=";q;z,z;#z;z,10 +2*blk;"^";z,sp-l-l-obj-(sp*bs-41983);" ";obj;"/";sp*bs-41983; R#z;l,24;"H: Help";: z Move cursor $q$>239q$=(q$-187) 2xc=xc+(q$="8")-(q$="5"):yc=yc+(q$="6")-(q$="7")  xc>xmxc=z  xcymyc=z  $Place a block, uses screen for AND 023693\,a(blk+l):yc,xc;(144+blk); aof=xc-4*(xc/4):of=of(of<4):addr=st+(xc/4)+yc*bs:22431W,addr >z;l;248+of*2,bs:z;l;249+of*2,bs Cvl=(22431W)+blk*(2^((3-of)*2)):addr,vl: Select a room 8yc=21:yc,z;"Room: ";:q$="":2250:r=k$ $Gxc=z:yc=z:st=49152+sp*bs*r:st>65535st=st-32768 ) 1340< .1400x:840H: BDefine character L$;:#z;"Define which char.? ";bs; V key:q$<"1"q$>"7"1110V `#z;q$;:blk=q$-l j;:f=z15:f,z,,:f:12 ,l+l;"Char ";blk+l;"=";:23693\,a(blk+l):(144+blk):23693\,bw:" Attr=";a(blk+l):1230 t$xm=7:ym=7:xc=z:yc=z ~yc+l,xc+l;l;"+"; key:yc+l,xc+l;l;"+"; q$=""1290  q$="0"l;xc+72H,79O-yc:yc+l,xc+l;(""Ʃ(72H+xc,79O-yc));(" "é(72H+xc,79O-yc));:1150~ q$="A"q$="a"1260 900:1150~ Display char jq=z7:w=z7:q+l,w+l;(""Ʃ(72H+w,79O-q));(" "é(72H+w,79O-q));:w:q G7,103g:65A,z:z,65A:-65A,z:z,-65A: Set attribute Zq$="":yc=10 :yc,l;"Attr=";:2250:att=k$:att2551260 913 ,7;att;" ";10 ,l,:a(blk+l)=att: Store character  0blk<6st+160+blk*9 ,a(blk+l) \f=z7:st+160+blk*9 +l+f+10 *(blk=6),(18569H+sp*bs*f):f blk>3blk=z ( <Read char defs FCq=z6:a(q+l)=(st+160+q*9 +9 *(q=6)) PSw=z7:w+(144+q),(st+160+q*9 +l+w+10 *(q=6)) Zw:q:a(7)=bw: nDisplay room x/f=z3:base+f,a(f+l):f:base+4,r -z,z;:obj=disp:254,(st+222)  23693\,bw:23624H\,bw &off=z:1500:off=l:1500 @q=z6:21,10 +2*q;:23693\,a(q+l) 4(144+q);:q:23693\,bw:sflgsflg=z: v17,z;"Left :";(st+233),'"Right:";(st+234),'"Up :";(st+235),'"Down :";(st+236),' ?"Room=";r;" ";:23693\,bw:q=z3:1600@:q: Display conveyor/slope Tx=(st+215+4*off):y=bs*((st+216+4*off)=95_)+(x/sp) 6x=sp*(x/sp-(x/sp)):num=(st+217+4*off) 0inc=(st+214+4*off):inc=zinc=-l 2q=lnum:23693\,(st+205-9 *off) 0x>31y>15q=200:1560 9y,x;(149-off):y=y-off:x=x+inc*(off=l)+(off=z) q: 6!Display room names connected to @F17+q,10 ;:st1=49152+sp*bs*(st+233+q) JDst1>65535st1=st1-32768:1610J T^flag=10 :w=128159:char=(st1+w):char=spflag=10 1660| ^flag>311660| h(char>127charf$(ll)"1"f$(ll)"8"*"m";f$(ll);f$(3)st,len: f$(ll)="S"1770 f$(3)st,len: int1=z Q#9 ;"S";(f$(3))'a$;#l+l;(a$)':a$""#z;z,z;a$(l+l);:25: *"b"st,len:  a$="Load":1900l:q$=""  1800:q$"A"1810  a$="":f$:f$="*"  !f$(l+ll+l)":"f$=drv+":"+f$ 1810:1804  b"Sprites0","Sprites128","Objects","Rooms","Room087","Room091","Room094","Room095","Room103+","*" ?a$=""f$(ll)"1"f$(ll)"8"*"m";f$(ll);f$(3): :f$(ll)"1"f$(ll)"8"*"m";f$(ll);f$(3)st: &f$(ll)="S"1860D 0:a$=""f$(3): :f$(3)st: Dint1=z NQ#9 ;"L";(f$(3))'q$;#l+l;(q$)':q$""#z;z,z;q$(l+l);:25: Xa$=""*"b": b *"b"st: l['"Enter file type to ";a$;":"'" (C)ode, (R)ooms, (S)prites"'" (O)bjects, (G)uardian data" qa$="Load"" (A)ll" vFkey:up:q$"C"q$"R"q$"S"q$"O"q$"G"q$"A"q$""1910v wl:q$=""q$="A" {q$="C"k$="code" |q$="R"k$="rooms" }q$="S"k$="sprites" ~q$="O"k$="objects" q$="G"k$="guardians" ?z,z;(a$);" ";(k$);":"'"Enter filename: ";f$:f$=""q$="": !f$(l+ll+l)":"f$=drv+":"+f$ q$="O"a$="41983" q$="C""Start address: ";a$ 2q$="R"q$="S"q$="G"(i$);(k$(̱k$-l));": ";a$ a$<"0"a$":" st=a$ Dq$="R"st=st*sp*bs+49152:st>65535st=st-32768 q$="S"st=st*sp+39680 q$="G"st=st*bs+40960   "Enter drive/device: ";q$:up q$<"1"q$>"Z"  drv=q$: q=41983-l:qq=41983:w=q H q=bs*sp-l R(41984+q)=r+128*(ycbs)ƾ(42240+q)=xc+sp*(yc-bs*(ycbs))41984+q,(41984+w):42240+q,(42240+w):41983,w+l:yc,xc;144;:obj=obj-l:840H \q=q+l:2120H \Alter room connections f.l;yc,6;"":key:l;yc,6;""; pq$=""yc=yc+l:2190 z&q$>230900:2190 Wq$"0"q$"9"2250:st+216+yc,k$:q=yc-17:1600@:2150f yc<17xc=z:510 yc>202350.  2150f INPUT number function  xc=6 k$=q$:yc,xc;q$;" " yc,xc;k$;""; %key:q$=12 q$=""2310 q$<"0"q$>"9"2270  k$=3l/l,l:2260 k$=k$+q$:2260 q$=""k$""yc,xc;k$;" ";: -q$=12 k$""k$=k$(̱k$-l):bs;" ";  2260 ./21,31;l;"";bs;:Border colour 8Tkey:q$"0"q$<"8"st+222,q$:21,31;l;q$;bs;:254,q$ B%l;"";z,z;:xc=z:yc=z:600X VDisplay slope/conv info `Tx=(st+215+4*off):y=bs*((st+216+4*off)=95_)+(x/sp) j,x=sp*(x/sp-(x/sp)):" x: ";x'" y: ";y t"num.: ";(st+217+4*off)'"dir.: ";("left "ƾ(st+214+4*off)=z);("right"ƾ(st+214+4*off)=l)'': 2yc=l:f=z15:f,z,,:f:z,z;"Conveyors:" 8off=z:2400` :"Slopes:":off=l:2400` :off=z yc,6;l;"";bs; +key:(q$=""(q$"0"q$"9"))2480 %l;"";:q$=""yc=yc+l:2570 2250:vl=k$ @yc=3yc=9 st+217+4*off,vl:2470 yc=l+lyc=bs2540 ^x=(st+215+4*off):y=(x/sp):x=k$:st+215+4*off,x+y*sp:2470 4x=(st+215+4*off):x=sp*(x/sp-(x/sp)) `y=k$:st+216+4*off,94^:y>7st+216+4*off,95_:y=y-bs -st+215+4*off,x+y*sp:2470 $yc=4yc=10 2600( off=l+lxc=z:yc=z:  2470 (9yc,6;l;"":key:up:yc,6;l;"" F5q$"L"q$"R"yc=yc+3:off=off+l:2580 PTst+214+4*off,q$="R":q$="p":6*off+l,z;:2400` :2630F E:"Guardians:","Extra data:"'':xc=z:f=240255:xc=xc (32 +xc*30);(st+f),f-26+(10 (f>250));"=";(st+f-26+(10 (f>250))):f:yc=l+l:xc=6 yc,xc;"";bs; &key:q$=""" ":yc=yc+l:2760 q$<"0"q$>"9"2730 qq$:2255:st+238+yc-((26-(10 (yc>12 )))xc>16),k$:yc=yc+l:yc-l,xc;k$;" " yc<182720 -xc=xc+yc+l:yc=l+l:xc<302720 yc=z:xc=z: T4:"Catalog:":drv>"0"drv<"9"ϰdrv:2970 ^6drv="S"#9 ;"C"'a$:l,z;a$(l+l):2970 hq=z r2bc=info:bc=0q=(q+l)(q"0"drv<"9"*"m";drv-"0";f$ &drv"S"f$ 0int1=z :E#9 ;"L";f$'a$;#l+l;(a$)':a$""#z;z,z;a$(l+l);:25: D*"b"