TAPmaster 3.0

released: 24.3.2018
version: 3.0
author: Mr. Johnny Renegade, Busy, Hood
acknowledgements: Busy

You may know the feeling (probably from TV) when during the final finish crossing the finish line you fall down (into snow) exhausted (for a couple of seconds) and with ease and relief your mind signals you made it, a good result indeed? So I have the simmilar feeling today, too, having been pouring out programs for MB-02+ since winter and now culminating to the final last, newly enhanced TAPmaster. I am awfully glad I finished also this little project, which I guess will be amongst most useful ones for the MB-02+ users for 2018 and on.

Almost everytime I was working with TAPmaster on MB-02+, this essential program, I thought why a hack TAPmaster must reset after each TAP and why I have to set it so horibly. In those times I already sensed that with just a little tweak TAPmaster could do much better performance. With quite a few small adaptations I enhanced the old TAPmaster.

What's new in TAPmaster 3.0?:

1) it extracts more TAP files in one go
2) optional target path for extracted files can be entered
3) if target disk is write protected, it can open it (EH 1.18 only)
4) it informs about the progress
5) it extracts maximum of 624 TAP files

To be clear about it. TAPmaster itself, I mean the extraction routine, is still the old same in principle, ie. it has maximum limit of 42240 bytes per extracted file or it cannot recognise properly if it is a TAP file. I linked it with Busy's copy program "cdd", ie. with certain routines from it, ensuring file selection. As soon as the file/TAP list has been prepared with they are feeded to TAPmaster one after another which will extract them wherever you like.

ad 1, 2) it extracts more TAP files in one go+ optional target path for extracted files can be entered. How? Syntax is the same like in cdd. Eg. NEW "TM3.0": 2'7,100;2,0 will extract TAP files 2, 3, 4, 5, 6, 7, 100 to disk 2 into directory 0. Another advantage of setting the target path is that you can import TAP files to one place (you may allocate eg. one disk for imported files) from which you can extract them anywhere you want. The only difference as opposed to cdd syntax is that the target path is optional. In that case files will be extracted to the same disk as TAPs being extracted. It means NEW "TM3.0": 2'7,100 will extract files 2, 3, 4, 6, 7 and 100 to the path where your source TAPs are being stored. The initial running is much more comfortable than with the old TAPmaster. You can have the new TM anywhere and from here you run it. There is no need to set load cursor, because all files, as already said, go after the colon ":". The only thing you have to do is to stand in the source disk with your TAP files. For example, you have TM on disk 3, you TAPs for extraction on disk 100 and you want them extracted to disk 200. So you stand in disk 100 and enter: NEW #3"TM3.0":2'7,100;200,0, yes, it is that simple.

ad 3) if target disk is write protected, it can open it (EH 1.18 only). TM will inform you in advance and you can open the disk for writing and continue in extracting. If you do not want to disable write protect, TM will terminate. For EH lower than 1.18 you will be informed about write protection only at disk writing.

ad 4) it informs about the progress. I intentionally spared the last third of VRAM to show out the progress. The info line looks like this: "1/10 file_name file_number_in_directory". Meaning: file 1 of 10 is being extracted, file name of current TAP being extracted and its number in directory.

ad 5) it extracts maximum of 624 TAP files. This is due to program structure. The program is from #4000 till #46E1, SP on #4800, and from #4800 one sector buffer starts, followed by a file list starting on #4C00.

