Pokud ve svém programu potřebujete načíst nějaká data z daného souboru, nejčastěji se používá příkaz BGET. Způsob použití je následující:
N=1 ..číslo používaného kanálu OPEN #N,4,0,"zařízení:název" ..otevření souboru pro čtení BGET #N,adresa,početbytů ..načtení dat do RAM od udané adresy CLOSE #N ..zavření souboru
Čtení dat tímto způsobem je velice rychlé a snadno použitelné. Jediným problémem ovšem je, že příkaz BGET není mezi vestavěnými příkazy BASIC ROM, ale je to příkaz TBASICu. V BASICu jsme omezeni pouze na funkci GET pro čtení jednoho bytu. Ta jde také použít, ale už ne tak efektně:
N=1 ..číslo používaného kanálu OPEN #N,4,0,"zařízení:název" ..otevření souboru pro čtení FOR X=adresa TO adresa+početbytů-1: GET#N,A: POKE X,A: NEXT X ..načtení dat do RAM od udané adresy CLOSE #N ..zavření souboru
Načítání tímto způsobem bude trvat podstatně delší dobu.
Proto jsem vyrobil strojovou rutinu, která nabízí stejné možnosti jako příkazy BGET a BPUT. Její připojení k programu a použití je velice snadné:
BGET: A=USR(ADR(BGP$),číslokanálu,4,adresa,početbytů) BPUT: A=USR(ADR(BGP$),číslokanálu,8,adresa,početbytů)
V proměnné A se v obou případech objeví status operace - tj. číslo chyby v případě, že nastane. Jinak je proměnná A menší než 128 (vše v pořádku).
Poznámky:
Rutina nahrazuje pouze BGET či BPUT. Povely OPEN a CLOSE musíte použít stejným způsobem jako dříve.
Neopomíjejte kontrolovat hodnotu proměnné, kterou rutina vrací. V případě chyby totiž nedojde k vybuzení ERRORu, ale projeví se to pouze v této hodnotě.
Nezapomeňte, že textovou proměnnou BGP$ nesmíte v žádném případě změnit. Vedlo by to k poškození strojové rutiny a při jejím volání k zablokování systému.
Tato rutina je určena k volnému používání...