›41m ›0m ›41m ›0m ›41m ›0m ›41m ›0m ›41m ›0m ›41m ›0m ›41m ›0m ›41m ›0m ›41m ›0m ›41m ›0m ›41m ›0m ›41m ›0m ›41m ›0m ›41m ›0m ›41m ›0m ›41m ›0m ›41m ›0m ›41m ›0m ›41m ›0m ›41m ›0m ›41m ›0m ›43m ›0m ›43m ›0m ›43m ›0m ›43m ›0m ›43m ›0m ›43m ›0m ›43m ›0m ›43m ›0m ›43m ›0m ›43m ›0m ›43m ›0m ›43m ›0m ›43m ›0m ›43m ›0m ›43m ›0m ›43m ›0m ›43m ›0m ›43m ›0m ›43m ›0m ›43m ›0m ›43m ›0m ›43m ›0m ›43m ›0m ›43m ›0m ›42m ›0m ›42m ›0m ›42m ›0m ›42m ›0m ›42m ›0m ›42m ›0m ›42m ›0m ›42m ›0m ›42m ›0m ›42m ›0m ›42m ›0m ›42m ›0m ›42m ›0m ›42m ›0m ›42m ›0m ›42m ›0m ›42m ›0m ›42m ›0m ›42m ›0m ›42m ›0m ›42m ›0m ›42m ›0m Explode Extension V2.01 Giftware von Volker Stepprath © 1995 - 2002 by Testaware ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m Zur Sourcecode Erstellung wurde der CED Release II Editor von Cygnus Software, und zur Assemblierung der GenAm Macro Assembler V2.11D von HiSoft verwendet. ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m Die AMOSPro Explode Extension beinhaltet » ›33m131›0m « neue Befehle für AMOSPro. Die einzelnen Befehle und deren Beschreibung lauten wie folgt: [ 1] ALIGN ................................... Justierung nach einem Richtwert [ 2] AMOS STATE ................. Startermittlung von Workbench oder CLI/Shell [ 3] AVAIL FREE ................. Gesamt verfügbaren Speicherbereich ermitteln [ 4] BANK AS DATA .................... Ändern des Bankinstallationflag in Data [ 5] BANK AS WORK .................... Ändern des Bankinstallationflag in Work [ 6] BANK CLONE ..................................... Kopie einer Bank anlegen [ 7] BANK FREE ............................... Ermittelt eine freie Banknummer [ 8] BANK LOAD .............. Direktinstallation einer Datei in eine AMOS Bank [ 9] BANK SAVE ................. Speichern der Datenbank auf einen Datenträger [ 10] BANK TO CHIP ................ Transferiert eine Bank in den Chip-Speicher [ 11] BPK LENGTH .... Entpackte Größe einer ByteKiller gepackten Bank ermitteln [ 12] BPK UNPACK .......................... Bank im ByteKiller Format entpacken [ 13] BYTE ............................. Bytestring in numerischen Wert wandeln [ 14] BYTE$ ....................... Numerischer Byte-Wert in Stringbyte wandeln [ 15] CD PARENT ......................... Internes Zielverzeichnis zurücksetzen [ 16] CD PATH$ .................... Name des internen Zielverzeichnis übergeben [ 17] CD SET .................................. Internes Zielverzeichnis setzen [ 18] CLEAR MOUSE ..................... Programmstop bis Mausstatus inaktiv ist [ 19] DEV STATE ........................... Statusermittlung eines Datenträgers [ 20] DPK NAME$ ..... Ermittlung des verwendeten Packers einer Objekt/Data Bank [ 21] DPK UNPACK ........................ Entpacken einer Objekt bzw. Data Bank [ 22] DRIVE BUSY ............. Entfernen bzw. installieren eines Diskinterrupts [ 23] DRIVE STATE ................................... Laufwerk-Status ermitteln [ 24] EVEN ................................................ Test ob Wert gerade [ 25] EXPLODE BASE ................. Interne Basisadresse der Explode Extension [ 26] EXPLODE$ .............. Informations-String der Explode Extension Version [ 27] EXTENSION BASE ..................... Interne Basisadresse einer Extension [ 28] EXTENSION$ .................. Informations-String einer Extension Version [ 29] FILE BLOCKS ....................... Ermittelt die Blockanzahl einer Datei [ 30] FILE PATH$ .............. Aktuellen Zugriffspfad einer Datei voranstellen [ 31] FILE PROTECTION ................ Übergibt die Protection-Mask einer Datei [ 32] FILE SIZE ........................... Ermittelt die Bytegröße einer Datei [ 33] FILE TYPE ..................... Unterscheidung zwischen Datei bzw. Device [ 34] FINISH .................................. Endadresse einer Bank ermitteln [ 35] FLUSH ................. Zurückgewinnung von unbenutzten Speicherbereichen [ 36] FONT BASE .............. Ermittlung der internen TextFont-Sruktur Adresse [ 37] FONT CLOSE ........................ Löschen eines bzw. aller Zeichensätze [ 38] FONT HEIGHT ....................................... Übergabe der Fonthöhe [ 39] FONT NAME$ ................................... Name eines Fonts ermitteln [ 40] FONT OPEN .......................... Bereitstellen eines beliebigen Fonts [ 41] FONT SET ............................. Font für die Textausgebe bestimmen [ 42] FORMAT$ .................... Formatiert einen String wie unter C++ üblich [ 43] HARD DATE$ ..................................... Übergabe des Systemdatum [ 44] HARD TIME$ ............................ Übergabe der aktuellen Systemzeit [ 45] HARDRESET ................... Virusentfernung durch simulierten Kaltstart [ 46] HOF ............................... Ermittlung einer Datei-Identifikation [ 47] IFF BANK .................................. IFF Bank in Screen darstellen [ 48] IMAGE HEIGHT ................... Ermittelt die Höhe eines Bobs bzw. Icons [ 49] IMAGE SWAP ............ Bobs bzw. Icons werden untereinander ausgetauscht [ 50] IMAGE WIDTH .. Der Rückgabewert übergibt die Breite eines Bobs bzw. Icons [ 51] IPK LENGTH ...... Entpackte Byte-Länge einer imploded Datenbank ermitteln [ 52] LONG ............................. Longstring in numerischen Wert wandeln [ 53] LONG$ ..................... Numerischer Long-Wert in Zeichenkette wandeln [ 54] LPK LENGTH ...... Ermittlung der entpackten Byte-Größe einer Lh Datenbank [ 55] LPK PACK .............................. Lh Daten-Komprimierung einer Bank [ 56] LPK UNPACK ....................... Entpacken einer Lh gepackten Datenbank [ 57] LSL.B ................ Bitweise Verschiebung eines Byte-Wertes nach links [ 58] LSL.L ................................... Long-Bitverschiebung nach links [ 59] LSL.W ................................... Word-Bitverschiebung nach links [ 60] LSR.B ..................... Bitweise Rechtsverschiebung eines Byte-Wertes [ 61] LSR.L .................................. Long-Bitverschiebung nach rechts [ 62] LSR.W .................................. Word-Bitverschiebung nach rechts [ 63] NUMBER .................... Ermittelt die Nummer einer installierten Bank [ 64] ODD ............................................... Test ob Wert ungerade [ 65] OPEN WORKBENCH .......... Erneute Bereitstellung der Workbench-Oberfläche [ 66] PAUSE ..................... Wartestatus mit Zeitübergabe und Rückgabewert [ 67] PCPN$ ........................................... Ändern der Cursor-Farbe [ 68] PCSR$ ................................. Schaltet den Cursor ein- bzw. aus [ 69] PDEF$ ................. Alle Print-Einstellungen auf default zurücksetzen [ 70] PINV$ ...................... Ein- bzw. ausstellen des Print Inverse-Modus [ 71] PJAM$ ...................................... Print-Schreibmodus bestimmen [ 72] PLANE ACTIVE ...................... Test ob einzelne Plane akitiviert ist [ 73] PLANE CLEAR ....................................... Löscht einzelne Plane [ 74] PLANE CLOSE ............... Unterbindet Grafikausführungen in einer Plane [ 75] PLANE COPY .......... Kopiert den Datenbereich einer Plane in eine Andere [ 76] PLANE GET ............. Übergibt den Dateninhalt einer Plane in eine Bank [ 77] PLANE LENGTH ............. Ermittelt die Byte-Größe jeder einzelnen Plane [ 78] PLANE MASK ..................... Legt eine Maske über eine einzelne Plane [ 79] PLANE MERGE ........................... Vereint zwei Planes miteinenander [ 80] PLANE NEGATIVE .......................... Negativiert eine einzelne Plane [ 81] PLANE OPEN .............. Erlaubt wieder Grafikausführungen in eine Plane [ 82] PLANE PUT .................... Installiert eine Bank direkt in eine Plane [ 83] PLANE SWAP ........................... Vertauscht zwei Planes miteinander [ 84] PPK DATA ............Beliebiges PowerPacker Format in Datenformat wandeln [ 85] PPK LENGTH ................... Entpackte Bytelänge einer PowerPacker Bank [ 86] PPK MODE .................. Crunch-Modus einer PowerPacker Bank ermitteln [ 87] PPK NAME$ ................... Identifizierungsname einer PowerPacker Bank [ 88] PPK PACK ................ PowerPacker Daten-Komprimierung einer Datenbank [ 89] PPK PASSKEY .... Passkey einer verschlüsselten PowerPacker Bank ermitteln [ 90] PPK PASSWORD .......... Statuswert ermitteln für Passwort einer PX?? Bank [ 91] PPK TYPE .................... Identifizierungswert einer PowerPacker Bank [ 92] PPK UNPACK ................... Entpacken einer PowerPacker gepackten Bank [ 93] PSAD$ ...... Ein- bzw. ausstellen der druckgeschwächten Print-Darstellung [ 94] PUND$ ...................... Ein- bzw. ausstellen des Print-Unterstriches [ 95] RASTPORT ......... Ermittelt die Rastport-Adresse des momentanen Displays [ 96] RS ............................. Übergabe einer internen Strukturposition [ 97] RS APTR ............................ String-Adresse in Struktur eintragen [ 98] RS BSET ...................... Strukturzeiger um die Anzahl Bytes erhöhen [ 99] RS BYTE ................................. Byte-Wert in Struktur eintragen [100] RS CHAR ............................. String direkt in Struktur eintragen [101] RS CLEAR ............................................... Struktur löschen [102] RS ERASE ........................ Einzelne bzw. alle Strukturen entfernen [103] RS FILL ............................ Struktur mit einem AscII-Code füllen [104] RS FINISH ........................... Endadresse einer Struktur ermitteln [105] RS LENGTH ........................... Byte-Länge einer Struktur ermitteln [106] RS LONG ................................. Long-Wert in Struktur eintragen [107] RS LSET ...................... Strukturzeiger um die Anzahl Longs erhöhen [108] RS SET ........................ Strukturzeiger auf Offset-Position setzen [109] RS START ............................... Adresse einer Struktur ermitteln [110] RS STRUCTURE .................................... Struktur initialisieren [111] RS WORD ................................. Word-Wert in Struktur eintragen [112] RS WSET .................. Strukturzeiger wird um die Anzahl Words erhöht [113] SET HARD DATE .................... Einstellen des Datums der Hardware-Uhr [114] SET HARD TIME ........................... Einstellen der Hardware-Uhrzeit [115] SOFTRESET .............................. Simulation eines normalen Resets [116] STOP LOOP ....................... Programmablauf in Wartestatus versetzen [117] VECTORPTR ................................. Test ob Hintergrundtask aktiv [118] WAIT LOOP .................................. Wartestatus mit Rückgabewert [119] WAIT MOUSE ................. Abbruch des Wartestatus durch eine Maustaste [120] WORD ............................. Wordstring in numerischen Wert wandeln [121] WORD$ ..................... Numerischer Word-Wert in Zeichenkette wandeln [122] WORKBENCH ............... Test ob Workbench geöffnet oder geschlossen ist [123] XPK CRYPT ........................ Verschlüsseln einer Bank in XPK Format [124] XPK ERR$ ..................... Fehlertext des letzten Xpk Funktionsaufruf [125] XPK ERRN ................... Fehlernummer des letzten Xpk Funktionsaufruf [126] XPK LENGTH ........ Original Bytelänge einer Xpk gepackten/codierten Bank [127] XPK NAME$ ........... Übergabe des verwendeten Compressors einer Xpk-Bank [128] XPK PACK ................................ Packen einer Bank in XPK Format [129] XPK UNPACK .......................... Entpacken/Decodieren einer Xpk-Bank [130] AMCAF CRACK ON ......................................... Privat (Illegal) [131] AMCAF CRACK OFF ........................................ Privat (Illegal) ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Wert auf einen Richtwert justieren! ›33m= ALIGN ( Wert , Richtwert )›0m Es wird der übergebe Wert auf den Richtwert justiert. Das bedeutet, daß z.B. der übergebe Wert immer teilbar durch den Richtwert, ohne Rest ist. Dabei wird der Wert stets bedingt aufgerundet. Bspl: A=27 : B=100 Print Align(A,4) Print Align(B,200) Print Align(B,A) ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Startermittlung von Workbench oder CLI bzw. Shell! ›33m= AMOS STATE›0m Dieser Befehl ermittelt die Werte True (-1) oder False (0). Hierbei bedeutet der Wert True, daß der laufende Programmtask vom CLI bzw. Shell aus gestartet wurde. Der Wert False hingegen sagt aus, daß der laufende Programmtask von der Workbench durch Doppelklick auf das entsprechende Icon gestartet wurde. Bspl: If Amos State Print "Start von CLI/Shell" Else Print "Start von Workbench" End If ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Gesamt frei verfügbaren Speicherbereich ermitteln! ›33m= AVAIL FREE›0m Als Rückgabewert wird der insgesamt frei verwendbare Speicherbereich angegeben. Diese Ermittlung ist gleichzusetzen mit » Chip Free+Fast Free «. Bspl: Print "Chip :";Chip Free Print "Fast :";Fast Free Print "Gesamt:";Avail Free ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Zurückgewinnung von unbenutzten Speicherbereichen! ›33mFLUSH›0m Flush entfernt alle geschlossenen Libraries, Devices und allgemeinen Datenmüll aus dem Systemspeicher. Der dabei zurückgewonnene Speicher steht danach vollständig zur Verfügung. Bspl: N=Chip Free+Fast Free Flush Print "Speichergewinn";(Chip Free+Fast Free)-N;" Bytes." ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Ändern des Bankinstallflag in Data-, Work-Modus! ›33mBANK AS DATA Bank›0m ›33mBANK AS WORK Bank›0m Die als Workbank installierte Bank wird als Databank deklariert und umgekehrt. Bspl: Reserve As Data 7,100 Reserve As Work 8,100 List Bank Bank As Work 7 Bank As Data 8 Erase Temp List Bank ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Kopie einer Bank anlegen! ›33mBANK CLONE Bank TO Bank›0m Dieser Befehl legt eine Kopie einer bereits installierten Bank an. Dabei wird Der Bank-Header so identisch wie möglich kopiert. Zu beachten ist, das die Start-Adressen natürlich nicht identisch sind, auch können keine Icon- bzw. Sprite-Banks kopiert werden. Bspl: Bank Load "Datei" To 8 Bank Clone 8 To 9 List Bank ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Ermittlung einer freien Bank-Nummer! ›33m= BANK FREE ( Minimale Banknummer )›0m Es wird eine Banknummer ermittelt, deren Rückgabewert beginnend mit der übergebenen minimalen Banknummer, eine freie Banknummer bestimmt. Bspl: Print "Minimal freie Banknummer:",Bank Free(1) For N=1 To 10 Reserve As Work N,100 Next List Bank Print "Nächste freie Banknummer:",Bank Free(1) ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Direktinstallation einer Datei in eine Bank! ›33mBANK LOAD "Dateiname" [ TO Bank ] [ , Mask% ] ›0m Mittels diesem Befehl wird eine Datei direkt in eine Bank installiert. [TO Bank] bestimmt die Nummer der Datenbank ( Default = 8 ). Der Bank-Modus wird mittels der [Mask%] übergeben. Hierbei bedeuten %11 = Chip + Data, %00 = Fast + Work ( Default ). Natürlich können die Maskwerte auch beliebig kombiniert werden. Bspl: Bank Load "AMOSPro_System:AMOSPro" To 7,%10 Bank Load "AMOSPro_System:C/Run" List Bank ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Speicherung der Daten einer AMOS-Bank! ›33mBANK SAVE "Dateiname" , Bank›0m Durch Bank Save werden auf einfache Weise Datenbankinhalte auf einen Datenträger gespeichert. Dabei wird kein Bank-Header vorangestellt. Bspl: Bank Load "AMOSPro_System:C/Run" Bank Save "RAM:Run",8 ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Datentransfer in Chip-Mem! ›33mBANK TO CHIP Bank›0m Transferiert eine Bank in den Chip-Speicher. Das ist soweit sinnvoll wenn z.B. eine Tracker Musik-Datei gepackt vorliegt und vor dem Abspielen erst entpackt werden muß. Bspl: Bank Load "MOD.Track" To 3 Xpk Unpack 3 Bank To Chip 3 Pt Play 3 : Rem Amcaf-Command! ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Endadresse einer Bank ermitteln! ›33m= FINISH ( Bank )›0m Der Rückgabewerte dieses Befehls, bestimmt die Endadresse einer Bank. Dieser Befehl hat die gleiche Bedeutung wie der Aufruf Start()+Length(). Bspl: Bank Load "datei" To 10 Bsave "neuedatei",Start(10) To Finish(10) ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Ermittlung der Banknummer einer installierten Bank! ›33m= NUMBER ( Bankadresse )›0m Dieser Befehl ist die Umkehrfunktion des internen Befehls » Start() « . Der Rückgabewert bestimmt die Banknummer einer Bankadresse. Dieser Befehl wurde integriert, da es nicht möglich ist z.B. eine Bank zu löschen, deren Adresse zwar bekannt ist aber nicht deren interne Nummer. Bspl: Bank Load Fsel$("") N=Start(8) Erase N List Bank Erase Number(N) List Bank ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Zeichenkette als numerischen Wert interpretieren! ›33m= BYTE ( Byte$ )›0m ›33m= WORD ( Word$ )›0m ›33m= LONG ( Long$ )›0m Die übergebene Zeichenkette wird als Zahl in interner Darstellung interpretiert und in Form eines numerischen Wertes übergeben. Bspl: N$="ABCD" Print Hex$(Byte(N$)) Print Hex$(Word(N$)) Print Hex$(Long(N$)) ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Numerische Werte als Zeichenkette interpretieren! ›33m= BYTE$ ( Byte )›0m ›33m= WORD$ ( Word )›0m ›33m= LONG$ ( Long )›0m Es wird ein numerisch übergebener Wert, entsprechend der intern binären Darstellung, als Zeichenkette interpretiert. Bspl: N=$41424344 Print Byte$(N) Print Word$(N) Print Long$(N) ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Device-Status ermitteln! ›33m= DEV STATE ( "Devicename:" )›0m Dieser Befehl ermittelt einen Rückgabewert, welcher vier verschiedene Statuseigenschaften des angegebenen Devices beinhalten kann. Der Übergabeparameter kann entweder der komplette Devicenname oder die Device-Bezeichnung sein. 0 = Deviceinformation konnte nicht besorgt werden -1 = Device ist schreibgeschützt -2 = Device ist ungültig und nicht beschreibbar ( not Validated! ) -3 = Device ist nicht schreibgeschützt Bspl: N=Dev State("AMOSPro_System:") If N=0 Print "Device nicht vorhanden." Else If N=-1 Print "Device ist schreibgechützt." Else If N=-2 Print "Device ist ungültig." Else If N=-3 Print "Device ist beschreibbar." End If ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Entfernen bzw. installieren eines Diskinterrupts! ›33mDRIVE BUSY Laufwerknummer , Argument›0m Der Interrupt eines Laufwerk ( DF0: - DF3: ) wird ausgestellt bzw. erneut installiert. Um einen Interrupt zu erzeugen, muß für das Argument bei einem entfernen ungleich Null, also [True] übergeben werden. Um den Interrupt erneut zu installieren, muß das Argument [False] eingesetzt werden. Bspl: For A=0 To 3 Drive Busy A,True Next Print "Bitte Disk(s) einlegen [Taste]." Wait Key For A=0 To 3 Drive Busy A,False Next ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Laufwerk-Status ermitteln! ›33m= DRIVE STATE ( Laufwerknummer )›0m Der Rückgabewert dieses Befehls ist deutlich Umfangreicher als der interne AMOSPro =Drive() Befehl. =Drive State() ermittelt insgesamt 4 verschiedene Werte Pro Laufwerk, während der =Drive() Befehl lediglich nur 2 ermittelt. Die jeweils ermittelten Statuswerte lauten... 0 = Laufwerk ist nicht angeschlossen -1 = Laufwerk angeschlossen, keine Disk eingelegt -2 = Laufwerk angeschlossen, Disk eingelegt, schreibgeschützt -3 = Laufwerk angeschlossen, Disk eingelegt, nicht schreibgeschützt Bspl: For N=0 To 3 Print "Status von DF";Chr$(48+N)+": ist ";Drive State(N) Next ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Status eines geraden bzw. ungeraden Wertes ermitteln! ›33m= EVEN ( Wert )›0m ›33m= ODD ( Wert )›0m Der zurückgegebene Status bestimmt ob ein Wert gerade oder Ungerade ist. Bei Even wird bei einem geraden Wert der Status True also [-1], bei einem ungeraden Wert der Statuswert False, also [0] übergeben. Bei Odd verhält es sich genau umgekehrt. Bspl: A=Rnd(100) If Even(A) Print "Ein gerader Wert:";A Else If Odd(A) Print "Ein ungerader Wert:";A End If ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Informations-String der Explode Extension ermitteln! ›33m= EXPLODE$›0m Es wird ein 43 Bytes langer String übergeben, welcher die aktuelle Version der AMOSPro_Explode.Lib kennzeichnet. Bspl: Print Explode$ ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Übergabe der Explode Extension Basisadresse! ›33m= EXPLODE BASE›0m Der ermittelte Wert gibt die interne Adresse der AMOSPro_Explode.Lib, von wo aus alle Funktionen von AMOSPro aufgerufen werden, wieder. Bspl: N=Explode Base Print "Basis der Explode Extension:",Hex$(N,8) ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Informations-String einer AMOSPro Befehlserweiterung! ›33m= EXTENSION$ ( Extension )›0m Es wird eine Zeichenkette bezüglich einer AMOSPro Extension übergeben. Es ist unbedingt darauf zu achten, daß diese Funktion nicht in kompilierten AMOSPro Programme anwendbar ist. Bspl: Print "ExtNb:","ExtName:" For N=0 To 26 Print N,Extension$(N) Next ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Übergabe einer Extension Basisadresse! ›33m= EXTENSION BASE ( Extension )›0m Der ermittelte Wert kennzeichnet die interne Adresse einer AMOSPro Extension. Bspl: Print Space$(17)+"ExtNb:","Basis:" For N=0 To 26 Print "Extension Basis: ";N,Hex$(Extension Base(N)) Next ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Block-Anzahl einer Datei ermitteln! ›33m= FILE BLOCKS ( "Datei" )›0m Es wird ein Rückgabewert ermittelt, welcher die Anzahl der benötigten Blöcke einer Datei bestimmt. Der Rückgabewert von -1 bedeutet, daß die Datei nicht verfügbar ist. Bspl: N$="C:Run" Print N$;" benötigt";File Blocks(N$);" Blöcke." ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Dateinamen den aktuellen Pfad voranstellen! ›33m= FILE PATH$ ( "Datei" )›0m Dem übergebenen Dateinamen wird der z.Z. aktuelle Pfad vorangestellt. Bspl: N$="AMOSPro" N$=File Path$(N$) Print N$ ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Schutzflags ermitteln! ›33m= FILE PROTECTION ( "Datei" )›0m Die Schutzflags der angegebenen Datei werden ermittelt. Bspl: F=File Protection("C:Info") Print Bin$(F,8) ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Byte-Größe einer Datei ermitteln! ›33m= FILE SIZE ( "Datei" )›0m Dieser Befehl ist etwas effektiver als der interne AMOSPro Befehl =Lof() da nicht zuvor ein I/O Kanal geöffnet werden muß, um die Dateigröße zu ermitteln. Der Rückgabewert von -1 bedeutet, daß die Datei nich aufgefunden wurde. Bspl: N$="C:Run" Print N$;" ist";File Size(N$);" Bytes groß." ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Unterscheidung zwischen Datei und Verzeichnis! ›33m= FILE TYPE ( "Name" )›0m Dieser Befehl ermittelt einen Typenwert, welcher zwischen Datei, Verzeichnis, und ob eine Datei bzw. ein Verzeichnis überhaupt zur Verfügung steht, unterscheidet. Der Befehl =File Type() kann auch ohne weiteres als Ersatz für den AMOSPro internen Befehl =Exist(), aufgrund seiner umfangreicheren Rückgabewerte, eingesetzt werden. Die jeweils ermittelten Werte lauten... 0 = Datei bzw. Verzeichnis nicht Verfügbar -1 = Ermittelter Typ ist eine Datei -2 = Ermittelter Typ ist ein Verzeichnis bzw. Datenträger Bspl: N$="SYS:APSystem/APCmp" N=File Type(N$) If N=0 Print N$;" ist nicht verfügbar." Else If N=-1 Print N$;" ist eine Datei." Else If N=-2 Print N$;" ist ein Device." End If ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Ermittlung einer Datei-Identifikation! ›33m= HOF ( Dateikanal )›0m Mittels diesem Befehl kann der Ein- bzw. Ausgabekanal einer Datei ermittelt werden. Der Rückgabewert bestimmt das Dateihandle einer zuvor geöffneten Datei. Bspl: N$="SYS:S/Startup-Sequence" Open In 1,N$ Dreg(1)=Hof(1) Dreg(2)=Varptr(N$) Dreg(3)=Len(N$) N=Doscall(-42) Close 1 Text 0,6,N$ ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Interner Zugriffspfad ›33m= CD PATH$›0m ›33mCD PARENT›0m ›33mCD SET "volumepath"›0m Diese Befehle sind gleichbedeutend mit den internen AMOSPro Befehlen Dir$ und Parent. Leider zeigte der Dir$-Befehl mit dem Zugriff auf Festplatten erhebliche Schwierigkeiten (Absturz des Programmes). Ersatzweise integrierte ich: CD SET - setzt den Zugriffspfad, CD PARENT - kehrt zu dem nächst höheren Verzeichniss zurück und CD PATH$ - gibt den aktuellen Zugriffspfad aus. ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Individueller Fontgebrauch! ›33m= FONT BASE ( fnb )›0m ›33m= FONT HEIGHT ( fnb )›0m ›33m= FONT NAME$ ( fnb )›0m ›33mFONT OPEN fnb , "fontname" , height›0m ›33mFONT CLOSE [ fnb ]›0m ›33mFONT SET fnb›0m Diese Befehle sollen evtl. die nicht ganz so kompfortable Lösung der Benutzung verschiedener Zeichensätze, also Fonts, unter AMOSPro unterstützen. Dabei wird nicht wie üblich das ganze FONTS: Verzeichnis zunächst eingelesen, vielmehr kann jeweils ein Zeichensatz [1-30] individuell installiert werden. Dieser Font muß dabei nicht im aktuellen FONTS: Verzeichnis vorliegen, ein Font kann also von einem beliebigen Pfad her installiert werden. Wichtig ist zu wissen, daß nach Beendigung eines Programmes alle Fonts mittels Font Close ohne Parameter- angabe aus dem Systemspeicher zu löschen sind, da dieser Speicherbereich nicht selbstständig freigegeben wird. Bspl: Font Open 1,"topaz.font",8 Font Open 2,"DF2:FONTS/emerald.font",20 If Font Base(2) Font Set 2 Text 0,Font Height(2),Font Name$(2) Font Close 2 End If Font Set 1 Font Close Text 0,40,"Fine using of fonts, isn`t it?" ›33mBenötigt›0m: LIBS:diskfont.library! ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Formatieren eines Strings wie unter C++ üblich! ›33m= FORMAT$ ( "Fmtstring" , Fmtbuffer )›0m Mittels dieser Funktion wird ein String, welcher mit den entsprechenden Formatelementen ausgestattet ist, initialisiert. Die einzusetzenden Formatdaten müssen in entsprechender Reihenfolge in dem fmtbuffer verfügbar sein. Bspl: Rs Structure 0,14 Rs Aptr 0,"Explode" Rs Word 0,1 Rs Word 0,53 Rs Word 0,$28 Rs Word 0,$4 Rs Word 0,$98 A$="Extension:%s Version:%d.%d Datum:%x-%x-%x" Print Format$(A$,Rs Start(0)) Rs Erase 0 ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Übergabe des Systemdatums! ›33m= HARD DATE$›0m Es wird das aktuelle Systemdatum in einer Zeichenkette übergeben. Das Format besteht dabei aus der Schreibweise TT-MM-JJ. Bspl: Print "Datum: ";Hard Date$ ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Übergabe der Systemzeit! ›33m= HARD TIME$›0m Die laufende Zeit von der Systemuhr wird über eine Hardwareadresse abgerufen und als Zeichenkette von 8 Bytes Länge im Format HH:MM:SS übergeben. Bspl: Repeat Text 0,6,Hard Time$ Until Pause(50) ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Einstellen des Datums in der Hardware-Uhr! ›33mSET HARD DATE "TT-MM-JJ"›0m Mittels dieser Direktive kann das Datum der internen Hardware-Uhr neu definiert werden. Bspl: Print Hard Date$ Set Hard Date "31-01-96" Print Hard Date$ ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Einstellen der internen Hardware-Uhrzeit! ›33mSET HARD TIME "HH:MM:SS"›0m Mit dieser Instruktion kann die interne Hardware-Uhrzeit neu eingestellt werden. Bspl: Print Hard Time$ Set Hard Time "10:41:58" Print Hard Time$ ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Virusentfernung durch simulierten Kaltstart! ›33mHARDRESET›0m Dieser Befehl führt Softwaremäßig einen Kaltstart aus. Dabei werden sämtliche Vektoreinsprünge, die Kickstart-Checksumme und die Basis der Exec-Struktur vollkommen neu erstellt, ähnlich dem Aus- & Einschalten des Computers. Dabei werden sämtliche Hintergrundtasks aus dem System wirkungsvoll entfernt. Es sollte jedoch darauf geachtet werden, daß alle wichtigen System-Daten zuvor auf einen Datenträger gespeichert wurden. Bspl: Print "Drücke Taste für Hardreset..." Wait Key Hardreset ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Simulation eines normalen Resets! ›33mSOFTRESET›0m Es wird der A + A + CTRL Griff softwaremäßig ausgeführt. Vor dem Aufruf dieses Befehls, sollte immer darauf geachtet werden, daß alle wichtigen Daten zuvor auf einen Datenträger gesichert wurden. Bspl: Print "Taste für Softreset..." Wait Key Softreset ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Wertermittlung und Vertauschung von Bobs bzw. Icons! ›33m= IMAGE WIDTH ( Bank , Image )›0m ›33m= IMAGE HEIGHT ( Bank , Image )›0m ›33mIMAGE SWAP Bank , Image , Image›0m Mittels diesen Befehlen wird die Möglichkeit geboten, Bobs bzw. Icons untereinander auszutauschen, die Breite oder die Höhe eines Images zu ermitteln. Die Breite eines Images deckt sich nicht immer mit den Definitionen bei Get Bob oder Get Icon, da diese Werte zuvor immer als ein vielfaches von 16 übertragen werden. Bspl: Print "Breite:";Image Width(1,3) Print "Höhe :";Image Height(1,3) Paste Bob 200,0,3 Wait Key Image Swap 1,3,2 Paste Bob 200,50,3 ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Bitweise Verschiebung eines numerischen Wertes nach links! ›33m= LSL.B ( Byte , Bits )›0m ›33m= LSL.W ( Word , Bits )›0m ›33m= LSL.L ( Long , Bits )›0m Der in Byte, Word oder Long übergebene Wert, wird um die in Bits definierte Anzahl nach linkes verschoben. Herausgeschobene Bits werden nicht wie bei dem AMOSPro Standartbefehl z.B. Rol.b rechts nachgeschoben. Bspl: N=%10101010 Print Bin$(N,8) N=Lsl.b(N,1) Print Bin$(N,8) ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Bitweise Verschiebung eines numerischen Wertes nach rechts! ›33m= LSR.B ( Byte , Bits )›0m ›33m= LSR.W ( Word , Bits )›0m ›33m= LSR.L ( Long , Bits )›0m Ein in Byte, Word oder Long angegebener Wert, wird Bitweise nach rechts verschoben. Herausgeschobene Bits werden nicht nachgeschoben. Bspl: N=%1111111100000000 Print Bin$(N,16) N=Lsr.w(N,8) Print Bin$(N,16) ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Erneute Bereitstellung der Workbench-Oberfläche! ›33mOPEN WORKBENCH›0m Öffnet erneut die zuvor durch den internen AMOSPro Befehl Close Workbench gechlossene Workbench-Oberfläche. Bspl: Amos To Back Wait 80 Close Workbench Wait 80 Open Workbench Wait 80 Amos To Front ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Ermitteln ob Workbench geschlossen oder geöffnet ist! ›33m= WORKBENCH›0m Mittels diesen Befehls kann getestet werden ob das Schließen oder Öffnen der Workbench erfolgreich war. 0 = Workbench ist geschlossen (False) -1 = Workbench ist geöffnet (True) Bspl: N=Workbench If N=False Print "Workbench ist geschlossen." Else If N=True Print "Workbench ist geöffnet." End If ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Setzen der aktuellen Cursor-Farbe! ›33m= PCPN$ ( Farbindex )›0m Mit dieser Print-Instruktion kann die Farbgebung des Cursors einem anzugebenden Farbindex zugeordnet werden. Im Grunde ist dieser Befehl identisch mit der AMOSPro internen Anweisung Set Curs index, nur das mit Cpen$ innerhalb eines Strings die Farbgebung beliebig verändert werden kann. Bspl: Print Pcpn$(4);"Cursor-Farbe wurde verändert "; Wait Key Cdown Print "Nun erneut der alte Farbwert!"+Pcpn$(3); ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Ein- bzw. ausstellen des Cursors! ›33m= PCSR$ ( 0 / 1 )›0m Der Cursor kann beliebig während einer Print Anweisung aus- bzw. erneut wieder eingeschaltet werden. Bspl: Print "Der Cursor ist futsch..."+Pcsr$(0) Wait Key Print "Ooops, und nun wieder da..."+Pcsr$(1); ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Zurücksetzen der Print-Steuersequenzen auf die Default-Werte! ›33m= PDEF$›0m Nach Veränderung der internen Steuersequenzen können durch dieser Anweisung alle Einstellungen zurückgesetz werden. Bspl: Paper 3 Pen 5 Shade On Under On Print "Ein wenig crazy?" Print Pdef$+"Oder aber auch nicht!" ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Ein- bzw. ausstellen der negativ Textdarstellung! ›33m= PINV$ ( 0 / 1 )›0m Diese Funktion dient dazu einen Textstring oder nur einen Teilbereich mittels der internen Print Anweisung in negativ Darstellung auszugeben. Der Übergabeparameter 1 bedeutet dabei, daß der Modus eingeschaltet wird, eine 0 hingegen schaltet den Modus wieder ab. Bspl: Print "Ein ";Pinv$(1);" negativ ";Pinv$(0);" Beispiel" ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Veränderung des Print-Schreibmodus! ›33m= PJAM$ ( Modus )›0m Es wird der Verknüpfungsmodus eines mittels Print gedruckten Text mit dem Screen-Hintergrund durch einen angegebenen Wert in Modus kombiniert. Ein Moduswert von 0 setzt die Schreibweise auf default. Bspl: Pen 1 Paper 0 For N=0 To 15 Ink Rnd(8) X=Rnd(290) Y=Rnd(170) Bar X,Y To X+30,Y+30 Print Pjam$(Rnd(7))+"What`s up!"+Pjam$(0) Next ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Ein- bzw. ausstellen der druckgeschwächten Textdarstellung! ›33m= PSAD$ ( 0 / 1 )›0m Mittels dieser Funktion wird ein Textstring oder nur einen Teilbereich durch die intererne Print Anweisung in geschwächter Form ausgegeben. Der Übergabeparameter 1 bedeutet dabei, daß der Modus eingeschaltet wird, eine 0 hingegen schaltet den Modus wieder ab. Bspl: Print "Ein ";Psad$(1);"gruseliger";Psad$(0);" Text" ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Ein- bzw. ausstellen des Textunterstrich! ›33m= PUND$ ( 0 / 1 )›0m Diese Funktion gibt einen Textstring oder nur einen Teilbereich durch die intererne Print Anweisung mit Unterstrich aus. Der Übergabeparameter 1 bedeutet dabei, daß der Modus eingeschaltet wird, eine 0 hingegen schaltet den Modus wieder ab. Bspl: Print "Ein ";Pund$(1);"unterstrichenes";Pund$(0);" Beispiel" ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Manipulierung einzelner Bitplanes! ›33m= PLANE LENGTH›0m ›33m= PLANE ACTIVE ( Plane )›0m ›33mPLANE OPEN Plane [ TO Plane ]›0m ›33mPLANE CLOSE Plane [ TO Plane ]›0m ›33mPLANE GET Plane TO Bank›0m ›33mPLANE PUT Bank TO Plane›0m ›33mPLANE MASK Plane , Mask›0m ›33mPLANE COPY Plane TO Plane›0m ›33mPLANE SWAP Plane , Plane›0m ›33mPLANE CLEAR Plane›0m ›33mPLANE MERGE Plane TO Plane›0m ›33mPLANE NEGATIVE Plane›0m Alle Instruktionen dienen zur direkten Manipulierung einzelner Bitplanes. Ein Screen mit der Farbanzahl 32 hat z.B. eine Tiefe von 5 Planes. Das heißt, daß jede dieser Planes, mittels diesen Befehlen bearbeitet werden kann. Um z.B. einen Geschwindigkeitsgewinn bei einem Grafikaufbau zu erzielen, können Planes mittels Plane Close abgeschaltet werden. Wenn z.B. nur mit den Farben 0 und 1 gearbeitet würde, brauchten nicht alle Planes bezeichnet werden, nur Plane 0 müßte angeschaltet sein. Der Zeitgewinn kann u.U. 400% betragen. Bspl: Screen Open 0,640,256,16,Hires For A=0 To 1 Timer=False For I=0 To 1000 X=Rnd(500) : Y=Rnd(156) Ink Rnd(1) Bar X,Y To X+140,Y+100 Next Print "Timer:";Timer Plane Close 1 To 4 Next Plane Open 1 To 4 Wait Key Plane Get 0 To 8 Plane Clear 0 Wait Key Planes Put 8 To 1 Erase 8 ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Ermittlung der aktuellen RastPort-Adresse! ›33m= RASTPORT›0m Der Rückgabewert dieser Instruktion beinhaltet die Adresse des RastPorts für den dargestellten Screen. Interessant ist dieses wohl nur für Anwender, die über die graphics.library direkt Darstellungen in den Screen vornehmen möchten. Bspl: X=Rnd(Screen Width) Y=Rnd(Screen Height) W=Rnd(Screen Width) H=Rnd(Screen Height) Areg(1)=Rastport Dreg(0)=X Dreg(1)=Y Dreg(0)=Gfxcall(-240) Areg(1)=Rastport Dreg(0)=W Dreg(1)=H Dreg(0)=Gfxcall(-246) ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * IFF Bank in Screen darstellen! ›33mIFF BANK Bank TO Screen›0m Dieser Befehl stellt ein IFF-Bild dar, welches zuvor in eine Bank eingelesen wurde. Zunächst scheint der Befehl ein wenig überflüssig, da ja in AMOSPro bereits der Befehl 'Load Iff' existiert. Nur gewinnt meine Alternative an Bedeutung, wenn es sich bei dem darzustellenden Bild um eine gepackte Datei handelt. Diese müsste zunächst entpackt, auf einen Datenträger gespeichert werden, um erst dann diese Datei als IFF-Bild zu identifizieren. Bspl: Bank Load "Bildname.Iff" To 10 Iff Bank 10 To 0 ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Bereitstellen eines Strukturbereiches! ›33mRS STRUCTURE Struc , Bytes›0m Es wird ein Struktur-Bereiche reserviert. Hierbei können gleichzeitig 8 verschiedene Strukturen (0-7) bearbeitet werden. Die größe einer Struktur wird in Bytes übergeben. Bspl: Rs Structure 1,50 Print Rs Start(1) Print Rs Finish(1) Print Rs Length(1) Rs Erase 1 ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Strukturzeiger an beliebige Position setzten! ›33mRS SET Struc , Offset›0m ›33mRS BSET Struc , Bytes›0m ›33mRS WSET Struc , Words›0m ›33mRS LSET Struc , Longs›0m Die aktuelle Strukturposition kann mit Hilfe dieser Befehle beliebig gesetzt werden. Dabei wird jeweils die Strukturposition um die übergebene Anzahl ×1 für Bytes, ×2 für Words bzw. ×4 für Longs gesetzt. Die Werte können dabei auch Negativ sein. Bspl: Rs Structure 0,60 Rs Bset 0,20 Rs Wset 0,10 Rs Lset 0,5 Print Rs(0) Rs Set 0,0 Print Rs(0) Rs Erase 0 ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Wert in Strukturadresse eintragen und inkrementieren! ›33mRS APTR Struc , "String"›0m ›33mRS CHAR Struc , "String"›0m ›33mRS BYTE Struc , Byte›0m ›33mRS WORD Struc , Word›0m ›33mRS LONG Struc , Long›0m Es wird ein übergebener Wert an die aktuelle Strukturposition eingetragen und der interne Struktzeiger entsprechend der Eintragungsweise Byte (+1), Word (+2) oder Long/Aptr (+4) erhöht. Char erhöht den Strukturzeiger um die String-Länge Diese Befehlsyntax wurde integriert um bei einer häufigen strukturbedingten Systemprogrammierung wie sie zum Bespiel unter » C++ « häufig angewand wird, eventuell die Installation einfacher und übersichtlicher zu gestallten. Bspl: Rs Structure 1,13 Rs Long 1,$414D4F53 Rs Byte 1,$20 Rs Word 1,$6973 Rs Long 1,$66696E65 Rs Word 1,$2021 Print Peek$(Rs Start(1),Rs Length(1),Chr$(0)) Rs Set 1,0 Rs Aptr 1,"That`s all!" Print Peek$(Leek(Rs Start(1)),128,Chr$(0)) Rs Set 1,0 Rs Char 1,"Bye, bye." Print Peek$(Rs Start(1),Rs Length(1),Chr$(0)) Rs Erase 1 ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Strukturbereich löschen! ›33mRS CLEAR Struc›0m Die übergebene Struktur wird vollständig gelöscht, also mit Nullen gefüllt. Ein so gelöschter Strukturbereich vermeidet evtl. Fehlangaben bei Mehrfachnutzung einer Struktur. Bspl: Rs Structure 7,100 Rs Char 7,"Hello out there!" Print Peek$(Rs Start(7),Rs Length(7),Chr$(0)) Rs Clear 7 Print Peek$(Rs Start(7),Rs Length(7),Chr$(0)) Rs Erase 7 ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Struktur mit ASCII-Wert füllen! ›33mRS FILL Struc , ASCII-Wert›0m Ab der aktuellen Strukturposition wird diese mit dem übergebenen ASCII-Wert ausgefüllt. Bspl: Rs Structure 5,100 Print Hex$(Leek(Rs Start(5))) Rs Fill 5,$AA Print Hex$(Leek(Rs Start(5))) Rs Erase 5 ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Strukturbereich wieder freigeben! ›[33mRS ERASE [ Struc ]›0m Es wird die übergebene Struktur aus dem System entfernt. Der benötigte Speicherbereich steht danach wieder allgemein zur Verfügung. Sollte keine Struktur übergeben werden, so werden alle installierten Strukturen aus dem System entfernt. Diese sind hierauf nicht mehr bearbeitbar. Bspl: Rs Structure 0,1000 Rs Structure 1,1000 Rs Structure 2,1000 Print Avail Free Rs Erase 0 Print Avail Free Rs Erase Print Avail Free ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Aktuelle Positionübergabe des Strukturzeigers! ›33m= RS ( Struc )›0m Diese Anweisung ermittelt die aktuelle Adresse auf welcher der Strukturzeiger gesetzt ist. Bspl: Rs Structure 2,100 Print Rs Start(2),Rs(2) Rs Set 2,10 Print Rs Start(2),Rs(2) Rs Set 2,0 Print Rs Start(2),Rs(2) Rs Erase 2 ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Test ob Hintergrundtask aktiv! ›33m= VECTORPTR›0m Sollte sich z.B. ein Virus im System befinden, so wird die Einsprungadresse dieses Tasks als Rückgabewert angegeben, ansonsten False (0). Bspl: N=Vectorptr If N Print "Achtung! Einsprungadresse verändert:";Hex$(N,8) Else Print "Alles Ok." End If ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Wartestatus mit Rückgabewert! ›33m= WAIT LOOP›0m Dieser Befehl hällt den momentanen Programmablauf solange an, bis entweder eine Maustaste oder eine Taste des Keyboards betätigt wurde. Der Rückgabewert beinhaltet dabei den ASCII-Code der Taste oder -1 für die linke Maustaste bzw. -2 für die rechte Maustaste. Bspl: N=Wait Loop If N>0 Print "AscII-Code der Taste:";N Else If N=-1 Print "Linke Maustaste." Else if N=-2 Print "Rechte Maustaste." End If End If ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Abbruch des Wartestatus durch Maustaste! ›33mWAIT MOUSE›0m Der momentane Programmablauf wird solange angehalten, bis eine Maustaste betätigt wird. Bspl: Print "Bitte Maustaste betätigen..." Wait Mouse ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Maustasten-Status abwarten! ›33mCLEAR MOUSE›0m Der Programmablauf wird solange unterbrochen, wie der Status einer Maustaste noch aktiv ist. Bspl: Wait Mouse Print Mouse Key Wait Mouse Clear Mouse Print Mouse Key ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Wartestatus mit Zeitübergabe und Rückgabewert! ›33m= PAUSE ( Zeitzyklen )›0m Es wird der Programmablauf für eine bestimmbare Zeit in Wartezustand versetzt. Die in Zeitzyklen angegebene Zeit wird in 1/50 Sekunde berechnet, so das ca. 50 Zyklen 1 Sekunde entsprechen. Zusätzlich kann der Wartestatus aber jederzeit vorzeitig durch betätigen einer Taste bzw. Maustaste unterbrochen werden. Bspl: Repeat Text 0,6,Hard Time$ N=Pause(50) Until N=27 ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Programmablauf in Wartestatus versetzen! ›33mSTOP LOOP›0m Der momentane Programmablauf wird solange angehalten bis entweder eine Maustaste, eine Taste des Keyboards oder ein Feuerknopf des Joysticks betätigt wurde. Dabei werden auch Funktionstasten usw. unterstützt. Bspl: Print "Beliebige Taste wählen (Tastatur, Maus, Joystick)..." Stop Loop ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Ermittlung der entpackten Größe einer ByteKiller gepackten Bank! ›33m= BPK LENGTH ( Bank )›0m Der Rückgabewert bestimmt die entpackte Byte-Größe einer Bank, welche im ByteKiller gepackten Data- bzw. Exe-Format vorliegt. Bspl: Bank Load "Datei" Print "ByteKiller gepackt: ";Length(8) Print "ByteKiller entpackt:";Bpk Length(8) ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Entpacken einer ByteKiller gepackten Bank! ›33mBPK UNPACK Bank›0m Die übergebene Bank im ByteKiller gepackten Format wird mit dieser Anweisung entpackt. Hierbei wird sowohl das ByteKiller Daten- als auch das Exe-Format erkannt. Bspl: Bank Load "Datei" To 7 If Bpk Length(8) List Bank Bpk Unpack 8 List Bank End If ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Ermittlung des verwendeten Packers einer Bank! ›33m= DPK NAME$ ( Bank )›0m Der Rückgabe-String beinhaltet den Packernamen, welcher für das Packen der zuvor installierten Bank verwendet wurde. Sollte es sich um einen unbekannten bzw. um eine ungepackte Bank handeln, so wird ein Leer-String übergeben. Bspl: A$="Datei.pp" Bank Load A$ To 7 Print "Dateiname :";A$ Print "Packername:";Dpk Name$(7) ›33mBenötigt›0m: LIBS:decrunch.library! ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Entpacken einer Objekt- bzw. Data-Bank! ›33mDPK UNPACK Bank›0m Es wird eine zuvor installierte Bank entpackt. Es ist unbedingt darauf zu achten, daß die » LIBS:decrunch.library « dabei zur Verfügung steht. Dieser Befehl ermöglicht das Entpacken von sogenannten Objektdateien sowie das einfache entpacken von Data-Formaten. Es werden dank der entsprechenden Library eine Vielzahl von verschiedenen Packverfahren erkannt und entkompremiert. Bspl: Bank Load "Datei" To 16 List Bank Dpk Unpack 16 List Bank ›33mBenötigt›0m: LIBS:decrunch.library! ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Entpackte Größe einer imploded Datenbank ermitteln! ›33m= IPK LENGTH ( Bank )›0m Es wird die entpackte Bytegröße einer Datenbank ermittelt, welche zuvor mittels einem Daten-Imploder, z.B. FImp, komprimiert wurde. Bspl: Bank Load "Datei.im" To 9 Print "Imploded:";Length(9) Print "Exploded:";Ipk Length(9) ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Entpackte Byte-Länge einer Lpk gepackten Bank ermitteln! ›33m= LPK LENGTH ( Bank )›0m Entpackte Byte-Größe einer zuvor Lpk-Gepackten Datenbank ermitteln. Bspl: Bank Load "Daten.lh" To 6 ? Length(6) ? Lpk Length(6) ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Packen einer Bank in das Lh V1.8 Format! ›33mLPK PACK Bank›0m Pack eine Bank unter zuhilfenahme der lh.library. Diese Datenkompression ist deutlich effizienter als z.B. die des PowerPackers oder des Imploder (Fimp), in den meisten Fällen auch als die diversen Sublibs des XPK-Projekts. Bspl: Bank Load "Datei" Lpk Pack 8 ? Lpk Length(8) ? Length(8) ›33mBenötigt›0m: LIBS:lh.library! ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Entpacken einer Lpk-Gepackten Datenbank! ›33mLPK UNPACK Bank›0m Entpackt eine zuvor gepackte Lpk-Datenbank. Lpk Unpack benötigt dazu NICHT! die lh.library, da ich die Encode-Routine in die Explode_Ext. integriert habe. Bspl: Bank Load "Data.lh" To 8 Lpk Unpack 8 Bank Save "Data",8 ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Beliebiges PowerPacker Format in Datenformat wandeln! ›33mPPK DATA Bank›0m Eine Bank die in einem beliebigen PowerPacker-Format vorliegt, kann mit diesem Befehl ohne größeren Aufwand, in das PowerPacker Datenformat gewandelt werden. Der Vorteil ist eine nochmalige Reduzierung der Byte-Größe einer Bank. Bspl: Bank Load "Dateiname" To 8 Print Ppk Name$(8),Ppk Length(8),Length(8) Ppk Data 8 Print Ppk Name$(8),Ppk Length(8),Length(8) ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Test ob Passwort übereinstimmt mit einer PowerPacker kodierten Bank! ›33m= PPK PASSWORD ( Bank , "Passwort" )›0m Der Rückgabewert dieser Anweisung besagt ob ein Passwort mit dem welches für das Kodieren der Daten in der installierten Bank verwendet wurde übereinstimmt. Ist dies der Fall so wird True (-1) übergeben ansonsten False (0). Bspl: Bank Load "Datei.pp" Input "Passwort:",N$ If Ppk Password(8,N$) Print "Passwort stimmt!" Else Print "Falsches Passwort!" End If ›33mBenötigt›0m: LIBS:powerpacker.library! ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Ermittlung des Passkey einer kodierten PowerPacker Bank! ›33m= PPK PASSKEY ( Bank )›0m Es wird der Passkey einer verschlüsselten PowerPacker Bank ermittelt. Dies ist sinnvoll wenn man vor dem entpacken testen möchte ob es sich um eine encrypted Bank handelt. Sollte die Bank nicht verschlüsselt sein so wird der Wert 0 False übergeben. Bspl: Bank Load "Dateiname.pp" If Ppk Passkey(8) Input "Passwort:",A$ If Ppk Password(8,A$) Ppk Unpack 8,A$ Else Print "Falsches Passwort!" End If Else Ppk Unpack 8 End If ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Ermittlung der Originallänge einer PowerPacker gepackten Bank! ›33m= PPK LENGTH ( Bank )›0m Dieser Befehl ermittelt die entpackte Länge einer installierten Bank, die im PowerPacker gepackten format vorliegt. Sollte die Bank nicht im PowerPacker Format vorliegen, so wird als Rückgabewert False (0) festgesetzt. Bspl: Bank Load "Dateiname.pp" To 7 Print "Gepackt..:";Length(7) Print "Ungepackt:";Ppk Length(7) ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Packeffizienz einer PowerPacker gepackten Bank ermitteln! ›33m= PPK MODE ( Bank )›0m Es wird die verwendete Packdichte [0-4] einer gepackten Bank ermittelt. Solte die Bank nicht gepackt sein, so wird der Wert (-1) True übergeben. Die ermittelten Werte stehen für [0]=FAST, [1]=MEDIOCRE, [2]=GOOD, [3]=VERYGOOD und [4]=BEST. Bspl: Bank Load Fsel$("") To 7 Print "Die verwendete Packeffizienz ist:";Ppk Mode(7) ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Identifizierung einer PowerPacker gepackten Bank! ›33m= PPK NAME$ ( Bank )›0m Es wird ein 4 Byte Identifizierungs-String einer gepackten Bank ermittelt. Sollte die Bank nicht im PowerPacker Format vorliegen, so wird ein Leer-String übergeben. Die Explode Extension erkennt zur Zeit 8 verschiedene Packverfahren des PowerPacker. PP20=Data, PPLS=LoadSeg, PPBK=Amos, PPLB=Library, PPEX=Execute PX20=CryptedData, PXLB=CryptedLibrary, PXEX=CryptedExecute. Bspl: Bank Load Fsel$("") To 10 A$=Ppk Name$(10) If A$<>"" Print "PowerPacker ID:",A$ Else Print "Datei nicht im PP Format!" Endif ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Komprimierung einer Datenbank in das PowerPacker Format! ›33mPPK PACK Bank [ , Effizienz ]›0m Packt eine Bank in das gängige PowerPacker Format. Dabei kann die Effizienz von 0 bis 4 zuvor bestimmt werden. Voreingestellt ist immer der Wert 2. Damit Daten komprimiert werden können, muß die powerpacker.library zur Verfügung stehen. Bspl: Bank Load Fsel$("") Ppk Pack 8 Print "Original:";Ppk Length(8) Print "Gepack :";Length(8) ›33mBenötigt›0m: LIBS:powerpacker.library! ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Typ-Wert einer PowerPacker gepackten Bank ermitteln! ›33m= PPK TYPE ( Bank )›0m Der ermittelte Wert [1-8] identifiziert eine Bank die im PP gepackten Format vorliegt. 1=PP20, 2=PPLS, 3=PPBK, 4=PPLB, 5=PPEX, 6=PX20, 7=PXLB, 8=PXEX. Bspl: Bank Load Fsel$("") Print "PP Typ :",Ppk Type(8) Print "PP Name :",Ppk Name$(8) Print "PP Entpackt:",Ppk Length(8) ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Entpacken einer PowerPacker gepackten Bank! ›33mPPK UNPACK Bank [ , "Passwort" ]›0m Dieser Befehl entpackt eine zuvor installierte PowerPacker gepackte Bank. Es ist möglich 8! verschiedene Packformate des PowerPacker zu entpacken. Es werden folgende Formate erkannt und entpackt: ppData, ppLoadSeg, ppAMOS, ppLibray, ppExecute, pxData, pxLibrary, pxExecute (pp=Normal / px=Kodiert). Dieser Befehl ist Systemkomformer als der interne AMOSPro Befehl Ppload da er keinen Infochunk benötigt. Zu Beachten ist, daß, wenn eine ppAMOS (s. Ppsave) Bank entpackt werden sollte, den eigentlichen Daten noch der Name der Bank (8 Bytes) vorangestellt wurde. Am besten ppAMOS Banken mit Ppload installieren. Leider muß hier erwähnt werden, daß es bei ausführbaren Object-Dateien welche mit dem PowerPacker V4.x gepackt wurden gelegentlich zu Fehlern nach dem Entpacken führen kann! Da dieses Problem nicht bei jeder Datei auftrat sollte zuvor immer eine Sicherheitskopie der zu entpackenden Datei angelegt werden! Bspl: Bank Load "Dateiname.pp" List Bank Ppk Unpack 8 List Bank ›33mBenötigt›0m: LIBS:powerpacker.library (nur für `encrypted` Dateien) ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Textstring des letzten Xpk-Fehlercodes! ›33m= XPK ERR$›0m Dieser Befehl gibt einen Fehlerklartext des letzten Xpk-Fehlercodes zurück. Bspl: Bank Load "Datei" To 9 Print Xpk Length(9) Print "Fehlertext: ";Xpk Err$ ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Rückgabe eines Xpk-Fehlercodes! ›33m= XPK ERRN›0m Ermittlung des letzten Fehlercodes verursacht durch einen Xpk-Befehl. Bspl: Bank Load "AMOSPro" Print Xpk Name$(8) Print "Fehlercode:";Xpk Errn ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Identifizierung eines verwendeten Xpk-Compressor! ›33m= XPK NAME$ ( Bank )›0m Mittels diesem Befehl wird die Identifizierung des verwendteten Xpk-Compressor ermittelt mit welchem die in der Bank installierten Datei behandelt wurde. Bspl: Bank Load Fsel$("") To 99 Print "Xpk-Identifizierung: ";Xpk Name$(99) ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Ermittlung der Original Bytelänge einer installierten Xpk-Bank! ›33m= XPK LENGTH ( Bank )›0m Der Rückgabewert bestimmt die ungepackte bzw. decodierte Bytelänge einer zuvor in einer Bank installierten Xpk-Datei. Sollte der Rückgabewert » (0) False « betragen, so handelt es sich nicht um eine Xpk-Datenbank. Bspl: Bank Load "Datei.xpk" Print "Xpk-Gepackt:",Length(8) Print "Xpk-Entpackt:",Xpk Length(8) ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Packen einer Datenbank in Das XPKF-Format! ›33mXPK PACK Bank , "SLIB" , Packmode›0m Packt eine Bank in das XPKF-Format. "SLIB" übergibt die zu verwendende Sub-Lib, Packmode die Packeffizienz von 0-100. Bspl: Bank Load "Text.Asc" To 9 Xpk Pack 9,"NUKE",100 ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Verschlüsseln einer Datenbank in das XPKF-Format! ›33mXPK CRYPT Bank , "SLIB" , "Passwort"›0m Verschlüsselt eine Bank mit Hilfe einer Xpk-SubLib. Bspl: Bank Load "Daten.s" To 76 Xpk Crypt 76,"DLTA","Geheimwort" ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Entpacken bzw. decodieren einer Xpk behandelten Datenbank! ›33mXPK UNPACK Bank [ , "Passwort" ]›0m Es wird eine Xpk behandelte Datenbank entpackt bzw. bei Übergabe eines entsprechenden Passwortes decodiert. Bei Aufruf dieser Funktion muß darauf geachtet werden, daß unbedingt die » xpkmaster.library « sowie die ggfls. benötigten » Compressors « auf der Systemdiskette zuvor installiert wurden. Bspl: N=Bank Free(1) Bank Load "Dateiname.xpk" To N If Xpk Length(N) Then Xpk Unpack N Print "Fehlercode:",Xpk Errn Print "Fehlertext:",Xpk Err$ ›33mBenötigt›0m: LIBS:xpkmaster.library & LIBS:compressors/SubLibraries! ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m * Ermöglichung einer Benutzung der Shareware Amcaf-Befehle im Kompilat! ›33mAMCAF CRACK ON›0m ›33mAMCAF CRACK OFF›0m Ermöglicht die Benutzung der Amcaf-Befehle aus der Shareware Version auch in kompilierte Programme. Die "On" Instruktion muß am Anfang eines Programmes aufgerufen werden da ansonsten der Aufruf eines Amcaf-Befehls zum Abruch des Kompilats führen würde. Bspl: Amcaf Crack On · · · Amcaf Crack Off ›33mACHTUNG›0m: Diese Befehle sind nicht legal, bei Anwendung wird gegen das Urheberrecht verstoßen! ›33mNochmal Achtung›0m: Mittlerweile ist die AMCAF_Extension als Vollversion vom Programmierer freigegeben ( danke Chris ), somit sind diese 2 Befehle nicht ganz so aktuell ?!? ( Ich lasse sie aber drin', hat' spaß gemacht sie zu programmieren, hehe ;) ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m Die Installation der Explode Extension sollte wie folgt geschehen: 1. Extension ›33mAMOSPro_Explode.Lib›0m ins Verzeichnis ›33mAPSystem/›0m der ›33mAMOSPro_System:›0m Diskette kopieren. 2. Im ›33mConfig›0m Menü den Menüpunkt ›33mSet Interpreter›0m anwählen. 3. Option ›33mLoad Default Configuration›0m selektieren. 4. Option ›33mSet Loaded Extensions›0m aktivieren. 5. An ›33m7›0m. Stelle ›33mAMOSPro_Explode.Lib›0m eintragen und Option beenden. 6. Option ›33mSave Configuration›0m selektieren. 7. AMOSPro Interpreter verlassen und erneut einladen. AMOS Professional Anwender, die bereits die Explode Extension installiert haben, brauchen lediglich die alte Extension durch die Neue ersetzen. Sollten dennoch Schwierigkeiten auftreten, erkläre ich mich gerne bereit den Installationsprozess vorzunehmen. Dazu sollte mir allerdings die aktuelle ›33mAMOSPro_System:›0m Diskette zugesand werden. Nett währe auch ein Rückumschlag der ausreichend frankiert und adressiert ist. Meine Adresse lautet: Volker Stepprath Tegeler Str. 7 40789 Monheim Deutschland E-Mail: Peacefloete@aol.com ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m Sollten Schwierigkeiten bei der Abhandlung eines Explode Extension Befehls auftreten, oder eventuelle Verbesserungsvorschläge vorhanden sein, würde ich mich sehr freuen wenn mir dieses mitgeteilt wird. Ich könnte dann versuchen dies gegebenfalls zu beheben oder zu verbessern! ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m ›1mGiftware - Notiz›0m Bei regelmäßiger Nutzung bitte ich die oder den Anwender mir lediglich eine Postkarte mit zum Beispiel Grüßen, einen Witz, Verbesserungsvorschläge, Kritik oder was sonst noch so zu schreiben ist, mir zu übersenden. Ich denke daß dies ein faires Angebot ist, den auch wenn es manchmal nicht den Anschein hat, steckt mitunter sehr viel Aufwand und vor allem Freizeit in diesem Programm! Meine Adresse wurde ja bereits zuvor erwehnt. Vielen Dank! ›3mVolker Stepprath›0m Monheim den 18. Juni, 2002 (noch ||| Tage Urlaub:) ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m History: V1.00 ® 03-01-95 First official version of AMOSPro_Explode.Lib published V1.02 ® 16-03-95 Command - Flush => Stops multi-tasking - Stop Loop => Checks even firebutton V1.03 ® 06-07-95 New command - Hof V1.10 ® 12-08-95 Command - Ppdecrunch => Keeps name of bank - Drive State => Needs only drivenumber New commands - Hard Time$, Hard Date$, Rload, Bank As Work, Bank As Data V1.14 ® 30-08-95 New commands - Inverse$, Shade$, Under$ V1.15e ® 23-01-96 Attention: This version never works with one below! Heavy bug fixed in offsets to functions (blame on me) Command - Flush => Correct MEMF added (thanx Chris) - Hard Date$ => YY <> DD swapped - Ppdecrunch => Change name of bank - Rload => Removed! New commands - Bank Load, Bank Save, Cpen$, Default$, Ppcrunch, Pause V1.17a ® 16-02-96 Command - Inverse$ => Pinv$ - Shade$ => Psad$ - Under$ => Pund$ - Cpen$ => Pcpn$ - Default$ => Pdef$ New commands - Pjam$, Pcsr$, Set Hard Time, Set Hard Date, Bank Free - Explode$, Explode Base, Extension$, Extension Base V1.18 ® 22-03-96 Command - Bank Free => Now min. Bk needed - Ppcrunch => Ppack - Ppdecrunch => Ppunpack New commands - Number, Clear Mouse ,File Path$, Iplength - Xplength, Xpid$, Xpunpack, Xperrn, Xperr$ - Strucptr, Struc Item, Struc Byte, Struc Word, Struc Long V1.19 ® 03-04-96 New commands - Byte, Byte$, Word, Word$, Long, Long$, Avail Free V1.20 ® 10-08-96 New commands - Lsl.b, Lsl.w, Lsl.l, Lsr.b, Lsr.w, Lsr.l V1.23 ® 27-12-96 New commands - Cruncher$, Decrunch, File Blocks V1.24 ® 20-02-97 Attention: This version never works with one below! Command - Cruncher => Dpk Name$ - Decrunch => Dpk Unpack - Iplength => Ipk Length - Pplength => Ppk Length - Ppack => Ppk Pack - Ppunpack => Ppk Unpack (password function, TO removed!) - Xperr$ => Xpk Err$ - Xperrn => Xpk Errn - Xpid$ => Xpk Name$ - Xplength => Xpk Length - Xpunpack => Xpk Unpack New command - Ppk Checksum V1.30 ® 08-07-97 Command - Ppk Checksum => Ppk Password - Ppk Pack => pack up to 4 times faster - Ppk Unpack => decrunch 8! different PP modes New commands - Ppk Passkey, Ppk Mode, Ppk Name$, Ppk Type, Struc Aptr V1.38 ® 26-08-97 Command - Struc Item => Accept banknumber - Struc Long => Accept non even address New commands - Struc Bset, Struc Wset, Struc Lset, Struc Rset Struc Char, Struc Free, Drive Busy, Finish V1.50 ® 16-09-97 Command - Dpk Unpack => Uses less than 30% of memory New commands - Amcaf Crack On, Amcaf Crack Off => Illegal Image Swap, Image Width, Image Height, Rastport Plane Active, Plane Clear, Plane Close, Plane Open Plane Copy, Plane Swap, Plane Negative, Plane Mask Plane Get, Plane Put, Plane Merge, Plane Length Font Open, Font Close, Font Set, Font Height Font Name$, Font Base, Align, Even, Odd V1.51 ® 20-04-98 Code updated, now much shorter and faster New command - Format$ V1.55 ® 23-05-98 Attention: This version never works with one below! Command - All Struc instruction removed - Flush => Errorfree - Ppk Unpack => PowerPacker V2.x compatible - Bank Load => No mask mistake possible - Format$ => Use it`s own buffer space New commands - Rs, Rs Structure, Rs Start, Rs Finish, Rs Length Rs Erase, Rs Clear, Rs Fill, Rs Byte, Rs Word, Rs Long Rs Set, Rs Bset, Rs Wset, Rs Lset, Rs Char, Rs Aptr Bank Clone, Iff Bank, Bpk Length, Bpk Unpack, Ppk Data V1.56 ® 03-04-01 New commands - Cd Set, Cd Parent, Cd Path$ V1.57 ® 19-05-01 Command - Ppk Unpack => PowerPacker V4.x (Executable) compatible V2.00 ® 01-07-01 Code updated (it's own structure) New commands - Lpk Length, Lpk Pack, Lpk Unpack, Xpk Pack, Xpk Crypt Bank To Chip V2.01 ® 17-06-02 Command - Iff Bank => Now correct handling of extra chunks like ANNO, AUTH... New Command - File Protection ›32m~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~›0m