MV - CPC format Disk Image (DU54) Disk-Info (Track-Info  R ( *RTrack-Info  R 48KROM C  48KROM C MFORMAT BAShMFORMAT DOC# !"#$MSDOS BAS^%&'()*+,-./0MSDOS C Y123456789:;<MSDOS DOC=>?@ROMZ80 BASAROMZ80 C BZ80 BASCZ80 C DEWINDEMO BASFGHITAPEFILEBASJKLZXZVM BASMNZXZVM32 FNTOZXGRPH32FNTPZXZVM BINQRSTUVWXYZ[\]^_`ZXZVM BINaZXIO BIN7bcdefghPLUS3DOS@@{*]\"_\C*]\~}t[3*a\Þ*x\#"x\| 4@Ϳnu{=\*\| E*]\#"]\~! ?#8#7"]\ɿRNINKEYPFPOINSCREENATTATAVALCODVALESICOTAASACATLEXINSQSGABPEEIUSSTRCHRNOBIOAN<>/`:Ψҩ./x/(g}<0S_ -8z<({ZW͎!\~ #5+ 6}!\ !\(.!\('~ ~_w#6#: \w#NV3w2\#6#5: \w#~B{' x!~7{:8/ O(O!(!~!)@(Z( 0^ ƥ0  !Th(80 6!09(0(ƀh!0 "( >_>@}==/O! :H\8 ?DOg z( yMM 1'4l8!\~ ^#N#Fx T# Px<%l 0 !n4ʹ38w18͔ 0"4CU45q8͙͙PYzõ  `uA$Sʉ.68I>CjsOT\i$v$:;\+bk !?!(! +>G- %/> 7;oz( n|g>7%lyx0B> <#1>z<;:H\8>8 >!? O0!+| 00>Ƹ0$ 0x0yO& 0uyO~#.>˸|gz |>= >Щ (y/O7:t\2t\͌0%(<:t\(" > 6+! 0:t\ x(  # I:t\ʊͲ(0 !:t\=(Š0%(#~w #~w #q>q(6R~ݾ 0 ! ~< yO#  y > ~( :t\=ʶnf^ V |( R8&(~ | n f:t\7 >V^ V |  nf7R8 DM~(>|(+F+N+"_\*_\*Y\+N F ~U#w#s#r#7>*Y\+"_\N F U*_\#NF "K\f| n "B\6 7>N F 67>[S\~ # +0͸, ~O*K\~(%(͸ # 0><7,  "_\͸*_\͸"_\*S\8+U#U#SS\[_\> Track-Info  R 2v^ V >Start tape, then press any key Program: Number array: Character array: Bytes: 8i0e! _^ NW)TSR7PO_^]\[ZTS >" N > ! :\6W> e 2\N!U   y==Z>?l 2\ m  2\*Q\s#r ̀ *\W}" )DJ>8 ON >ڟ ;  $ N F C\"\C\C\"\qE"\N K\*\FK\*\NE*\8=0&G8  \G!\> Ow# ֥0 K{\   K6\!;\ˆ &o))) y=>! ON(yU :\8O>N(078#= %N #> _|Xg[\~Wv(W 8Wf(o w&A 8 > F; ; 0H(z> <~#(= AN xF 18f(^-(Z>{?\5R E>2\*\:\> !;\ˮ (E(A n(;>2\"\ F1!͛|XgZN q#ɀscroll 81DG*\*\M x!k\Fx*Q\ s#r#?8!*!"}\0͔ >M D*Q\ s#r6R!![N xF(1G͛>!_ ͛xx ! =!GOx $ ͈!͛xOx T]6=G $ ͈bk:\F(:H\w !|=Pgah)))))DM>Woz@g!@$| } o?g ![>![uFGw#0! xWT8 > 0 ^#0z *=\!s=\^!͵!8018-8:W8 7~_*[\U#p#q *[\RS[\_!^*[\ fjPp~*I\7n—n͕zʗ#N#F! DM͗*Q\>+5U4*Y\####"[\7n !I\m61~ #"[\1"=\~7͕R#DMbk# # #B 87n*I\n͕!J\͕>7~(Á0f(6^!͵0͐+"[\6^n:\nn 0R0-0 GOx* !j\>w !A\w 6޿GO>X  ^!͵6[\"=\ "\6&*a\+[Y\7n[a\*c\~~# >[\K\[8\*{\G>>?Gbk6+ R#05(5(+C\S8\"{\("\>#"{\+@C8\"\!<"6\*\6>+++"=\V!:\!\"O\+"W\#"S\"K\6#"Y\6 #6#"a\"c\"e\>82\2\2H\!#" \55!\61k 8 61͕Ͱ>,~ 0f(@*Y\ͧ6*Y\"]\x] (0Fį n >O2\66 ͊v0N::\ x 6 KE\>:N ͗::\<( ( 4 p\!D\~( 6 ìONEXT without FOVariable not founSubscript wronOut of memorOut of screeNumber too biRETURN without GOSUEnd of filSTOP statemenInvalid argumenInteger out of rangNonsense in BASIBREAK - CONT repeatOut of DATInvalid file namNo room for linSTOP in INPUFOR without NEXInvalid I/O devicInvalid colouBREAK into prograRAMTOP no gooStatement losInvalid streaFN without DEParameter erroTape loading erro, 1982 Sinclair Research Lt>CI\*]\!U*a\7R`in ͸y=((+[S\U"S\*a\++*I\p+q+s+râ K SR P n (*Q\##0*Q\^#V,ɇo&\^#Vz *O\"Q\0####N!-^KSP0M d*e\!K\>^#VR0 r+s##= RDM~ V#^*c\+U##Ca\#*Y\6 "[\#6#"a\*a\"c\*c\"e\!\"h\[Y\#~ȹ# 78 N#Fq#p*O\ ###N!N KSP͔8!\O N#F+8x(*O\ ###~K(S(P ]s#r+x O!z0N KSP  x Ws?\6ͯ F1D0*I\[l\R8"nRn͸ 8V#^+Sl\"l\*l\n(3>>60%p 8;(, ͙͂x?gi"I\nUf(:k\O !l\KI\̀>(s-~@(###z(0!;\˖7n(*_\R >?~Ͷ# (7######~*\˼"\!\V6 tW"\*[\R:A\(C!;\˞>KV( <0^(>C^#V#n͕7nr+s{ <8B=(-00!8,($: 7n 0V(" :j\2j\*S\T]̀͸~#~+###"]\ #~Ͷ"]\"  :( A( 7~@8o(?0#~0##N#F# ѧRDMx/Gy/Od*Y\+"]\!\"e\;-͢-8! ڊx `iV#^ ***}ɱ˼į.lnpHV?A+7wDY+C-Q:mB I\D]=g#= ,O_k ":'B #   #z"`, 6  ,  2G\=2:\Ϳ4  (z:(!vOyڊO!H N *t\~#"t\RO 0 ! N ߹ŠT8 Track-Info  R ~ q*B\|(!"E\*a\+[Y\:D\3n:D\( CG~x(0%*U\>V#^SE\#^#V#"U\"]\W6 r (͋(0% (:(ÊK g {q*t\N#FͲ(6707 ̖)v 0%+!q\wCr\"M\V:;\$V@ $z*Ͳ(y< ͂, $v $v~M :t\!*\"\!\~檮w0%(M !\~wW! (: 0%80%( 84ڳ) ͂88*"h\+~ 8 U#8 *E\s#rV #rF8*E\"B\:G\DW*]\KU\͆CU\8 (>2D\~:(#~7F#NCB\#N#F DM͋7N.*M\~(#"h\8*h\^#V#fs678870%()"_\*W\~,( ͆0 wV"W\*_\6&x,(0% $,>GË͙`in+"W\͙x Kx\Cv\*n\V6 ͙`i|0,"B\r ͅyͅ-8(D͙-͢-8 gE͙x K\[K\*Y\+k *e\2R0*\R0"\6>+s=\f $3KE\s=\g*e\ 8 !P8r.UDMz>( ;s=\s͙v x( x< n(>>0%(>9͍,0$ ( <)( ͍,Ҋ$ U##6, ) = :;\$@Š0%>>0%M E ( N (N ()> y#> ͙͂>yx!p $v+-x ) :;(, 0%( >'E #7͔͂0%(>n 6 K\:k\8!GC\>2\ n N (( )Šò! 7vŠ ͍,ү!70%ʲ!Ϳ!q\˶~ :;\@ w6 y0>"+w"[\7~ ,*]\*=\!:!0f(s=\*a\ͧ6,͹!,6"! K\ !q\ˮ~˾ "=\"_\͹!*_\6&"]\*c\[a\7RDMͲ**N *a\"]\( :q\Y 0%*Q\####~K!,(;(Ê?͔͂Wz((Vz Oz0y!\8z88Oz 8!\8 ~(/$(xOyl">l"PG>w#xɟz @Oz(0y!\l"y͔0o 2H\>$G7gyǨoy#ͪ"G~(-#"M C}\ͪ"G>G~NWA Q /w #G#YQO-$,Š͂*=8~08868}$18~08"1184b͔o͔g"}\ $,(w$͂Ţ1008w$1***=8~08w$}$111 **8w$8:}\(-8:~\(-8(<1818:}\(-8:~\(-8ͷ$8:}\(-8:~\(-8ͷ$M 1(42*8-80>(-11118#y0iկ_hA`x88OO*}\xGy<8 ( =O"y( O!%y҄&N t ʊ" t"( y)Š~#*6\y_y@W`(< =O# > Hò*#yOoyXg~(-"(O.+VW檿ǩ$#% %(0%(~#" ~#"( !;\˶~IJ*'$)Š'ý'0%((Kv\+-474A218͢-Cv\~(w 0%(84&Z# '!;\˶~(͎ 0_3Ͳ*'"%5%%"%Ā%H"%"?͈,0VA0<0% #͛,U#6#*e\B"e\+w#~ #ʹ3"]\Ͳ(.̖):;\8#ʹ33 -('( ֯ڊ(ҊO0˱8˹$( v R*O!'0N!& Fz8:!;\{ v 0%( {?G;8 {@Š!;\{ ˶yv ?O 8($+-*/^=>< 0% 5͍,Ҋ$ ( )($, )Š!;\˶('G$O *S\+͆0ͫ(߸ ͫ($( +͋ק̫(S]\ͫ()(B#~@(+ͫ(##$@ +*e\B"e\+ͫ()( , ͫ()("]\* \" \$"]\" \'#~!8͍,ҊO((($(͈,0͈,0˱: \(0%Q)A0% yO7*K\~(- "?)80# ( ( ͈,0͸((  ͈,0p* \~)(~`G#~(+ͫ(#˨x(#####ͫ()(ͫ(i #[e\3"e\ѯ<ɯGy K~ <#N#F#Ͳ*I*###Fq( (( a$,( y(Rq ) <)(l 2+"]\^!y )(Q(**8 * y fq BK)(* ** #BKͱ*)(, R*((0%+)(Pկ(*PY( )Šbk)( *`i) +R8# *DM0%ȯͩ3*e\w#s#r#q#p#"e\ɯ͂0%(͙x7(Bz#^#V0%ͩ0*M\7N(^#~ (0 80 #͈,8$+y*Y\+U##*M\G(#~!8 >*M\ +8B@v(*M\Kr\7F 0xT]#6 +B 0DMx(x+++~+>*M\+ +"M\*Y\+U*M\#p+q+w*Y\+*e\+F+N+V+^+~"e\Ͳ(Š0% ˱͖)8͸!q .&* *$`i*,() yh&##)DM*Y\+U#w #q#px#wbk6q(6 p+q+= -?A?[a?{ 1 ?jڭ1BK+-.(;-. (-8" -ڊ88"-8 8E(e+(- -8;--ڭ11(DO-0:?-0O!:\_QHGͶ*88"-8t0/0*8>-81'8~ G-z ( SW8~~-W:\2\zO-1'8-2\=oA8ͺ/>./~q8 {͋/_z͋/W!\yNq w4q!\Nq A+~w( ?064rpq8K\!\x 88&R/G y(~# y>.>0APJ/>EJy/DO>->+o&]T)))YL}~6#~+ AO7+~/wyN#Fw#yN#N#FW^#V#^#V#^ɧ!0G-0ٯ.W] n4 &##^#V###~#N#F  w#s#r++++͓2͛/G͛/O0xAͺ//whaJ|o0>/4(#}#w+({D?_z/W{/_z/04ʭ1WٯU1|M!)8 084#+ "-A-xOͩ08 z O͎-͓2008Zͺ/xbb!0Zx =??F10h< 8z \wx0~>(٢/w8.#w+) z 5(0 0 4(#xw#q#r#s͓2080ͺ/`iah)j8RR0Z٧RR71(_QYPx=1~06> Q ###>++ >+ 6w#6+>30,/Ƒ#V#^++z( 8Z(G:͎-~֠D+G888(6+( G>'w͖2~-#w+wz B(SX)0 +s+r+p@0Iڢ@ 6<43001Q85$5;5;5;5;5;5;50-5;5;5;5;5;5;5554E6n4i65t677738C87766J84j44446553663z6546723O-2I44-44Ϳ5x2g\Se\~#3W`|oz0T] o2&^#V!e3Kf\:g\[e\3Se\ͩ3bkͩ3~O ~? #~P>#G3=OO *h\43bk!233*h\43Nq#G^31183b3584~( #x怶?w+-x/O͎-4#+O͎-͙x͙ (-͙!+-+ x #͍,8 ֐80<=0 K{\O0+- G~###x74>4#+>w#w#w#w#w474Ч4xW =0<4W 03++|x (?( 8 #+8545++ DMͲ*x(x(*e\-8 Ͳ* *]\x+S]\+6 $ @Š"]\$"]\"[\*Q\>-*[\RDMͲ*͔ҟ*Q\0 Ͳ*ÿ5+x((-++-!g\5 #^{W #1'816:81:08=48;)1'16Xefxe@`2!$/~X:~8- 80 80Dw8=178 8~6(-4814L78441r142  VڥY0\poaږ1\C6~^n#8=4"n1'111*178ɡ689*39111\ 8c# #]81 8͗2~8163111UX9[6ucB 66s]ca 811($18"810810%8610 78$$$~$$~$>(> >bd&F(*D:  >>> < >>>BB<DHpHDB@@@@@~BfZBBBBbRJFB0,0;1;" SPECTRUM +3 MULTI-FORMATTER " 2-2,4;"(c) 1993 Garry Lancaster" <$6,6;"<1> Format Disk" F=8,6;"<2> Change drive (";(drive+65A);")" P'10 ,6;"<3> Select format" U912 ,6;"<4> Verify ";("ON"vfy)+("OFF"vfy) W714,6;"<5> Change interleave (";intlv;")" Z+18,0;"Current format is:"'f$ d"Select option: ";o n%oɺoo<1o>5100d xo=11000 o=2drive=1-drive o=33000 o=4vfy=1-vfy 4o=5"New interleave: ";intlv:intlv=intlv 30 Format Disk Routine  1;" ";f$;" "  4000 .3,0;"Formatting side 0, track " 481804,sectors 48189=,secsize 48196D,drive 48200H,fbyte $"k=0(tracks*sides)-1 )i=0:j=k .9sides=2i=k-2*(k/2):j=(k/2) 8481859,i B3,16;i; L481826,j:48198F,k V3,25;j;" "; `e=481760 je1900l tk yP48233i,fbyte:48236l,(2^(secsize+7)-256)/256 ~e=48226b #48243s,drive:errors=0 vfy1265 05,0;"Verifying track 0, sector " "i=0(sides*tracks)-1 )5,16;(i+", ")(4); 48245u,i j=0sectors-1 5,27;j;" "; 48247w,j e=48240p eerrors=errors+1 j i wrtboot=01405} 27,0;"Writing system information..." dline+502 j=1wrtboot  $x1,x2,x3:offst=0:n=0 ]48233i,x3:48236l,(2^(secsize+7)-256)/256:e=48226b )offst=offst+n:n:n=013302 In>0k=0n-1:b:49152+offst+k,b:k:1300 (Ab:k=0(n)-1:49152+offst+k,b:k:1300 248275,drive 548277,x1 848279,x2 <e=48272 Fe1900l P48243s,drive Z48245u,x1 d48247w,x2 ne=48240p xe1900l zj }Cerrors11 ,0;errors;" bad sectors - unreliable disk" >10 ,0;1;" FORMAT COMPLETE - Press A Key " ""1420 =""1430  l?10 ,0;1;"ERROR DURING FORMAT- Press A Key" v 1420 Set up a format dline=f*100d+5000 dline 8f$,sides,tracks,sectors,secsize,firstsec,fbyte,wrtboot $a=4889648896+26 b  a,b a   Choose Format  "Select a format type:"'' max=0 5000+max*100d f$ f$="*"3100 max<10 " "; max;") ";f$ max=max+1  3040 "Which format? ";f &"fɺff<0fmax3100 0 2000 : Set up interleave i=0sectors-1 '49152+i*4+2,0 i offset=0 i=0sectors-1 G(49152+offset*4+2Track-Info  R )04200h:4060 /49152+offset*4+2,firstsec+i offset=offset+intlv 3offsetsectorsoffset=offset-sectors:4090 i  hoffset=offset+1 r3offsetsectorsoffset=offset-sectors:4210r | Format Data for standard N"STANDARD +3/PCW",1,40(,9 ,2,1,229,1 XDPB Data for standard 36$,0,3,7,0,174,0,63?,0,192,0,16,0,1,0,2,3,0,40(,9 ,1,0,2,42*,82R,96`,255 Sector for standard 0,0,229,16,0,0,40(,9 ,2,1,3,2,42*,82R,0,0,0,0,0,0,0 Format Data for extended U"EXTENDED +3/PCW, 203K",1,42*,10 ,2,1,229,1 XDPB Data for extended  40(,0,3,7,0,204,0,63?,0,192,0,16,0,1,0,2,3,0,42*,10 ,1,0,2,12 ,22,96`,255 Sector for extended 0,0,229,16,0,0,42*,10 ,2,1,3,2,12 ,22,0,0,0,0,0,0,0 PFormat Data for 80SS Z["SINGLE-SIDED, 80-TRACK, 352K",1,80P,9 ,2,1,229,1 dXDPB Data for 80SS n36$,0,4,15,0,176,0,63?,0,128,0,16,0,1,0,2,3,0,80P,9 ,1,0,2,42*,82R,96`,255 xSector for 80SS 0,0,229,16,0,0,80P,9 ,2,1,4,1,42*,82R,0,0,0,0,0,0,0 Format Data for 80SSe ["SINGLE-SIDED, 80T EXT, 412K",1,84T,10 ,2,1,229,1 XDPB Data for 80SSe 40(,0,4,15,0,206,0,63?,0,128,0,16,0,1,0,2,3,0,84T,10 ,1,0,2,12 ,22,96`,255 Sector for 80SSe 0,0,229,16,0,0,84T,10 ,2,1,4,1,12 ,22,0,0,0,0,0,0,0 Format Data for 40DS "["DOUBLE-SIDED, 40-TRACK, 352K",2,40(,9 ,2,1,229,1 ,XDPB Data for 40DS 636$,0,4,15,0,176,0,63?,0,128,0,16,0,1,0,2,3,1,40(,9 ,1,0,2,42*,82R,96`,255 @Sector for 40DS J0,0,229,16,0,1,40(,9 ,2,1,4,1,42*,82R,0,0,0,0,0,0,0 |Format Data for 40DSe ["DOUBLE-SIDED, 40T EXT, 412K",2,42*,10 ,2,1,229,1 XDPB Data for 40DSe 40(,0,4,15,0,206,0,63?,0,128,0,16,0,1,0,2,3,1,42*,10 ,1,0,2,12 ,22,96`,255 Sector for 40DSe 0,0,229,16,0,1,42*,10 ,2,1,4,1,12 ,22,0,0,0,0,0,0,0 Format Data for 80DS ["DOUBLE-SIDED, 80-TRACK, 708K",2,80P,9 ,2,1,229,1 XDPB Data for 80DS 36$,0,5,31,0,177,0,63?,0,128,0,16,0,1,0,2,3,1,80P,9 ,1,0,2,42*,82R,96`,255 Sector for 80DS 0,0,229,16,0,1,80P,9 ,2,1,5,1,12 ,22,0,0,0,0,0,0,0 DFormat Data for 80DSe N["DOUBLE-SIDED, 80T EXT, 828K",2,84T,10 ,2,1,229,1 XXDPB Data for 80DSe b40(,0,5,31,0,207,0,63?,0,128,0,16,0Track-Info  R ,1,0,2,3,1,84T,10 ,1,0,2,12 ,22,96`,255 lSector for 80DSe v0,0,229,16,0,1,84T,10 ,2,1,5,1,12 ,22,0,0,0,0,0,0,0 Format Data for CPC T"CPC Range Data-Only",1,40(,9 ,2,193,229,0 XDPB Data for CPC 36$,0,3,7,0,179,0,63?,0,192,0,16,0,0,0,2,3,0,40(,9 ,193,0,2,42*,82R,96`,255  Format Data for MSDOS P"MSDOS 720K 3.5""",2,80P,9 ,2,1,246,14  XDPB Data for MSDOS *36$,0,5,31,0,179,0,63?,0,128,0,16,0,0,0,2,3,1,80P,9 ,1,0,2,42*,82R,96`,255 4Sectors for MSDOS >.0,0,0,30,235,254,144,77M,83S,68D,79O,83S,535,46.,480,0,2,2,1,0,2,112p,0,160,5,249,3,0,9 ,0,2,0,0,0,0 ?G0,1,0,3,249,255,255,0 @!0,2,0,0 A!0,3,0,0 BG0,4,0,3,249,255,255,0 C!0,5,0,0 D!0,6,0,0 E!0,7,0,0 F!0,8,0,0 G!1,0,0,0 H!1,1,0,0 I!1,2,0,0 K!1,3,0,0 L!1,4,0,0 pFormat Data for MSDOS zZ"MSDOS 360K 3.5"" (Non-std)",1,80P,9 ,2,1,246,12 XDPB Data for MSDOS 36$,0,4,15,0,179,0,63?,0,128,0,16,0,0,0,2,3,0,80P,9 ,1,0,2,42*,82R,96`,255 Sectors for MSDOS .0,0,0,30,235,254,144,77M,83S,68D,79O,83S,535,46.,480,0,2,2,1,0,2,112p,0,208,2,249,2,0,9 ,0,1,0,0,0,0 G0,1,0,3,249,255,255,0 !0,2,0,0 G0,3,0,3,249,255,255,0 !0,4,0,0 !0,5,0,0 !0,6,0,0 !0,7,0,0 !0,8,0,0 !1,0,0,0 !1,1,0,0 !1,2,0,0 #&End of Formats #'"*" #(DOS Call (@48128) #2245,197,58:,92\,91[,246,7,203,167,1,253,127,243,502,92\,91[,237,121y,251,193,241,205,46.,188,245,197,58:,92\,91[,230,248,203,231,1,253,127,243,502,92\,91[,237,121y,251,193,241,201,253,233 #<Format track (@48176) #F33!,0,192,6,0,546,0,35#,546,0,35#,35#,546,2,35#,16,244,6,0,14,0,22,0,30,229,33!,0,192,221,33!,0,191,253,229,253,33!,108l,1,205,0,188,253,225,1,0,0,216,79O,3,201 #PSetup sector (@48226) #Z33!,0,192,17,1,192,546,229,1,255,1,237,176,201 #dVerify sector (@48240) #n!6,0,14,0,22,0,30,0,33!,0,192,221,33!,0,191,253,229,253,33!,105i,1,205,0,188,253,225,1,0,0,200,Track-Info  R 3,201 #xWrite boot (@48272) #*6,0,14,0,22,0,30,0,33!,0,192,221,33!,0,191,253,229,253,33!,102f,1,205,0,188,253,225,1,0,0,216,79O,3,201 & Setup M/C & 9000(# &a=4812848304 &b &a,b &a & ,2,0,9 ,0,1,0,0,0,0 PLUS3DOS;SPECTRUM +3 MULTI-FORMATTER (c) Garry Lancaster, 1993 This program allows you to format any disc, in drive A or B, to your own specifications. It can be used to take advantage of an upgrade to a double-sided or 80-track drive, or to format high-capacity external discs. Or you may simply use it to increase the capacity of a standard disc to just over 200K. [It is also possible to format discs to be used on other computers (eg IBM PC), although you will need a transfer program to access the disc on the +3.] Once a disc has been formatted, whenever the +3 or a PCW machine accesses it, it will recognise the new format and capacity of the disc. I have used the program to successfully format discs on both single and double-sided 3.5inch external drives, giving 412K and 828K of storage!! Use of the program is simple. The menu allows you to select which drive you wish to use, the interleave factor (vary this to find the best for your system - 3 is the default and probably fastest for most drives), whether discs are to be verified once formatted (this takes time but is recommended) and which format type you wish to use. The list of formats should be fairly self-explanatory: the "extended" ones push the media close to their limit to give you the maximum possible capacity - if you get verify errors with these, try reformatting at the standard capacity (discard the disc if you still get errors!!) As well as the standard +3 type formats, I have included 3 other formats which may be useful. These are the CPC range data format and two MSDOS formats suitable for 3.5inch discs. The CPC format is useful if you want to transfer files to a friend with a CPC-6128: these machines cannot read +3 discs, but the +3 can happily read and write to CPC discs. Remember, though, that you can only transfer headerless files this way. The two MSDOS formats are useful for creating 3.5inch discs which can be read by IBM PCs and compatibles, as well as Atari STs. Most MACs, Amigas, Archimedes etc can also transfer files to and from these discs! Note that you'll need a special transfer program (I've written one which is in the public domain as well) to read and write files to MSDOS discs - the COPY command will NOT work! The 720K format is the standard for IBMs and requires a double-sided 80-track 3.5inch drive. The 360K format is for 80-track single-sided 3.5inch drives - note that this is a non-standard format but most PCs should have no trouble using it; some very old "naughty" DOSes might have problems though... If you wish, you can define your own format types by placing the relevant data at lines 6100 onwards. Make sure you fully understand about XDPBs and boot sectors before trying this. For each format you need these data lines: xx10 DATA f$,hds,tks,secs, size,first,fbyte,info f$=format title hds=# of heads (sides: 1/2) tks=# of tracks per side secs=# of sectors per track size=sectorsize: 1=256bytes, 2=512bytes,3=1024bytes... first=number of first sector fbyte=format filler byte info=# of sectors to write containing system info xx30 DATA ...27 bytes... The XDPB data for the format xx50 DATA ...data for info... The data for system info is in the following form. For each sector: x1,x2,x3,data... x1=logical track (0...n-1) x2=logical sector (0...n-1) x3=filler byte Data following this is either: 0 : end of data this sector n : following n items of data to be put in sector -n,x: byte x to be repeated n times in sector As you can see, things are extemely flexible, and you can even format discs with 256-byte sectors and so on (although these are not supported by +3DOS). To create a +3DOS compatible disc, a boot sector must be written, so the computer can determine the format of the disc. The limitations of +3DOS are: 512-byte sectors only max 64 directory entries max 256 allocation units The last restriction (imposed by CPM compatibility) is the worst - it Track-Info  R         means that on discs with >256K, the allocation unit size must be at least 2K, and for >512K, at least 4K. If you've got any comments or suggestions, please contact me: Garry Lancaster 26 Bridgeleap Road Downend BRISTOL BS16 6TW (0272) 402449 so transfer files to and from these discs! Note that you'll need a spPLUS3DOS..&O+MSDOS File Transfers (c) 1993,1998 Garry Lancaster h(x)=(x/256) 'l(x)=x-256*(x/256) &d(x)=x+256*(x+1) d 9000(# nerr=setbuffs xdefdrive,23417y[ x=setdrive Main Start Menu 0:0:5: m$=h$ >0,0;1;"MSDOS File Transfer Utility v1.2" 22,1;"(c) Garry Lancaster 1993,1998" '8,5;"(1) Log on to disk" +10 ,5;"(2) Check boot sector" A12 ,5;"(3) MSDOS drive (";(65A+(drive));":)" $'14,5;"(4) Exit to BASIC" ."Enter Your Selection: ";x 8&xɺxx<1x>41070. B x=4 G-x=3drive,1-drive:1000 L+err=logdisk:err8000@:1000 Vx=21200 `+err=readall:err8000@:1000 j 5200P  =0,0;1;" MSDOS Boot Sector Details " 05,0;"Number of heads : ";d(hds) 07,0;"Number of tracks : ";d(tks) 09 ,0;"Sectors per track: ";d(spt) 912 ,0;"Total sectors on disc: ";d(totsecs) ;14,0;"Allocation unit: ";d(clssiz);" bytes" "Press ENTER: ";x$  1000  Main file selector reformd,1 file1=0 0:0:5: T1:0,0;(d$+(freek)+"K free ")(32 ):0 rmaxents,36$:scrnst,2:direntst,l(file1):direntst+1,h(file1):filen=dispit:reformd,0  filen=999filen=0 #0;0,0;m$; 'hlx=0:hly=2:hlf=0 0a=(hly,hlx):a2=(a/8):a3=a-a2*8 9highlx,hlx:highly,hly:highla,8*a3+a2:x=highlt 6000p+2* PSwitch to MSDOS Disk Zdisk=1 d!catdata=dirdata:dispit=dispdir nfreek=msfree xm$=k$+"D"+l$+"ir "+k$+"E"+l$+"rase "+k$+"C"+l$+"opy "+k$+"H"+l$+"eaders "+k$+"M"+l$+"ake "+k$+"Q"+l$+"uit ENT DEL SPC EDIT" /d$=" "+(65A+drive)+": MSDOS Disk - "  5000 Switch to +3 Disk disk=0 catdata=pdata:dispit=dispcat freek=pfree :freek=65535err=117u:8000@:1000 m$=k$+"D"+l$+"isk "+k$+"E"+l$+"rase "+k$+"C"+l$+"opy "+k$+"H"+l$+"eaders Dri"+k$+"V"+l$+"e "+k$+"Q"+l$+"uit ENT DEL SPC EDIT" 'd$=" "+¾defdrive+": +3DOS Disk - "  5000 Change MSDOS Directory "2x=d(hlf*2+shown):x=9995070 ,$usedir,l(x):usedir+1,h(x) 6err=chgdir:err5000 @ 8000@ Jerr=104h5070 Terr=103g1120` ^ 1000 |Select/Deselect a file 2x=d(hlf*2+shown):x=9995070 y=(catdata+x) <y128catdata+x,y-128:a3=5:5060 /catdata+x,y+128:a3=6:5060 Erase all marked files 's$=" ERASE all marked files? (Y/N) " 85004!:sure5070 disk=05670& @err=eramsd:20,0;h$(32 );:err8000@ +err=writall:err8000@:1000  5200P &Kerr=erapd:20,0;h$(32 );:err8000@:1000 0 5300 DChange +3DOS drive N"Enter drive to use:";x$ Xx=x$ bx>96`Track-Info  R         x=x-32 l#x<65Ax>80P5070 volddrive=defdrive  defdrive,x 3setdrive0defdrive,olddrive:x=setdrive  5300 Transfer marked files 's$=" COPY all marked files? (Y/N) " 85004!:sure5070 disk=05870 Berr=frommsd:20,0;h$(32 );:err5015 C8000@:err=105ierr=106jerr=117u5015  1000 Aerr=frompd:20,0;h$(32 );:err5890 C8000@:err112perr113qerr114r1000 +err=writall:err8000@:1000  5015  Make MSDOS Directory 's$=" MAKE new subdirectory? (Y/N) "  85004!:sure5070 *""Enter name (max 8 chars): ";x$ 4%x$=0űx$>85930* >x=1̱x$:(x$(x)<480ůx$(x)>579)(x$(x)<65Aůx$(x)>90Z)(x$(x)<97aůx$(x)>122z)5930* C+x$(x)>90Zx$(x)=(x$(x)-32 ) Hx M3x=111 :filname+x-1,32 :x R,x=1̱x$:filname+x-1,x$(x):x W err=makedir:err5990f \58000@:err=113qerr=114r5990f aerr=112p1120` d 1000 f+err=writall:err8000@:1000 k 5200P } 5070 ~5200P+disk*100d Yhlx=16highla,8*a2+a3:x=highlt:hlx=0:hlf=hlf-1:5055  5070 Yhlx=0highla,8*a2+a3:x=highlt:hlx=16:hlf=hlf+1:5055  5070 ]hly<19highla,8*a2+a3:x=highlt:hly=hly+1:hlf=hlf+2:5055  5070 \hly>2highla,8*a2+a3:x=highlt:hly=hly-1:hlf=hlf-2:5055  5070 reformd,1:5015  5500|  5070 6file10filen0file1=filen:5015  5070  5070 withhead,0:5800 5300+disk*100d  5600  5070 ,disk=1withhead,1:5800  5070  5070  disk=15900   5070  5070  1000 disk=05700D  5070 5 5070 6withhead,0:5800 85300+disk*100d : 5600 ? 5070 @withhead,1:5800 I 5070 Jdisk=15900  K 5070 Q 5070 R 1000 \disk=05700D ] 5070 W 5070 @Display error subroutine Eerr=err-1 J8100+err T#0;0,0;h$; ^e$ h:#0;0,0;1;2;7;e$; r..5,0:1,-10 :0 |#0;0,0;h$; (#0;0,0;1;m$;  D"+3DOS Error 0 Drive Not Ready " D"+3DOS Error 1 Disk Is Write Protected " D"+3DOS Error 2 Seek Fail " D"+3DOS Error 3 CRC Data Error " D"+3DOS Error 4 No Data " D"+3DOS Error 5 Missing Address Mark " D"+3DOS Error 6 Unrecognised Disk Format " D"+3DOS Error 7 Unknown Disk Error " D"+3DOS Error 8 Disk Changed Whilst In Use " D"+3DOS Error 9 Unsuitable Media For Drive " $"Unknown +3DOS Error " D"+3DOS Error 20 Bad Filename " D"+3DOS Error 21 Bad Parameter " D"+3DOS Error 22 Drive Not Found " D"+3DOS Error 23 File Not Found " D"+3DOS Error 24 File Already Exists " D"+3DOS Error 25 End Of File " D"+3DOS Error 26 Disk Full " D"+3DOS Error 27 Directory Full " D"+3DOS Error 28 Read-Only File " D"+3DOS Error 29 File Number Not Open " D"+3DOS Error 30 Access Denied " D"+3DOS Error 31 Cannot Rename Between Drives " D"+3DOS Error 32 Extent Missing " D"+3DOS ErTrack-Info  R         ror 33 Uncached " D"+3DOS Error 34 File Too Big " D"+3DOS Error 35 Disk Not Bootable " D"+3DOS Error 36 Drive In Use " $"Unknown +3DOS Error " D"MSDOS Error 0 Invalid Boot Sector " D"MSDOS Error 1 Unable To Read FAT " D"MSDOS Error 2 Unable To Write FAT " D"MSDOS Error 3 Directory Too Large " D"MSDOS Error 4 Not A Directory " D"MSDOS Error 5 File Not Found " D"MSDOS Error 6 Cannot Copy Directory/Labels " D"MSDOS Error 7 Error In File " D"MSDOS Error 8 Cannot Delete Label " D"MSDOS Error 9 Cannot Delete Root Directory " D"MSDOS Error 10 Cannot Delete Current Directory " D"MSDOS Error 11 Cannot Delete NonEmpty Directory" D"MSDOS Error 12 Out Of Disk Space " D"MSDOS Error 13 File Already Exists " D"MSDOS Error 14 Directory Full " D"MSDOS Error 15 Invalid FAT " $"+3DOS Error Occured Reading Disk" D"MSDOS Error 17 File Too Big For A Header " !4Are You Sure Subroutine !> 20,0;1;s$; !HL=78Nů=110n20,0;h$(32 );:sure=0: !RL=89Yů=121y20,0;h$(32 );:sure=1: !\ 8520H! #(Set Up Variables #2h$(64@) #<*k$=16+1+17+7 #F*l$=16+0+17+5 #Pdirdata=44296 #Zpdata=dirdata+512 #dshown=pdata+513 #nusedir=shown+96` #xfilname=usedir+34" #}drive=filname+30 #clssiz=drive+2 #totsecs=clssiz+2 #spt=totsecs+16 #tks=spt+2 #hds=tks+2 #withhead=hds+4 #scrnst=withhead+2 #direntst=scrnst+1 #maxents=direntst+2 #reformd=maxents+1 #highlx=reformd+1 #highly=highlx+1 #highla=highly+1 #defdrive=highla+1 $setbuffs=defdrive+185 $logdisk=setbuffs+836D $chgdir=logdisk+368p $"dispdir=chgdir+120x $,frommsd=dispdir+456 $6eramsd=frommsd+212 $@makedir=eramsd+300, $Jdispcat=makedir+156 $Tfrompd=dispcat+3084 $^erapd=frompd+480 $hwritall=erapd+61= $rreadall=writall+13 $|pfree=readall+36$ $msfree=pfree+27 $highlt=msfree+557 $setdrive=highlt+37% & & 37599ߒ &"msdos.c"37600 & C@ KLirdatdathow sediiilnamrivlssiotsecpkdithheaűcrnsDZirentsȱaxentʱeform˱ighḻighlͱighlαefdrivϱetbuffogdis̵hgdi<ispdiromms|ramsPakedi|ispcarompLrap|ritaleadalƽfresfreighl<etdrivarxisatdatispireeileile$lllaD A: +3DOS Disk - M@ ror 13 File Already Exists " D"MSDOS Error 14 Directory Full PLUS3DOS(,+Track-Info  R         Track-Info  R         A*.*erasing copying . .. $?( *R`:\[2\[y:\[˧2\[y͆:\[2\[y!:\s!<T{_>@oc!?TèO! T{>>>>~#>>> [R8<]W!:= [:O!!cT:O!!fT:Oҭ# :O)ҭ# *:G:O8:_ >eí#*:G:O2)0>2:_ :>fʭ#>2*"*:Gҭ#ɯ2!"[!B*: = ">gBҭ=[ͮ*:G)ҭ#[!BY[ͮ:~`?]T:>^#V(::::?zW??zW]T:>ѧ(####~w#r?s#~w??K!!x('6~(( f(6 ^ 6#  ??! z( k??! z( k?*Rs:O!!$!cTҭd:(®* R®: 2ʮ!Ү!= "*"|ʮ:2ʮ*"}®<<<<"|ʮ!RҮ*"|ʮ!RҮ*[:= "["[RҮ:2®*"|ʮ RҮ*"|ʮRҮ![:= *" 2>2))"ès[ii:vgY:k( >hí*"|(èè! 0s#r#ɯR8<(0 ̓d̓ ̓̓st:˱)>>:DZׯ[ȱ*R(ui:k( (:v_(:ʱ([! s#r !~(>>> N(>*!k ~#*:? :(#͕>>BKüٲ!Track-Info  R  (w#6.# (w#x +6ii:kʮʮ :v®k[:ű(*|(>uí!!Tҭ[!=ͮ!R81[!!Tҭ*[R"*R"*|>k­*[Rڭ!!Tҭi:ű(#!Tҭ?*6ut?! Tҭs!ܱ!K~( ͅ# x èikٲi:kʮʮl:v_®g(^[ zʮ *Rʮ!=!:= DM!~((.>o­ fʭ  x ͮ!R0*ͮ!R8>2k͏s!Ա!K~( ͧ6# x è![ñ>pRʭͮz#}ͮK!i!k  #>qí:k( #| + x #|+ N:>r­*Rʭ*ͮ!R8͙*"!k6l͏!k6l!k !"}"͏s>2ͱ!6?!@!: *":"!Yè!6 !6 !"!б!!T0*H "y B!!"st:˱Ŀ>>:DZׯKȱ! )))  *B(Do:ʱ(D(>>}&) q#p>  ~#N#F#`i͕>><üü[:ű(!!Tҭ 2ͱ![!T0 q#z ­z2Ʊ*RiK "*J"͏!Y:Ʊ ͙׼! Tҭs!ܱ!Kxʨ~(ͦ# s!Ա!Kxʨ~([!!$Tҭ# sͤͩèsu?:?Gs:®ès:ϱ!!T0DMüüs![ñR(ͮz #:! = <DMüs!X :ͱ(=:̱_:αw#ès:ϱ!-Tҭ:ϱ2y[2z[!!Tҭè::?zW??zW]T:>ѧ(####~w#r?s#~wPLUS3DOS  0+3 MSDOS FILE TRANSFER UTILITY (c) Garry Lancaster 1993,1998 This program will allow you to transfer files between MSDOS and +3DOS discs. To use it you must have two drives: A, which will be used for the +3DOS disk, and B for the MSDOS disc. This means that B will be an external drive (probably 3.5inch, although you might be able to get a 5.25inch going). To use the program, load it up and insert your MSDOS disc into drive B and your +3DOS disc into drive A. Choose "Log on to disc" to examine the MSDOS disc and display its directory if it is a valid disc. If you have a single-sided drive, it's a good idea to try "Check boot sector" first to ensure the disc is not double-sided (my Multi-Format program can format single-sided MSDOS discs if required). Discs formatted on Atari STs and some early DOSes may not include all the required information to log on - in this case you must format a disc yourself and use that. Once logged on, the screen shows the free space on the disc, the files on it and a menu at the bottom. Each file is shown with its name and extension, as well as its size (in K). If it is a subdirectory there will be a * to its left. Use the cursor keys to move the highlight around the files - if there are more files than will fit on the screen, pressing SPACE will show the next screen. Pressing ENTER will cause the currently highlighted file to be selected (it will turn yellow). Any number of files can be selected (and de- selected) in this way. Pressing DELETE will deselect all files. When you have selected some files you can erase them all (press E), copy them all to +3DOS (press C) or copy them all to +3DOS adding headers (press H). Using H is the same as using C and then using the COPY...TO SPECTRUM FORMAT command, except it's much quicker. Only files up to about 64K can be copied using H. Directories can be erased as long as they are empty, but they cannot be copied. ToTrack-Info  R  change to a subdirectory, move the cursor over it and press D. The directory will be read and just the files in it shown. These can then be copied across to +3DOS or erased, etc. In each subdirectory may be further subdirectories, but there are always at least two directories: "." and "..". The "." directory is the current directory and so changing to it has no effect. The ".." directory is the "parent" directory, so changing to it takes you back to the previous level. You can also make new directories, by pressing M. Type a name up to 8 letters or numbers long (no other characters). Pressing EDIT will switch between looking at the +3DOS and MSDOS discs. When looking at the +3DOS directory you can select, erase and copy files as before. Headers are normally stripped away as they are not relevant on computers other than the +3, but you can opt to retain them by using "H" to perform the copy instead of "C". If you had changed to a subdirectory on the MSDOS disc, all files will be copied into that directory. There are no directories, on the +3 of course, but you can change discs and press D to display the catalog of the new disc. You MUST NOT change the MSDOS disc in this way - to do this you must quit (press Q), change the disc and log on again. I hope you find this utility useful and easy to use. If you have any comments or suggestions, please contact me: Garry Lancaster dharkhig@menaxus.demon.co.uk Version History: 1.0 (1993) First release. 1.1 (19/4/98) Added ability to copy files with headers to MSDOS disks. s shown with its name and extension, as well as its size (in K). If it is a subdirectory there will be a * to its lPLUS3DOSp(# Z80 Snapshot Loader (c) Garry Lancaster  (0:0:5: 278,4;1;" +3 .Z80 Snapshot Loader " 1970F Z0a=1̱f$:40030^+a-1,f$(a):a d40030^+f$,255 n$"48krom.c"49152,16384@ e=40261E 20,0;"DOS Error"  #( 39999? #2"romz80.c"40050r #< PLUS3DOS}y>:\[2}:\[˧2\[yͿ:\[G:}2\[y!:\2}2\[y!̀y2*~w#"~R!"~:} > >՜ ՜ ՜ ՜! ̀!̀> >x >&.!?̀!^!̀!@!̀:L (8>!"~՜(՜( >՜G՜@!!̀2@!!̀2@!!̀2! ̀!̀>!@@*B"u:@2x:[(>2y*F"{:]^0V(F@!r !@NF^V^VNF~ ~ G~ G~ ^W^V^V ^V ^ VO o g>@PLUS3DOS_(#_f Z80 Snapshot Loader (c) Garry Lancaster  (0:0:5: 278,4;1;" +3 .Z80 Snapshot Loader " 1970F Z0a=1̱f$:30032Pu+a-1,f$(a):a d30032Pu+f$,255 n add=0 x"Address (or ENTERTrack-Info  R ): ";a$ a$""add=a$ ,30030Nu,add-256*(add/256) 30031Ou,(add/256) e=30337v "20,0;"DOS Error ";e  #( 29999/u #2"z80.c"30030Nu #< PLUS3DOSuy>y>0y>:\[˧2\[yͱu:\[2\[yy*u~#"uR!"u:}u<2}uͳu!@:~uͳu*uw#"uR!"u:~u >2~uͳu >2~uͽu ͽu ͽu ͽuʗw>c>y2\[O!:\*duR0[du!"duz !̓u&.!?̓u0 !Pu!̓u0 !9̓u0{ "du!0u]v!@]v!@]v!@]v ! ̓uHv!̓u:ͳu>2~u>2}u!"u!"uͽu(uͽu( >uuͽuGͽuu>ͳu!@>ͳu!@>ͳu!@>ͳu!@>ͳu!@*Nu| *8uR} |( +| }0| !@"@y"tx*2u"uu:0u2xu:Ku(>2yu*6u"{u:Mu^0V(F*tx|@ > >>ͳu|gfu>ͳu!@>ͳu!@>ͳu!@>ͳu!0u!tx >y!@@1!*|@(* >y!!_>y1'!NF^V^VNF~ ~ G~ G~ ^W^V^V ^V ^ VO o g>PLUS3DOS8 8 ZX Spectrum +3e Window Channel Demo 7:7:0: (4,"w>4,0,16,20,5" 2^#4;0;5;14;1;30;1;"+3e Windows"'"===========" <#4;30;0'"New with version 1.10 of the ZX Spectrum +3 are powerful text windows, which you can PRINT to just like the screen." F#4;30;2'"As you can see, text justification is available in three modes: left, centred and fuly justified." Po#4;0;"Of course, you can also turn it off, in which case you are responsible for word-wrapping!" U 9000(# Z5,"w>0,0,2,30" dh#5;1;6;1;14;"Windows can have any character size, from 3 up to 8..." nc=83-1 x)6,"w>"+(c*2)+",21,2,8,"+c 2#6;8-c;6;14;"Size ";c 6 c 9000(# #4;1;30;0'"Windows will automatically scroll upwards when required, or you can scroll them up manually:" +a=112 :#4;7;:a 9000(# 6#5;14;"You can have double-width text:" c=38 )6,"w>"+(c*2)+",21,2,8,"+c E#6;8-c;6;14;28;1;"Size ";c 6 c 9000(# -#5;14;"Or double-height text:" c=83-1 )6,"w>"+(c*2)+",21,2,8,"+c "E#6;8-c;6;14;29;1;"Size ";c , 6 6c @ 9000(# E3#5;14;"Or both together, of course:" Jc=38 T26,"w>"+(c*3-6)+",20,3,12,"+c ^Y#6;8-c;6;14;28;1;29;1;"Size ";c; h 6 rc | 9000(# #4;0;29;2;1;"Reduced height Track-Info  R is also available, allowing you to cram more characters into the same space." c#4;0;29;3;1;"This can be combined with double height as well!!" #4;0;29;0;1;"Altogether, that's a choice of 48 different character sizes!"''"And if the built-in sets aren't to your liking, you can supply your own."  9000(# #4'"It is possible to use the standard attribute and cursor-movement features such as INK and TAB, as well as many more special control codes which can be output using CHR$." #4'"Block graphics are automatically scaled to the character size: ";142;137;131;135;" but UDGs are just 'clipped' to the current size.";0;  9000(# =#5;"You can instantly 'wash' windows to new colours:" 2#4;24;76L;15;1;  9000(# #4;2; 6,"w>5,5,14,22,7" #6;4;0;14;1;"You can also save the contents of a window, in case something overwrites it, and then restore it later."  6  9000(# #4;3;  9000(# <#5;14;"You can use commands like CAT #5 ASN:" &#4;0;14; 0 #4 : 9000(# D-#5;14;"And LIST #4 etc etc..." N #4 X 9000(# @4:5: #(15,"w>23,0,1,32,6" #2#15;2;7;18;1;19;1;30;1;1;14;"Press a key to continue" #< 15 #F""9030F# #P=""9040P# #Z15,"w>23,0,1,32,6" #d#15;14; #n 15 #x PLUS3DOS h (#Gw /:1;"TapeFile v1.01 (+3e/ResiDOS end)"  '"  2006 Garry Lancaster" '''"1. Copy file to tape" '"2. Load tape to file" #Bos=300022u:os=0''"ERROR: +3e or ResiDOS needed.": ("Choice: ";c 2c=11000 <c=22000 F 40(  -1;" Copy file to tape "  3000 s=300088u  b=0 $,16,0;"Reading block ";b;"..." .s=30014>u 8,16,0;"Saving block ";b;"..." B.a$(10 ):a$=f$:a$=a$(10 -b)+b G$os=1d$=¾23418z[:"t:" La$32766,s+2 Qos=1d$+":" V,s=0s=30011;u:''"Finished!": ` b=b+1 j 1060$  -1;" Load tape to file "  3000 x=300055u ''"File ";f$(l);"..." #"Start tape and press ENTER:";a$  b=0  ,16,0;"Loading block ";b;"..." $os=1d$=¾23417y[:"t:" ""32766 os=1d$+":"  ,16,0;"Writing block ";b;"..." *s=30017Au 4,s=0s=30011;u:''"Finished!": > b=b+1 H 2060  "Enter disk filename: ";f$ l=f$:l>32 l=32 .n=1l:30020Du+n-1,f$(n):n 30020Du+l,255  "i29999/u:a$(1024):addr=23627K\+256*23628L\+6:"tapefile"addr:x=addr "?os=300022u:os=0"ERROR: +3e or ResiDOS needed": "/:1;" TapeFile Installer " "&"Enter drive to install (eg C:)"'d$ "d$28920" "d$(2)":"8920" ",os=1d$+"tapefile.bas"9000(#: "%d$+"tapefile.bas"9000(# " #(;addr=23627K\+256*23628L\+6:x=addr #2 29999/u #< 3puuuuuv`i0u!;v"9v!v"vͨv@R!Lv"9v!v"v:\[˧2\[y!u #:\[2\[y PLUS3DOS!Du8vҋv8v 8v Ëv!8v!8 xR"DMKx!PY8v0XK;v^#V#^#V#:\[˧2\[y͉v:\[2\[y!:\Îv!{=\ 0=2:\*=\!v!9"=\::\<("=\ Track-Info  R  dddxDa:PLUS3DOS0@u ZXZVM for +3 Set preferred colours: 1:5:5: (9Open stream 3 to printer if transcript facility needed: 2 FSet default typeset Kmode=32 :32 or 64 P,23606,0:23607,60:Standard Spectrum font Z236066\,0:236077\,108l:Font from file zxzvm32.fnt (you may replace this file with any 768-byte Spectrum font) _/1;" ZXZVM for +3 "'' d"*.z*" n""Story file (or new drive)>"'a$ xa$(a$)=":"a$:30 *n=1̱a$:28763 [p+ n,a$(n):n 28763 [p+ n, 255 28764 \p+ n,36$ ?("Choose typeset (32 or 64 chars) (default="+mode+"): ");a$ a$="32"a$="64"mode=a$ 28927p,mode-32 "zxio.bin"16384@ X=28672p  @q27135i:"zxgrph32.fnt"27136j,760:"zxzvm32.fnt"27904m,768:"zxzvm.bin"28672p J "`27135i:"zxgrph"27136j:"zxfnt"27904m:"zxvm"28672p:"zxio"49152 #(1:5:5: #-,236066\,0:236077\,108l #2-1;" ZXZVM for +3 Installer " #<''"You can make changes to set yourpreferred colours, typeset and printer before installing."''"To do this, press ENTER and alter lines 10-90 as desired, then continue install by typing RUN 9000." #FV''"Colours can also be changed in play, by pressing the up and down arrow keys." #P&"Enter drive for install (eg A:)"'d$ #Z d$="":: #dd$:d$:"zxzvm.bas"8000@:"zxzvm32.fnt"27904m,768:"zxgrph32.fnt"27136j,760:"zxzvm.bin"28672p,16383?:"zxio.bin"49152,6912 #n Da:ZORK1 Z3 P48KROM C 48KROM C MFORMAT BAShMFORMAT DOC#MSDOS BAS^PLUS3DOSmlll66666 ?h> ~`f 0f8ll8mf; 0 000 0 0~<~~ 0~ 0` 80 0`0 ~~0  0 l8flxpxlf``````~cwkkccffv~nfff>``|fff|fff>ff><``|ffff8<8p``flxlf8<6kkc|ffffff>lv```>`<|00|000ffff>fff<ckk6f<<~ 0~<00`00<<  <2~L2r@uͩs*q#"q|8 !"qo@@u|q:r=(<(!(8q͆u2rJq>2:\!r@v9 Stub encountereA Version mismatc4 Memory test faile Press SPACE to finish $A Story type 000! @2rcro&!+!Vr:r( ( (s!:p @!>I @!@C@C@CRx!(@CTx@CVx:ro&)z^#VS-z:r8>?22!"!~">2>2! "!>"7ɧ>!@2q2s2r2t2u2͋7ɯ2Ȋ!7@#"q"q"q"qͅs[qs$r%6"6#!@CqCq7*q"q[qR? w&6# *q"q*q"qwt2rCt(~Rtst tsx>2Qx:r}qwt{x>2Qxy:r|V2Qx:r{zH:rڅvwt2rwt{x:rbd8#(!ÅvwtGwtOlxwt{x:rso&)^#V @#| *q[qkt"qSq*q[q @!@@W/_ @@ z @@ 7!(rT] :vu@~#$ _ PYttnuՙ @Ϳt Locals $*q^#V#tͿt $Ϳt $:vu(*qKqluљ @su @00000000$ $*qB :qYv @*qͯu&[qR rv @!vnfNљ3v~"ڙBvn$f%ՙOv~#ڙv @TvnfՙTv @##v @Caller PC=000000 Call type=00 Routine sp=0000 params 00 $0000$Z-machine stack trace: $[End of stack] $*qKqvљw:r ڙ:rڙ6 #6 #6$ڙv @!vA Illegal instructioIllegal instruction at PC=000000 : opcode = 00 $*qKqUwљ:rgwڙ;w @!-w4 Out of stacIllegal instruction at PC=000000 : opcode = 00 $*qKqwљywڙwՙw @!w2 Property not founInvalid property at PC=000000 Object 0000 property 00 $*qKqxљw @!xDivision by zero at PC=000000 $6 Division by zer!1xT] pux{xy!AxX!1xWXx2Qxoͱx}(:Qx<2Qx77o&)x^#Vxxxxwtw6wtwwtwwtyut!1x:rwxx!5xoxx7!1x:rx?x?x7wt0y*q+t+u"q7&oKRx) z @@ #{W @@7Ϳt Memory write has failed! HL=$tZͿt Expected $tͿt Got $tͿt $@!(r*q =O s#r70 **qn#f#"q&o[Rx)@`i*q =_~#foHz/z/z/z4z4zHzHz9z%Vz @@You should never see this message! $zzzz-{{z{/{%{{8{v5{y!!*qnf"qnf"qn$f%"q~"& "q77)yz%{åzwtGwtO{x(g7xxxGyxyx! Q77ɯ2r7~!@i`%:r8%8%@B0Si@!@B~k~:r8*q[qR7)yy7>2r7:r7>'@>*@>-@B@G! >$@0@>yz(͔ @`i|!@O>:o| >/2n|>y|(>-:n|>y:n|: '!o|RE!!@ŐO0@o|o&>$@-@*@7/999/9999 |W}G}3}}}%}||s}||||}|*1x|~k~*1xE~:1xy)y*1xèz>2Qxŀ:rڧ>2Qxŀ*1x*1x,z@{x(g7[1xz7͔:r8 @`i|:1xy#-y7:1xy+-y7[1xzm͔7)y[1xz(͔͋[1xz(ً͔)y|~k~[1xz7'7:1xy7)y*1x)7)y}}}}~~~y~t6K"4GZ~~~~~@_vvv*q[qr@7*5x[1x8/k~*1x[5x8 k~K1x!5x:Qx=(`^#V###*(wt(P˿w(˷ʠzʥz_gwtol(|g|}(*qKqz 08 "qCq7wt(w7wt*1x[5x|g}o7)y*1x[5x|g}o7)y*1x[5xzk~{k~~*1x[5x7)y*1x[5xR7)y[1xK5x77)yK1x[5x͉w`i)yK1x[5xqw)y:1xy+-y[5x~k~:1xy#-y*5x~k~[1xz(1K5x͒7)y[1xz(K5xʎ7)y[1xz( K5xL7)y!7)y[1xzk~K5xͳ@~k~[1xz7K5xͳ@ @7[1xz7K5xͳx/G@ @7[1xzk~͔:r8@YP*5x$~k~@_:5x~k~>2Qx>ŀ>2Qxŀ*1xK5x @o&7)y*1xK5x @`i7)y:1x*5x7-y:1xG:5xO9@[1x*5xz7|7͋7[5x*qR"q*1xèzĀсPdĀB9X|ZńZt>!1x^#V###2r*1x| 7)y,zktG:Qx=O8(Hͅsw*qut*qutq#y(!5x~w##~w#### *q:rw"u$t%"q"q:r?*1x,zkt7G*q:QxWwtGwtOz(##q#p#7*q:1xݾ#Track-Info  R ~~k~*1x5y7y:1x7-y*1x[5xK9xx͹#y *1x[5x:9x| } x@ @7[1xz7K5x*9x:1x!@:1x=7K@:1x'@:1x2*@B@E@*1xx @#y @#z @#{ @7:1x-@:1xG:5xO0@*1xQ7:1x27*1x|(>->$$7o&Q-00000$[9xS*=x":<2:<2"S*1x"*5x"S1x>2Qxyŀ*"1x*"5x*"9x>2Qx:=2zZ!7)y*"1x*"5x*"9x*"=x>2Qx:=2z 8*1x#@(?G:r0@#o&Q#@o&Q*1x@G# @2:r8q*1x:Qx8[9x3@x *9x|( [=xzĹ*1x#@( G#@ @! Q*5x|(y*1x[5xɗl&7)yͤ{?*1x ͤ{*1x# @+:r8:Qx8[9x3@#x *9x|( [=xzĹ! Q*5x|7y*1x[5xɗ7:Qx8[5x6@̞o&7)y:1x*5x :1x*5x7*1x[5xK9xN@7*1x7)y*1x|/g}/o7)y:=x*1x[5xK9xɗ*1x[9x:5xG:*=x57G @#O @#:Qx>8:=x(*_K9x*5x@W#@_+*1x$(- x _K9x*5x@_:1x( x !)yk~)y~*5x}(>[1xK9xx7x $8 +@ @ x 7@ @# x 7*1xK9xx7 @# x 7:Qx0!"9x*9x|7B@]E@UK5x*1xx7ȯ[=x<!9x5 7ŷ( BK 0@@o&Q# x *1x#@G#@+ @# @*1x#@( _y @K#y @*1x#x @7Љ҉ЉЉryՉ߉vvvZXZVM savefile>T@Ϳt $!^?W@:Qx0!"1x:Qx0 !@C5x!*q"*q"*q[qR"*q[qR"*5x"!`@K*1xf@0NK*q`@0$@#(! >$@7чZ@:rk~7!)y!@2T@Ϳt $!^?8W@:Qx0!"1x:Qx0 !@C5x!]@!#~2:QxK!c@!@ˇW: @*q[R"q*q[R"q:K*q]@:K*q]@Z@*"q*"q!:r~7)y*1xK5xc@*5x7)y!I*q[q*(^$V%*qRu$t%& uNot a ZXZVM savefileOperation abandoned!7)y!7)y*1xK5xx ) 7)y˼< *1xK5xx(<t  7)y:1x<@o&7)y7k~*1x|7P[1x!z {07)y||/g}/o#zz/W{/_xx/Gy/O| |}z{|7C( <= yx(.ͮ͑x ͮ7z!>7jR0 = 7?@_WSɊ2ȊSˊ"Ɋ$>8<2Ȋ!"ˊ| |(:Ȋ=(Q*Ɋ#| vvvvvv{8 | }8++"ɊDM˸q#7Kˊ[Ɋq"ˊDM˸q#7%C Jz<*K K[͔y_y8=  3 ':r8  @PYH @_:r8  z @#H { @͔zʁ"zʁ͔"͋* *ً*Ӌً͔* *ًߋ*ߋ"'z7͔"͋*ߋ[ӋͿtObject $t͔Ϳt @ $tͿt Siblings: $ًtz(͔Ϳt[$tͿt] $Ϳt Children: $͋tz(͔Ϳt[$tͿt] $ًͿt $uͿtWARNING: This story file has attempted to access object 0. The story file may behave unpredictably, or you may need an updated version of the story file. $:qt[qt>2<͔:r8 @`iktO @#O:r8y q(#@?yO #:Gy(3@8('Ϳt Warning: Property not found!$@o&:G@8(:G@# @o&*Y@`i:G@8( !:r8@(##:G@mw(:G@# { @7z @#{ @7:W+:r8@_({!w7+7@2u&o:s(=( &:r F&n&Qg2t:r2s;ʑ,;! Qa:r<82sd:r=(>2t:r8>2sd:s<82s2rd2t:r8>2sd:s=0> *****abcdefghijklmnopqrstuvwxyz *****ABCDEFGHIJKLMNOPQRSTUVWXYZ ****** 0123456789.,!?_#'"/\-:() ******0123456789.,!?_#'"/\<-:()= &)))))"v>2ua}*voQ2ua!"!"">2!і"і72Ֆ2֖<2Ӗ!!@2ז>2!4@x7`i .##7@#!:G:Ol@8! * [CCC:(>2DMxu og:Ֆʄ*і^#Vbk@G#@O# } @x @#y @7Track-Info  R }!:: ̀} *s#r#"̀8 *#" *#">2B@o:O?:G?x7! :Ӗ>$@!@G>7$@Y(Wʒ(D=!Ӗ_6H@H@8)ч=!Ӗ_6H@H@8ч!@ @7!@ˇ @7:Ֆ!ؖ*і+r+s"і:Ֆ<2Ֆ @# @+>H@:Ֆ7=2Ֆ*і##"і>H@O Stream 3 nestin  8 8> .,?! :$( G! ~7(#ɯ21:U@O_0:1<21"2#V0 :1(#:1 "2<21#{!U524x K"S>2U:r#@2U#"%@2)S'!`i@8>G2$# @##_@2*#@G#@OC+#" K+8!x(8)"-*%w"%:1*@:1*2[-<*':4(x( x @#y @###:1 @#*2[R} @#"'#\*#y @7:r8@O#* [/:*= */| [+R8S/!"/G@ _@#uSϘ"ј2ΘK+x:ΘG*Ϙ+"/*+| DKϘx8CϘ5Ә8 */KϘ "/*/KϘB"/!"/x5Ә( */#"/ xڙyڙ|ڙ} 80B'00d0} 0'33d3 3}0>0!@G#@OEJGV!x @#y @B>2}A7>eX!T]u# >eX!T]:\w7B@yz7xz7<7*'C:)C(*%C:wBg:wB7*'C:)C(*%Cl&7*aK:eK:C2eK*'C:)C(*%C"aK:wB=(G zG2C2eK"aK7( ((*}A2}A}zE|E7y((( (9ykDT!XDG(_zG7{8((G7G7>G(7>2`K$( o& 5C2`K7#X:2.EDo&KT+!nD:.E( (( R*}0o"*|Cg˅"!vB :\!@͚B~2-2@!@͚B2,2@7(X  @@ (#=~[x\(,ʩ@(=(!HD>eX:$COI>eX:vBO:$CG:@>eX:vB=2#C2$C2%C2&C2'C2(C2aK2bK>2)C:.E0:vB=2&C7ULx8>eX7(ʊE7} :_K(2_K7:)C(f,2_K:)C['C([%CͤG]zG:)C(8:wBo:%C<2%Cد2%C:&Track-Info  R C<2&C:#CF=2#C:vBo}=2&C:$C@L7:wBo:'C<2'Cد2'C:(C<2(C72$CGF:&C0x2&C:(C!"'C72)C7!"'C7O2eKy2fK7ɯ2_K*vBy 0 y8L :)C(:$C8}=G}=2#CC%C7x8EC'C7GG7zG7Bad ERASE_WINDONo ZXFDOS function 00Unsupported story version 000Story finisheZXZVM v1.11  1998-9,2006 by John Elliott, with changes by Garry Lancaster Story file: $ The story is loading... $ ZXZVM is restarting... $x (-U!  -U -U x7PY -Ux7PY -U77!@G7:)C7>}>7:VF7ȯ2VF -U  -U60 -U -U60 -UG0 -UO֯2TF !@\-U6! -U_ >Fx z :H\7000000 $yx:TF<82TF!:R ("(:,(,,(,>(,(.:S (~ &:L.8(;.(.&:@A.(-S(-"F"F*F>eX!~wG(~w>eX:vB=!$C2#CeX͗K>eXF͹F>eXͬK>eXF*vB{8|=z8}=o:Bg% WSaK=2eK2eK=2gK2gKbk))"G:x\2GG,HFG!!H~##( +~x  !G:x\(w*G|(+|"GGGG"G*%CͤG2_K:)C *'C"G*GͶW2G#ͶW2G2GG:G2G@H:JeXH:\_W{8> aJ KJH͹F:HJ<2HJG(F2`J:G!GU!G J:`J @:G<2G2G͸JͶWO:GG:GGͶWy @O#͸J:`J @!G4!G4[G*G&:GH=2GJH:G!GH<2GJH[G*G&͹F[G:G_ͤGF͹F[GͤG*G##:G( GͶW_#͏G:G!GFG zGF:G( 2GJH:G2GJH͹F:gKF=2dK>eX>_L>eXF:bKo:B2bK#L{ L (U Я2dK:~B :eK( >L>2dK:fK( >_L>2dK:wBo:aK8:B=o:bK0{L:wBo:aK<2aK 2_K:`K :aK=2aK:bKo:B2bK2aK:Bo:Bo:bK̀L}2bK2aK͹F>eX́L>eXF:BO 2cK:BG:cKͅN 6#:cK<2cKɯG:BO 2cK:BG:cKͅN:cKO:BͅN :cK<2cK:vB=O< :BG:B=ͅN62cK:~B:cKM0c` >' 0>?o&)))K6\:}A i :bKͅN:aKo:dK(:eK( /w$w$:eK(/w$w$֛8E0o&)nM ~+n(]͗KaeoeueAeOeUess>><   jdJB@`$BBB$DD.@(DNL$B.h,N¤DDFDDD NN B$@dں@ƨȨΨʊ䤮JLJꎎƨ΢JJJNJD$DBB& @@& ƨ df FjNB (*,*@@JNJJĪƪƃf@JJ.JJF ,DLDFDL@ ۽`o ZZZZ[X_PPP ooUU_P ^⦪FBʄ FJJF@JZDdl.J"Dd"D@F$n*"D!BF"JFDdD@FDDJD*FDdDjfDNDJF`fJjUĪUJPp hjLȌJjHƨ {gDDHF𖖖64FONT-> !$@ $$$$$$ $$$<$$@@Gt. HHGt.!!rr..wwwpp~~~~~~~~boDDDNDOIIO,H HĦĬΤΊDNNnJJJ@nJDʪȪʢHJJJLHHJLJKK ?ݻ`o ZZZZ[X_PPP ooUU_P ^⦪FBʄ FJJF@JZDdl.J"Dd"D@F$n*"D!BF"JFDdD@FDDJD*FDdDjfDNDJF`fJjUĪUJPp hjLȌJjHƨ {gDDHF𖖖xTyT|T} T 80B'T0T0dT0} 0']T]Td]T ]T}0>0 $T @>eXjT!!6#6>eX!@KH>eX~T!!jT!T^#6>eX!T{7?͹F!U~Yy#FOxSPV^#V#SCU[PVmU̓Uo&hUQT+!\U+3DOS error 00000:\[˧2\[yTrack-Info  R :\[2\[y-U<SJV"LV! `-U?-USNV:f[o( y2IV!U-UT7*LV[JV-U?:IVO*GV-UT-U23V̓UVJGG( zG ?qG zGmU Please insert the disc for Z: and press ENTER $x7PY͟V -U04B8*(( x7PY͟V -U0B8( 7|<(< O|?g@R|0}0|g -U  !-U6WWWW @!-U8(7S,E:p!B(!BvB WFR(!AWSpectrum +3 require:\[2\[y͙UB>2}ADJG*,E^(zG#DJG*,EV@>eX7͠EU}X!D}X{²E1X>g~UX7ͱWG#| ͱW#O| 7W{ }(1X>gV#^UXBK##| 7W1X>grUX7>eX>eX!:\[O|<(<82\[yo2\[y}G:\[2\[yB\G!:\{=\>2:\G(:\[2\[yGG*G# @#ͶWo&~E G @! FCGF7:GUHW:GsI͸JT]+:GG:GGͶW @#!G5!G5 KJH!G5!G5 KTrack-Info  R Track-Info  R