Home XBIOSXBIOS DruckerfunktionenDruckerfunktionen Hatari-DHS-XBIOS-ErweiterungHatari-DHS-XBIOS-Erweiterung

4.11 DSP-Programmierung

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

4.11.1 Dsp_Available

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
 

4.11.1.1 Bindings für Dsp_Available

C: #include <tos.h>
 
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

4.11.2 Dsp_BlkBytes

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
 

4.11.2.1 Bindings für Dsp_BlkBytes

C: #include <tos.h>
 
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

4.11.3 Dsp_BlkHandShake

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
 

4.11.3.1 Bindings für Dsp_BlkHandShake

C: #include <tos.h>
 
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

4.11.4 Dsp_BlkUnpacked

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
 

4.11.4.1 Bindings für Dsp_BlkUnpacked

C: #include <tos.h>
 
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

4.11.5 Dsp_BlkWords

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
 

4.11.5.1 Bindings für Dsp_BlkWords

C: #include <tos.h>
 
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

4.11.6 Dsp_DoBlock

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
 

4.11.6.1 Bindings für Dsp_DoBlock

C: #include <tos.h>
 
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

4.11.7 Dsp_ExecBoot

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
 

4.11.7.1 Bindings für Dsp_ExecBoot

C: #include <tos.h>
 
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

4.11.8 Dsp_ExecProg

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
 

4.11.8.1 Bindings für Dsp_ExecProg

C: #include <tos.h>
 
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

4.11.9 Dsp_FlushSubroutines

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
 

4.11.9.1 Bindings für Dsp_FlushSubroutines

C: #include <tos.h>
 
void Dsp_FlushSubroutines( void );
 
Assembler:
 
move.w    #115,-(sp)   ; Offset 0
trap      #14          ; XBIOS aufrufen
addq.l    #2,sp        ; Stack korrigieren

4.11.10 Dsp_GetProgAbility

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
 

4.11.10.1 Bindings für Dsp_GetProgAbility

C: #include <tos.h>
 
int16_t Dsp_GetProgAbility( void );
 
Assembler:
 
move.w    #114,-(sp)   ; Offset 0
trap      #14          ; XBIOS aufrufen
addq.l    #2,sp        ; Stack korrigieren

4.11.11 Dsp_GetWordSize

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
 

4.11.11.1 Bindings für Dsp_GetWordSize

C: #include <tos.h>
 
int16_t Dsp_GetWordSize( void );
 
Assembler:
 
move.w    #103,-(sp)   ; Offset 0
trap      #14          ; XBIOS aufrufen
addq.l    #2,sp        ; Stack korrigieren

4.11.12 Dsp_Hf0

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:
 

flag Bedeutung
 0 Bit 3 des HSR löschen
 1 Bit 3 des HSR setzen
-1 Bit 3 des HSR unverändert lassen
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
 

4.11.12.1 Bindings für Dsp_Hf0

C: #include <tos.h>
 
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

4.11.13 Dsp_Hf1

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:
 

flag Bedeutung
 0 Bit 4 des HSR löschen
 1 Bit 4 des HSR setzen
-1 Bit 4 des HSR unverändert lassen
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
 

4.11.13.1 Bindings für Dsp_Hf1

C: #include <tos.h>
 
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

4.11.14 Dsp_Hf2

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
 

4.11.14.1 Bindings für Dsp_Hf2

C: #include <tos.h>
 
int16_t Dsp_Hf2( void );
 
Assembler:
 
move.w    #121,-(sp)   ; Offset 0
trap      #14          ; XBIOS aufrufen
addq.l    #2,sp        ; Stack korrigieren

4.11.15 Dsp_Hf3

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
 

4.11.15.1 Bindings für Dsp_Hf3

C: #include <tos.h>
 
int16_t Dsp_Hf3( void );
 
Assembler:
 
move.w    #122,-(sp)   ; Offset 0
trap      #14          ; XBIOS aufrufen
addq.l    #2,sp        ; Stack korrigieren

