From a0129969ac528a3750ffbb352fc7b8f3b6398146 Mon Sep 17 00:00:00 2001 From: Tim Moore Date: Mon, 29 Feb 2016 01:46:36 +0000 Subject: [PATCH] Add distributable files from spconv.arc and update README.md --- !Boot,feb | 16 ++ !Help | 263 +++++++++++++++++++++++++++++++++ !Run,feb | 24 +++ !RunImage,ff8 | Bin 0 -> 31487 bytes !Sprites,ff9 | Bin 0 -> 6076 bytes !Sprites22,ff9 | Bin 0 -> 11356 bytes !Sprites23,ff9 | Bin 0 -> 4476 bytes Docs/Author | 68 +++++++++ Docs/History | 156 ++++++++++++++++++++ Docs/SPConv | 325 +++++++++++++++++++++++++++++++++++++++++ Docs/SPConv.1,ffd | 250 +++++++++++++++++++++++++++++++ README.md | 14 +- RImage.sig,ffd | Bin 0 -> 152 bytes Resources/RomImage,ffd | Bin 0 -> 16384 bytes pubkey.asc | 13 ++ to_do | 20 +++ 16 files changed, 1148 insertions(+), 1 deletion(-) create mode 100644 !Boot,feb create mode 100644 !Help create mode 100644 !Run,feb create mode 100644 !RunImage,ff8 create mode 100644 !Sprites,ff9 create mode 100644 !Sprites22,ff9 create mode 100644 !Sprites23,ff9 create mode 100644 Docs/Author create mode 100644 Docs/History create mode 100644 Docs/SPConv create mode 100644 Docs/SPConv.1,ffd create mode 100644 RImage.sig,ffd create mode 100644 Resources/RomImage,ffd create mode 100644 pubkey.asc create mode 100644 to_do diff --git a/!Boot,feb b/!Boot,feb new file mode 100644 index 0000000..754fbfb --- /dev/null +++ b/!Boot,feb @@ -0,0 +1,16 @@ +| !Boot file for !SPConv +| + +Set File$Type_CEF SNAold +Set File$Type_CEE Z80old +Set File$Type_BA0 Z80 +Set File$Type_BA1 SNA +Set File$Type_225 SP +Set File$Type_226 PRG +Set File$Type_227 ZX +Set File$Type_701 RAWsnap +Set File$Type_702 SpecProg + +Set SPConv$Dir +Set SPConvRom$Dir .Resources +IconSprites .!Sprites diff --git a/!Help b/!Help new file mode 100644 index 0000000..fd19234 --- /dev/null +++ b/!Help @@ -0,0 +1,263 @@ +-----BEGIN PGP SIGNED MESSAGE----- + +!SPConv - RISC-OS version (1.10), based on SPConv (version 1.08) +================================================================ + +Purpose: To convert ZX Spectrum 'snapshot' images to and from different + formats. + +Details: A ZX Spectrum 'snapshot' is a memory dump of a Sinclair ZX Spectrum + computer suitable for use with a ZX Spectrum emulator (common on many + machines now). The RISC-OS platforms have several such emulators + (listed below). + This application allows the user to convert different formats of + spectrum snapshots to other versions. + + For full documentation on the converter itself, the different + snapshot formats and the original CLI version (and its author), see + the documents in the directory 'Docs' inside this application. + (Hold down SHIFT and double-click on the application in a filer + window to gain access to it). + + This version is a wimp version for RISC-OS that deals with a drag- + and-drop interface and a simple dialogue box to choose the format + to convert to. The original version is a command-line based version. + Support for interactive help on windows and icons is also provided as + well as a help menu option. + + The main program (SPconv-FE.c) is a front end to 'ROS-SPConv.c' + (a modified version of 'SPConv.c'). + +Installation: + To install, just drag the application from the archive onto + a destination filer window to copy it. + Using a suitable archive filing system (eg. ArcFS), !SPConv should + run from within an archive. + If there are problems de-archiving or running in archives, then + try de-archiving with !Spark or !SparkPlug. + +Usage: 1) Install the application on the icon bar by 'double-clicking' on the + application in a filer window. + 2) Drag a snapshot file of a suitable filetype (see below for info on + filetypes) onto the icon bar application and a convert dialogue + window will pop-up. + 3) Select the file format to convert to by clicking on the suitable + option. (If new 'filetypes' are needed for Z80 or SNA files, then + 'uncheck' the "Old-format Z80/SNA files" box by clicking on it. + see the 'filetype' info below for more information on this). + 4) Now click on the 'Convert' icon to start the conversion. + (Click on the 'Cancel' icon to abandon the conversion). + 5) A 'save-as' window will pop-up allowing you to save your file + to a filer window in the normal RISC-OS manner. + + +File Types: + You must 'file-type' your snapshot files under RISC-OS for them to + be accepted by !SPConv. + Use the filer menu under the 'file' submenu and 'set type' and + specify one of the filetypes below. + When using !MZX (at least up to version 1.10), set the file types + for Z80 to Z80old (or CEE) and for SNA to SNAold (or CEF). + + The filetypes are the RISC-OS equivalent to the file extensions + used on versions of 'spconv' on other machines. + I have used the following file types for the moment, based on the + types used in the Spectrum emulators for RISC-OS machines... + + Filetype : Hex equivalent + --------------------------------------------------- + Z80 & Z80old : BA0 & CEE (Z80 snapshot) + SNA & SNAold : BA1 & CEF (SNA snapshot) + SP : 225 (SP snapshot) + PRG : 226 (PRG snapshot) + ZX : 227 (ZX/KGB snapshot) + SpecProg : 702 (ACH snapshot) + RAWsnap : 701 (RAW file) + : FFD (Unknown type) + + Note that the filetypes BA0 and BA1 are official Acorn filetypes, + but that current Acorn emulators (as of June 1995) do not use them. + For this reason, there is an option provided to choose between new + and old style filetypes for Z80 and SNA files. + The current default is to use the old formats which are compatible + with current versions of emulators such as !MZX. + + The output filetype is fairly irrelevent when moving the files to + another machine, though the can help you identify what they are + before copying, for example, onto a DOS disc. + + Note that these filetypes do not distinguish different versions + of 'snapshots', such as different versions of the Z80 snapshot. + The converter *should* try to deal with them. + + If you don't know what type the file should be then it may be + a RAW file. Try either RAWsnap (701) filetype or just plain + Data (FFD). + If it is a RAW file, then the converter will attempt to convert + these if possible. + If not, try each of the above types (SNA & Z80 being the most common). + + + +!Scrap: RISC-OS must have seen the application !Scrap for this to work, and + must have read/write access to !Scrap (and sufficient space - + probably 48k to 64k aprox.) for it to work. (Good reason to get a + hard disc :-) + +Notice: + I'm no expert on the snapshot converter itself, just the front-end, + so you may have more luck with the original author if any conversion + problems arise. Hopefully there shouldn't be any errors introduced + into it by this front-end. + See the documentation inside 'Docs' for details about the converter. + + This application has not been tested on pre-A5000 machines or + pre-Risc-OS 3.10 systems. (It also requires SharedCLibrary 3.50 + or higher - I think). + +The ZX Spectrum ROM: + A copy of the 16k ROM image from the ZX spectrum is required for some + conversions. It is provided in the 'Resources' directory inside this + application on the basis that it has been released into the Public + Domain. The ROM is (was?) copyrighted to Sinclair Research. + + ================================================================= + +Inside the original distribution archives... + +SPConv.arc contains: + !SPConv + !Boot, !Run, !Sprites,Sprites, Messages, } - The application files. + !RunImage etc. } + Resources.RomImage - The rom image (spectrum.rom - see documentation). + for certain conversions. + Docs - Documentation of SPConv 1.08 + +spcnvsrc.arc contains: + ReadMe - Details about merging source with main application. + !SPConv + c, h, o, Makefile - All to do with the source for this version. + CliSource - Original unix & PC source for SPConv 1.08 + OldSprites - Old Sprites + +The source directory application can be merged into the main application by +simply dragging the source !SPconv icon onto the main one (once unarchived). + + ================================================================= + +Author: RISC-OS conversion: Tim Moore (c) 1995 + Original version: Henk de Groot (c) + (Contact: Henk de Groot, hegr@ensae.ericsson.se) + +Acknowledgements: + !MZX and !Speculator authors for some of the filetypes and the + Sprites for the filetypes (now replaced by newer ones). + Note: The 701 and 702 filetypes are taken from !Speculator + and I've assumed that 701 fits RAW files. + The CEE and CEF filetypes are from !MZX. + + Mike Borcherds for supplying the Acorn filetypes for Z80/SNA. + Richard G. Hallas for some advice, new sprites and template + improvements. + +Some Archimedes ZX Spectrum Emulators: + !MZX (version 1.10 at this date) by Graham Willmott + Last known contact: + Graham Willmott (se2044@bristol.ac.uk) 22 Apr 1994 + + !Speculator, author unknown, availability (officially) unknown. + Apparently copies available should not be around. + + +- ---------------------------------------------------------------- + This application is Public Domain. + Distribution is only allowed if the application is + kept to it's orignal structure, or any alterations + are described and acknowledged and I'm notified + of such changes. + + Any source codes and binaries included are copyrighted + to the author(s) of them. + + Tim Moore © 1995 + +- ---------------------------------------------------------------- +If you wish to contact me then I can be mailed at ... + +Internet mail (University of Portsmouth): + sis1514@sis.port.ac.uk + +(Until July-ish 1995) + +I finish before then, so mail may remain unanswered for +a while. + +After that, I don't know what's happening, so this may be +the other possibility until I can get another account (and +maybe a modem etc...) :- + +Mr. T.Moore +30 Meadow Rise +Dawlish +Devon +EX7 9AZ + + +(Future stuff from me can be verified with PGP). +- ---------------------------------------------------------------- + +History: + v0.01 - Development version, no front-end. Changed source a little bit + to work under RISC-OS and to not use UNIX libraries (which caused + problems when combined with RISC_OSLib). + Also made the source a header/source set and changed the main + parameters (no 'main' anymore) so that it could be called + suitably from a 'front-end'. The source doesn't deal with + determining file types anymore. + v0.02 - Development version, with front-end. Did templates, wimp shell + and all those sort of things. Deal with 'drag-and-drop' loading + and saving, file type identification, calling the conversion + routines and saving from !Scrap. Doesn't support RAM loading/ + saving events. + v1.00 - Release version. Added !Help and tidied up etc. + v1.01 - Alteration to change filetypes for SNA and Z80. + v1.02 - Changes to template to use outline fonts and align correctly + (I hope). + v1.03a- Outline fonts cause problems with RiscPC (I thought they might) + so, they're back to as before. Better this way, as you can choose + the font to use on the basis of the system font (similar patches + exist for pre-RiscPC machines - see 'FinalLook' by Matthew Godbolt + especially). + Option to save old sprite filetypes added and new sprites addded. + v1.04 - Tidy up of templates and fonts. Thanks to Richard G. Hallas for + this. + v1.04a- Woops, help text didn't work. Now corrected. + v1.10 - Updated for spconv 1.08 & a few small changes. + It should all work OK (I Hope). + + +Disclaimer: + Any problems and bugs with this program that may lead to your problems + are not my fault, and are the fault of instructions (or lack of) that + people give for wimp programming :-) + + Please tell me what the bugs are, if possible, though or any conflicts + with filetypes or anything else. + + +PGP: + You can check my signatures using a trusted public key of mine. + A copy of my public key block is in the file 'pubkey/asc', but you need + an independent trusted key to be sure. + (The signature for the !RunImage executable is RImage/sig. Check with + the command 'pgp RImage/sig !RunImage' or using a front-end application). + +-----BEGIN PGP SIGNATURE----- +Version: 2.3a + +iQCVAgUBL97pPNZm1AuttC5dAQHGQgP/VW2lhjXb5d+/FOD3Mq9T7YZ3WLTm03A5 +cfaMPRMn6omelZiEm+cBtE/LHaWKaV8EzIeKv+q8KTgquln5VKqRhZLi/vkHcm3D +kpYJ2pXJu4m6Q9ApzQIV0dQGzP9ThShQHXYVr+Z6bh/IDEiFPI4/XM30DTMuVal/ +RihtOjd9uV0= +=r2tu +-----END PGP SIGNATURE----- diff --git a/!Run,feb b/!Run,feb new file mode 100644 index 0000000..938c252 --- /dev/null +++ b/!Run,feb @@ -0,0 +1,24 @@ +| !Run file for !SPConv +| +If "" = "" Then Error Open a directory viewer with !Scrap in before running !SPConv + +RMEnsure SharedCLibrary 3.50 RMLoad System:Modules.Clib +RMEnsure SharedCLibrary 3.50 Error You need Clib 3.50 or later +| +Set File$Type_CEF SNAold +Set File$Type_CEE Z80old +Set File$Type_BA0 Z80 +Set File$Type_BA1 SNA +Set File$Type_225 SP +Set File$Type_226 PRG +Set File$Type_227 ZX +Set File$Type_701 RAWsnap +Set File$Type_702 SpecProg + +Set SPConv$Dir +Set SPConvRom$Dir .Resources +IconSprites .!Sprites + +WimpSlot -min 160K -max 160K +Run .!RunImage %*0 +Unset SPConv$Dir diff --git a/!RunImage,ff8 b/!RunImage,ff8 new file mode 100644 index 0000000000000000000000000000000000000000..aabb2f624c0d2858304e1e24159723fc82d3fd07 GIT binary patch literal 31487 zcmZ_02UwHK5-^+w1PBn38d^k@Dn-CT5h)gkN{tk$LMYNav{+-XAR6rL06A&`qJ}C4 z2n2!+NF)#|iXot=1f*Fp2$*jJ-gEEs|KG=xvhVKf%dO)=&o3AjQKFNZ@NJctar9-$T&gjRo)Z*WYVH%7@XmfrGPB>0ba#ZE$^JeuVzzh8bkAZF^Gp{pa`Uv&w7Pg^TLmUO3RbwI zhtIZn-uaKCrcz!Ri=E=Qzu=0amQr508Eb#MqqcHhtFSK|(c4Z=5zsOl`7MrIRfE=; zNloWvk?6JhgryhL)&{zGp;IR=7}ylvL1P21E*QdZj5p7ooT z!ksnX&wg8WJ3VBhk8?dE=FJC-)myKZZhIM%vJ~rOt!wY6V{2x=IRP8s*@Mk2$yDJb z&v)7Qjlp#*KT*f<%VInyF+z4Q_UABCRxqrS808KOEWs+l!LFeQhQF>HeD7Uj^;NdP zbw$YqG(W^|#@0=`-a+c`Dc#1qU$%RJBBD=Fjms`Ny$EQ{5vXsyqRQ^x*>e~cH!nS;$ zbfs-hYcq41vCY`Co^UMeVwYDr_Vwh zu&||&LS4~Hj0~RAP54S0y$4qGO#7re9CwK zrk_bDNDw+O^FwI?_(7I*MJJClf7Tp#eP|+=;B#^094m1it zU=`Fo7+mZN#1X7Srx>dq^%jVY33R!Q4ctjZF3q5| zOQ1OXp@2&1?%rPeF0@{UTVU!|`$H!BJ38EN2GwpGn`G>tV37P6JDxLgLKrLdGm=sm z4%Uo@^!Spac0Af(BYmk7i@Q%*ChpS!g8^?gYngY2mvh{0Cc&-82g`MI?z_#%xJ*d1 zPx~Zrim^?5vNSg!sU%}vT(pV!S1U$Iun$tSE34Xb z=Cjg*dJ-UYRU&)t-Hs~r>CUl$n37Mch^5uC_3-cmEaibwOPW)PDw~Y ztjPi{v;X4SZO_VFz*qfWe0dA_mN#jgjp{kLfN6>AH!7RLN=W!wCi z$4-FRXJz|-pqm#fRb}J`pH!KX72-PNhNlQljAjYjc?2}Bme zwr#aCsyogD@Xp<;+@7lJrk%KpJ9`0)<0u$MI*XdxNKIB|C)>&(ES1|2t%l8O8ia--La)BS9->= z2uyo9?PAVaM(lTYiw)b}*Jd5|_0j1mBK%}z>UjIC&cu}xIWhM=nY*(}lA!R^0rx5g zqs?soAj5j+uea=QKlbt66US1RzWftKT^NE0RV5Vi4#5glDXUz9H>`QYh@my6N z^UB*Y>33|AgIt=$g_zN0gZA;Ydd}&-E5f|6`Y|Q;7l#-bc6TkXCk2u8#^%tX z?O3sP809?Rl-KgtnwPY*Re=NL*vagr{j#8z`rgVcLF;uwPj1S59lbzMyJ>iav`nLL zX;!~w__d|LHFrd~#a#iOsXDE)K<51%lSJ$Mw$g6iF?ZzGYNeRH^0L#A8Fm0*4j7=D z9n>!G4w>o$9+`>l$%_D4`vns2f?BoVUnDDZ;p5;PC9%p`hnLDcN>@<0p}dY?JI91p zEenUZhNZ}73-?0}f>LO)Y}!{_)(_jDc~7$g1IdqSPu2h^k@G0Yc4mT%gC(7cyBlmn z+`(FxST-Y%BU{x6b!#ar>?&E&VynDgGjWe5w;-&&b1~@m$yO$TASJc82Ym@)fmBch50;t}>vAI-tS#N~bE7S*6f9{8wye%|wp^i& zEh`L}(k7EZpe?sFx$#D*EsJgoTCHul?W9(~+y=m0axT@!mPT1(dxJuv&!BBP3jm)t z`i0DP9b1;xy8{lZN$ycvz@Y0ZY*NcDh=3tw{Wfv_fVf+e#7?vf%T}s)m3(TZF5q ziq?gSz+1 zJ>ISX9Nio!Ay7l6goA2x)Lg2D|Fxeib^8BR@wnSfTMWwMyn21G#idSGt71w$vj)=Q z9EdBhEe>n1*V+xx3G~eS_NgDS-VR$Kgjmn^Q;apmO|`a+b1VKEAfD0VsVN^%Qk9W6 zs%>jmULbFycIsj-l~%(J>7@qj`F|OJ0gj#cbBjg#=a}6l*bSM_J#nwI)-7F#LQD3- zYS-G7)gBw1Dh{(Lq1f5bDF-@dwMvC*PX<;s5FOL_WQ^bqUBJtug z%6RcxjX2eLQjT;ZDO)jRQjT`5~N9P)9xN zNW<(=&W|G#%S{UlZDHw}t2Lr>4oBGz)zkw4oG9g46WI;%UbYD-G^uTJo3AvZi=4c^R(x< zv7-&6M}CiPG5G|)O~M~7WtNu9^9B%>|090_?D1#eVL?3cPAd!PN4kmkV;&eb|@Tqn1WaG!>lKo zK-RxPr8BIcx%VQKckH$zLYEvO6Y9v@27ej&Hng!O7H80{7B}8ESM+No0RawcG|x40 zftaVX*^7Pa4bx`e<)0R zKpZBPU;RFeD7ShrjJWSzm>9nLZ5R=@`ePUoy81&HQGNA57;(|+{xBkXwJ40Jwz?0r zzTCZg`_u z0ra2jhQplSM>!K=M@T;wuNHHT?i#A+rw=u>Ow_baRNtGZx<66*V4~vDM0wl9?Qvf* zW6W24>$9);<`-Xa*>_*@jUT?^(kWkY$xmM~bJ|yYSK=$Ko%0pnne`Q8+^D`ph#SY3 zSa;D^{HxTr;RdT)_phzyi``m%iRON0zA{5wkP}uWCrHK+ZpplyLSO@*WAES-D)B|6 z%lKl_75oKK5&k@>7=Mm*6@Qj=4S$AIjXzB)#}|p*%le^_t^w*L&-8)~`R2rWq>dO4JHPxe`@FRa}WG zp$e`Ofem52yccO}9@X(U+a zbrLjG+m)yus^v;t6sqP*M2D)n64gQ%xe`0ku40W)Jy)V`D8`j&;tD&FjX1YBIM{>* zEi^W8waUrXcaa{?HgXx>Z@6}Dzwv5J5OK*G>>A>-HA~kJ|IVCB>)=hO<#rB+j=#f= z!P-ymaEQ|kNze*`x)4=EATC6e5V#8w6#{c1Du<}L5S2nyT!@MxaxO%L5QGa68KUJv zln>E#Ai;p5~A%w z)Cf@mI97UA;AVN(KFeKF2-5er=;YM1xu4ZQly7JDv%#Xo;$qjBl)bx_Fz;! z^t>^4^Sw0gxd{kf-bz1JFV$GDPD(YF=-1Uo9S=;j-@P_!?|dMnA&{Rb!m&5oG~8Ly z;tk!`5ewC@#)RG$ZNanz&-(KK$tBUpO$i$}2GXOEw7%jw27mJQcUS{xyJJ7Ui^KcprN zp;qho2YB_3;66#Lv}9fI6n351mT$H9p{;pCl_t={fsWY68ue#a%O5=Fvg%-q3)_XL9Xgwp1NYb2 z9_&>Fr4hEmuXVsZ;a7t-gJB=CwSwl|ln*X)moFFhCj{Bu(p0?Ip7J z_crY7{p)}zj8PWASaB2E?-BDUrFSXZqlss+YZ? z)&4)NSa<9)`vg~9zWqEm+zh^Bob=DQR$)aeW8Btkby#RpQEu;bRbzct2)#r{Ce~G3 zYMlampC*2ld6>ui(1yw^lIvEOcqJI6<$Gp~XWy|WtV~EU`Nxt@xdUmg!_tLxeMJ_+ z?6PIZF2s&YAoE7oRAcc|EV;Z0ORk+!^(>1Kx~N>XKSbZPhz<)XNl%R`^qg^+{`o|_ zALRP@@L$Yv*JsHv8-zo!b>KA=tec$Ir5rwb7AK;awcguq$(@dEOgv4cSF$1GjR#vO=(vYGY`emay;980;`6Vma)*aLbBQcF#-iD#p-=`v-}I{IqNT;r zVg4mcqx6|Gi>7tvx0TW}(~r)WSigE~ao;NM+hJ?w9ba_IUJzmj__DywzJ+RE2JLR0GuDGMu)^=>at2Z1 zmvGzp1U5CHyh8py!f4|w^GWC}$8f`@iWkab77r;HlN8~~44e6P)mZDzVn{A#iWYm0 zHeoKW)Rb#GiZ5QNDAz^~EDl=PjQrJ$F!!{v#V&ua4^-GTD^B$`H91A41s1FF?6%mY z^Ago~7gc!DrVYxYy>d1K@+$@uEC&$g14^a?UV|yAW;{hn3S6XDswQ#AurY+s^J%X| z0y^N}MLs`ywW5jA@#?4S0F=Jj@i8)0rma&d+|A1kY*LP#@!30o-R_{+)0CBmB{}?1 zLU}2@B2OrDo7lTTCqn}*oAkVrye2}=gWV5#JBr)ODFiuMZn6sZj6roKE#;eslPe?X zT--IU@(m0X_2OeFzN_zy?HZ|_m2~w=shg=q`!Wkjvc#=f`610>dy};!dHKTgdLI9= zq*JoK8GZp8fswEY``mHA{)jdu##s{g`Td-xi3kFpBVt!{9720IY6_Eki;NumuH7nV^IrDo7CR?f2J?awk2f?p&_A_!`OQ=JOC2HE+wLXe^RI*7~ zrd>tB;7=giLzT&AlsKDzze?&*LY&e&Js0JH!6mKB%xi7cu~pg3HnrVOyHU5{O55aiRwuUVEmoFnj`L2i$JFeMjB4~!kNYB9 zS`bjFzNX#*gaq*uKmKI`ygnlDh$UA?F}DU95{%_=zv5NCF1SEYCH`m7Dor(|ypYOH zL8du3NFEXpulh`WU5-6OkYx1up^_@^`1WHM-xmAZ-s=%j;TW94r=}U@Y5DoFo7(?; zl-u5Yco*-;E*^J;XPas+v7VG7HIoa#5!f2@?1Ep)Wt7c&7~j+zaEw7?T6vpOIx;P7 zK2t6)Pz73OHyumMr4AjYe$vpsa}4ytnCsLY>jT|}O{Ex2>!UWtr%mMq)og@`ECa46 z_&imFBiE^LkxCzu_yP?UUn99-SM>}?if_H8=eyNGVXeyRqI9s7M=j4O^orYw5YM(^ zi>y<7HzC+*^Biw+TFrv7V&x z^HiIMdmi)z6>B3Urx68H5z_v~pAo%P=<#~7g5>mX{fQyS)3pcGIv`y{OrJC(r^P90 z+WWG@Os3LT)VzG`l`c%h*(pt^CwgKYYUf|nNIPS##Ii^rdnt0GybHrBEM93E^_wd7 z87A^$HCWLa%a!t;XjN0l*SbLSQH!HiL=&TavOrk|U3me^(pB1%wr31GY_eYd)g5Km zQ(l#1D^A;k^ZMS?MuDp@ZncbC?qQ;XT|83sdW7MitzwSQtk5=2_gF$*%7?%|%qnJNYmy|^}@2FB6HXv81Vp_918P|6cOJ>s-eFgpn)<|=esTY6Isp;paU@h0^ zom1L_edx<}@c+u#>5wY*K<$2TfoamLp?*aze~?UNx`=`RT8r!IuW1R*fOcvp<3I+( zWuCIK;O&nh+|usOVzqk|L{N8p{D>uO223NgP9@fNvz!7w+RR#SJ7yvFW=R$V4hEP> zWVjq?n)|$PH20MKgZZk9eQ#+qy_y|Fm`p)X@pne6pPI2u=)xUpny1Wb&7-JF+=Ar> z1A!vLgPO}ls(zw|zd9L&?iWt8s6Upz^xTg}arb6mLERg@3mZ9wVARA;MohTA^K6>) zSEzVK4>8z7onwjaEtngaCb@P=8=~;baG1SdQ2-N{lE4G>x;nyE zNm~}K2^Tq*CN#+cOI}0Xpgf`{? z(g3AT)PJ$_Ao{JwKs*3=WnMJKoYCXXf?gw-=4&6>V6A|{=K$)PcV%VFGDQjK%*Qmt zGNIXc*XyI8(gZrt`kO$PG~g083Rp-*fRh1ah@BVeTZK6@v9My%h8Su8;7 zXlN5Rcuwrx)-Puw$as3!JmaLhdA&EU^GV^;T58Q>9`9M<^D3%g$Fxj?Isyl6eJ!Gu zuB{HyM9&OE)Y0Ec+Noji$_>#or19#0D(WqIo_TlN)AQcAljol_Q=7VY{HKM_>Z!Gz zyvNTA(X};JRXkpYM(ueqRwk;CBkYIQ*zi^%d2=BFDpC6YDgC7&5US4;=2lDQb!3Qx`f;|k-$=Pr?YPmsChbw z3&}$6GS-JQeH9=7-2mo&13f(*R155O)4LFIb9XA4hU8>dA}`bh0$3y7?8>pGb@!TPJ}b;m z2EQx6eb9U)#EeT9>d~o97i4p?f`Iz12>0kW2i_>eG~gwuv8GJ5jJtn!=7o_Jb^L;F zOiO703B>z0`H7KG=-s-fV?6q?7E_(KKj7_-;gD2VI?>=k#iq*6_0Y6eP)Ldxa;)OM zTK7^%m9~3woWp9%Rq`S6L6NN<*mwdST32T_!_zS?+ixb7{(y!+!{SrVvW>JM+Y=zp z68UTg<+5Zlc{$gF$ZJD%%jJ)MKrt!!7`5T-og9)Cwjs}{kFb5h7Ms2QI7yh8z=vWH zL&sj9Y*$tIbP9Ir(mlCuv@%Q)&)1VXec^L4;-Op`{(G0!l3N|*?_FCol1^mKt#aEv zmtbK3BfZlBVRgC_%2JHl$-;c=?zr`}2nRgS z23;_8j7$}7Q+@p_pK7C$9!Vb z3HvUTMf%Q{w{51!ZgQh%y!+2n^BpaT((J?m_)&~{gN&J+agJz<`lcN3OqO+cTdLQQirM-yMp3yDQ zJ+wEy2NtOE?|)&6Q&e6P{-#b{p+Yr2r7r#6yDvPo=T^>SDqvK5zi8rsNdJRIc|7)m zPIxOSGD=>7^odfOkux!F#vxC3BF>IHz%x!+@MbSA|9iRdV^njyU-6vcVzn|8 z!~~L3PPgn%pW|^Ox*)i!R9=mUd8fr?kRPxjaQGXUid9Q4;8u3JU6yL9vUT+v?GAZ5 zi*bye%$U+lEkc=tYT!(5jJKw9T5GwJ)x5?@Ebx*3T7B`{jil0D(R~v_JHnA znZfOtZ2+?B0cf6s`zHhJKm$Eg9+;yY-i&-bMqRIlQcKu7IYQGxHOQHX+V5+!kYk)3 zPN+GA-OF5M4 zqN7ojH^`6bsr1)nl~}h7M>!ZI`sfaxl5ZA5qEn0#y)4ilzz#mThi#z68q|;OG18Pf zWgA_cy!4&O{G`ciU6USJZN9QW9hK-eqw z%+B9j^KPz0bJ7MvZ#(^Y!D74x!9m zY44$Z)qaiT&5F6pYr*0QW|gO^pP6P|oi#D{lFbH12rz`zCS?>;)GQgrXNI%?ffRIj z=s$*7mhGUk+4?#r67gR%vdLnP1wR=q)XoyV_jCW(dS~ZA?B9iHR(?LZ)oy3%3IYBZ zz8c#760G(BB&OAWc<0%1{p+&H0YFtP>zihF*7!RYob?vTJPj#W*44?ZYH@yG(e7O` zk55iKvkb$p((Zd`!A!mkKo_F0dy%4=GT|eO$dr@+)&X?CKxpviSx%t6j4#6l!l-P2 zSva*okqhwb`oECm0g@5(B>x3{3_$(<3yKi@wM-VbIComKV?6z3!69HxMuHD2*3MT% zVfxCJwxZ{1Bb>WH<%)U2-I(Tke#JekGGVtxR0hNE-!00|%wEJ874KGObdxYpml?XXnojO$`YQH05cCH)d?%+1$_dzq%O)bjZ%L3s@h0WLLJbeIb)3Vv+M0K!=}a2W%{s zMaeMHENfxL{LOW-;7_aY|k z()(MfR#3Mo|D~$+ApvZd+uJ0`8&TDLk^U>4p7?Qqx$F;SdBL`2eIP;uXZOj6sUMC| zEnVi!x6YaJW-GaUlK`*)02=CXBGR*0KM|_7d?gv# zSDmO1NLI&i3;dE#Bua}@q25Cb{c1|J zdFwfSI_2x?anNPd=#zo?_ns73I{jCd){EZ!zxSo8wgPOQyHS-!`+lIx#gdw+dSQU5 z%+OpoO8q^%lp zOIlBe4B}nO?>J(Qn5Do1Q(iv+N&H$oQ4rGurwM5lL98sj$uRz`*h;?^H1k0-m*1Hd z-Bnqx#A*v^UOYw`TD*4>>}a?z1bUg$EEP59^+%fy>XbipC||Evo^ck5TlQkF&(hTE zF(V#Xx>%@JjB@IfXJWcmk_5}BUl0iYpGoE&u3f_(-t1NCv7X0wIBeo0ADAy z{c83=7kJ1T=mwve1OL#3=dkh}L0tU#Ef!m>h#!wh!J_JjZ+vt(!@=w)IZ2T6j#ufg z#Mw=D~C+gIEq6B;=p8>_hzD+Dpvw)i`FXz^e3gKZV)?UrV#{(lCGLOQ2uWRg4y zSNwbk$FLZOtR{rGWV!*PBPfgkyC}m+=6i1QyMA_AG_^kbWq2DQrx($YozP6Z1jSws zg<+@OF4e!>Ur*iD3vosjkZ7I!~%6z@lYdZsL!B*)hl0TVA%3X8v66%eT;YNTE zU?UwJJ?O`QcAdHHK8 zD_%+MG8EAbC+~fR%nZj8K{?SHzK;y+M#P4v7`HEleml0<|GVYBJRkFt6pnrRfcfUu z&1)FjvnJ_Ni1H<$n>ubXJ}<|Zr)T>9_P|QAI_(KRQg%2HPN!)(lqX2&!h2Kctv=|j z=h6J&yq%CG`QCWM#IYURgG;%vTjPjE$gOz4?PH&Wf8(001%3k~@nkA5gO7FFCUM<* zyfkSnZLvw3eGJ31F`iRmM|gF?96n&(HWRNJajC`4__E_m-d1mZ3&g*pGjW8_N{zh0 z?!Qo+*g}2RLM69%^ZI$TDUNuG1L8)li6YzzzA%f{*}rZn>uUjUKkI88#K*dc>KVDy zWUCsh?pgw`wuJWvU3K1WDUGsLA?OmK0D8e#7QP|{U&o7ZNm=}_t5Gbg$Z2zQBUbrA z5RC!^M!VT)_hFi}V3d}^@kd{+ma@zur(e=$7Fvx!t8lC2Rj#Ez2QSH8TDOq$&ovBGr%F_y3I{CSoM+`t#avG#ya)J;gxGj zMfVw-0~pxF>zuW0n%>qh)TKp#=H1*v?Lq9uCZwyq|GP{cU1@q1KN3~U>t*#nRt!1mkDsut_^)U$kHBEsclKTY&t^; z)-4R;8*K(86k+%9!!*@qF#-QNp6u1LFiZ;o0nT-Sxv8di_S0s_rs7n3d<(6=^=-{e z4UK&b`RlX^Y@oksR5&x<0;6=`;(1fTn_FfCeXw;X?*x^tkjWfX@0o*YYrh}-1&e(- zgsy4VsQHze{#``*!MUp1&XlpDBbXQin-4x4^?Y>gdX3AUbKLO8o3!^npyjpnFUGSV zUG}L6u1l&NN5OKt-0g9N?o&7@x?xCVK=c|fXLT%FxnD`{PB?1v#tz73^Fxl1oQ|ER z*mAG$Y(aQU?t^}+i-0bwSA}(d0tVsKKeKLCH{$jM z{Cz@{N_S}wM}lp&vW-ub9N;9uMMY}_BLlrQP}8Xa8Wmw9b=0MD=!_~C{9vShRfXUy*$D4XfPmr;(q z?7UmRgN={$gImuyyyQAEsYCTW?;dSN_*7Wf);C%gIWW#>v5{!&Cx( zf(F&8d-|$X8pwfOhEy5{LP`gbl@KdrDfEgl;$&c?R{TirP2}>NGk-|z=4s&xCyXDY=+KcS3hqp0suW&VZpnv#n)41 z{>D9y;~qaIDywGGx?9)jw+{be{P8f2|M9Rt-kv$i+;xtM6hqSx#fYGIkj;k@#-O(* zOWyw?AzS!^G&17bAryXsNS%1>}%-R z;2J9AHZYDbTI2t#$qb@{W4_=68&_EmKy8ocRf}RyU6}GSKLXM~}-;Sg&x*1%&Z1HO< zuW!MBfspu9pP1&)J89@<|Zd5rPMwK;Hf#`wfM}DsvpK})vqfHrG(A#DIW(oZ&WJT` z6k70#Osx(<)QgSED9gt5+;)66fe)-|61Mht!%oHTRqDp-Y^-dh4!DlM9~N$*pq?^a zD+>{kQ;{!Q3UA{0sBOc-tV%L<%5~(AB9lKczwYjz1t~4CW}t@>Lj`ymnRoy?=X3sL41ceWa_)@F%+d?pJsm8l5iw}UyFoU{`{ z#m`+|l6%uCnl%uL;v+=1cX}6Pw_F1@c{B+@Maaj=5n&kh$hhXc$#h6-y-c~fg5M(` zJdCbv>tc8L)`~Rd?nbyg;eQ?2%-WsAt9%~7;vwF(g}(P5{$_5(a#VVkRLKiqz47K1 ztXK9;tz2pJ8W=4nz(py~uTt0zs?*aZ5Okr*5;vng!IbivfZYY4;T~u(LJzkgFG3?R zWkNq?qv80wU0hz*%bFIIv%L-UJB(*}jF*lK1H#+$KtlgI4JgN%o^&!SYI@bpKpPf< z=d`O1hdk4MV%zKuQr^jcV_rH|*vGlWG<#<3L2!-u{HhjVQ2$X7u&rsUD>c+Ph4AY( zI>19_C~Ux&ZTVhT1gb*(zPDWl-;j0wk#NsdDIn46mpqb2ZuUFgdD*8c-so}Ma|L%o zNKjiF8Gyz6Pb5*;_935N8g3Mze<*Ck>wr;Y8V>J8P<4J7g@Y&kAIXLxIw5`j35LS~ zko6x^q{U>v?%hk$_xq9lpd?^FxA|`$dkq4cMET&lwct4JPM4#9w|~_*g~0KG$f3?|T&2<4dLniJDW<8$KRbw1IoTZrl3V zW69r(`TovIc_3RCDB8?@0}zlyj5-jUb4i(-jT-34=KAlaf>^dP0*(Hx$DsXtct#JT zsw9;h(anWD-YuUso~`28+pwzYj#E}op3_!mMjT9HA=BWDY}(6`3-D2KY|1pf^GAg$ zhK*|g?1HjY2#U2ccNicvvB93a8*?(<-7Dr00qsRz<)?(6Zs*1G%-M5i9GjWwAM(e} zBEui%t@Z2Jn%`kSr?eT+DA` zeq6*!N77IEQ#+u#ekq1gGYc`9&f(bMI1ppNhI;eKFzeK|3)xifg|Y6AJK2|o(8(7LYm=eAr_0$^xx*1;@232e>_GGk?ROB z0A3!{+`jdYlR1D!g(!&OmIklaGXLY}LH`#&5Bk^7mvAo1CGQ7*UMi0z!L-#QOPfi_ zV8U4#FJB~Pl0#GaV$^U_d6!>Msf}t9CbheK<tUt3Qm^M|W64vwl`1$LUJ`>LgOd735^_AUeY1lS{%TEG8 z)|Il8*y?ReT>e6y|JP6vPVk&<7m0t3e&3tC2YUL_E(NOT+c{Ct*o>fX%NlDzkg1?h z)UB+)Be`-~$V^0p*3nzo@}xPvJ+f^GLhu5hxM$Y<1TS^WgX@=3WVs+U0TtC!oNOaZ6_K&Lj3|_TY$$KcaIXZX4~))7_W#1?d+s;gS^&Z-kqUFTWy>4wb~KMssV60yzTV@ zXMBli>ktxG06BZkDvnIOImU(?4h*@_dxj)JGhjbv7d}KfNjgvOQXxD>=aLg3YW=aIkg?!0Ym2cm&FPTsl44(j$9MkKH2Z6Z8ZIKO?aAFE<_}-t+E>gUcG%!f&6Cl0k-`#Pg(U>l5P@jX6 zE2@_C(>vJe#vg=)R$+^qI2SmLFTzf?=v{P2Z;m zdlRRxj8(w9t0|;~sad>(}Dpt-EB0Q`~7Ut`CUKr)7)O`2YstyS;Pvxn`%y^yMWR4>viQ7GJUyt*7jn-43O? znXh+0pX$4Z*}m92eBjtFa0?I7)<%2j#p0e8m^J99do|cL#Je=CZ-~FVrlE%oG9tEld5R-~KVr=Q;&py4|K8)*t>hEPNb!Py7*C zEhfXeopJdm4v?uNZ?D;7UPi07?8&%C#d%%pCU8iRoGnJp z2RU(^mwPTmMuyK?N9k>G^Uha^?v6I%9E^VMl;W^t2Pt|<)_zu&&~|AUDH>ws=n z(zeIpMf{rQDYNnH-LpOGpSz?c)KF_So6H`wn#D;@}UTa;E#f2#$`(pY^(CHGWFmPwUc5gYO!rL1~-{{alFm>A(zJE;8gv$8)OG9 zAO#BA!3AAjH7JMhlh5Dz2}7; z^%>4Nnrnr1nL8QQ?d?0`=_Os|A$40XUFR%yStWIHmabnb)$4UT6thmcs5k7u4wP)R zhuKb2c5!TPT9p~2EGEya0kP7@#?{sW?B#NoCG`EGi&Sz+XIKhv-3A|@e6q`IJ8f5^ zd7;$ZC#(Q_W2Oj6DEPB&D1OgGT(eB2J(l?$`DFmtFK1-Pf9#58AH_vPi{Vt}w`vEP z%;v=uj31}XY%A!p#HDY}PXKe&!d@%ueGyI{9Qr)76vb^Wqv$~Naf!g_7y;_1vdPp{ z;I{}UF`Vsx{SVFrPQj6ZjhnX>&|o;0{yO|0X?Nk?Gdm1t*_AER0f79{k&(v_uUJ3srd@;Wfx_TyX_;OQw|aD6vHmP z#ibU2FwEBMi^rbJeJxlE@!kx_KBD7lH>{b{Ca+C-xaYa-Q%1nUxjHro6qsZa#70}Cgs0m~`eyVf?4jVvx8_SNjf_$HXK(~E_Z7jC* z-og7RgyT2-;ErA5oU_7r?|ml8Y!SIc_iRoDnfa`i{-Egjpj1t8c5r?PMk^gSk%M@@ zB7Hy(e+hvfju1xo>X9q%>AWb2CR5|l%CB}KZ}b?TA5N`=toSL_F@5$P5^)I{f&9LG z_HFOABQ1{@?;7Y3NxMX+X~8+VVg{My5drE(WYU6mwgXCJvA`R3>%46B*Ai?272x_n zZ5iHqJM?SnP5kwf&@Tkvlg%Dmq#mBq_3qO3Zc^9HQfJfNpC-MV4sF;d1-36AGfDR9 z%FX5-$>y!dz7X^+T$+2e|w7r5O2TXVM%^2-azE z-{}(~wkO%UPbXHAjQ-RG(n)WvV&?@25-z?Kb>?s0y;v8NH-#|Kio7T6vdH13Y;^y9 z>>d`|VS@d%Hw{j$eB9@*5R#(Wq}oPQrK>g)cK~1Tk<(At_8WUAyolS)*FW_3l1ZvP zw&5oP2KUPTaH;q&SU=nZVi*jm5vBg*jj3+m8qWPJd?fzK0ihH1-Mrqm+gMc+dbH&q z9DDb@ILAkCej5g9KklCBxUqz?Maju~Pla|hrP4(d7{W)DplXOFoS;aP3wI*Qs$0yx zlQ!lzXqQlks}0;>P7D7P@ZQ$>YfJ<9EfIg8B7$j2w_&;AtD*&!+UCZ*ivxFwUU3Sc z_g{w}E7X1s(z$w^Y4P)K4S=U@fF}^hG7nVNb>(j5mIXbp51MU>_@?E~s!HN<8Vb3N zj~_%COoIP{i8Jcm`*d})tzD+}9&$-n)f6uoY~|H_SiF0kTqAcb*3`ge_r{Do2SWL_ zSr0;Dg0|Pmy|~g0L0qr{LAl3iGSl$SD%hxALs`Kb{Whx3iuNhoq`l&F39qlAiu#Mk zF$cfJvcNgBa^`JNmc@<(kP=7@u`H&UO24+(0d+scV%y=<;z2kVvnrIW#o!}mw82{~+>X{2x@*`a$k6uYuzm@5P<)84g z?Je^abZ_1Jx1I4(|1hhmwlBK(-mRw6x%bSU99w4|xO4MxP{TN$HNL%Zytb(Y!Yj2; zK=9zH3P@g05NEojx5 zBtdDxQ2ZI}Yhq;d)F)(=8U=4TL9>w&YKIe6PLv2P` zW$vun#tCV2zl@tWhZDyqF_l|Un&l}k2&q_g1bnKj& zEBAC5^`E)&vx$RFk8SyOdmNUpl24tvE}j7k`Pst{!g2#)T-C{I2sw41_}tXO9gn6V7arv>yikbcvv-(X8Ni)=B)Ex}1tk}`xw9?bNr*g8Bfx9c9VPVUF9ewc* z_UG4pu68afQRI9&Og0*!-?mc7xv0qfn(LvSKK5Q&HCLKoihXQK5$P@8zkk+hCKwd` zKD9_JEm&h0yLN`!{>+-W5ilxv*vOk|%oPd{e%A(M9ZbcM2X-9Y=Wq@L^*rVXL zSjF$D1*d1uJ0srEmHun&o33hEVwk-z=?drce#?cNzTsP8?9!SDNKwR}C|6}GZ)dH) zZ-{p~77qjeF53-{S@@>51)Kv?ang$v!1s$hV_2q~ATD+z+$)Yly&S?a~V@n~-6hU7cHGnarR7FFy~( zMFy6{8?WEjA1+O@xqSOqmO&$Ve9q^(xZy76$zQK_1~k+!p|c=Z9S2&Nm;E+0&v-+e zeQ#_&tZfg^69Kq|whxJA)5-M%wJW zgMEuV+34TL?JK}ORwt#{e4AA=er7hTw5vCZi++pDDUJ^*Dsn5oYIfVPKD*KXM8NT= zh+&rDV6kq}l1auxa{?ZDDxxyb(M%JKo`~9w@ zsPB^UzfThORIl3G|AMXf8K+XS;%nbKfBoxFG3)G4%S1N%6Og8N{K#FelZ_A@*|!@j z)_sum5;7V1d4E42_>4P@dva4cUUwC{HLWs$UBbE<5a%nqlkH7q>Sx?da6cN@0F(S- z>8X&KwQdwX^0Un8uoaF|Ho^D1RTMf>DKy@SwMjQ&XHBdO(|~g(*DRBFW@*aM3(by0 z_Rx+g@rlE{M?=CE_T#!0(9I){BuS5^M(Ff&FYE6ZCg;f&pC_cDp|^#_mw=rOyqD9_^(%Y&{u*ci+0*t{hw z^3NpGsiY*~vrO@`##IfrgMSjIOCCl^(%G?i`qNl+<3a4K8^tkg#m^r&I{y@J%%2rG z$7e;*AsFhtjzV6B3|J^H3F!Udeed`u*au_eeo1?uxXsYU{}m9Kz!^MRKJKLH)Q0;Q zTTS?xIgjt@^jQIqrthA0%_sKw1mCQfMeIEj4@_w|Wt})r{CZKt#IKXwA;<>|N|#tu z$4i^4GbB=1mre6#zZkna?Qu@On+c(5_s{h!NjNnt{}xr6rtOzq8d^FlwO>`*sr%XM zC$HJD!7xc}!o^=~lV~=_s=XVpLYAU=y`AGq>dVsA4aI3E1G69Dk(Iu6BFlypmq{@P z$E3~BjLms8F0%5DXvm(gr!7n14#mAT9iQBDPCk2D0~+8zXsJr^Li`?b-FV!UKDSgk zt>IG?^mxs;jozNDIUAMt*mEOeZrV(VT35O9R#ZgI=Xatu-?EcN#@*bY3bS*2tiJiB zDwH$u@lH6doTlvl7u!Fqvbb?!5tG+1C_l6-^<3$e>I~eeajVdU>%7VT+xctk{t!Ri zD9jfhkK|s$FGi`|%1&*c>qC7~yiE6CS=!9N?42UFA2hOpA#TP-wWx@5Um1JN$Dk{& zmQtt0R5} zBwH9!dBDcza_@M zK6||p{%eP^Q2l#N%tEmi0C-t0ctUqsL*26)_v%=~G2WInwcH5=2Z8Lld;r!2S95fhw zxcc{Pmy);5_JPEOS4Ge355qm2@)bMBAzPS@_k#z@F?d+J%b zd(z|tDgI#xG>(U~WHMzSHKh%OdQU5ONqbsO?&OA&dbf@&E=Ic#D2WzM`r*(=WiZgb zG9aS!3fFQQ+s_%XDP!2E(H|}>8}C=jS&sP1xq=b5EVr4J(Xe-_&xnuqJ`gfzP%}zg6XU8eeViYsPz}dbNkJ z$PI2`D*0RE6^Sv6kuOkoHK({et0YaI)5gt)<*A%zZgwdgOx$c3{M0|SE~CIAvHEF9 zQEqL{b#|%R5K^RtGpADZosc4wU%QL}n#;#k6$9)Vq)0%SH>G*kLdxTzFl}z`t5DgK z`h4JIH5bjD+~>!;?y8e=cjb1qJ+D{1HY0#PeG5M#dy;d6o86M8zjcUPRIfEKhH$q; zuRbkc?BJxKb315#ptJ;X<$C>ICUh>k(3gf7Hn8MnhJMjYzXoY1lOKsTNC{Z=E@GF$ zE+g8>_Nu;g+0by&WHT~DWqb=Ji>kY@++!j9p0bHS(14~D9@Do zN4E80=8g1wEjhhyAVJ3!k~CLMr1?kO29>+|H7C%5g=?}oy8VF*4jErq6Dn^@^Wd2V z)ZLt+p8^HKebzxp_c*vb>g&jx74JsA!T&n#Mi0L zMWo>yNY)es(ZO(|_*}#q$+^fiuIHlGc$|w~<9Tl7n!c=K*jcp`=z1prvoPbnaO3_6 zF}7sr9{}lFx`R{9D=tK&t;IVnxBUPV!3>}O zP>IzMGRe++LDFgONXq0YL)8+Y3C2#aKrn%x0mu~#pnM5&L8g`S1CtovUZUPNzG%^%r$zrN?OW=?ws;ZPT=vN0tYeorN3dCgS^ambc*eV_-sRX> zZpdPEi;4x7pZ$X+_z_43>EjnZzG&v`L(=n|Y0ajrOdgWbD)2B2SNb{{zWY|3bpj&DBVpEM4ZhGB8tbFo9ZX~1>=MQM0VNIov@FoyG zt9g>r#n1`LVWGk67E@&X?QZO*sX}Ym2|SjoliU_{Lf^On#!|+hA69mkT{C>f@VAZ) zAVx!{0YqJ8_sw!cZA#ZN>pd`8u9W6MP??2G>%Hcb0Yy|uRYJMmaObAsZk1sc!@;8f z2BkL!SvjS^wp7irudWjql5+R5~hyfAd<0Y#s&f!=bi^#Z zF0%II|Dcvag8sGRAyv2fng{xemB|1G{J7@kKcU7neaWtnsvB>b5|r*WtqjT>%#eQp z4}R}ok1Yo*xM$~bz`~|mP$3YEV+d+%ZeKSD4VAHaAhGTZ1CoI0FZ!gL7xI+RG9>p` z-Zm5gh4qneA8t~JuWZ*IT{i0L3d56bvMtP+*43A&RL&U26jQ-xiKY=oeYetrv;0dVPk2LJ=btR=S5|WIa zPZ{QE3@O@t=>cX$)ECS^zt7=YC9c%$Pw8ST`Q2Crt@ciH<~{Fb3f)s4`sgWajtbvr zir8;*JdUm70PR&mX+tIxXd@>^xE&F+t9-33&V zcJ|#Hdc)5D!XCF`ufXndts&(`zU$XC47))U)4`ntFnyshO-~&wpIvYW2%tlxROY*X z^?##DVraBis;`6VxozfDO2LQkDD=$93tD*^H{R2qOj8D}5G%JTaq1TEOHdTip1;d1ZQj%Vin zaQ^#=XZFpAm@v5SYHe?jY|Ppt2OhEtd@4Vz%9~MYK8r6M%!z-LF}N(V7}dKgCZL6A zQ4|WnKZ{&|cRtP=iH+Ns`u^wkUtr7AM^sM-f;c=U-!?=RcDItY%EdV%vzwd zZ*OMNa(krzHozXc8jTj<>m$>@ECX@Tq`N;4$r!TV=hm?OL$E_Wo`>k+ot_?t@KIhq zUWpTi-<>eQ@V|fmFErr6IppzZ@cu#en>~m4s6FF62O~5-v48Ke|NeD_*YF=}POlpN zS;*Kmljp|{K`8NELY6%$8Q_7?LO1xC2AZZ(G5Yg!e>nf=3kyI#6DAzOHcarb4?OB) zv-rO#{z?D8SN}h00LR1w9fUaM=;*`diEuW~B6h_^C9?!!w#p{?6*7pVqeLRAbq8e$ zkynqA4IL9ImM2DJlZZq_3571AHRHpOro%SelF98l+s&rzy5*gnNB1=KBE+VTBDMfi zS#aS6tQNHifxmY7)s25(b|@_BJ>Rw`cJL7|zE8xDYCX<3b)LtYTDxkHhRxA(Jv5e@ zOitlo5vm$}3Dsc261s`?Vcc~U8}*KEhk9tAA`xHLN+%%-6@s8||8&T#!-eNtX+FPC zYAG@glcWET+7`!c8ButAoG0S3L1eh%^PMn(!~4#dgBK{ zI;kVig(q|tqDbEnoX_8*43D(4UT$b9x<_l>`{z{mJ3q}%(MIKUhfX72$`oy377e$H z!aG;C>TFCJ4qA=E5JkNVn;l_G>AJNacTwlhB_nG7g&*nFnEWN56l$BgwC}N@el76V z+KCVcx3@{Zq(jDg2`n^!{xsJ0LH&`AmxoY5Gbk{ttv^dLN)X3IHJ9qysOVCSjWe+m z-HeS!X#T!m&@2pn=rPI`O$=zkOm+fvsk()oJ7oxZ@}M4FmAawoyB+YY1w)BWDWY=< z*~k(wm4!0SzeMNf2BOZ?OIV}bC#d93AwsRUcy?&~0)HFCYSUpvj~suQ-fuQv!$KN9 zMWrp)&Fi5oniIK^3pBdU%=x_fWMEl06?B&l9x7{BL>qn%W8=9IiU~XuW>}+p0vTZS; z^e)Hqmec6foK*CP_cE*5lx}-df}O8f5RPk*aiv2{n-)>pehbmhdv_sp85$d%iS)pl zQiZxtdUP*M%JbRt`cd^3jldS+y*JTS3x~+jp;w_cy8e&1K03?4AJd{j+K+p5d^Soo zHzHNA4pF=Bx_*rmwwm0Quo;?b+5jqNu@Y%M=+Nm~!-D0h+VO2V0UznFRUw>zY19)P z8|nIeqV1)ro@NTqP5whZTa$%rr&e#hNQ97P4Wb-%wqPDp8&DpyRXmhwJGmJwlulu2 zY->HHZPpAklKl` z#1@LqKdfG3M{O~aJL1?HdtB369)pCsS4}#WM+~N*5v{+Bcr5A_Ht78#R zU37Xs#>G(WG**GQrO09@z<4|?;yp#J5`<+7SV||y=vx@h5wOUN)l;k>RSVk*KB^uT z4`+pbBrgnqh2g3mq3V@G{3~3nblzmZF}_IEg5~!Pj6rcI2Hp|2;jdy4#b4LcEYxxa zPNn`f$DvGAt7A1`vqCSCv=XhvD3&F$y&5E@Xp6?N zzqWN?IyX56X__Sz`&+5T$xZG;T;lUZ@a8)Yjn>JJ6Mtxmr)tc9Dp({&(Y-nrlK)NQ zp4)8Bq!$!nW*n392ZvoJF}|V;6O2<-KrySswjHIAmZ$1rTyF)1Y7-D8s8F@W_qb_H z0*YODrpH0sIWXOJPGS#VMi9~4lx)6?PkgFUNB1a#sGMZ}&}f5(Jr)85_}!7JYY;)$ z0zQu~#FwMJwT0mG*dlBeZ!EDsLaaa({gTJSaULI&u*A4Ce-=)CO#{6EBTNw-s;6BB zp$ep@ovBtDa|v&wx;iiqAL<$nJ_4h42oWZYBVCBSju8OJf!2+tA<&d`H`&|cJdDqT z0s)ID1zH3EvoJnO;wT&nm_cGZLK;kD$dQ7!caRWK3nM0yIMG7FH47Ix^8`ZWeG-$? zIEj-j3ff(1BC$|fL1QZGUnIi9df_|ER7_{LI9hz~2RrE#K%x4JhDVO!~hFm!b9 zF_e$Yx!y=sJ*xIDO(E#)!ghg~?;eMAk7|fia>8m?(vu*<#iajM6c;f#ZgOtoE|G{R zQgKGbpqq(oxZ&QcYKVK#ysFw5F@NiGs#{~d2FTVbXTHiTO+u<}N|?Cy5j38NvM^zi zFB0*GiiluU1aooN>?~CQHkt1XSEE#g39fNms`{8ns%jvTDPx~S(^(Ar_ z@re^E4qT|rBIg*6>Nx{fnXOnjNLAf@Rkx};{<#+UTY-!rf}BNQjzBDOhWkWY8z}L* z!*IobKu(mLgyJ~v)bnFoyEVwedY{O7Fkh7iry{=(RR}>Je0SAzcPP7?GJ`stMIUah0+l+eTA}FHBm{C=fTRH`ta>hWj(ph2_%Ra>KPt=9z*vGMVyPPJ?KwPXbjq?fj*amS zKegxLES{>D!V=S4r)GBxphV^crbj)h8LaAx;qa&@1*uIshjPrx13eZz!>F#N1hlo6 zaSWgZl!{UBX|vktGrd~dTB^Gox*cAjX`Kp6%EHzmcExcN!_v8!HH~ye2d%L|I`Ch% zNZU7p zVmWHdqfzt&MfhN6M~Tqc!9^l*^uPu{_jCa-;OHn4VSGmk3^XN}BOm%KbX-ipl3)%( zCms&=ggJ>}R0=GiXFE7yB7q|&5I6}Ogc6Cjmt>@yNZ>XS=Q(*wa0d(*^Be@YqYI7+ z_yaK!;!QJPakl1uwa9#-4k0e;6);whJR!~y1$fKclblUt29a#JZDcals^(L#j!LCc zKk0HxLG8tqwX$%Uda|DC+8&1hF7zBkEQ?zxpc?N}*w@sKP!dMo%sU)~!hbn@B9N3c zZxc$TL?WS-9=V~Je^KK*@ykZ)*dyvC4b8#AopC3eNBvEM4%q4M2mVx{5qd0-Nuw&p2tPcBY(C;LY5w%LSLQSaUYAMV(%uIpITNYX?mHSHL z3Z+D{EJ)$2)#g(x4`~t}ISG0Fp@l>|XX+fyau5hO=~08i_+-1hYMg}B21*6wIUaCe zMZAx#f1&7Jd0jr6$P3~Nh&D%DM064@{gp4B;Mh&_vtE+O)PMb<{#H5YfBxgDCHCbnN zIFM+Qmr#)#8cdi&ZNy~SY&0-caa?wI)(S&b%mOATbT4@pu()k3!6*YQ7<(T zW$G`1VnrLTe}oBKB4yUO>~4fO26~GgF3(*`v`PqC-i-Gr(q}7JM8PLKB4dt-$XXyK zYh`>P*#J{LLPt)+g<^~}DY?{zlQS_%Qd&fCXet$GmUF|;%BL#&3B%2l`1H{<t&f$}}@}-JrA`(}cafKa`4srx)$_u`EU(Tgi z1xc?63(@OB-usY9RSZ=OkQb2i6y2mP*-p`?Aap19C~}pv$$K)YSIfiP!~fVeHA+JM zxe|>TBvH^Jg^B0j$O|oziKz}P)_*(Y7xhdzIp*}IIHCQNO#d`AeI#KZk!T_DL|(Gc znWUCc)n`0K-?yw0MBg6@(~^5KMLroqoY6R(nUZAibr2~UVAd|e6sFL;rC{zvqeLV} z$}`lAKVdEpK3)0eW;8pFErel{l&?6oSkXgtD>)?MlUdZXGdxEaU4*CpIA2Jb_~ZlS zFtPIbP%%;C$;TBPQo>9a#>?9&-l=fvE3_?;$erf|UA;p>m^Hm{uS4>yD5U9UPu1UF zB~jc8mpTHQ&;ly3F^ZqR=ckP3y#)h>elqCaHD`YCr(pOr z)GQ!9iy;hZBhM$c%P($RyEPHk1hm9DDX|Vb2I;Y*ZUfDd48XjJi8 z8ONEZ30$1PRms42@`u7O0wS6EOc2gzyp)Vc23M%4AQ{(HNG>EQNDpvoW^iGokQ7EG zZ-YxIQQM#ReYuQyI!H8~SVt@)`xAxBp%zLf(ngU(d`t47g9Q^$q~s}#&s#{O%fBRk zAW_t3irP)J7+=8RVN$=Ld})x(5913lo|8}vLL|xvv#UTr>4KF-l6*81~B97iGMB!FR$R4U*N_H%aM>fthpsDPkFa^$s}z#u>zYTa*< zW};RhRGPyJgLVjIF=pwn6;UGMg;Zg-$6&T)2lW#11Oi76j*DQ#;>ZMXoaZ%>jSB|y z#H$=Z*onlt^+OJg6pDc*R7)*`qaV}|MAQZ`v5bMP^Mgt)x1wZ3A_J5Wg@8~bl1R$L z80G`SGC$JHoWRSfEGeO7*n%Eka|e!nFUEjgV`YRE)J`VDtyU_ykdX)j4Kk7>6Xw2C zxP(7K`K5;f;-j?y;7Vxa9@6DRGRQ%$Q>sY}I4MYfK)fwe=Eq1t`U43Q;A9YCrAjDE zQrBTFe*PrM}7b!EBv5$ z*MbqM($l@d&iw0h*fF&@b7));=+)maG1* z_Pe!vA8^rwdf!Y5|_{fTqt=P!3eVS|;Lt)yEskc*E~*-#rhQG7;yixA2<) zXUgY*Y`8YLj#Zdk$J7IZ`dkAX3t*Ckdmqe$dfWLY*9p+M1_An`!4`$ofh^}a=HxnF z;&-(i^{fZ>XnEZS2;IY!TOJF1ZQ=Tp2W+cMTOM1>oR(BCMCcg{;5P5VvBUM45NHCv zs^bEl?XRtay7a@)md6adPgigRU0JW^s_TZ1Nv>n~gWOQ(*ZdbH)%zmvr`3$yfa}x8 zYuuYMg1@R`XqbAl7iyVv`wE)=pUWcDR{FoKdLkc!sodi!XV=;#LcNo}s}-P3t3HGk dq_u7Gfi4bo!3Dj179Q>~Zj`TYKaYRB{tq=do}mB$ literal 0 HcmV?d00001 diff --git a/!Sprites,ff9 b/!Sprites,ff9 new file mode 100644 index 0000000000000000000000000000000000000000..1d992386acf75256e9453c7560902554fbef1bf7 GIT binary patch literal 6076 zcmeHLzi-<{6uzo$+@ElV0$m-ohEcRbN+mUt3;~)1-HX^6gT#=H08UH9t>;s{YUk)9kLf;G7oNi#-3ug4w&4=b$t$Fprl-?^&Mpm&S+0@Ofd=aDKq+rR{rDq# z`UEa;n>y(YdcB@0V*n;)kE2I<&K5b2=rMjeMM!W7ap)M24Lk&%9^%npU^yPsKl5Vq z@pk*c>Xol(`rCQYY&KV@PjRplj7gIPJ%!cra8o@GKE#AYsrg@(#^W4 zLS0@MfM;#sM1))t`-j(kU7^r}-ZQU(Xf)D2n#1 zGD3`hq+jkuC{rmV>}9k!g@Nxd`a^|2i821HdvZ?me|4_-=Xu`G^{8*-W9IcyA7}|9 zulPQ;m$9dC|0R1gT(NDJec?9tXxx_v_d2?(Q>c-xyPpC(?q+G4 zW+iO0RuVS6OW5@BbJK{yz*{H)$6McQ`v=4`)#Ejd%22NU40CtFlYH6#sK*&{~>LabI=c|VF4@NWwRtB+p4gZ?cq?KFawniK5o|FzamtF>Bl()#!&pU>}d zshnolX|MAwSQd%B&bMIk;f-1Tv0B^`dwl~(jbLo-^$i@gTDgo*sn3%N7bDu2muh0O z^2Jf35j-&Qsfo>M3+`KH{3kBGlKlNbdwX++tRqpU6WqPXi+CeunDhL#rw!-wqHqy` KQUv}gzy1VoKUB5= literal 0 HcmV?d00001 diff --git a/!Sprites22,ff9 b/!Sprites22,ff9 new file mode 100644 index 0000000000000000000000000000000000000000..bfca9a2beaf28df7f198e67e1015c140208c5fe1 GIT binary patch literal 11356 zcmeHN&rcgi6dt)vtTw9Xp;D#hVm3vnqKDKDMM(}(OQQDN1m~D0)SyU7YeB*Qrf{mr ztw&_}4~VdOLt+p62XOJRQcpeSW>vWmadE%z&CdQD0|zUCXdj**`@Q$(jc49_yWZgw zrPQY=KYy*%-zBBSmz(py{kj4~sSi=crKi*-v=EW<8CspC@(`@o>untLdYXkqIbyb0 zOzVRUNJ+7nl_7pC2If#**h=bV=R%&|mRc%&QEA@{2CEh|*!F<*rvZJzAY@2H4F>+U zmC`!+h~uT@3MV3U?PwCon4W`cuJR>SoNm17mSwC=KRNczRxiG4VznCSL+JT8`MlQnM;Cn7VjlCK! zF8+>2eSl(p`ZD^~45p?IdU^wY99HQAlIatV`of6uNM3942hqib@`CXL$B^ANeZhTf zJMB_L`ensG-NE*$vM%Ej_EouDR{k!w0lPvneMkfE92r~u2ByzgUU>YZ@nGiaH&7W( zEPI|e$+CnGO~I&kVr1%!oYr~WA=uIoUD%54hPp{i%qA)mw+R4U2PSbFkXivG{1z+9 zg&3{_Vqx5BKL|ewi~>*>)i9PJhH(Pc2tE_vB49=f4aEn zeuxalXozvhmW^*3u*ArqT#{UvBW^idHomF)wqiNq)76prbid!;G{UO$b1?DMb8K9)2E#n9Lqi*u#M!x zXMy7|L`w90;FL?+wc~|Y(w~`$vOev?AePL@yp&{H4@%;1)=_&O&TAnrih;td9pH}a!#FIpC@y->&TH4oq zuSE(m94mlA&|v$m!1v9GKrAOZwlZ=To6V-i@t>g(!}$^@L_-^R{#raHU>&xdJJga6V1uEugm0lZ%;;M()Qa2EJDkz*LkUooCRJR4?? zd2+$z7`>RzF$u2+2ftw&E66q=RMN6hs=&j2g29?>VJNBReo@t z`mVVN79gFI@0golL0kB)xe3;3-=My8ZhYeJ;5IWc$F#`Y3-WpRk$~ykP``M ze*W>awvIWTh4HLoJs#Z;pKjrFFMPe|kajkfIKZ;rH>UZdZ(}`L;$4ozatVMYV{pj@@Bs z&JDKk+h9YhAj%CQG}R|j76r+VvG_FF?;31ifw7_2j13IHZ`crPH9m1OKit)MhW>-* zlA;UPu4`rF@u0Nfn#TS>THs9ZKVs9bhP&Qb61^pnn*;-!>W5`GnsS2W2eq(b*|fG zSIpfm9~ArDHvhd3B4ol}vugLdOr|Sv>~uaUI&CW7>Qw$Hy6u&DXeoakD?h6)??y+0 zzoV!#V$Yuyqa&Sx^KOry6`$}zmzunPkK#r~?{`PU6=Ss^y^GhNlD=a$@NmUI?~BKi zV7Ix>JHYvC8$xfQUFf%5=vG6vduvkb_V2I+`hA9-qVdp=##??f$$NI_tEF^~^cAoH zq-Xm$IG@gyn!uOfd64=?z-+FRPJuljKGB5#Mes8Ehr#|*`Z^^D{GCIR;(uvgA5mzW zWt3_+J&zCgxS8;+?Fr1A>?jJY?E|&8YR)mfxkk$r>+WlMM@$ZOt%8vkgH6N`jSY*m zmdTBW5~d9Q<`0tF?V=U>m9%|>(rSMRHy(M?*c<-JSM+$XXV9s~E7nuVsM2`5AakO! z+oG8ux5nQ3q~If_^nTgiq5PYpj&KW`GlHyMX>qgod<{$g*_t{rj@b|rWFe(vvOTWu luP8M>WA%JwJ6C>xb6q<8q}+nJDsF3 in the cleanup action of 1.07, + I forgot it and GCC in pedantic setting gave a warning. I corrected this + very important bug :-) + +Release number of spconv updated from 1.07 to 1.08 +------------------------------------------------------------------------------- + +Release date: 03 may 1994 +------------------------------------------------------------------------------- +This version has a better conversion to .ACH files. Help was given by a sample +.sna to .ach converter program and an archimedes snapshot snapped just after +startup. + +Other changes: +- Cleanup of code. Make it gcc-pedantic mode proof (thanks Chris Wells). +- Inclusion of UNIX make-file (thanks to Chris Wells again). +- Inclusion of UNIX style man page (thanks to (guess who...) Chris Wells!). +- Make definition of exit-codes clear and consistent. +- Add some more comments in the code. +- Replace "sizeof" operator by #defines - needed for some environments +- Tell about the exit-codes in the documentation. +- Rearrange the doc file. + +Release number of spconv updated from 1.06 to 1.07 +------------------------------------------------------------------------------- + +Release date: 23 januari 1994 +------------------------------------------------------------------------------- +This version will cope with .Z80 files written by Z80-201. The .Z80 format was +changed to enable its use for 128K snapshots. Spconv will be able to read +and convert this format. The output .Z80 files are in the old format so they +can be read by old and new Z80 emulator versions. You can use Spconv also +to convert the new-style .Z80 files to the old style so you can use it with +your old (probably registered) version of Z80. Spconv will check if the +input .Z80 file is for a 48K Spectrum. + +The code is a little bit reorganized. The number of "if, else if, else if..." +began to look rediculous - as if I never heard from 'switch/case'. Well I have +and I changed it now. The new .Z80 format forced me to execute read system +calls with a low number of bytes. They started to get expensive so I changed +everything to file I/O. The Z80 uncompress routine should be +faster now because I don't need an intermediate buffer anymore. I still need +one for compression so I can output an uncompressed image if the compression +actualy expands the file... Maybe I'll change that too in the future and take +expansion of worst-case files (files with a lot of '0xed,0xed,0x00' sequences) +for granted. + +Now I hope I didn't break anything... + +Release number of spconv updated from 1.05 to 1.06 +------------------------------------------------------------------------------- + +Release date: 10 november 1993 +------------------------------------------------------------------------------- +This is a maintenance version. The conversion to/from .zx files should be much +better now thanks to info from Peter McGavin. The code is cleaned up, at some +places Intel byte-ordering was assumed. Also the use of 'far' pointers are +moved into #ifdef __TURBOC__ conditions, compiling under UNIX should not be +bothered by it anymore. All functions have prototypes and similar functions +are grouped together. The snapshot structures and prototypes are moved to +a .h file. Turbo-C++ 1.0 in it's most pedantic mode produces no warnings +anymore. I did not split-up the spconv.c file further, I should because its +growing to big already but I like building it without needing a Turbo-C +project file for Turbo-C's IDE environment. + +Release number of spconv updated from 1.04 to 1.05 +------------------------------------------------------------------------------- + +Release date: 17 may 1993 +------------------------------------------------------------------------------- +This version can also convert to/from .zx files. These files are used in the +KGB emulator for the amiga computer. It's not fool proof, some registers are +not found in the KGB snapshot. + +Release number of spconv updated from 1.03 to 1.04 +------------------------------------------------------------------------------- + +Release date: 26 february 1993 +------------------------------------------------------------------------------- +This version can also convert to/from .ach files. These files are used in an +emulator for the archimedes computer. Normaly the files are .arc files but +the extension .arc is already used for ARC archives so I used .ach instead. + +Release number of spconv updated from 1.02 to 1.03 +------------------------------------------------------------------------------- + +Release date: 14 december 1992 +------------------------------------------------------------------------------- +This version can also convert to/from .prg files. These files are used in an +Irish emulator. While building it, some ideas came up to enhance the converion +to/from .SP files (recognition of IM2). + +Upgraded call of the program, the program can now take only a suffix as second +agrument, the prefix for the first argument is used. This enables easy mass +conversion by using a batchfile with a command like: + + 'for %%i in (*.z80) do spconv %%i .sna' + +If wildcards are given at the commandline a error is generated. + +Release number of spconv updated from 1.01 to 1.02 +------------------------------------------------------------------------------- + +Release date: 13 august 1992 +------------------------------------------------------------------------------- +Error discoved in the way IFF was handled for Z80. This bug prevented correct +conversion of some programs from .SNA to .Z80. + +Release number of spconv updated from 1.0 to 1.01 +------------------------------------------------------------------------------- + +Release date: 10 august 1992 +------------------------------------------------------------------------------- +The new SPCONV has a big bug. It will not convert compressed .Z80 files +correctly. The program uses JPP format internaly. For JPP the program +counter is on the stack. The converter stored the PC in the image +*BEFORE* it was de-compressed. This resulted in corrupting other image data. +(Converting TO .Z80 works fine). + +Due to errors I am planning to keep versions more carefully. From now on +SPCONV has a release number and a generation date. This will show up if +you run SPCONV without arguments. +------------------------------------------------------------------------------- + +Release date: 5 august 1992 +------------------------------------------------------------------------------- +SPCONV : Now handles .Z80 files and new format of .SP. Old format still + supported. + +Bug fixes: + +General: Clear compilation of all programs under Turbo-C 2.0 + +Documentation up to date. +------------------------------------------------------------------------------- + +Release date: ? ???? ???? +------------------------------------------------------------------------------- +Initial program to convert between .SNA .SP and RAW. No more history. +------------------------------------------------------------------------------- + +H. de Groot, hegr@ensae.ericsson.se diff --git a/Docs/SPConv b/Docs/SPConv new file mode 100644 index 0000000..976293e --- /dev/null +++ b/Docs/SPConv @@ -0,0 +1,325 @@ + + +SPCONV(1) Unix Programmer's Manual SPCONV(1) + + +NAME + + spconv - Convert snapshot files (.SNA, .SP, .Z80, .PRG, .ACH, .ZX and + RAW) + + +DISCLAIMER + + This programs are Public Domain, and because of that I will not be liable + for any damages resulting from use of this software. + + +SYNOPSIS + + spconv <.EXT> + spconv + + +DESCRIPTION + + Spconv is a utility to convert between various snapshot formats. Snapshot + files are created by various spectrum emulators. SPCONV converts between + .SNA, .SP, .Z80, .PRG, .ACH and .ZX files. + + Wildcards for the infile or outfile parameters are not accepted, an error + message is displayed if either * or ? is found in one or both the + filenames. The outfile parameter is either a full filename or only the + suffix .SNA, .SP, .Z80, .PRG, .ACH or .ZX. The prefix is taken from the + first parameter in that case. + + Normaly the and are not of the same type. If they are + you will get a error message. This is so unless both files are of the .SP + or .Z80 type. In case of .SP format the converter will convert an old + style .SP file to a new style .SP file or from a new style .SP file to an + old style .SP file, depending on the input. The old style .SP file is + used by VGASPEC, with seems to be an unauthorised version of the spanish + "SPECTRUM" program. The "SPECTRUM" program will use the new style .SP + files. + + In case both files are of the .Z80 format spconv will read the .Z80 file + and will output a .Z80 file in the version 1.45 .Z80 format. This enables + conversion of normal 48K Spectrum files made by Z80 version 2.01 or 3.0 + to the older format so they can be loaded in a version 1.45 Z80 or 2.01 + Z80 emulator. Of course additional information that can only be stored in + the version 2.01 and 3.0 files is lost. Therefore spconv will check if + the .Z80 file is for a 48K Spectrum and check if the Interface-1 rom was + not paged in. If the check fails an error message is given and the + conversion is terminated - no output will be produced. Spconv will only + output version 1.45 .Z80 files since these are compatible with old and + new Z80-emulator versions. If Spconv encounters a .Z80 format file that + seems to be newer than version 3.0, Spconv will attempt to convert it + anyway in the hope that it is upwards compatible. A warning will ge given + in that case. + + + + + + 31th May, 1995 1 + + + +SPCONV(1) Unix Programmer's Manual SPCONV(1) + + +CONVERSION NOTES + + [.SP files - Used by the Spanish "SPECTRUM" and "VGASPEC" programs.] + + Conversion to/from .SP files may not always work. It is not clear to me + how IFF, IFF2 and the interrupt mode are stored in the .SP file. Since + version 1.02 I have made some improvements to this type of conversion + however, it sould work now, but I have not enough .SP samples to fully + test it. Note that crashing of a converted image may also be caused by + bugs in the SPECTRUM emulator. Conversion to .SP will work if the image + is converted from a RAW image (see later). + + [.Z80 files - Used by the Dutch "Z80" programs. This format is also + usable for 128K Spectrum images.] + + [.SNA files - Used by the Norwegian "JPP" PC-program; the "Spectrum" + program for the Amiga; the "XZX" X-Windows program and a lot more. This + is the most supported format since it originated from the Mirage- + Microdirver format.] + + Conversion between .SNA and .Z80 and from .Z80 to .SNA should be no + problem, both formats are sufficiently described in the documentation of + JPP (the norwegian emulator) and Z80 (the dutch emulator). + + [.PRG files are loaded by a PC-emulator from Ireland. This emulator can + not save in this format.] + + Conversion to/from .PRG files should work fine also. I don't have a + description of that format, but I think I figured it all out by looking + at some samples. I only don't know where the border colour is stored. The + specem emulator (an Irish emulator) doesn't show the border, so I can't + find out by trail and error. + + [.ACH files are used on Archimeds computers by an emulator called + "Speculator" or "!Speccy"] + + Since version 1.07 Conversion should work without problems. The + conversion is patterned after a program (also called Spconv) and a BBC- + Basic program from John Veness (supplied to me by Mike Borcherds). I also + got a .ACH file snapped just after startup which was most helpfull. Since + the programs I got were written independently but had all registers at + the same place (but one got her accent registers swapped with the normal + registers), I think it is pritty save to assume that the format is + correct now. The previous version of this converter got register 'I' from + the wrong spot, and more important, I forgot to set the interrupt mode + when converting to .ACH file format. + + It is also tested now with a fair collection of snaps. The .ACH extension + is my own invention to cope with the MS-DOS naming conventions. I named + them this way because the samples I had ended in ".archimedes" and use of + .ARC as extension didn't sound like a good idea. I don't have an + archimedes computer to test it but somebody else (Adrian Jackson) did it + for me. For proper conversion you need the spectrum rom because that is a + part of the archimedes image (don't blame me). The ROM must be named + 'spectrum.rom' and be located in the working directory or in the same + directory as spconv.exe. If no ROM is found the converter will insert + + + 31th May, 1995 2 + + + +SPCONV(1) Unix Programmer's Manual SPCONV(1) + + + NULL bytes. + + [.ZX files are used by the KGB emulator on a Commodore Amiga] + + Conversion to/from .ZX files should work, Peter McGavin send me the + definition of the format as used in the KGB emulator. I implemtented it + that way but I don't have an Amiga with a KGB emulator so it is untested! + I previously used the information about the format of the file from a + VAX-Basic program supplied to me by Jason Brown and most information + correlated so I'm hopefull that it works. Please send me feetback if it + works so I can put it here in the documentation. Oh, before I forget, the + .ZX format contains the last 132 bytes of the spectrum rom (don't ask me + why) so spconv will look for "spectrum.rom" in the working directory or + in the same directory as spconv.exe is located. If absent than the first + 132 bytes will be NULL bytes. + + [RAW files are created by saving the whole ram on a real spectrum to the + RS232 port of Interface-1 from basic] + + Spconv can also be used to convert a raw spectrum image to a snapshot + file. The image has to be captured with via the RS232 connetion on + Interface-1. Some tools to do this are in an archive called "SPEC232". A + program called "SLOAD" will read from the RS232 link to a file on the + MSDOS-PC. At the Spectrum side the the command + + SAVE *"b"CODE 16384,49152 + + HAS to be used. Spconv will convert the file is such way that it will + continue in the basic interpreter after the snapshot is loaded. so + + SAVE *"b"CODE 16384,49152:PRINT Hello, World! + + will after conversion to a snapshot file and loading it in the emulator + begin with printing "Hello, World!". A description how to wire the RS232 + cable is also in the "SPEC232" package. + + +EXAMPLES + + Converting a .SNA JPP file to the .Z80 Dutch emulator: spconv game.sna + game.z80 or spconv game.sna .z80 + + +DIAGNOSTICS + + 0 - OK: The program finished without problems + + 1 - USAGE: The program was called incorrectly: + + - Wrong number of parameters + + - Wildcards on the command-line + + - Input and output are of the same type (not for .SP and .Z80) + + + + + 31th May, 1995 3 + + + +SPCONV(1) Unix Programmer's Manual SPCONV(1) + + + 2 - READ_ERROR: There was a problem while reading the input file: + + - Error while reading the input file + + - Error while fseeking the input file + + 3 - WRITE_ERROR: There was a problem while creating the output file: + + - Error while writing the output file + + - Error with opening/reading the spectrum.rom needed for the output + file. + + 4 - FILE_ERROR: There was a problem with the input or output file + format: + + - Input file does not exist + + - Type of input or output file not known + + - Input file is: + + + A newer version of an existing type + + + Corrupt + + + Not in the expected format (RAW and new .SP types) + + + Not a 48K spectrum file (in .Z80 files) + + - Input file snapshot was taken while the interface-1 was paged in (in + .Z80 files). The other file formats can not cope with this + (including the version 1.45 .Z80 files). + + - Undocumented page number in .Z80 files (file corrupt). + + - Decompression of .Z80 file failed (file corrupt). + + +PORTABILITY + + The program should be portable. Assumptions about endian-ness are avoided + and I ensured clean compilation with Turbo-C++ 1.0 (with all warnings + enabled). Chris Wells used this command line of GCC on this program (and + gave feetback until it gave a clean compile): + + gcc -ansi -pedantic -Wall -Wwrite-strings -Wshadow -Wformat + -Wpointer-arith -Wconversion -Wstrict-prototypes + -Wmissing-prototypes -o spconv spconv.c + + + I also ensured that the identifiers used in the program are uniq in the + first 8 characters. I don't expect much problems when compiling the + program with other compilers. The code does make assumptions about path + names. Using the program on a VAX will give problems with recognizing + directories e.t.c. especially for finding "spectrum.rom", I leave a fix + + + 31th May, 1995 4 + + + +SPCONV(1) Unix Programmer's Manual SPCONV(1) + + + for this as an exercise... + + +BUGS + + Conversion to/from .SP files may not always work. + + +THANKS TO + + Thanks for suppling information and for creating these spectrum + emulators: + Arnt Gulbrandsen (author of JPP) + Ramco v.d. Woestijne (supplied new .SP format); + Gerton A. Lunter (author of Z80); + Pedro Gimeno (author of SPECTRUM); + Kevin J Phair (author of SPECEM); + Mike Borcherds (suppied the archimedes file format); + Jason Brown (suppied the initial KGB file format); + Peter McGavin (suppied the complete KGB file format); + John Veness (reverse engineerd the ACH file format); + Adrian Jackson (send me a near perfect .SNA to .ACH converter); + Chris Wells (ran the program through GCC in pedantic mode and supplied + the UNIX man page and Makefile). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 31th May, 1995 5 + diff --git a/Docs/SPConv.1,ffd b/Docs/SPConv.1,ffd new file mode 100644 index 0000000..89f3879 --- /dev/null +++ b/Docs/SPConv.1,ffd @@ -0,0 +1,250 @@ +.TH SPCONV 1 "31th May, 1995" + +.SH NAME + +spconv \- Convert snapshot files (.SNA, .SP, .Z80, .PRG, .ACH, .ZX and RAW) + +.SH DISCLAIMER + +This programs are Public Domain, and because of that I will not be liable +for any damages resulting from use of this software. + +.SH SYNOPSIS + +.B spconv <.EXT> +.br +.B spconv + +.SH DESCRIPTION +.LP +Spconv is a utility to convert between various snapshot formats. Snapshot +files are created by various spectrum emulators. SPCONV converts +between .SNA, .SP, .Z80, .PRG, .ACH and .ZX files. +.LP +Wildcards for the infile or outfile parameters are not accepted, an error +message is displayed if either * or ? is found in one or both the filenames. +The outfile parameter is either a full filename or only the +suffix .SNA, .SP, .Z80, .PRG, .ACH or .ZX. The prefix is taken from the +first parameter in that case. +.LP +Normaly the and are not of the same type. If they are you +will get a error message. This is so unless both files are of the .SP or .Z80 +type. In case of .SP format the converter will convert an old style .SP +file to a new style .SP file or from a new style .SP file to an old +style .SP file, depending on the input. The old style .SP file is used +by VGASPEC, with seems to be an unauthorised version of the spanish +"SPECTRUM" program. The "SPECTRUM" program will use the new style .SP files. +.LP +In case both files are of the .Z80 format spconv will read the .Z80 file +and will output a .Z80 file in the version 1.45 .Z80 format. This enables +conversion of normal 48K Spectrum files made by Z80 version 2.01 or 3.0 +to the older format so they can be loaded in a version 1.45 Z80 or +2.01 Z80 emulator. Of course additional information that can only be +stored in the version 2.01 and 3.0 files is lost. Therefore spconv will +check if the .Z80 file is for a 48K Spectrum and check if the Interface-1 +rom was not paged in. If the check fails an error message is given and +the conversion is terminated - no output will be produced. Spconv will +only output version 1.45 .Z80 files since these are compatible with old +and new Z80-emulator versions. If Spconv encounters a .Z80 format file +that seems to be newer than version 3.0, Spconv will attempt to convert +it anyway in the hope that it is upwards compatible. A warning will ge +given in that case. +.bp +.SH CONVERSION NOTES +.LP +[.SP files - Used by the Spanish "SPECTRUM" and "VGASPEC" programs.] +.LP +Conversion to/from .SP files may not always work. It is not clear to me +how IFF, IFF2 and the interrupt mode are stored in the .SP file. Since +version 1.02 I have made some improvements to this type of conversion however, +it sould work now, but I have not enough .SP samples to fully test it. Note +that crashing of a converted image may also be caused by bugs in the SPECTRUM +emulator. Conversion to .SP will work if the image is converted from a RAW +image (see later). +.LP +[.Z80 files - Used by the Dutch "Z80" programs. This format is also usable +for 128K Spectrum images.] +.LP +[.SNA files - Used by the Norwegian "JPP" PC-program; the "Spectrum" program +for the Amiga; the "XZX" X-Windows program and a lot more. This is the +most supported format since it originated from the Mirage-Microdirver format.] +.LP +Conversion between .SNA and .Z80 and from .Z80 to .SNA should be no problem, +both formats are sufficiently described in the documentation of JPP (the +norwegian emulator) and Z80 (the dutch emulator). +.LP +[.PRG files are loaded by a PC-emulator from Ireland. This emulator can not +save in this format.] +.LP +Conversion to/from .PRG files should work fine also. I don't have a +description of that format, but I think I figured it all out by looking at +some samples. I only don't know where the border colour is stored. The +specem emulator (an Irish emulator) doesn't show the border, so I can't find +out by trail and error. +.LP +[.ACH files are used on Archimeds computers by an emulator called "Speculator" +or "!Speccy"] +.LP +Since version 1.07 Conversion should work without problems. The conversion is +patterned after a program (also called Spconv) and a BBC-Basic program from +John Veness (supplied to me by Mike Borcherds). I also got a .ACH file +snapped just after startup which was most helpfull. Since the programs I got +were written independently but had all registers at the same place (but one +got her accent registers swapped with the normal registers), I think it is +pritty save to assume that the format is correct now. The previous version +of this converter got register 'I' from the wrong spot, and more important, +I forgot to set the interrupt mode when converting to .ACH file format. +.LP +It is also tested now with a fair collection of snaps. The .ACH extension +is my own invention to cope with the MS-DOS naming conventions. I named them +this way because the samples I had ended in ".archimedes" and use of .ARC as +extension didn't sound like a good idea. I don't have an archimedes computer +to test it but somebody else (Adrian Jackson) did it for me. For proper +conversion you need the spectrum rom because that is a part of the archimedes +image (don't blame me). The ROM must be named 'spectrum.rom' and be located +in the working directory or in the same directory as spconv.exe. If no ROM +is found the converter will insert NULL bytes. +.LP +[.ZX files are used by the KGB emulator on a Commodore Amiga] +.LP +Conversion to/from .ZX files should work, Peter McGavin send me the definition +of the format as used in the KGB emulator. I implemtented it that way but I +don't have an Amiga with a KGB emulator so it is untested! I previously used +the information about the format of the file from a VAX-Basic program supplied +to me by Jason Brown and most information correlated so I'm hopefull that it +works. Please send me feetback if it works so I can put it here in the +documentation. Oh, before I forget, the .ZX format contains the last 132 bytes +of the spectrum rom (don't ask me why) so spconv will look for "spectrum.rom" +in the working directory or in the same directory as spconv.exe is located. +If absent than the first 132 bytes will be NULL bytes. +.LP +[RAW files are created by saving the whole ram on a real spectrum to the +RS232 port of Interface-1 from basic] +.LP +Spconv can also be used to convert a raw spectrum image to a snapshot file. +The image has to be captured with via the RS232 connetion on Interface-1. +Some tools to do this are in an archive called "SPEC232". A program called +"SLOAD" will read from the RS232 link to a file on the MSDOS-PC. At the +Spectrum side the the command + +.B SAVE *"b"CODE 16384,49152 + +HAS to be used. Spconv will convert the file is such way that it will continue +in the basic interpreter after the snapshot is loaded. so + +.B SAVE *"b"CODE 16384,49152:PRINT "Hello, World!" + +will after conversion to a snapshot file and loading it in the emulator begin +with printing "Hello, World!". A description how to wire the RS232 cable is +also in the "SPEC232" package. + +.SH EXAMPLES +.LP +Converting a .SNA JPP file to the .Z80 Dutch emulator: +.B spconv game.sna game.z80 +or +.B spconv game.sna .z80 + +.SH DIAGNOSTICS +.LP +0 - OK: The program finished without problems +.LP +1 - USAGE: +The program was called incorrectly: +.IP - +Wrong number of parameters +.IP - +Wildcards on the command-line +.IP - +Input and output are of the same type (not for .SP and .Z80) +.LP +2 - READ_ERROR: +There was a problem while reading the input file: +.IP - +Error while reading the input file +.IP - +Error while fseeking the input file +.LP +3 - WRITE_ERROR: There was a problem while creating the output file: +.IP - +Error while writing the output file +.IP - +Error with opening/reading the spectrum.rom needed for the output file. +.LP +4 - FILE_ERROR: There was a problem with the input or output file format: +.IP - +Input file does not exist +.IP - +Type of input or output file not known +.IP - +Input file is: +.RS +.IP + +A newer version of an existing type +.IP + +Corrupt +.IP + +Not in the expected format (RAW and new .SP types) +.IP + +Not a 48K spectrum file (in .Z80 files) +.RE +.IP - +Input file snapshot was taken while the interface-1 was +paged in (in .Z80 files). The other file formats can not +cope with this (including the version 1.45 .Z80 files). +.IP - +Undocumented page number in .Z80 files (file corrupt). +.IP - +Decompression of .Z80 file failed (file corrupt). + +.SH PORTABILITY +.LP +The program should be portable. Assumptions about endian-ness are avoided and +I ensured clean compilation with Turbo-C++ 1.0 (with all warnings enabled). +Chris Wells used this command line of GCC on this program (and gave feetback +until it gave a clean compile): + +.B gcc -ansi -pedantic -Wall -Wwrite-strings -Wshadow -Wformat +.br +.B -Wpointer-arith -Wconversion -Wstrict-prototypes +.br +.B -Wmissing-prototypes -o spconv spconv.c + +.LP +I also ensured that the identifiers used in the program are uniq in the +first 8 characters. I don't expect much problems when compiling the program +with other compilers. The code does make assumptions about path names. +Using the program on a VAX will give problems with recognizing directories +e.t.c. especially for finding "spectrum.rom", I leave a fix for this as +an exercise... + +.SH BUGS +.LP +Conversion to/from .SP files may not always work. + +.SH THANKS TO + +Thanks for suppling information and for creating these spectrum emulators: +.br +Arnt Gulbrandsen (author of JPP) +.br +Ramco v.d. Woestijne (supplied new .SP format); +.br +Gerton A. Lunter (author of Z80); +.br +Pedro Gimeno (author of SPECTRUM); +.br +Kevin J Phair (author of SPECEM); +.br +Mike Borcherds (suppied the archimedes file format); +.br +Jason Brown (suppied the initial KGB file format); +.br +Peter McGavin (suppied the complete KGB file format); +.br +John Veness (reverse engineerd the ACH file format); +.br +Adrian Jackson (send me a near perfect .SNA to .ACH converter); +.br +Chris Wells (ran the program through GCC in pedantic mode and supplied the +UNIX man page and Makefile). diff --git a/README.md b/README.md index 4d22294..04ab9c8 100644 --- a/README.md +++ b/README.md @@ -1 +1,13 @@ -# -SPConv \ No newline at end of file +# !SPConv + +Very old source code for my basic port or wrapper GUI app of SPConv, a widely available cross platform ZX Spectrum snapshot converter tool, for RISC OS, way back in 1994. + +From what I remember it's a GUI wrapper around the spconv cli application by Henk de Groot + +I've extracted the old source from an ARC file to a hostfs format so the files have extensions with commas to indicate the RISC OS filetype. Source C and H files are in directories 'c' and 'h' with no extension, as they'd occur under RISC OS. + +I'm unsure how to build it at present or what software is required, other than a RISC OS system. This would have been built on an A5000. I'm not sure what compiler. + +Memory is very hazy of this and mostly I just knocked up a simple UI to wrap around the spconv application. + +I've merged the final distributed ARC contents with the source as it seems the source is missed some distributable elements like the !Run, !Boot and other such files. The source should build !RunImage in theory. diff --git a/RImage.sig,ffd b/RImage.sig,ffd new file mode 100644 index 0000000000000000000000000000000000000000..af1c03d102ea5ed422fb4bb258cc8c83105cec83 GIT binary patch literal 152 zcmV;J0B8S+0F?p-059I@d)8*u3$3&+T>$}SMg#sd`0oE$%QJNI8h4mR-FbZOnz-BJ z|5&gc4?Pd`zGGATZa4W~l972e)y3xP^5{f)H!6-)yj|`?9Y@aI1(RI<$7I)T)To+8 z%|Cfbir7h|NhR`z;mA;3$e)qA-8F_}4JP)Lfh*8a%LAk6gk>q;qb=3Z>AG-35DKat G`|EEbWKT~3 literal 0 HcmV?d00001 diff --git a/Resources/RomImage,ffd b/Resources/RomImage,ffd new file mode 100644 index 0000000000000000000000000000000000000000..4d6895e0bbf3fa543f192a66a297192b3c969ac9 GIT binary patch literal 16384 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

5RYmg65FY9s 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 literal 0 HcmV?d00001 diff --git a/pubkey.asc b/pubkey.asc new file mode 100644 index 0000000..eebdffd --- /dev/null +++ b/pubkey.asc @@ -0,0 +1,13 @@ +Public key block for Tim Moore + +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: 2.3a + +mQCNAi5nyeAAAAEEAKio5jshXjVmKyPl0WWardMgM7/DTIToJB2olfumDgfPmLdp +s7Qfr8EpgYntpuG5uL8Cy/EBLB7wfuxj5c2SBGZFOVtdvKKKsWZ84vzsGdCsjjca +tbof0qvRe4N2GwdGHpwEQhLsGyB1M6BBH9wYFsbuTbgQx9MautZm1AuttC5dAAUR +tCJUaW0gTW9vcmUgPHNpczE1MTRAc2lzLnBvcnQuYWMudWs+tClUaW0gTW9vcmUg +PHNpczE1MTRAb3NpcmlzLnNpcy5wb3J0LmFjLnVrPrQpVGltIE1vb3JlIDxzaXMx +NTE0QHNpc3ZheC5zaXMucG9ydC5hYy51az4= +=94oo +-----END PGP PUBLIC KEY BLOCK----- diff --git a/to_do b/to_do new file mode 100644 index 0000000..28325d5 --- /dev/null +++ b/to_do @@ -0,0 +1,20 @@ +1) Solid icon drags. + +2) Add command-line functionality to !Spconv so that the usage +is something like ... + +!Spconv [] + +Where is a FileType within the allowed range for +!Spconv. + + is optional as just specifying will convert +the input file to the of the same name. +(This will replace the file in the directory though). +Or perhaps add a small extension on the filename (ie. _1 ?). +Maybe this is too dangerous for RiscOS users, therefore just +have... + +!Spconv + +Where MUST be different from