If you run TM without parameters or with a syntactic error TM returns a help screen, the same way as cdd does. Consult it and you understand how to enter files correctly. Just to remind you, that the syntax is analogous to the way how BS-DOS handles file numbers. I would like to focus on usage of apostrophe (character ') a bit. Due to syntax check a block of parameters starting with an apostrophe cannot directly follow colon in BSROM 1.18 or 1.40 but a number have to come as first. So in case you want to mark all TAPs in the directory just "';disk,dir" will not work, you have to write down "1';disk,dir". Furthermore, such a parameter block cannot be used on ZX ROM at all since its syntactic control will not accept any parameters after colon. For BSROMs it means that all cases with colon followed directly by apostrophe followed by other values, then the syntax check will not allow to enter such a command line. These are examples of such cases: NEW "TM3.0":'4;2,0, or NEW "TM3.0":'4,100;2,0, or NEW "TM3.0":';2,0. You can solve these woes by putting file number 1 in front of the apostrophe. If you will use the same disk for extraction, meaning all from semicolon further will not be written, then the only line that cannot be entered will be NEW "TM3.0":'4,100, other mentioned examples will work. Additionally, Busy included one enhancement in syntax check for ZX ROM. If you put down PRINT command after the colon, TM3.0 will work on the standart ZX ROM also. PRINT command in front of apostrophe not only enables to use parameters with the original ZX ROM but a string of parameters can start with apostrophe also in BSROM as well. Eg. NEW "TM3.0": PRINT ';3,20 will extract all TAPs in the current directory into directory 20 on disk 3 and this syntax will work on ZX ROM as well as BSROM. Obviously, in case of BSROM it makes much more sense to use number 1 instead of PRINT.

Disk errors
All of them have been handled. You learn a type of error according to a message. Bios errors report "Disk error. Status:" followed by status value. Load errors report "Disk error. Status:load". Save errors report "Disk error. Status: save". All others return "Disk error: Status:else". This way errors have been sort out for the case of easier bug seeking.

I wish you many extracted TAPs.


TAPmaster 2.0- TAP extractor

put for download: 28.2.2018
version: 2.0
released: 1996
author: Mr. Johnny Renegade

Where would the MB-02+ world have been if we had not had TAPmaster. This absolutely indispensable program can extract TAP files for use on MB-02+ and real ZXS. Therefore I put it here also. It exists from its very beginning as a version 2.0.

Usage (info by the author Mr. Renegade): First you have to import somehow a file on a BS-DOS disk. Then load TAPMASTER (beware, the program runs in VRAM!), set load cursor on a TAP file (command ' file number) and run TAPmaster with CONTINUE 16384. The disk will be grunting with a bliss. Also border may be changing colour (ROM saving routine on #04c2 is used to save extracted blocks, which sets border according to address 23624 at its end; TAPMASTER uses memory from 23296 as a buffer). After export has been finished you obtain a report 'Done' and after its approval NEW will be carried out (that's why there is a report 'Done' so that you know TAPMASTER has ended correctly :-). The only limitation of the program is 42240 bytes maximum length of the exported block. If such a block will occur, DOS will be overwritten and you need to reboot the system.

Let's say it frankly that we would love a bit better TAP extracting on MB-02+ (eg. in MB-Commander, would we?:). Despite any occasional bug during extracting and user friendliness that I am ranking as a B TAPmaster is a brilliant utility.

TAPmaster caught my attention some time ago so I disassembled it (to be found in the zip) which opens ways for further adaptation and work on it. I do not know if I manage to get myself to it, but it captured my mind that it can extract more than just one file, as it is now.

My ideas: to run TAPmaster from a dialogue line with parameters, same as Busy's copy utility CDD does. For example:
NEW "TAPmaster":2'5,8;2,0
meaning: extract TAP files number 2, 3, 4, 5, 8 onto disk 2, directory 0.

With Busy's permission 99% of the CDD code begining could be used, here analysis of entry conditions is being carried out. Files could be displayed during extraction process for the user to know roughly where the whole extracting process is. There is also the advantage of extraction to another disk because you will have one special disk assigned for TAP files only and their extraction will be elswhere. TAP files will not mix up with ZX files anymore. I know, it is a minor improvement, but why not to have more tidiness on your disks. Also the maximum length of extracted block could be increased by cca 5 KB, but we know from real life that even the current limitation of 42KB will do for 99,9% of cases. So we'll see, maybe someone will venture into it.

I wrote some closer information about TAPmaster in dissassembled code also, or in the TXT note in the zip.


Old TAPmaster 2.0

New TAPmaster 3.0


TAPmaster 3.0

vypuštěno: 24.3.2018
verze: 3.0
autor: Mr. Johnny Renegade, Busy, Hood
poděkování: Busy

Znáte (asi z televize) ten pocit, kdy v závěrečném finiši protnete cílovou čáru a padnete (do sněhu) na zem vysílením (na pár vteřin), že jste to zvládli a spokojeni, že jste udělali dobrý výsledek? Tak podobný pocit mám dnes já, kdy od zimy následovala série programů pro MBčko a nyní to završuje poslední naplánovaný, nový a vylepšený TAPmaster. Jsem tomu skutečně rád, že se mi podařilo uskutečnit ještě tento miniprojekt, který si troufnu tvrdit bude v roce 2018 a dále pro uživatele velmi užitečný.

Snad pokaždé, když jsem na MBčku pracoval s TAPmasterem, tímto zcela nepostradatelným programem, mi tanulo na mysli, proč po každé TAPce se program resetuje a proč ho musím tak krkolomně nastavovat. Už tehdy jsem tušil, že by stačilo jen málo a TAPmaster by mohl umět daleko více. Za relativně malých úprav jsem starého TAPmastera vylepšil.

Co umí nový TAPmaster, neboli verze 3.0:

1) rozbalit více TAPek naráz
2) volitelně zadat cílový disk pro rozbalované soubory
3) v případě, že je cílový disk chráněn proti zápisu, umí jej odemknout (pouze EH 1.18)
4) informuje vás, jak je proces daleko
5) rozbalí max. 624 TAPek