4.11.16 Dsp_HStat

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
 

4.11.16.1 Bindings für Dsp_HStat

C: #include <tos.h>
 
int8_t Dsp_HStat( void );
 
Assembler:
 
move.w    #125,-(sp)   ; Offset 0
trap      #14          ; XBIOS aufrufen
addq.l    #2,sp        ; Stack korrigieren

4.11.17 Dsp_InqSubrAbility

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
 

4.11.17.1 Bindings für Dsp_InqSubrAbility

C: #include <tos.h>
 
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

4.11.18 Dsp_InStream

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
 

4.11.18.1 Bindings für Dsp_InStream

C: #include <tos.h>
 
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

4.11.19 Dsp_IOStream

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
 

4.11.19.1 Bindings für Dsp_IOStream

C: #include <tos.h>
 
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

4.11.20 Dsp_LoadProg

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 Formel
 
DSP-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
 

4.11.20.1 Bindings für Dsp_LoadProg

C: #include <tos.h>
 
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

4.11.21 Dsp_LoadSubroutine

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
 

4.11.21.1 Bindings für Dsp_LoadSubroutine

C: #include <tos.h>
 
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

4.11.22 Dsp_Lock

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
 

4.11.22.1 Bindings für Dsp_Lock

C: #include <tos.h>
 
int16_t Dsp_Lock( void );
 
Assembler:
 
move.w    #104,-(sp)   ; Offset 0
trap      #14          ; XBIOS aufrufen
addq.l    #2,sp        ; Stack korrigieren

4.11.23 Dsp_LodToBinary

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
 

4.11.23.1 Bindings für Dsp_LodToBinary

C: #include <tos.h>
 
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

4.11.24 Dsp_MultBlocks

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
 

4.11.24.1 Bindings für Dsp_MultBlocks

C: #include <tos.h>
 
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

4.11.25 Dsp_OutStream

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
 

4.11.25.1 Bindings für Dsp_OutStream

C: #include <tos.h>
 
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

4.11.26 Dsp_RemoveInterrupts

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:
 
mask Bedeutung
 
1 Keine Interrupts zum Senden von Daten durch den DSP
 
2 Keine Interrupts zum Empfangen von Daten durch den DSP
 
3 Keine Interrupts zum Senden oder Empfangen von Daten durch den DSP
 

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
 

4.11.26.1 Bindings für Dsp_RemoveInterrupts

C: #include <tos.h>
 
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

4.11.27 Dsp_RequestUniqueAbility

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
 

4.11.27.1 Bindings für Dsp_RequestUniqueAbility

C: #include <tos.h>
 
int16_t Dsp_RequestUniqueAbility( void );
 
Assembler:
 
move.w    #113,-(sp)   ; Offset 0
trap      #14          ; XBIOS aufrufen
addq.l    #2,sp        ; Stack korrigieren

4.11.28 Dsp_Reserve

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
 

4.11.28.1 Bindings für Dsp_Reserve

C: #include <tos.h>
 
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

4.11.29 Dsp_RunSubroutine

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
 

4.11.29.1 Bindings für Dsp_RunSubroutine

C: #include <tos.h>
 
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

4.11.30 Dsp_SetVectors

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
 

4.11.30.1 Bindings für Dsp_SetVectors

C: #include <tos.h>
 
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

4.11.31 Dsp_TriggerHC

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
 

4.11.31.1 Bindings für Dsp_TriggerHC

C: #include <tos.h>
 
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

4.11.32 Dsp_Unlock

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
 

4.11.32.1 Bindings für Dsp_Unlock

C: #include <tos.h>
 
void Dsp_Unlock( void );
 
Assembler:
 
move.w    #105,-(sp)   ; Offset 0
trap      #14          ; XBIOS aufrufen
addq.l    #2,sp        ; Stack korrigieren

Home XBIOSXBIOS DruckerfunktionenDruckerfunktionen Hatari-DHS-XBIOS-ErweiterungHatari-DHS-XBIOS-Erweiterung