:`Q<_t1*[|~B~|<B888@b@B88@888B D@@|R|BD< >>>>>| x88@J@|D< >>>>>@ @@F@DDBD @ SetExec  Set exec address : (@ș "OS_GetEnv" A$:A$=A$,1+A$," ",1+A$," ",1+A$," ")))) 25A%=A$+" "," "):InFile$=A$,A%-1):Addr$=A$,A%+1) ": F(ș "OS_File",3,InFile$,,("&"+Addr$) P ---,,,------,,-,,--,,$,,$$,,,,-%,,&-,,,%--$$,,,$,$,,,,,,,-../Ч////////ŧ/Ч///X/'XX//ЧЧЧ//ЧY[[[[[[[[[[[[[Z[[Z':ZYZZZZ[ZY;X//.&.///9/'/.'.9.&.,$,$,%$-9'.&,.:.8,&9.8&.,$'--$--%.'/.:/'/'/-%,$%&-,,,'-%,-8//.9'-&',,-%--,$%$$$,$-'--.-&,-,,,------,%--,,,,,,$,,,,$,,,$,.&$,.&-,,,,,_c7BASIC -quit ^c&3c000 0.$.Library.setexec" rooms 3c000K3xM3\c_c ASI7BASIC -quit "ADFS::A5000.$.Library.setexec" rooms 3c000K3xM3\c_c ASI7BASIC -quit "ADFS::A5000.$.Library.setexec" rooms 3cKcPTc&oom\# K#(#  rooms3cĨ>:/s`ȈDTLC\ v&D`&\6>:tHvt|:=t;`:/r`>:366:ttO<t~&}3vL>:u WP-[66`>:(0 Dfile:/Net::Software/$/JSW/JGH/Docs/Patch.htmJSW Patches - MDFS::Software.$.JSWar file:/Net::Software/$/JSW/JGH/Docs/Patch.htmJSW Patches - MDFS::Software.$.JSWtt MDFS::Software.JSW.JGH.Patch/htmSearchBugfixesandpatchestotheJSW48GameEngineRemovingInterface1pausecrashIfanInterface1isconnected,whenthegamepausesitcrashes.ThisisduetoanLDIRclearingtheBCregister,andthenlatercodeassumesitstillholdstheaddressofthekeyboardandtriestoINA,(C)fromit.TheresultantIN0crashestheInterface1,asshowninthefollowingdisassembly.8B00: INC HL ; Increment pointer to attributes LD A,H ; Get high byte CP &5B ; Has it passed end of screen at &5AFF? JR NZ,&8AF3 ; Loop for 24 screen lines RET8B07: LD HL,&9A00 ; Restore attributes of bottom third LD DE,&5A00 LD BC,&0100 ; Copy from &9A00 to &5A00 LDIR ; BC now holds zero! LD A,(&80DE) ; Get border colour OUT (&FE),A ; Set border8B17: LD A,(&85D1) ; Get a variable CP &FF ; Is it &FF - lost a life? JP Z,&8C01 ; Jump to lose a life LD B,&BF ; BC now holds &BF00 instead of &BFFE LD HL,&85E2 IN A,(C) ; Read from port 0 and crashManypublishedbugfixespatchthecodewithacallelsewheretosettheregisterscorrectly.Unfortunately,notonlyisthatnotneccessary,mostofthepublishedbugfixesactuallycrashthegameinadifferentway.AsAndrewBroadhaspointedout,manybugfixesputinacallto&FFF0.Unfortunately,thatisthedataareaforroom63,andifroom63iseverused,iteithercorruptstheroomdataorcorruptsthepausebugfix.ThiscanbefixedwithPOKE35587,90:POKE35600,14:POKE35601,254.Original code: Changed to:8B02 FE 5B CP &5B 8B02 FE 5A CP &5A8B10 ED B0 LDIR 8B10 0E FE LD C,&FERemovingtheAtticbugTheatticbugiscausebyafaultyarrowintheattic'sguardiandata.Thiscausesthearrowtoflythroughthegamecodeanddatainsteadofacrossthescreen,resultingincorruptdatainotherrooms.Thefaultyarrowcanberemovedwith:POKE59902,255.ReleasingpasswordcodespaceReleasingthememoryusedbythestart-uppasswordprotectionallowsthatmemorytobeusedforextracodeandextraroomdefinitions.POKE33797,135:POKE33800,202willdothis.Original code: Changed to:8404 36 86 LD (HL),&86 8404 36 87 LD (HL),&878406 2B DEC HL 8406 2B DEC HL8407 36 9F LD (HL),&9F 8407 36 CA LD (HL),&CAThisreleasesthefollowingcodespace:AddressPrevioususeNewuse&858B-&85CApasswordtext&869F-&87C9passwordcode&9B00-&9BFFspriteandscreendatabecomesroom91&9E00-&9EFFpassworddatabecomesroom943YXYYXYYZZYXZYYZZYZZZZZZYYY\YYYYYYY;XX3X'0$%&2'1&&8%0%0$%0%$$%$$$0$$$$$$$$$$$$$$0%8&&1'2.0-:;X:'YYYZY;Y;%$$$3_^Y3X20&3][]Z\3'%:X[^[__[__^[Y%%$$&%-.%---&.'//.-,,../&,-&8....'-,,-,-Z[[^_[_[[[[_[^^[[][[^[^[[[D A,(&85D1) ; Get a variable CP &FF ; Is it &FF - lost a life? JP Z,&8C01 ; Jump to lose a life LD B,&BF ; BC now holds &BF00 instead of &BFFE LD HL,&85E2 IN A,(C) ; Read from port 0 and crashManypublishedbugfixespatchthecodewithacallelsewheretosettheregisterscorrectly.Unfortunately,notonlyisthatnotneccessary,mostofthepublishedbugfixesactuallycrashthegameinadifferentway.AsAndrewBroadhaspointedout,manybugfixesputinacallto&FFF0.Unfortunately,thatisthedataareaforroom63,andifroom63iseverused,iteithercorruptstheroomdataorcorruptsthepausebugfix.ThiscanbefixedwithPOKE35587,90:POKE35600,14:POKE35601,254.Original code: Changed to:8B02 FE 5B CP &5B 8B02 FE 5A CP &5A8B10 ED B0 LDIR 8B10 0E FE LD C,&FERemovingtheAtticbugTheatticbugiscausebyafaultyarrowintheattic'sguardiandata.Thiscausesthearrowtoflythroughthegamecodeanddatainsteadofacrossthescreen,resultingincorruptdatainotherrooms.Thefaultyarrowcanberemovedwith:POKE59902,255.ReleasingpasswordcodespaceReleasingthememoryusedbythestart-uppasswordprotectionallowsthatmemorytobeusedforextracodeandextraroomdefinitions.POKE33797,135:POKE33800,202willdothis.Original code: Changed to:8404 36 86 LD (HL),&86 8404 36 87 LD (HL),&878406 2B DEC HL 8406 2B DEC HL8407 36 9F LD (HL),&9F 8407 36 CA LD (HL),&CAThisreleasesthefollowingcodespace:AddressPrevioususeNewuse&858B-&85CApasswordtext&869F-&87C9passwordcode&9B00-&9BFFspriteandscreendatabecomesroom91&9E00-&9EFFpassword`abcdefg ` a b c d e f g@`@a@b@c@d@e@f@g```a`b`c`d`e`f`g`abcdefg`abcdefg`abcdefg`abcdefghijklmno h i j k l m n o@h@i@j@k@l@m@n@o`h`i`j`k`l`m`n`ohijklmnohijklmnohijklmnohijklmno![6+61[>ɖ!AIR+++++ Press ENTER to Start +++++ JET-SET WILLY by Matthew Smith  1984 SOFTWARE PROJECTS Ltd . . . . .Guide Willy to collect all the items around the house before Midnight so Maria will let you get to your bed. . . . . . .+++++ Press ENTER to Start +++++Items collected 000 Time 00:00 mGameOver000 7:00a 7:00aEnter Code at grid location Sorry, try code at location ]Q<3Q<3Q<3Q<3Q<3Q<3Q<3Q<3L<3L<3L9-L9-Q@-Q<3Q<6[@6fQ2̅>2υ>!2 !]"Ӆ!|60#60#60&:o2ޅ, !!@@6!!`ZaZ6F!T`P ̀X(F(B (>-(:$(6()(,((>%{O!1 B@(H͛zZDX >2΅!͢2!`ZaZ6O:!T_`P ̀:2ޖ :<2 !!Z: g.!>n˽&)))Nq##= !υׅ3!PP6! P̀!T`P ̀:ހy2օí:̅!PG:`_V##͋!^\!p`:߅Ӎ:υ԰:߅ȕ:߅̄4;ѓ!`@:߅!҅w:ͅ(=2ͅ8!\\w!\X!yP̀!|pP̀:˅<2˅ Y!4~: K604~6 =60~1 4~3 (~pʇ6 616p4~: 6061x_xʇ:<2( x(Ix ,  : !X~~W~渲w#|Z !Z:ހ:х!x( F ~wˆN 42:<2~_!_:̅DW:ހZ Z xO—W: —x/2 : ʭ: ­:υ­:_!xݾ(ʭݾʭ2íxݾ(ʭݾʭ2í:<2í>G!XXw_/WK B {=? !̅~J5!ׅυ!@@62@!HV`!HV:O o g@V:/_@C !XX: Gw2Y2Y2Y2Y:2 !t@̀!x@̀y@2X<@2X<@2X<@2X<@2X<@2X<@2X<@2X  ʇk!^>p2]K!_>x2]Y~!6K~## M!!^~~~~#}(:ـ( *׀G:̀w#:݀*ۀ:ڀ_:݀G:ĀwOƠ_w#:օ=Ԏ:х S:Յ!υwҰ͜:ʼ#ʼ:Յ<2ՅD<W :ހB :Յʰ( ¼:υ %*Ӆ@LҔ:(#:( :+ԎԎ:хʼ!Ѕˎ:хʶ< > 2хW :ހB :υ2υo\g:Ӆo"Ӆ>2х>2х:υ2υ͜>2х!Ѕˎ:օ=(:х ҷ2х:̀(# :ր_x _:߅_x_x_x_x_:΅( x/_{**(2{(ٯ2:ЅO!! ~2Ѕ~x xG(:΅(6xg(-:߅O &2Յ2<2х:օ= >2օ:υ2υ!Ѕ:Ѕ:օ=:ЅB:҅(=2҅:х $*Ӆ:ڀ=_:Ā  :ڀ *Ӆ}ʊ + ::υ)G( :ȷRR"Ӆx2υ>2҅:҅(<2҅:х !*Ӆ:ڀ=_:Ā  :ڀ(*Ӆ ##}ʞ ::υ)G( :ȷR:R+"Ӆ2҅x2υ>2х!~ʶ3~( ~(01 +(0"~ 0 >0wݾ¶~wö~ #~ w`8o~ݾ(5`6Z~ w0L~ݾ(4=6a7~w(~ w~݆wݾ0 ݾ(0~w~DwĐ!~ʳʤ(a^o~o{\g~8GO~8Oq#qq#q~(q#q~ݦݶ_V&n~#foV·ó~ 5,4~ :ހA ó³^݆o{\g6~ 5~wg%~w$~ݦ·6$~wó!6 ~w6~݆of:օ ~(B~ 2օ ݾ 3 F(-F~88 @8C҅}2υ͜~w~ ݆o&^˽~('G~(F(5~(4~ ݾ(4 ö:օ( <2օ D F(>:ЅO(7ݮ=!օw:O: ~ 06 ~ݾ8(6:υ2υ2х‘w:w#ww#ww#w&:ov(w%% p~\W$^$ =!|4~: 60+:ހ_>G{ :ޅ<2ޅ >2߅˶":˅Oz`W!͛, A(w,A(w-$| |g} o |gЯ:2 :Ӆ2Ӆ:2 :Ӆ2Ӆ:2 :ӅƠ2Ӆ>]2ԅ>2υ2х:2 2υ:х 0>2х:Ӆ2Ӆ>\2ԅ*׀|pg]T:ـG:ր ~$$N q,~$$N: # _:߅ 5:˅_:υ(0!nhV·!EE"n]!"]:Ӆ>2߅: !:Ӆ2˅>2߅: !:˅_:߅ !Ђh!"]"]*Ӆ:ڀ@_:Ā :х :҅G:ڀ= G*Ӆ##:υO#: y(:w:ʶ:υ&o:Ѕ_:҅_:퀧`W{_:ӅO~fow#w##~͑#zW &o)))~#~d^S Sy2  #:΅(gx_Wˢ˚C Q= N˹: $$ [87] GwwU: 0 @0P, _ ?x(((%((-%%$(--%$((-%%$$$-%$$$))--,, $$ ))-- $$ )- $ )-- $ )) $ $$$FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEEAACCDDEEAACCDDEEAACCDDEEAACCDD [91] GwwU: 0 @0P, _ ?xNZ,ENDPAUSEJ INC EJ JR NZ,PAUSEJ INC DJ JR NZ,PAUSEK C HB5 C<<~~<vnw @p`p` ?o`[p1 ````<<~,|<<~~<nv [94] GwwU: 0 /@PTU_ ?x_ [95] GwwU: 0 /@PTU_ ?x! '^" 6$P*X&``%@ @%@ @ed j&+m`fpdp@ l0 ' ``$   ` P p0j e0@#@e n`e Ep`fK`JJ@Efn0+@&$*0g`c0 g@ d0fPe`p0`Ae@# jЁPP ! ! A a#p&p)p$p"p%p&`Ppc0 f0 g` b je@fd`dpk`PePc f0jd0c p cc %PPЁaf @"\00f f@p???>>%%( ..&  ,111S)܁j*48ɳ{FdͶ<Ц7z"Cf"pejIZz%baDgB\:ȷ?0 /????????G????/;/]???T [103] GwwU: 0 @0P, _ ?x?hg [104] GwwU: 0 /@PTU_ ?xgih [105] GwwU: 0 /@PTU_ ?xh i [106] GwwU: 0 /@PTU_ ?x*|?|?**H,K.?|%<2P @hph4= Ht=>O)< L "Tqt";.$ TtQTR# TTK+lT@tQTR# T };| ;|D;  7= x=D}  :=;u =p =Ew=  ;u;u ;t$=;u. 7($SdJ++jJi$$38sd&IRK+*I$ xsΤ%ɕUUԕ%s0&gJ*ԫT+RKI$&3( 3?saa@@@@  ;p00``@ 0 08 0  00000xH@{{@ 6g@àqиh\4,: lP(hhhh((hhhh(Pl ,:\4hqàg@6 ~~$$BB&@90  @@ pP0Pp pp``d     ! @R//___]]L# ??@ ( t t01J~~~8|~mD@l@| || |20l8` PP@@߀Dw  //O__@Z]? p x3G_𾠽`Z]@?x!O__V_#T ~p0#DD""DD#00 CB##BC 0@>x|<~|?Se'qUnvS8x  ?Qd&ŧ]w_rN88  x?P e,:Z^,<x  ?Qd&ŧ]w_rN88 >?>666OyyO??#>p>`#``8`zp 9 _^q ||#?'p  }g=|x|~98llm* ?*o8@  8Pp`0`8T\X0~8*U:? ~??=? @@` `PPpTh0T? @@O@@  ` !  t4t6z:0~|X &'' p`xp`xpax@?U@@=P>PT(4xT  VU~""PPj~DD,@?*U+_  h | @*@(_ P BEE b<{GʠPʠE@EBeo|z: @``-h/x/x/x/xy pP vnvnvnvnvn*'`QKА蔸ؑUK+`$ 02h@*EHBU (T pT  U)U $8P<>~`<?/`   ppx||; >l???V@   `'H2zzynp 8887`wprp:7`wprp:887`wprp:8` 5\ u'ux%@` 5\ Mx P ` 5\ ۨx%@ ` 5\ ۷۷x BAD?1jV 6lY11*Tq2LXL2?1*T0]YH,4_?.t*Tq^Hx1*^J5\m\nc.IY+ @TzR:uQ:vƻtA c?H0תEhH@@P @ *" ( ת*TDBJ" @ 6@~U** ?@???5@* hP @ @@0TPP P *U@+D@_@ U@*>A@*" _P*@*@ @@TD T@@p T"}TT |o@u@@P6]p7/TP=~j( ~V((P/* @ lX<.::Z]OC!"<? `@ @ 0 @0@`Pht< x%"t .<0aD.P  @@ ``pp@@<+t\\ZDxPx !-! 7@ @@@. +#P`88 n>>n0x5=}? p??}{;?8x?|;77??8??{w7?8@`S`) p*abp0V0V 0*d`p``+VjEՂ"``p0V0V *"t8 D+/D,P*UDE D+/DR*U@E/_0dB2`,P*UDE /PV"$RT?DR*U@EUUUUUUUU The Off Licence Dl@"" 0C333_ _<~bbb~ ,' ***UUUU The Bridge Dr`@F"w""w"/H0H0 27,@FOy__@??\@UUUUUUUU Under the MegaTree D׳um\B] FIj;:kB$<< *00 00X0 000 00X0 @PUUUUUUUU At the Foot of the MegaTree  (DUUnt8nt80 _@\"!".5 TP*UUZUU The Drive UUU pww; }D* j@pp twB{UU__ -$TATU* * * ( (* The Security Guard UUU ƕ6@ BoUU_^i UDCDTD@U 0E1 3 3 Entrance to Hades 4P A(c82\X0(XH0@@_-TTTP Cuckoo's Nest 06#`<84 D 0 0_ ~~01 20@@@@@@TPPT West of Kitchen B" B$ B$*G@PTUBUUU*__pp=1 2100TUU0UP UP 0 UUUUUUZ Cold Store  UU"RJI)%O "(D  Z[m_pr%!46789    @ East Wall Base [U &Y%&)T^ `-' @?UUUUUUPU The Chapel IIIIIIII%%@@B(TU((( 0 U__08ll^!g df0000UUUUUP First Landing U]]"UUU"~~ 00_@S)UUUUQ_@__$")@@@UP@@ A bit of tree R)kfikmU D$@ 4_%#*heE@@ @U%@U   @U The Orangery J$UU$%UI"A>j%D @&ƪ*Y$]__.U*E*8$+a< Z J Z @  Priests' Hole UU]p*"D"D'&, % P PPPP*((* Emergency Generator /ffffffff3QQ ?? 0TT((i_R_(&_T P PP P P@PBP@Dr Jones will never believe thisU*UD"D"C"D"@$H$ &U_ X_xL2 )'! UVPPUeUVY The Attic l"D$DU[B