Aby bylo jasno. TAPmaster jako takový, tedy samotná rozbalovací rutina je stále v principu ta stejná, tzn. stále platí omezení na max. délku bloku je 42240 bajtů, nebo to, že program neumí poznat, zda se jedná skutečně o TAP soubor. K němu jsem připojil Busyho program "cdd", tedy zase jen jeho určité rutiny zajišťující volbu souborů. Jakmile mám díky nim připraven seznam souborů/TAPek k rozbalení, tak pak už jednu po druhé podstrkuji TAPmasterovi, který je rozbalí, kam potřebujete.

ad 1, 2) rozbalit více TAPek naráz a volitelně zadat cílový disk pro rozbalované soubory. Jak toho docílím? Syntax je úplně stejná jako u cdd. Seznam souborů zadáváte za dvojtečku za příkaz spuštění TAPmastera. Tedy např.: NEW "TM3.0": 2'7,100;2,0 vám rozbalí TAPky 2, 3, 4, 5, 6, 7, 100 na disk 2 do adresáře 0. Výhoda nastavení cílového disku je i ta, že si TAPky importujete všechny na jedno místo (kvůli pořádku si např. vyhradíte na import souborů jeden disk) a odtud si TAPky rozbalujete, kam potřebujete. Jediný rozdíl v syntaxi oproti cdd je, že nemusíte zadávat cílovou cestu, v tom případě se soubory rozbalí na stejný disk, kde jsou umístěny vaše TAPky. Tzn. NEW "TM3.0": 2'7,100 vám rozbalí soubory 2, 3, 4, 6, 7 a 100 tam, kde máte zdrojové TAPky. Celé spuštění se také děje mnohem komfortněji než u starého TM. Nový TM máte umístěn libovolně kde, a odtud jej spouštíte. Nemusíte nastavovat žádné load kurzory, protože soubory vypisujte, jak již bylo řečeno, za dvojtečku. Jediné co musíte udělat je přepnout se před začátkem práce na zdrojový disk s TAPkami. Takže např. TM máte na disku 3, vaše TAPky k rozbalení na disku 100 a chcete je rozbalit na disk 200. Stoupnete si na disk 100 a zadáte tedy: NEW #3"TM3.0":2'7,100;200,0 a o nic víc se nestaráte.

ad 3) v případě, že je cílový disk chráněn proti zápisu, umí jej odemknout (pouze EH 1.18). Dopředu vás o tom TM informuje a máte možnost disk odemknout a pokračovat v rozbalování. Pokud nechcete write protect povolovat, program se ukončí. Pro verze EH nižší než 1.18 budete o write protectu informováni až při zápisu na disk.

ad 4) informuje vás, jak je proces daleko. Záměrně jsem ušetřil poslední třetinu obrazovky pro výpis průběhu rozbalování. Informační řádek vypadá např. takto: "1/10 jmeno_souboru cislo_souboru_v_adresari". Což znamená: extrahuje se 1. soubor z 10, jméno souboru, které se právě rozbaluje a jeho číslo v adresáři.

ad5) rozbalí max. 624 TAPek. Je to dánou strukturou programu. Od #4000 do #46E1 je program, zásobník je na #4800 a buffer pro sektor začíná na #4800. Od #4C00 se pak nachází seznam čísel vybraných souborů.

