Auf dem Falcon stehen die folgenden Routinen zur Programmierung des digitalen Signalprozessors DSP-56001 zur Verfügung:
• Dsp_Available | Freien Speicher ermitteln. |
• Dsp_BlkBytes | Byteweiser Datentransfer. |
• Dsp_BlkHandShake | Datentransfer mit Handshake. |
• Dsp_BlkUnpacked | Transfer von DSP-Worten (max. 4 Byte Länge). |
• Dsp_BlkWords | Wortweiser Datentransfer. |
• Dsp_DoBlock | Datentransfer zum DSP. |
• Dsp_ExecBoot | Bootprogramm für DSP laden. |
• Dsp_ExecProg | DSP-Programm starten. |
• Dsp_FlushSubroutines | Unterprogramme löschen. |
• Dsp_GetProgAbility | Identifikation erfragen. |
• Dsp_GetWordSize | Länge von DSP-Worten ermitteln. |
• Dsp_Hf0 | Bit 3 des HSR setzen bzw. löschen. |
• Dsp_Hf1 | Bit 4 des HSR setzen bzw. löschen. |
• Dsp_Hf2 | Bit 3 des HCR ermitteln. |
• Dsp_Hf3 | Bit 4 des HCR ermitteln. |
• Dsp_HStat | Wert des ISR-Registers ermitteln. |
• Dsp_InqSubrAbility | Unterprogrammkennung ermitteln. |
• Dsp_InStream | Datentransfer zum DSP via Interrupt. |
• Dsp_IOStream | Datentransfer vom und zum DSP via Interrupt. |
• Dsp_LoadProg | DSP-Programm laden und starten. |
• Dsp_LoadSubroutine | Unterprogramm installieren. |
• Dsp_Lock | Verfügbarkeit des DSP ermitteln. |
• Dsp_LodToBinary | LOD- in Binärformat konvertieren. |
• Dsp_MultBlocks | Datentransfer vom und zum DSP. |
• Dsp_OutStream | Datentransfer vom DSP via Interrupt. |
• Dsp_RemoveInterrupts | Übertragungsroutinen entfernen. |
• Dsp_RequestUniqueAbility | Identifikation erteilen. |
• Dsp_Reserve | Speicher reservieren. |
• Dsp_RunSubroutine | Unterprogramm ausführen. |
• Dsp_SetVectors | Eigene Übertragungsroutinen installieren. |
• Dsp_TriggerHC | Host Command ausführen. |
• Dsp_Unlock | DSP freigeben. |
Querverweis: Schnittstellenprogrammierung
Name: | »Dsp_Available« - Ermitteln des freien x und y Speichers |
Xbiosnummer: | 106 |
Deklaration: | void Dsp_Available( int32_t *xavailable, int32_t *yavailable ); |
Beschreibung: | Die Funktion Dsp_Available ermittelt den freien X- und Y-Speicher. Freier Speicher beginnt stets an der physikalischen Adresse 0. Die unteren 64 Worte sind für Interrupt-Vektoren reserviert. |
Ergebnis: | Die Funktion liefert kein Ergebnis zurück. |
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor DSP56001 verfügbar. |
Gruppe: | DSP-Programmierung |
Querverweis: | Binding Dsp_Lock Dsp_Unlock Dsp_Reserve Dsp_LoadProg Dsp_ExecProg Dsp_ExecBoot |
C: | #include void Dsp_Available( int32_t *xavailable, int32_t *yavailable ); |
Assembler: | pea yavailable ; Offset 6 pea xavailable ; Offset 2 move.w #106,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen lea $A(sp),sp ; Stack korrigieren |
Name: | »Dsp_BlkBytes« - byteweiser Datentransfer zum DSP |
Xbiosnummer: | 124 |
Deklaration: | void Dsp_BlkBytes( void *data_in, int32_t size_in, void *data_out, int32_t size_out ); |
Beschreibung: | Die Funktion kopiert size_in vorzeichenlose Bytes aus dem Puffer data_in zum DSP. Nachdem alle Daten übertragen wurden, wartet die Prozedur bis die Daten verarbeitet wurden. Dann werden size_out 8-Bit-DSP-Worte in den Puffer data_out zurückkopiert, unabhängig davon, wie viel Daten wirklich vorliegen. Sollen keine Daten gesendet werden, muß man size_in auf Null setzen. Gleiches gilt für das Empfangen, in diesem Fall wird size_out Null zugewiesen. size_in und size_out sind auf 64 KByte begrenzt. Daten werden nur ausgetauscht, wenn der DSP-Prozeß dazu bereit ist. |
Ergebnis: | Die Funktion liefert kein Ergebnis zurück. |
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor DSP56001 verfügbar. |
Gruppe: | DSP-Programmierung |
Querverweis: | Binding Dsp_DoBlock Dsp_BlkUnpacked Dsp_BlkHandShake Dsp_BlkWords Dsp_InStream Dsp_OutStream Dsp_IOStream Dsp_GetWordSize Dsp_MultBlocks |
C: | #include void Dsp_BlkBytes( void *data_in, int32_t size_in, void *data_out, int32_t size_out ); |
Assembler: | move.l size_out,-(sp) ; Offset 14 pea data_out ; Offset 10 move.l size_in,-(sp) ; Offset 6 pea data_in ; Offset 2 move.w #124,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen lea $12(sp),sp ; Stack korrigieren |
Name: | »DspBlkHandShake« - Datentransfer zum DSP mit Handshake |
Xbiosnummer: | 97 |
Deklaration: | void Dsp_BlkHandShake( int8_t *data_in, int32_t size_in, int8_t *data_out, int32_t size_out ); |
Beschreibung: | Die Funktion kopiert size_in DSP-Worte aus dem Puffer data_in zum DSP. Nachdem alle Daten übertragen wurden, wartet die Funktion bis die Daten verarbeitet wurden. Dann werden size_out DSP-Worte in den Puffer data_out zurückkopiert, unabhängig davon, wieviel Daten wirklich vorliegen. Sollen keine Daten gesendet werden, muß man size_in auf Null setzen. Gleiches gilt für das Empfangen, in diesem Fall wird size_out Null zugewiesen. size_in und size_out sind auf 64 KByte begrenzt. Daten werden nur ausgetauscht, wenn der DSP-Prozeß dazu bereit ist. |
Ergebnis: | Die Funktion liefert kein Ergebnis zurück. |
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor DSP56001 verfügbar. |
Gruppe: | DSP-Programmierung |
Querverweis: | Binding Dsp_DoBlock Dsp_BlkUnpacked Dsp_BlkWords Dsp_BlkBytes Dsp_InStream Dsp_OutStream Dsp_IOStream Dsp_GetWordSize Dsp_MultBlocks |
C: | #include void Dsp_BlkHandShake( int8_t *data_in, int32_t size_in, int8_t *data_out, int32_t size_out ); |
Assembler: | move.l size_out,-(sp) ; Offset 14 pea data_out ; Offset 10 move.l size_in,-(sp) ; Offset 6 pea data_in ; Offset 2 move.w #97,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen lea $12(sp),sp ; Stack korrigieren |
Name: | »Dsp_BlkUnpacked« - Datentransfer von maximal 4 Bytes langen DSP-Worten |
Xbiosnummer: | 98 |
Deklaration: | void Dsp_BlkUnpacked( int32_t *data_in, int32_t size_in, int32_t *data_out, int32_t size_out ); |
Beschreibung: | Diese Funktion arbeitet nur mit DSP-Worten, die höchstens 4
Byte lang sind. Die Länge der DSP-Worte kann mit Dsp_GetWordSize
bestimmt werden. data_in und data_out sind
LONG-Felder. size_in und size_out beziehen sich auf
die Größe der Felder in Langworten. Je nach DSP-Wortlänge werden nur
die unteren Bytes LONGs übertragen. Die Funktion kopiert
size_in DSP-Worte aus dem Puffer data_in zum DSP.
Nachdem alle Daten übertragen wurden, wartet die Funktion bis die
Daten verarbeitet wurden. Dann werden size_out DSP-Worte in
den Puffer data_out zurückkopiert, unabhängig davon, wieviel Daten
wirklich vorliegen. Sollen keine Daten gesendet werden, muß man
size_in auf Null setzen. Gleiches gilt für das Empfangen, in
diesem Fall wird size_out Null zugewiesen. size_in und
size_out sind auf 64 KByte begrenzt.
Es wird nicht garantiert, daß die höherwertigen Bytes der empfangenen LONGs Null sind, wenn die DSP-Wortlänge kleiner als 4 ist. |
Ergebnis: | Die Funktion liefert kein Ergebnis zurück. |
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor DSP56001 verfügbar. |
Gruppe: | DSP-Programmierung |
Querverweis: | Binding Dsp_DoBlock Dsp_BlkHandShake Dsp_BlkWords Dsp_BlkBytes Dsp_InStream Dsp_OutStream Dsp_IOStream Dsp_GetWordSize Dsp_MultBlocks |
C: | #include void Dsp_BlkUnpacked( int32_t *data_in, int32_t size_in, int32_t *data_out, int32_t size_out ); |
Assembler: | move.l size_out,-(sp) ; Offset 14 pea data_out ; Offset 10 move.l size_in,-(sp) ; Offset 6 pea data_in ; Offset 2 move.w #98,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen lea $12(sp),sp ; Stack korrigieren |
Name: | »Dsp_BlkWords« - wortweiser Datentransfer zum DSP |
Xbiosnummer: | 123 |
Deklaration: | void Dsp_BlkWords( void *data_in, int32_t size_in, void *data_out, int32_T size_out ); |
Beschreibung: | Die Funktion kopiert size_in vorzeichenbehaftete 16-Bit-Worte aus dem Puffer data_in zum DSP. Die Worte werden vor der Übertragung vorzeichenrichtig auf DSP-Wortbreite erweitert. Nachdem alle Daten übertragen wurden, wartet die Funktion bis die Daten verarbeitet wurden. Dann werden size_out 16-Bit-DSP-Worte in den Puffer data_out zurückkopiert, unabhängig davon, wieviel Daten wirklich vorliegen. Sollen keine Daten gesendet werden, muß man size_in auf Null setzen. Gleiches gilt für das Empfangen, in diesem Fall wird size_out Null zugewiesen. size_in und size_out sind auf 64 KByte begrenzt. Daten werden nur ausgetauscht, wenn der DSP-Prozeß dazu bereit ist. |
Ergebnis: | Die Funktion liefert kein Ergebnis zurück. |
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor DSP56001 verfügbar. |
Gruppe: | DSP-Programmierung |
Querverweis: | Binding Dsp_DoBlock Dsp_BlkUnpacked Dsp_BlkHandShake Dsp_BlkBytes Dsp_InStream Dsp_OutStream Dsp_IOStream Dsp_GetWordSize Dsp_MultBlocks |
C: | #include void Dsp_BlkWords( void *data_in, int32_t size_in, void *data_out, int32_T size_out ); |
Assembler: | move.l size_out,-(sp) ; Offset 14 pea data_out ; Offset 10 move.l size_in,-(sp) ; Offset 6 pea data_in ; Offset 2 move.w #123,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen lea $12(sp),sp ; Stack korrigieren |
Name: | »Dsp_DoBlock« - Datentransfer zum DSP |
Xbiosnummer: | 96 |
Deklaration: | void Dsp_DoBlock( int8_t *data_in, int32_t size_in, int8_t *data_out, int32_t size_out ); |
Beschreibung: | Die Funktion kopiert size_in DSP-Worte aus dem Puffer data_in zum DSP. Nachdem alle Daten übertragen wurden, wartet die Funktion bis die Daten verarbeitet wurden. Dann werden size_out DSP-Worte in den Puffer data_out zurückkopiert, unabhängig davon, wieviel Daten wirklich vorliegen. Sollen keine Daten gesendet werden, muß man size_in auf Null setzen. Gleiches gilt für das Empfangen, in diesem Fall wird size_out Null zugewiesen. size_in und size_out sind auf 64 KByte begrenzt. |
Ergebnis: | Die Funktion liefert kein Ergebnis zurück. |
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor DSP56001 verfügbar. |
Gruppe: | DSP-Programmierung |
Querverweis: | Binding Dsp_BlkHandShake Dsp_BlkUnpacked Dsp_BlkWords Dsp_BlkBytes Dsp_InStream Dsp_OutStream Dsp_IOStream Dsp_GetWordSize Dsp_MultBlocks |
C: | #include void Dsp_DoBlock( int8_t *data_in, int32_t size_in, int8_t *data_out, int32_t size_out ); |
Assembler: | move.l size_out,-(sp) ; Offset 14 pea data_out ; Offset 10 move.l size_in,-(sp) ; Offset 6 pea data_in ; Offset 2 move.w #96,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen lea $12(sp),sp ; Stack korrigieren |
Name: | »Dsp_ExecBoot« - Bootprogramm für DSP laden |
Xbiosnummer: | 110 |
Deklaration: | void Dsp_ExecBoot( int8_t *codeptr, int32_t codesize, int16_t ability ); |
Beschreibung: | Die Funktion Dsp_ExecBoot lädt ein Boot-Programm in die 512 Worte des internen DSP-Speichers. Vor dem Laden wird ein Reset auf dem DSP ausgeführt. Das DSP-Programm muß im Binär-Format vorliegen. Der Parameter codeptr zeigt auf den Programmstart. Die Länge des Programms wird durch den Parameter codesize bestimmt. ability identifiziert das Programm. |
Ergebnis: | Die Funktion liefert kein Ergebnis zurück. |
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor DSP56001 verfügbar. |
Gruppe: | DSP-Programmierung |
Querverweis: | Binding Dsp_Lock Dsp_Unlock Dsp_Available Dsp_Reserve Dsp_LoadProg Dsp_ExecProg Dsp_LodToBinary |
C: | #include void Dsp_ExecBoot( int8_t *codeptr, int32_t codesize, int16_t ability ); |
Assembler: | move.w ability,-(sp) ; Offset 10 move.l codesize,-(sp) ; Offset 6 pea codeptr ; Offset 2 move.w #110,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen lea $C(sp),sp ; Stack korrigieren |
Name: | »Dsp_ExecProg« - DSP Programm starten |
Xbiosnummer: | 109 |
Deklaration: | void Dsp_ExecProg( int8_t *codeptr, int32_t codesize, int16_t ability ); |
Beschreibung: | Die Funktion Dsp_ExecProg startet das im Binär-Format an der Stelle codeptr vorliegende DSP-Programm der Länge codesize. Seine Größe darf den durch Dsp_Reserve reservierten Speicher nicht überschreiten. Der Parameter ability identifiziert das Programm. |
Ergebnis: | Die Funktion liefert kein Ergebnis zurück. |
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor DSP56001 verfügbar. |
Gruppe: | DSP-Programmierung |
Querverweis: | Binding Dsp_Lock Dsp_Unlock Dsp_Available Dsp_Reserve Dsp_LoadProg Dsp_ExecBoot Dsp_LodToBinary |
C: | #include void Dsp_ExecProg( int8_t *codeptr, int32_t codesize, int16_t ability ); |
Assembler: | move.w ability,-(sp) ; Offset 10 move.l codesize,-(sp) ; Offset 6 pea codeptr ; Offset 2 move.w #109,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen lea $C(sp),sp ; Stack korrigieren |
Name: | »Dsp_FlushSubroutines« - Unterprogramme aus dem Speicher des DSP entfernen |
Xbiosnummer: | 115 |
Deklaration: | void Dsp_FlushSubroutines( void ); |
Beschreibung: | Die Funktion Dsp_FlushSubroutines entfernt alle Unterprogramme aus dem DSP-Speicher und erhöht somit den verfügbaren freien Speicher. |
Ergebnis: | Die Funktion liefert kein Ergebnis zurück. |
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor DSP56001 verfügbar. |
Gruppe: | DSP-Programmierung |
Querverweis: | Binding Dsp_LoadSubroutine Dsp_InqSubrAbility Dsp_RunSubroutine |
C: | #include void Dsp_FlushSubroutines( void ); |
Assembler: | move.w #115,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen addq.l #2,sp ; Stack korrigieren |
Name: | »Dsp_GetProgAbility« - Identifikation eines Prozesses ermitteln |
Xbiosnummer: | 114 |
Deklaration: | int16_t Dsp_GetProgAbility( void ); |
Beschreibung: | Die Funktion Dsp_GetProgAbility erteilt einem DSP-Prozeß eine Identifikation, mittels derer man feststellen kann, ob der zum Prozeß gehörige Code bereits im DSP vorhanden ist. |
Ergebnis: | Die Funktion liefert die für den Prozess gültige Kennung zurück. |
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor DSP56001 verfügbar. |
Gruppe: | DSP-Programmierung |
Querverweis: | Binding Dsp_RequestUniqueAbility |
C: | #include int16_t Dsp_GetProgAbility( void ); |
Assembler: | move.w #114,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen addq.l #2,sp ; Stack korrigieren |
Name: | »Dsp_GetWordSize« - Länge eines DSP Wortes ermitteln |
Xbiosnummer: | 103 |
Deklaration: | int16_t Dsp_GetWordSize( void ); |
Beschreibung: | Die Funktion Dsp_GetWordSize ermittelt die Größe in Byte, die ein DSP-Wort lang ist. Diese Funktion ist notwendig, um die Puffer für die Datenübertragung ausreichend zu dimensionieren. |
Ergebnis: | Die Funktion liefert die Größe eines DSP-Wortes zurück. |
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor DSP56001 verfügbar. |
Gruppe: | DSP-Programmierung |
Querverweis: | Binding Dsp_DoBlock Dsp_BlkUnpacked Dsp_BlkHandShake Dsp_BlkWords Dsp_BlkBytes Dsp_InStream Dsp_IOStream Dsp_OutStream Dsp_MultBlocks |
C: | #include int16_t Dsp_GetWordSize( void ); |
Assembler: | move.w #103,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen addq.l #2,sp ; Stack korrigieren |
Name: | »Dsp_Hf0« - Bit 3 des HSR setzen bzw. löschen | ||||||||
Xbiosnummer: | 119 | ||||||||
Deklaration: | int16_t Dsp_Hf0( int16_t flag ); | ||||||||
Beschreibung: | Die Funktion Dsp_Hf0 ermittelt bzw. setzt den Wert des Bits 3
des HSR. Der Parameter flag hat die folgende Bedeutung:
| ||||||||
Ergebnis: | Die Funktion liefert den Wert von Bit-3 des HSR zurück. | ||||||||
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor DSP56001 verfügbar. | ||||||||
Gruppe: | DSP-Programmierung | ||||||||
Querverweis: | Binding Dsp_Hf1 Dsp_Hf2 Dsp_Hf3 Dsp_HStat |
C: | #include int16_t Dsp_Hf0( int16_t flag ); |
Assembler: | move.w flag,-(sp) ; Offset 2 move.w #119,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen addq.l #4,sp ; Stack korrigieren |
Name: | »Dsp_Hf1« - Bit 4 des HSR setzen bzw. löschen | ||||||||
Xbiosnummer: | 120 | ||||||||
Deklaration: | int16_t Dsp_Hf1( int16_t flag ); | ||||||||
Beschreibung: | Die Funktion Dsp_Hf1 ermittelt bzw. setzt den Wert des Bits 4
des HSR. Der Parameter flag hat die folgende Bedeutung:
| ||||||||
Ergebnis: | Die Funktion liefert den Wert von Bit-4 des HSR zurück. | ||||||||
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor DSP56001 verfügbar. | ||||||||
Gruppe: | DSP-Programmierung | ||||||||
Querverweis: | Binding Dsp_Hf0 Dsp_Hf2 Dsp_Hf3 Dsp_HStat |
C: | #include int16_t Dsp_Hf1( int16_t flag ); |
Assembler: | move.w flag,-(sp) ; Offset 2 move.w #120,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen addq.l #4,sp ; Stack korrigieren |
Name: | »Dsp_Hf2« - Bit 3 des HCR ermitteln |
Xbiosnummer: | 121 |
Deklaration: | int16_t Dsp_Hf2( void ); |
Beschreibung: | Die Funktion Dsp_Hf2 ermittelt den Wert des Bits 3 des HCR. |
Ergebnis: | Die Funktion liefert den Wert von Bit-3 des HCR zurück. |
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor DSP56001 verfügbar. |
Gruppe: | DSP-Programmierung |
Querverweis: | Binding Dsp_Hf0 Dsp_Hf1 Dsp_Hf3 Dsp_HStat |
C: | #include int16_t Dsp_Hf2( void ); |
Assembler: | move.w #121,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen addq.l #2,sp ; Stack korrigieren |
Name: | »Dsp_Hf3« - Bit 4 des HCR ermitteln |
Xbiosnummer: | 122 |
Deklaration: | int16_t Dsp_Hf3( void ); |
Beschreibung: | Die Funktion Dsp_Hf3 ermittelt den Wert des Bits 4 des HCR. |
Ergebnis: | Die Funktion liefert den Wert von Bit-4 des HCR zurück. |
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor DSP56001 verfügbar. |
Gruppe: | DSP-Programmierung |
Querverweis: | Binding Dsp_Hf0 Dsp_Hf1 Dsp_Hf2 Dsp_HStat |
C: | #include int16_t Dsp_Hf3( void ); |
Assembler: | move.w #122,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen addq.l #2,sp ; Stack korrigieren |
Name: | »Dsp_HStat« - Wert des ISR Registers ermitteln |
Xbiosnummer: | 125 |
Deklaration: | int8_t Dsp_HStat( void ); |
Beschreibung: | Die Funktion Dsp_HStat ermittelt den Wert des ISR-Registers. Somit kann man feststellen, ob Daten empfangen oder gesendet werden können. |
Ergebnis: | Die Funktion liefert den Wert des ISR-Registers zurück. |
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor DSP56001 verfügbar. |
Gruppe: | DSP-Programmierung |
Querverweis: | Binding Dsp_Hf0 Dsp_Hf1 Dsp_Hf2 Dsp_Hf3 |
C: | #include int8_t Dsp_HStat( void ); |
Assembler: | move.w #125,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen addq.l #2,sp ; Stack korrigieren |
Name: | »Dsp_InqSubrAbility« - Ermitteln der Kennung eines Unterprogramms |
Xbiosnummer: | 117 |
Deklaration: | int16_t Dsp_InqSubrAbility( int16_t ability ); |
Beschreibung: | Die Funktion Dsp_InqSubrAbility bestimmt die Kennung des Unterprogramms mit der Funktionalität abilitiy. |
Ergebnis: | Die Funktion liefert die Kennung des Unterprogramms zurück. Ein Rückgabewert von Null bedeutet, daß sich das entsprechende Unterprogramm nicht im DSP-Speicher befindet; in diesem Fall muß das Unterprogramm über Dsp_LoadSubroutine installiert werden. |
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor DSP56001 verfügbar. |
Gruppe: | DSP-Programmierung |
Querverweis: | Binding Dsp_RunSubroutine Dsp_FlushSubroutines Dsp_LoadSubroutine |
C: | #include int16_t Dsp_InqSubrAbility( int16_t ability ); |
Assembler: | move.w ability,-(sp) ; Offset 2 move.w #117,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen addq.l #4,sp ; Stack korrigieren |
Name: | »Dsp_InStream« - Datentransfer zum DSP via Interrupt |
Xbiosnummer: | 99 |
Deklaration: | void Dsp_InStream( int8_t *data_in, int32_t block_size, int32_t num_blocks, int32_t *blocks_done ); |
Beschreibung: | Die Funktion kopiert mittels DSP-Interruptbehandlung num_blocks Datenblöcke mit einer Größe von block_size DSP-Worten aus dem Puffer data_in zum DSP. Bei jedem Interrupt wird ein Block übertragen, unabhängig davon, ob der DSP empfangsbereit ist. Gleichzeitig wird der Zähler blocks_done, der die Anzahl der übertragenen Blöcke wiedergibt, inkrementiert. Da die Daten per Interrupt übertragen werden, muß die Prozedur nicht warten. Über blocks_done kann das Programm im weiteren Verlauf feststellen, ob die Übertragung beendet ist. |
Ergebnis: | Die Funktion liefert kein Ergebnis zurück. |
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor DSP56001 verfügbar. |
Gruppe: | DSP-Programmierung |
Querverweis: | Binding Dsp_DoBlock Dsp_BlkUnpacked Dsp_BlkHandShake Dsp_BlkWords Dsp_BlkBytes Dsp_OutStream Dsp_IOStream Dsp_GetWordSize Dsp_SetVectors Dsp_RemoveInterrupts Dsp_MultBlocks |
C: | #include void Dsp_InStream( int8_t *data_in, int32_t block_size, int32_t num_blocks, int32_t *blocks_done ); |
Assembler: | pea blocks_done ; Offset 14 move.l num_blocks,-(sp) ; Offset 10 move.l block_size,-(sp) ; Offset 6 pea data_in ; Offset 2 move.w #99,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen lea $12(sp),sp ; Stack korrigieren |
Name: | »Dsp_IOStream« - Datentransfer vom und zum DSP via Interrupt |
Xbiosnummer: | 101 |
Deklaration: | void Dsp_IOStream( int8_t *data_in, int8_t *data_out, int32_t block_insize, int32_t block_outsize, int32_t num_blocks, int32_t *blocks_done ); |
Beschreibung: | Die Funktion sendet und empfängt gleichzeitig mittels DSP-Interruptbehandlung num_blocks Datenblöcke mit einer Größe von block_insize bzw. block_outsize DSP-Worten vom DSP. Die gesendeten Daten werden dem Puffer data_in entnommen, die empfangenen Daten werden im Puffer data_out abgelegt. Bei jedem Interrupt wird ein Block gesendet und einer empfangen (eine Ausnahme bilden der erste und der letzte Interrupt). Gleichzeitig wird der Zähler blocks_done, der die Anzahl der übertragenen Blöcke wiedergibt, inkrementiert. Da die Daten per Interrupt übertragen werden, muß die Funktion nicht warten. Über blocks_done kann das Programm im weiteren Verlauf feststellen, ob die Übertragung beendet ist. |
Ergebnis: | Die Funktion liefert kein Ergebnis zurück. |
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor DSP56001 verfügbar. |
Gruppe: | DSP-Programmierung |
Querverweis: | Binding Dsp_DoBlock Dsp_BlkUnpacked Dsp_BlkHandShake Dsp_BlkWords Dsp_BlkBytes Dsp_InStream Dsp_OutStream Dsp_GetWordSize Dsp_SetVectors Dsp_RemoveInterrupts Dsp_MultBlocks |
C: | #include void Dsp_IOStream( int8_t *data_in, int8_t *data_out, int32_t block_insize, int32_t block_outsize, int32_t num_blocks, int32_t *blocks_done ); |
Assembler: | pea blocks_done ; Offset 22 move.l num_blocks,-(sp) ; Offset 18 move.l block_outsize,-(sp) ; Offset 14 move.l block_insize,-(sp) ; Offset 10 pea data_out ; Offset 6 pea data_in ; Offset 2 move.w #101,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen lea $1A(sp),sp ; Stack korrigieren |
Name: | »Dsp_LoadProg« - DSP Programm laden und starten |
Xbiosnummer: | 108 |
Deklaration: | int16_t Dsp_LoadProg( int8_t *file, int16_t ability, int8_t *buffer ); |
Beschreibung: | Die Funktion Dsp_LoadProg lädt das DSP-Programm mit dem Namen
file. Das Programm muß im .LOD-Format vorliegen und darf den
durch Dsp_Reserve reservierten Speicher nicht überschreiten. Der
Parameter ability identifiziert das Programm. buffer
zeigt auf einen Speicherbereich, in dem das generierte Programm
zwischengespeichert werden kann. Die Größe des Speicherbereichs
berechnet sich nach der FormelDSP-Wortgröße * ( Anzahl der Programm- und Datenworte in der .LOD-Datei + ( DSP-Wortgröße * Anzahl der Blöcke in der .LOD-Datei )) Danach wird das Programm ausgeführt. |
Ergebnis: | Die Funktion liefert im positiven Fall den Wert 0, und im Fehlerfall den Wert -1 zurück. |
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor DSP56001 verfügbar. |
Gruppe: | DSP-Programmierung |
Querverweis: | Binding Dsp_Lock Dsp_Unlock Dsp_Available Dsp_Reserve Dsp_ExecProg Dsp_ExecBoot Dsp_LodToBinary |
C: | #include int16_t Dsp_LoadProg( int8_t *file, int16_t ability, int8_t *buffer ); |
Assembler: | pea buffer ; Offset 8 move.w ability,-(sp) ; Offset 6 pea file ; Offset 2 move.w #108,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen lea $C(sp),sp ; Stack korrigieren |
Name: | »Dsp_LoadSubroutine« - Unterprogramm im Speicher des DSP installieren |
Xbiosnummer: | 116 |
Deklaration: | int16_t Dsp_LoadSubroutine( int8_t *codeptr, int32_t codesize, int16_t ability ); |
Beschreibung: | Die Funktion Dsp_LoadSubroutine installiert das DSP-Unterprogramm aus dem Puffer codeptr im DSP-Speicher. Das Unterprogramm ist codesize DSP-Worte lang und hat die Identifikation ability. Das Unterprogramm bleibt solange resident im DSP-Speicher bis kein Platz mehr für neue Unterprogramme ist und es verdrängt wird oder die Funktion Dsp_FlushSubroutines aufgerufen wird. |
Ergebnis: | Die Funktion liefert im Fehlerfall den Wert 0 zurück. Ein positiver Wert kennzeichnet das Unterprogramm, das per Dsp_RunSubroutine aufgerufen werden kann. |
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor DSP56001 verfügbar. |
Gruppe: | DSP-Programmierung |
Querverweis: | Binding Dsp_RunSubroutine Dsp_FlushSubroutines Dsp_InqSubrAbility |
C: | #include int16_t Dsp_LoadSubroutine( int8_t *codeptr, int32_t codesize, int16_t ability ); |
Assembler: | move.w ability,-(sp) ; Offset 10 move.l codesize,-(sp) ; Offset 6 pea codeptr ; Offset 2 move.w #116,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen lea $C(sp),sp ; Stack korrigieren |
Name: | »Dsp_Lock« - Verfügbarkeit des DSP ermitteln |
Xbiosnummer: | 104 |
Deklaration: | int16_t Dsp_Lock( void ); |
Beschreibung: | Die Funktion Dsp_Lock ermittelt, ob der DSP für Anwendungen verfügbar ist und nicht durch jemand anders blockiert wird. |
Ergebnis: | Die Funktion liefert den Wert -1, wenn der DSP bereits durch einen anderen Prozess benutzt wird. Ein Rückgabewert von Null kennzeichnet hingegen die Verfügbarkeit des DSP und blockiert diesen gleichzeitig für andere, bis ein Aufruf von Dsp_Unlock erfolgt. |
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor DSP56001 verfügbar. |
Gruppe: | DSP-Programmierung |
Querverweis: | Binding Dsp_Unlock Dsp_Available Dsp_Reserve Dsp_LoadProg Dsp_ExecProg Dsp_ExecBoot |
C: | #include int16_t Dsp_Lock( void ); |
Assembler: | move.w #104,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen addq.l #2,sp ; Stack korrigieren |
Name: | »Dsp_LodToBinary« - Konvertierung einer Datei vom LOD in das Binärformat |
Xbiosnummer: | 111 |
Deklaration: | int32_t Dsp_LodToBinary( int8_t *file, int8_t *codeptr ); |
Beschreibung: | Die Funktion Dsp_LodToBinary konvertiert den Inhalt der .LOD-Datei mit dem Namen file ins Binärformat. Das so erzeugte DSP-Programm wird an der Adresse codeptr abgelegt. Dieser Speicherbereich muß ausreichend groß dimensioniert sein. Danach kann das Programm mit Dsp_ExecProg oder Dsp_ExecBoot ausgeführt werden. |
Ergebnis: | Die Funktion liefert im positiven Fall die Länge des Programms in DSP-Worten, oder im Fehlerfall einen negativen Wert zurück. |
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor DSP56001 verfügbar. |
Gruppe: | DSP-Programmierung |
Querverweis: | Binding Dsp_Lock Dsp_Unlock Dsp_Available Dsp_Reserve Dsp_LoadProg Dsp_ExecBoot Dsp_ExecProg |
C: | #include int32_t Dsp_LodToBinary( int8_t *file, int8_t *codeptr ); |
Assembler: | pea codeptr ; Offset 6 pea file ; Offset 2 move.w #111,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen lea $A(sp),sp ; Stack korrigieren |
Name: | »Dsp_MultBlocks« - Datentransfer vom und zum DSP |
Xbiosnummer: | 127 |
Deklaration: | void Dsp_MultBlocks( int32_t numsend, int32_t numreceive, DSPBLOCK *sendblocks, DSPBLOCK *receiveblocks ); |
Beschreibung: | Die Funktion Dsp_MultBlocks sendet und empfängt Daten vom DSP. numsend ist die Anzahl der zu sendenden und numreceive die Anzahl der zu empfangenden Blöcke. sendblocks und receiveblocks sind Zeiger auf Strukturen, die die Puffer und Blöcke beschreiben. |
Ergebnis: | Die Funktion liefert kein Ergebnis zurück. |
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor DSP56001 verfügbar. |
Gruppe: | DSP-Programmierung |
Querverweis: | Binding Dsp_DoBlock Dsp_BlkUnpacked Dsp_BlkHandShake Dsp_BlkWords Dsp_InStream Dsp_OutStream Dsp_IOStream Dsp_GetWordSize Dsp_BlkBytes |
C: | #include void Dsp_MultBlocks( int32_t numsend, int32_t numreceive, DSPBLOCK *sendblocks, DSPBLOCK *receiveblocks ); |
Assembler: | pea receiveblocks ; Offset 14 pea sendblocks ; Offset 10 move.l numreceive,-(sp) ; Offset 6 move.l numsend,-(sp) ; Offset 2 move.w #127,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen lea $12(sp),sp ; Stack korrigieren |
Name: | »Dsp_OutStream« - Datentransfer vom DSP via Interrupt |
Xbiosnummer: | 100 |
Deklaration: | void Dsp_OutStream( int8_t *data_out, int32_t block_size, int32_t num_blocks, int32_t *blocks_done ); |
Beschreibung: | Die Funktion kopiert mittels DSP-Interruptbehandlung
num_blocks Datenblöcke mit einer Größe von block_size
DSP-Worten vom DSP in dem Puffer data_out. Bei jedem Interrupt
wird ein Block übertragen. Gleichzeitig wird der Zähler
blocks_done, der die Anzahl der übertragenen Blöcke
wiedergibt, inkrementiert. Da die Daten per Interrupt übertragen
werden, muß die Funktion nicht warten. Über blocks_done kann
das Programm im weiteren Verlauf feststellen, ob die Übertragung
beendet ist. Hinweis: Die Funktion ist nur auf Computern mit dem Signalprozessor DSP56001 verfügbar. |
Ergebnis: | Die Funktion liefert kein Ergebnis zurück. |
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor DSP56001 verfügbar. |
Gruppe: | DSP-Programmierung |
Querverweis: | Binding Dsp_DoBlock Dsp_BlkUnpacked Dsp_BlkHandShake Dsp_BlkWords Dsp_BlkBytes Dsp_InStream Dsp_IOStream Dsp_GetWordSize Dsp_SetVectors Dsp_RemoveInterrupts Dsp_MultBlocks |
C: | #include void Dsp_OutStream( int8_t *data_out, int32_t block_size, int32_t num_blocks, int32_t *blocks_done ); |
Assembler: | pea blocks_done ; Offset 14 move.l num_blocks,-(sp) ; Offset 10 move.l block_size,-(sp) ; Offset 6 pea data_out ; Offset 2 move.w #100,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen lea $12(sp),sp ; Stack korrigieren |
Name: | »Dsp_RemoveInterrupts« - Generierung von DSP Interrupts unterbinden | ||||||||
Xbiosnummer: | 102 | ||||||||
Deklaration: | void Dsp_RemoveInterrupts( int16_t mask ); | ||||||||
Beschreibung: | Die Funktion Dsp_RemoveInterrupts unterbindet die Generierung
von DSP-Interrupts. Der Parameter mask bestimmt, welche
Interrupts betroffen sind:
Die Funktion entfernt ebenfalls Routinen, die mit Dsp_SetVectors installiert wurden. | ||||||||
Ergebnis: | Die Funktion liefert kein Ergebnis zurück. | ||||||||
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor DSP56001 verfügbar. | ||||||||
Gruppe: | DSP-Programmierung | ||||||||
Querverweis: | Binding Dsp_InStream Dsp_OutStream Dsp_IOStream Dsp_SetVectors |
C: | #include void Dsp_RemoveInterrupts( int16_t mask ); |
Assembler: | move.w mask,-(sp) ; Offset 2 move.w #102,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen addq.l #4,sp ; Stack korrigieren |
Name: | »Dsp_RequestUniqueAbility« - Identifikation für Prozess erzeugen |
Xbiosnummer: | 113 |
Deklaration: | int16_t Dsp_RequestUniqueAbility( void ); |
Beschreibung: | Die Funktion Dsp_RequestUniqueAbility erteilt einem DSP-Prozeß eine für die gesamte Systemlaufzeit eindeutige Identifikation, mittels derer man feststellen kann, ob der zum Prozeß gehörige Code resident im DSP vorhanden ist. |
Ergebnis: | Die Funktion liefert die für den Prozess erzeugte Kennung zurück. |
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor DSP56001 verfügbar. |
Gruppe: | DSP-Programmierung |
Querverweis: | Binding Dsp_GetProgAbility |
C: | #include int16_t Dsp_RequestUniqueAbility( void ); |
Assembler: | move.w #113,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen addq.l #2,sp ; Stack korrigieren |
Name: | »Dsp_Reserve« - Speicher reservieren |
Xbiosnummer: | 107 |
Deklaration: | int16_t Dsp_Reserve( int32_t xreserve, int32_t yreserve ); |
Beschreibung: | Die Funktion Dsp_Reserve reserviert xreserve Worte X-Speicher und yreserve Worte Y-Speicher. Die Speicheranforderung darf den verfügbaren Speicher auf keinen Fall übertreffen. Diese Funktion ist notwendig, damit DSP-Prozesse nicht durch DSP-Unterprogramme überschrieben werden. Die Reservierung bleibt bis zum nächsten Aufruf von Dsp_Reserve bestehen. |
Ergebnis: | Die Funktion liefert im positiven Fall den Wert 0, und im Fehlerfall den Wert -1 zurück. |
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor DSP56001 verfügbar. |
Gruppe: | DSP-Programmierung |
Querverweis: | Binding Dsp_Lock Dsp_Unlock Dsp_Available Dsp_LoadProg Dsp_ExecProg Dsp_ExecBoot |
C: | #include int16_t Dsp_Reserve( int32_t xreserve, int32_t yreserve ); |
Assembler: | move.l yreserve,-(sp) ; Offset 6 move.l xreserve,-(sp) ; Offset 2 move.w #107,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen lea $A(sp),sp ; Stack korrigieren |
Name: | »DspRunSubroutine« - Unterprogramm ausführen |
Xbiosnummer: | 118 |
Deklaration: | int16_t Dsp_RunSubroutine( int16_t handle ); |
Beschreibung: | Die Funktion Dsp_RunSubroutine führt das Unterprogramm mit der Kennung handle aus. Die Kennung für ein Unterprogramm findet man mittels Dsp_InqSubrAbility oder Dsp_LoadSubroutine heraus. |
Ergebnis: | Die Funktion liefert im positiven Fall den Wert 0, und im Fehlerfall eine negative Zahl zurück. |
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor DSP56001 verfügbar. |
Gruppe: | DSP-Programmierung |
Querverweis: | Binding Dsp_InqSubrAbility Dsp_FlushSubroutines Dsp_LoadSubroutine |
C: | #include int16_t Dsp_RunSubroutine( int16_t handle ); |
Assembler: | move.w handle,-(sp) ; Offset 2 move.w #118,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen addq.l #4,sp ; Stack korrigieren |
Name: | »Dsp_SetVectors« - Installation einer eigenen Übertragungsroutine |
Xbiosnummer: | 126 |
Deklaration: | void Dsp_SetVectors( void (*receiver)(), int32_t (*transmitter)() ); |
Beschreibung: | Die Funktion Dsp_SetVectors installiert Routinen, die
aufgerufen werden, wenn der DSP über einen Interrupt Daten übertragen
will. receiver ist ein Zeiger auf eine Routine, die aufgerufen
wird, nachdem der DSP Daten verschickt hat, und transmitter
ein Zeiger auf eine Routine, die aufgerufen wird, bevor der DSP Daten
empfängt. Die Empfangsroutine receiver erhält als Parameter
auf dem Stack einen LONG, der vom DSP gesendet wurde. Die Senderoutine
transmitter übergibt einen LONG an den DSP in Register D0.
Dieser muß ungleich Null sein, damit er, d.h. dessen niederwertigen
drei Bytes an den DSP übertragen wird. Beide Routinen werden mit dem
Assemblerbefehl RTS abgeschlossen. Wird für receiver oder transmitter 0 übergeben, so wird der entsprechende Interrupt gesperrt. Um eine Routine wieder zu entfernen, muß man Dsp_RemoveInterrupts aufrufen. |
Ergebnis: | Die Funktion liefert kein Ergebnis zurück. |
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor DSP56001 verfügbar. |
Gruppe: | DSP-Programmierung |
Querverweis: | Binding Dsp_InStream Dsp_OutStream Dsp_IOStream Dsp_RemoveInterrupts |
C: | #include void Dsp_SetVectors( void (*receiver)(), int32_t (*transmitter)() ); |
Assembler: | pea transmitter ; Offset 6 pea receiver ; Offset 2 move.w #126,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen lea $A(sp),sp ; Stack korrigieren |
Name: | »Dsp_TriggerHC« - Host Kommando ausführen |
Xbiosnummer: | 112 |
Deklaration: | void Dsp_TriggerHC( int16_t vector ); |
Beschreibung: | Die Funktion Dsp_TriggerHC führt Vector vector aus. Nur die zwei Vektoren $13 und $14 stehen DSP-Programmen zur freien Verfügung. |
Ergebnis: | Die Funktion liefert kein Ergebnis zurück. |
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor DSP56001 verfügbar. |
Gruppe: | DSP-Programmierung |
Querverweis: | Binding |
C: | #include void Dsp_TriggerHC( int16_t vector ); |
Assembler: | move.w vector,-(sp) ; Offset 2 move.w #112,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen addq.l #4,sp ; Stack korrigieren |
Name: | »Dsp_Unlock« - DSP für andere Prozesse freigeben |
Xbiosnummer: | 105 |
Deklaration: | void Dsp_Unlock( void ); |
Beschreibung: | Die Funktion Dsp_Unlock gibt den DSP für andere Prozesse frei. |
Ergebnis: | Die Funktion liefert kein Ergebnis zurück. |
Gruppe: | DSP-Programmierung |
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor DSP56001 verfügbar. |
Querverweis: | Binding Dsp_Lock Dsp_Available Dsp_Reserve Dsp_LoadProg Dsp_ExecProg Dsp_ExecBoot |
C: | #include void Dsp_Unlock( void ); |
Assembler: | move.w #105,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen addq.l #2,sp ; Stack korrigieren |