*NAME RomCombiner =&B500  bank% 16383 ( fname 255 2 inbuffer 255 RFblowbank=&B900:checkbank=&B903:readbank=&B906:eraseflash=&B909:crc32bank=&B90C WaitLS%=W%:ShowApps%=S% $inbuffer="" !r1$=(1)+"2+R":r0$=(1)+"2-R" !b1$=(1)+"2+B":b0$=(1)+"2-B"  F%=6 ozromfn$=$ &load(":*//RomCombiner.bin",&B500)  F%=1 BlowROM  F%=2 FlashErase  F%=3 EprConvert  F%=4 ReadROM  F%=5 Verify $ F%=6 RomUpdateCfg(ozromfn$)  ":*//RomCombiner.bas" L DispTitle V E` r1$;" RomCombiner v2.10 (c) Garry Lancaster, 2000-2012 ";r0$; j " Pause mode "; #t WaitLS% "ON "; "OFF"; ~ " Display mode "; " ShowApps% "ON" "OFF"   ErrMsg(err$)  I% err$  7 I%=(300)   save($fname)  H%,L%,D%,E%,B%,C%,K L%=fname  E%=bank%:C%=16384 ' H%=L% 256:D%=E% 256:B%=C% 256 * (&FEA6) @4 WaitLS% " Image ";$fname;" saved - press any key":K= !> $inbuffer=$fname:bufchange%= H R load($fname,E%) \ H%,L%,D%,B%,C%,K f $inbuffer=$fname =z WaitLS% " Press any key to load image ";$fname:K= L%=fname ) H%=L% 256:D%=E% 256:B%=255:C%=255 (&FEA3)  $inbuffer=$fname   Getb(add%) $=bank%?(add% &3FFF) . Getc$(add%) 8=(bank%?(add% &3FFF)) ` bankfile$(N$,B%) j=N$+"."+(B%)  ReadBank(N$,I%) " "Creating image of bank ";I% B%=S%*64+I% !D%=bank% 256:E%=bank% 256 (readbank) bufchange%= save(bankfile$(N$,I%))   ReadROM  K$,I%,BK%,BK2%  DispTitle  ) "Read ROM from which slot (1-3)";S% .( S%<1 S%>3 ErrMsg("Invalid slot!"): 2 "Card name";N$ << b1$;"F";b0$;"ull ROM or ";b1$;"R";b0$;"ange of banks?" F PK$= 'Z K$="F" K$="f" K$="R" K$="r" d K$="F" K$="f" t~O n "First bank (0-63)";BK% 1x BK%<0 BK%>63 ErrMsg("Invalid bank!"):  "Last bank (0-63)";BK2% > BK2%<0 BK2%>63 BK2%"OZ" OZ$<>"oz" ErrMsg("Card not detected!"): FCS%=Getb(&3FFC): CS%=0 CS%>64 ErrMsg("Invalid ROM card!"):  I%=63 64-CS% -1 ReadBank(N$,I%)  I% = "Images successfully created! - press any key"+(7):K= " , BlowBank(N$,B%) 6 "Blowing bank ";B% &3F (@load(bankfile$(N$,B% &3F),bank%) !JD%=bank% 256:E%=bank% 256 -TC%=&69: EP%=32 C%=&48 EP%=0 C%=0 !^=((blowbank)/&10000) &FFFF h BlowROM r K$,F,FLASH,I%,BK%,BK2% |DispTitle  F=0:FLASH=0 < "Select EPROM type: [1]28K, [2]56K, [3]2K or [F]LASH?" 9: K$=: K$="F" K$="f" K$="1" K$="2" K$="3"  K$="F" K$="f" EP%=0  K$="1" EP%=128  K$="2" EP%=256  K$="3" EP%=32 (SL%=0: EP%=0 "Slot Number";SL%  "Card name";N$ < b1$;"F";b0$;"ull ROM or ";b1$;"R";b0$;"ange of banks?" 0: K$=: K$="F" K$="f" K$="R" K$="r"  K$="F" K$="f" DXQ  "First bank (0-63)";BK% 1 BK%<0 BK%>63 ErrMsg("Invalid bank!"):  "Last bank (0-63)";BK2% > BK2%<0 BK2%>63 BK2%64 ErrMsg("Invalid card!"):  I%=64-CS% 63 ` missing(bankfile$(N$,I%)) ErrMsg("Image for bank "+(I%)+" not found!"):I%=100: t^Q X%=BlowBank(N$,I%+(SL%*64)) E X% ErrMsg("Error blowing EPROM at byte "+(X%-49152)):I%=100  I%  I%>=100 t|Q $ "ROM successfully blown!"+(7) K "Go to Index, remove card, close flap and re-insert card to activate" % "Press any key to continue":K=   missing(N$)  X% X%=(N$)  X% #X%:X%= X%= =X%  FlashErase   E%   DispTitle * :4 "Flash EPROM block to erase (1-16,256=all,0=end)";E% >E%=E%-1 H E%<0 D\R "M "Slot Number";C% : C%=C% 3 mR (((eraseflash)/&10000) &FFFF) ErrMsg("Error erasing Flash EPROM block!") ErrMsg("Successful!") \ E%<0 f p Verify z K$,B%,S%,F%,P% DispTitle  > b1$;"F";b0$;"ull EPROM or ";b1$;"R";b0$;"ange of banks?"  K$= ' K$="F" K$="f" K$="R" K$="r"  K$="R" K$="r" tXR 1: "EPROM size (32-1024)";F%:S%=64-(F% 16) ( (S%>=0) (S%<=62) ((F% 16)=0) F%=63: tlR 9: "First bank to verify (0-63)";S%: S%>=0 S%<=63 9: "Last bank to verify (0-63)";F%: F%>=S% F%<=63 P%=  B%=S% F% Y ((checkbank)/&10000) &FFFF ErrMsg("Bank "+(B%)+" not properly erased!"):P%=  B% C P% ErrMsg("Bank(s) properly erased and ready to program!")   EprConvert  N$,X%,SZ%,I%,J%,Q$ DispTitle  " "Name of card to convert";N$ X%=(N$+".epr") $ X%=0 tRS .. "Creating bank images from .EPR file..." 8SZ%=#X% 16384 EB (#X% 16384)<>0 SZ%=0 ErrMsg("Invalid emulator file!"): L I%=64-SZ% 63 V "Generating bank ";I% %` J%=0 16383:bank%?J%=#X%: J% jbufchange%= tsave(bankfile$(N$,I%)) ~ I%  TTT @ missing(bankfile$(N$,63)) ErrMsg("Card not found!"): "load(bankfile$(N$,63),bank%) SZ%=Getb(&3FFC) Z (Getc$(&3FFE)+Getc$(&3FFF)<>"OZ") SZ%=0 ErrMsg("Invalid application card!"): % "Delete source images (Y/N)";Q$ . "Creating .EPR file from bank images..." X%=(N$+".epr")  I%=64-SZ% 63  "Adding bank ";I% ` missing(bankfile$(N$,I%)) ErrMsg("Image for bank "+(I%)+" not found!"):I%=100: TJT "load(bankfile$(N$,I%),bank%) B (Q$)=("Y") (Q$)=("y") ("*ERASE "+bankfile$(N$,I%)) % J%=0 16383:#X%,bank%?J%: J%   I% > I%>=100 ErrMsg("Incomplete!") ErrMsg("Completed!") #X% ( P RomUpdateCfg(romflnm$) U X% ZX%=("romupdate.cfg") (dload(bankfile$(romflnm$,63),bank%) nCS%=Getb(&3FFC) x#X%,"CFG.V3" #X%,"OZ.1,"+(CS%)  I%=64-CS% 63 6 "Calculating CRC32 for "+bankfile$(romflnm$,I%) f missing(bankfile$(romflnm$,I%)) ErrMsg("Image for bank "+(I%)+" not found!"):I%=100: D|U (load(bankfile$(romflnm$,I%),bank%) AH%=bank% 256:L%=bank% 256: B%=16384 256: C%=16384 256 CRC32%=(crc32bank) J#X%,(&22)+bankfile$(romflnm$,I%)+(&22)+",$"+~(CRC32%)+",$"+~(I%) | I% #X% . "OZ ROM bank files have been completed." D  "'romupdate.cfg' file was also created for OZ ROM bank files." < "Use RomUpdate.bas to blow new OZ ROM to slot 1."+(7) 6  "Do you want to run RomUpdate.bas now (Y/N)?";Q$ 9* (Q$)=("Y") (Q$)=("y") ":*//RomUpdate.bas" 4