Login
Signals 3
Title:Signals 3
Category:Magazine [ More Issues ]
Release Date:
Language:German/English
Size:64K
Device Req.:Disk only (2 sides)
Machine:PAL Only
Code Type:Machine code
Distribution:Freeware
 Play Online!
Released by:Synergy (SYN)
Graphics by:T.A.R
Code by:Bionic
Notes: 
No votes yet.
Signals 3 Screenshot


This Compilation Contains
Elder News 04
Elder News 05
Page-Printer V3
Users Adress
Suicide Solution


Effects
PartEffect nameParametersNotes
SID Support 


Direct Converter
Chapter 13 of this issue introduces the Direct Converter, a routine which transfers the SID data of a C64 native music from their original registers ($D400) to the SIDcard's main registers ($FD40). According to Solder, which has written this article, this advanced routine must supersede the original data transfer routine included in the Synergy SIDcard Software suite disks, which had been spread with the Solder's SID Card, where the original SID data registers were simply copied into the SIDcard ones at the very end of the music file's running into the interrupt. The old routine doesn't keep in count the data handling in the SID registers which may occur within the routine itself.

Direct Converter recognizes and literally changes the real register's addresses calls written into the SID file. The same result can be achieved by using software like Sid Converter by Skoro, or modern PC tools like SID To Plus4 by Dale, or PSID2BIN by Bionic.
---

Before running this routine, change $9B/$9C values, according to LO/HI bytes of the beginning address of the SID file.

.BA$0700,$7700 ;BASE ADDRESS $700
 SEI ;INTERRUPT DISABLE
 STA$FF3F ;IF DATA UNDER ROM
 LDA$9B ;SWITCH TO RAM
 STA$D8 ;LOADING ADDRESS SAVE IN
 LDA$9C ;D8/D9 (POINT TO BE-
               ;ERROR CODE)
 STA$D9
 LDA#$02 ;TO ORIGINAL POINT TWO
 CLC ;ADD (POINTS TO
 ADC$9B ;HIGHBYTE ($D4XX))
 STA$9B
 BCCL0717
 INC$9C
L0717 LDY#$00 ;START OF ROUTINE
L0719 LDA($D8),Y ;FET BYTE
 CMP#$8D ;CODE FOR STA$ADRE
 BEQL0741 ;/YES
 CMP#$99 ;CODE FOR STA$ADRE,Y
 BEQL0741 ;/YES
 CMP#$9D ;CODE FOR STA$ADRE,X
 BEQL0741 ;/YES
 CMP#$8C ;CODE FOR STY$ADRE
 BEQL0741 ;/YES
 CMP#$8E ;CODE FOR STX$ADRE
 BEQL0741 ;/YES
L072F INY ;OTHERWISE NEXT BYTE
 BNEL0719
INC$9C ;IN BUNDLE POINT
 INC$D9 ;CALCULATE ACCORDINGLY
 LDA$9C ;END REACHED?
 CMP$9E
 BCCL0719 ;/NOT YET
 STA$FF3E ;SWITCH TO ROM
 CLI ;ALLOW INTERRUPT
 BRK ;BACK IN MONITOR
                                       
L0741 LDA($9B),Y ;HIGHBYTE TO COMMAND
               ;GET CODE
 CMP#$D4 ;$D4 FOR $D4XX ?
 BNEL072F ;/NO, NOT CONVERTED.
 INY ;POINT CORR.
BNEL074E
 INC$D9
 INC$9C
L074E LDA($D8),Y ;IF EVERYTHING IS RIGHT,
               ;FET LOW BYTE AND
 ORA#$40 ;FROM 00-18 TO 40-58
 STA($D8),Y ;CONVERT
 INY ;POINT TO HIGH BYTE
 BNEL075B ;SET
 INC$D9
 INC$9C
 L075B LDA#$FD ;LOAD $FD
 STA($D8),Y ;AND WRITE TO RAM
 BNEL072F ;CONVERSION PROCESS
               ;COMPLETE
 BRK ;END OF ROUTINE

Copyright © Plus/4 World Team, 2001-2024. Support Plus/4 World on Patreon