Když spustíte TM bez parametrů, nebo uděláte v syntaxi chybu, vrací TM po vzoru cdd help screen. Podívejte se na něj, podle něj pochopíte, jak syntax zadávat. Připomenu, že syntax je analogická práci s čísly souborů v BS-DOSu. Chci zde jen více pohovořit o použití apostrofu (znak '). Díky syntaxní kontrole v BSROM 1.18 a 1.40 není možné začít blok parametrů za dvojtečkou apostrofem, ale jako první musí následovat číslo. Takže pro případ označení všech TAPek v adresáři nebude zápis "';disk,dir" fungovat, ale je potřeba napsat "1`;disk,dir". No a na ZX ROM blok parametrů není použitelný vůbec, protože její syntaxní kontrola vůbec neakceptuje žádné parametry za dvojtečkou. Takže v BSROMkách všude kde je apostrof za dvojtečkou a násl eduje nějaká další hodnota, tak kontrola syntaxe nedovolí řádek odeslat. Např. NEW "TM3.0":'4;2,0, nebo NEW "TM3.0":'4,100;2,0, nebo NEW "TM3.0":';2,0. Vše vyřešíte tím, že tedy před apostrof napíšete č. souboru 1. Pokud budete chtít rozbalovat na stejný disk, tedy vše od středníku dále nebude použito, pak nepůjde jedině odeslat tato řádka: NEW "TM3.0":'4,100, ostatní zmíněné případy odeslat a zpracovat půjdou. K tomu Busy přidal ještě jedno vylepšení ve zpracování syntaxe pro ZX ROM. Pokud hned za dvojtečku napíšete klasický příkaz PRINT, pak můžete TM3.0 používat i s klasickou ZX ROM. PRINT před apostrofem umožní nejen použít parametry s originální ZX ROM, ale umožní, aby řetězec parametrů mohl začínat apostrofem i u BSROM. Například: NEW "TM3.0": PRINT ';3,20 rozbalí všechny TAPky v aktuálním adresáři do adresáře 20 na disku 3 a tato syntax funguje univerzálně na ZX ROM i BSROM. Samozřejmě v případě BSROM je smysluplnější místo PRINT použít číslici 1.

Diskové chyby
Jsou všechny ošetřeny. Podle hlášení se dozvíte o jaké chyby jde. Ty biosové vracejí hlášení "Disk error. Status:" a následuje hodnota statusu. Chyby při loadu vracejí hlášení "Disk error. Status:load". Chyby při save vracejí "Disk error. Status: save". A všecny ostatní chyby pak "Disk error: Status:else". Je to tak rozlišeno pro případ lepšího hledání případných chyb.

Hodně úspěšně rozbalených TAPek.


TAPmaster 2.0- rozbalovač TAPek

ke stažení: 28.2.2018
verze: 2.0
vydáno: 1996
autor: Mr. Johnny Renegade

Kde bychom na MBčku byli, kdybychom neměli TAPmastera. Tento naprosto nepostradatelný program nám umí rozbalit TAP soubory pro použití na MBčku a reálném ZXS. Proto jej sem pro úplnost též přidávám. Existuje od svého počátku ve verzi 2.0.

Použití (info od autora Mr. Renegade): Nejprve si musíte soubor importovat nějakým způsobem na BS-DOSový disk. Pak nahrajte TAPMASTER (pozor, program bezi ve VRAM!), nastavte load kurzor na TAP soubor (prikaz ` číslo souboru) a spusťte Tapíka příkazem CONTINUE 16384. Disketa si bude chvilku chrochtat (blahem). Možná bude i blikat border (k ukládání souborů na disk je použita ROMková rutina #04c2, která po svém ukončení nastavuje border dle adresy 23624; TAPMASTER používá paměť od 23296 jako buffer). Po dokončení exportu obdržíte hlášku 'Done' a po jejím odpálkování se počítač NEWne (proto je tam ta hláška aby bylo poznat, že korektně skončil :-). Jediné omezení programu tkví v tom, že nemůže exportovat soubory delší 42240 bajtů. Pokud se takový soubor vyskytne, dojde při exportu k přepsání DOSu a je nutno rebootovat.

A řekněme si, že by se nám líbila o něco lepší práce s rozbalováním TAPek na MBčku (např. v MB-Commanderu, že?:). Přesto TAPmaster i přes nějaký ten bug při rozbalování a uživatelskou přívětivost, jež hodnotím známkou 2, je prostě skvělá utilita.

Protože mě nedávno zaujal TAPmaster více, vytvořil jsem jeho disasembling, který najdete v zipu, a který TAPmastera předurčuje k úpravám a dalšímu rozvoji. Nevím zda se k tomu časově dostanu, ale napadlo mě, že by mohl umět rozbalit více souborů, ne jen jeden, jako je tomu nyní.

Moje idea: spouštět TAPmastera z dialogového řádku s parametry, stejně jako to má Busyho kopírovací utilita CDD. Např.
NEW "TAPmaster":2'5,8;2,0
by znamenalo rozbal TAPky 2, 3, 4, 5, 8 na disk 2 do adresáře 0.

S Busyho svolením by šlo opsat 99% začátku kódu CDD, kde se provádí analýza vstupních údajů. V průběhu rozbalování by mohly být vypisovány soubory, aby uživatel zhruba věděl, jak je TAPmaster daleko. Výhoda umístění na jiný disk je i ta, že si prostě určíte jeden disk, kam budete importovat TAPky, a jejich rozbalování bude probíhat na disk jiný. TAPky se vám nebudou míchat se ZX soubory. Já vím, kosmetická věc, ale proč nemít na disku větší pořádek. Také by šla délka výsledného bloku zvětšit o cca 5KB, ale z praxe víme, že i těch stávajících 42KB je v 99,9% dostačující. Tak uvidíme, třeba se dotoho někdy někdo pustí.

Více informací k TAPmasterovi jsem napsal do disasemblovaného kódu, nebo do poznámky TXT v zipu.