home *** CD-ROM | disk | FTP | other *** search
- *
- * 6581.asm - SID-Emulation
- *
- * Copyright (C) 1994-1995 by Christian Bauer
- *
-
- *
- * Anmerkungen:
- * ------------
- *
- * Die SID-Emulation benötigt einen echten C64-SID, der im
- * Adreßraum $a00001-$a00039 (Register an den ungeraden Adressen)
- * eingeblendet ist (z.B. auf einer Zorro-II-Karte).
- *
- * Wegen Timing-Problemen mit der Karte werden Lesezugriffe
- * aus SID-Registern simuliert.
- *
- * Die Power-LED ist mit dem Reset-Eingang des SID verbunden,
- * d.h. ein kurzes Aus- und Einschalten der LED setzt den SID
- * zurück.
- *
-
- MACHINE 68020
-
- INCLUDE "exec/types.i"
- INCLUDE "exec/macros.i"
-
- XREF _GfxBase
-
- XDEF Reset6581
- XDEF ReadFrom6581
- XDEF WriteTo6581
- XDEF UseSIDCard ;Prefs
-
- SECTION "CODE",CODE
-
-
- **
- ** SID zurücksetzen
- **
-
- Reset6581 tst.w UseSIDCard
- beq 1$
- move.l a6,-(sp)
- move.l _GfxBase,a6
- JSRLIB WaitTOF
- bset #1,$bfe001 ;LED aus
- JSRLIB WaitTOF
- bclr #1,$bfe001 ;LED an
- move.l (sp)+,a6
- 1$ rts
-
-
- **
- ** Aus einem SID-Register lesen
- ** d0.w: Registernummer ($00-$1f)
- ** Rückgabe: d0.b: Byte
- **
- ** Darf das obere Wort von d0 und d1 nicht verändern!
- ** Darf a1 nicht verändern!
- **
-
- ReadFrom6581 cmp.b #$19,d0
- beq ReadFF
- cmp.b #$1a,d0
- beq ReadFF
- cmp.b #$1b,d0
- beq ReadRnd
- moveq #0,d0
- rts
-
- ReadFF move.b #-1,d0 ;A/D-Wandler
- rts
-
- ReadRnd move.b $dff007,d0 ;Zufallswert
- rts
-
-
- **
- ** In ein SID-Register schreiben
- ** d0.w: Registernummer ($00-$1f)
- ** d1.b: Byte
- **
- ** Darf das obere Wort von d0 und d1 nicht verändern!
- **
-
- WriteTo6581 tst.w UseSIDCard(pc)
- beq 1$
- lea $a00001,a0 ;SID-Karte
- move.b d1,(a0,d0.w*2)
- 1$ rts
-
-
- **
- ** Datenbereich
- **
-
- ; Flag: SID-Karte ansprechen
- UseSIDCard dc.w 0
-
- END
-