Problem for do work a music song in assembly as example

By gasparrini

Champion (329)

gasparrini's picture

27-01-2014, 22:14

Hello Guys,

Problem for do work a music song in assembly as example.
Unfortunately this routine in assembler for do music it si mute !!

Therefore: I ask your help for me......

For now is all....
Best Regards
Hannibal

; [YOUR GROUP] MSX Z80 source file.
;
; Prog: SONG MUSIC PLAY PSG
; Code:
; Date: 
;
; cmnt:
;
; Coded in TeddyWareZ' Chaos Assembler 3
;
; (C) 2001 [YOUR GROUP]!

.org $C000 - 7

.db $fe
.dw startProgram,endProgram,startProgram

startProgram:

INTHOK:  .EQU $F9DF
PSGINI:  .EQU $90
WRTPSG:  .EQU $93
RDPSG:   .EQU $96
C1DAT:   .EQU $B000
C2DAT:   .EQU $B400
C3DAT:   .EQU $B800

START:
    LD HL,C1DAT
    LD (C1PTR),HL
    LD HL,C2DAT
    LD (C2PTR),HL
    LD HL,C3DAT
    LD (C3PTR),HL
    LD A,1
    LD (C1CTR),A
    LD (C2CTR),A
    LD (C3CTR),A
    CALL PSGINI

	ld hl,MUSROT  
	ld (INTHOK+1),hl
;    LD A,MUSROT ; LD A,LOW MUSROT
;    LD (INTHOK+1),A
;    LD A,MUSROT ; LD A,HIGH MUSROT
;    LD (INTHOK+2),A
    LD A,$C3
    LD (INTHOK),A
    RET   
    
C1PTR:    .DW 0
C2PTR:    .DW 0
C3PTR:    .DW 0
C1CTR:    .DB 16,18,20,22,20,18       ; note musicali canale A
C2CTR:    .DB 16,18,22,20,16,18       ; note musicali canale B
C3CTR:    .DB 20,22,18,16,20,22       ; note musicali canale B
VOL1:     .DB 15
VOL2:     .DB 15
VOL3:     .DB 15


MUSROT:
    PUSH AF
    LD A,(C1CTR)
    DEC A
    LD (C1CTR),A
    OR A
    JR NZ,CHANB
    LD A,7
    CALL RDPSG
    OR 1
    LD E,A
    LD A,7
    CALL WRTPSG
    LD IX,(C1PTR)
    LD E,(IX+0)
    LD A,0
    CALL WRTPSG
    LD A,(IX+1)
    CP 255
    JR Z,START
    LD E,A
    LD A,1
    CALL WRTPSG
    LD A,(IX+2)
    LD A,(VOL1)
    LD E,A
    LD A,8
    CALL WRTPSG
    LD A,7
    CALL RDPSG
    AND $FE
    LD E,A
    LD A,7
    CALL WRTPSG
    INC IX
    INC IX
    INC IX
    LD (C1PTR),IX
CHANB:
    LD A,(C2CTR)
    DEC A
    LD (C2CTR),A
    OR A
    JR NZ,CHANC
    LD A,7
    CALL RDPSG
    OR 2
    LD E,A
    LD A,7
    CALL WRTPSG
    LD IX,(C2PTR)
    LD E,(IX+0)
    LD A,2
    CALL WRTPSG
    LD E,(IX+1)
    LD A,3
    CALL WRTPSG
    LD A,(VOL2)
    LD E,A
    LD A,9
    CALL WRTPSG
    LD A,7
    CALL RDPSG
    AND $FD
    LD E,A
    LD A,7
    CALL WRTPSG
    LD A,(IX+2)
    LD (C2CTR),A
    INC IX
    INC IX
    INC IX
    LD (C2PTR),IX
CHANC:
    LD A,(C3CTR)
    DEC A
    LD (C3CTR),A
    OR A
    JR NZ,ENDMUS
    LD A,7
    CALL RDPSG
    OR 4
    LD E,A
    LD A,7
    CALL WRTPSG
    LD IX,(C3PTR)
    LD E,(IX+0)
    LD A,4
    CALL WRTPSG
    LD E,(IX+1)
    LD A,5
    CALL WRTPSG
    LD A,(IX+2)
    LD (C3CTR),A
    LD A,(VOL3)
    LD E,A
    LD A,10
    CALL WRTPSG
    LD A,7
    CALL RDPSG
    AND $FB
    LD E,A
    LD A,7
    CALL WRTPSG
    INC IX
    INC IX
    INC IX
    LD (C3PTR),IX
ENDMUS:
    POP AF
    RET
endProgram:

.end
Login or register to post comments