WERKEN MET AMOS deel 28 """"""""""""""""""""""" Het wissen van banken. """""""""""""""""""""" Gedurende het schrijven van je programma vind je het soms nodig om sommige banken uit het geheugen te wissen om andere data toe te voegen. Sprites moeten soms uitgewisseld worden voor een nieuw stuk in je spel of een speciaal stukje muziek moet gespeeld worden. Het ERASE (wis) kommando geeft je een snelle mogelijkheid om deze data te wissen. ERASE (wissen van een bank) ERASE b ERASE wist de inhoud van een geheugenbank. Het bank nummer b kan van 1 tot 15 zijn. Merk op dat bij elk stukje geheugen dat nu vrij komt dit toegevoegd wordt aan je programma geheugen. Bank parameter funkties. Als je direkt gebruik wilt maken van de data's in de banken met het poke, doke en loke kommando bijvoorbeeld, dan moet je deze kommando's gebruiken om de bank zijn adres te vinden en zijn geheugen grootte. =START (Haalt het begin adres van de bank) s=START(b) Deze funktie geeft het begin adres van banknummer b terug. Is het eenmaal gereserveerd, dan blijft de plaats van de bank onveranderd. Dus het resultaat van deze funktie wordt vastgehouden voor de levensduur van de bank. Voorbeeld: Reserve As Work 3,2000 Print Start(3) =LENGTH (haal de lengte van de bank) l=LENGTH(b) De LENGTH funktie geeft de lengte in bytes van bank nummer b terug. Bevat de bank sprites of icons dan worden in plaats daarvan het aantal plaatjes teruggegeven. Een waarde van 0 geeft aan dat de bank niet bestaat. Voorbeeld: Reserve as work 6,1000 Print Length(6) Erase 6 Print Length(6) Het laden en bewaren van banken """"""""""""""""""""""""""""""" Sommige programma's vragen veel geheugen banken, een goed voorbeeld is een avontuur spel. Die laden verschillende plaatjes, muziekstukjes voor de verschillende plaatsen in het programma. Een Amiga 500 zou veel moeite hebben om al die data in een keer te bevatten en daarom is het handiger om pas die data op te roepen wanneer ze nodig zijn. LOAD (Laadt een of meer banken) LOAD"filenaam"[,n] Het effekt van dit kommando varieert afhankelijk van het soort file wat je laadt. Bevat de file meerdere banken, dan worden alle banken die in het geheugen stonden gewist voordat deze nieuwe er voor in de plaats komen. Laadt je echter een bank, dan wordt ook slechts deze bank vervangen. De mogelijke plaatsbepaling specificeert een enkele bank die met jouw data geladen is. Als het kan dan worden de data in de bank gesaved vanwaar het eerst werd geladen. Sprite banken worden een beetje anders behandeld. In dit geval wisselt de parameter n tusen de twee aparte laad types. Als n is toegestaan of een waarde 0 heeft toegewezen gekregen, zal de huidige bank geheel overschreven worden door de nieuwe sprites. Elke andere waarde voor n dwingt de nieuwe sprites om bij deze bank toegevoegd te worden. Dit staat je toe om verschillende sprite files in hetzelfde prgramma te kombineren. Voorbeeld: Load "AMOS_DATA:Sprites/Octopus.abk" SAVE (Saves een of meer banken op de disk) Save"Filenaam"[,n] Het save kommando saved je geheugen banken naar de disk. Er zijn twee mogelijkheden: SAVE"filenaam.ABK" Dit saved alle huidige bepaalde banken in een enkele file op je disk. SAVE:"Filenaam.ABK",n Deze uitgebreide vorm saved alleen banknummer n. Je moet er ook altijd zeker van zijn dat je de .ABK aan het eind van de filenaam zet, zodat je later goed kunt zien dat deze files geheugen banken bevatten. BSAVE (Saves een ongeformatteerd blok geheugen in het binaire formaat) BSAVE file$, start TO end Het geheugen bewaard tussen start en end wordt op de disk bewaart in de file$. Deze data wordt zonder speciaal format bewaard. Voorbeeld: Bsave "Test",Start(7) TO Start(7)+Length(7):rem Saves een geheugenbank Het bovenstaande voorbeeld saves de geheugen bank nummer 7 op de disk. Het verschil tussen deze file en de file als een normale bank gesaved is dat SAVE een speciale bank header schrijft die informatie bevat betreffende de bank. Deze header is niet aanwezig met een BSAVED file, je kunt dus ook geen LOAD kommando kunt gebruiken. Waarschuwing: De sprite en icon banken worden niet in een Chunk geheugen bewaard. Elk objekt kan overal in het geheugen aanwezig zijn. Omdat AMOS dit flexibele data bewaar systeem gebruikt, kun je de geheugen bank niet met BSAVE saven. BLOAD (Laad binaire informatie in een gespecificeerd adres van de bank) BLOAD file$, addr Het BLOAD kommando laadt een file in binair formaat in het geheugen. Het voegt de inkomende informatie op geen manier toe. Er zijn twee funkties. Bload file$,addr File$ wordt vanaf disk geladen in het adres addr. Bload$,bank File$ wordt in een bank geladen. De bank moet eerst gereserveerd worden, anders krijg je een foutmelding. Wees er ook zeker van dat je geen file inlaadt die groter is dan de gereserveerde bank, anders gaat hij uit de bank en gaat andere geheugen gedeeltes in de war brengen.