Last active
October 31, 2018 10:10
-
-
Save kuninet/076711eaa23081edcc7a2f6cc4f8f92c to your computer and use it in GitHub Desktop.
SBC6303 YM2151 VGM PLAYER
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; | |
; YM2151 Play for SBC6303 | |
; | |
ORG $0100 | |
; | |
; LILBUG INTERNAL ROUTINE | |
PDATA1 EQU $F80C | |
LIL_MAIN EQU $F952 | |
; | |
MUSIC EQU $3000 | |
OPN_IO EQU $C000 | |
; | |
START EQU * | |
LDS #STACK | |
STS SP | |
; | |
LDX #MESG | |
JSR PDATA1 | |
BSR MAIN | |
; | |
JMP LIL_MAIN ;PGM END | |
; | |
MAIN EQU * | |
LDX #MUSIC | |
LOOP EQU * | |
LDAA 0,X | |
CMPA #$54 | |
BEQ PLAY | |
CMPA #$61 | |
BEQ WAIT11 | |
CMPA #$62 | |
BEQ WAIT22 | |
CMPA #$63 | |
BEQ WAIT33 | |
CMPA #$64 | |
BEQ WAIT33 | |
CMPA #$66 | |
BEQ END_RTN | |
; | |
CMPA #$70 | |
BEQ WAIT4 | |
BGT CHK_WAIT | |
NEXT EQU * | |
INX | |
BRA LOOP | |
; | |
END_RTN EQU * | |
RTS | |
; | |
WAIT11 EQU * | |
JMP WAIT1 | |
WAIT33 EQU * | |
JMP WAIT3 | |
WAIT22 EQU * | |
JMP WAIT2 | |
; | |
PLAY EQU * | |
INX | |
LDAA 0,X | |
PSHA | |
INX | |
LDAB 0,X | |
; | |
WRITEOPN EQU * | |
LDAA OPN_IO+1 | |
ROLA | |
BCS WRITEOPN | |
; | |
PULA | |
STAA OPN_IO | |
NOP ;DUMMY | |
NOP ;DUMMY | |
STAB OPN_IO+1 | |
JMP NEXT | |
; | |
CHK_WAIT EQU * | |
CMPA #$80 | |
BLT NEXT | |
; | |
WAIT4 EQU * | |
ANDA $0F | |
INCA | |
STAA WAIT_T+1 | |
LDAA #0 | |
STAA WAIT_T | |
JSR WAIT | |
JMP NEXT | |
; | |
WAIT1 EQU * | |
INX | |
LDAA 0,X | |
STAA WAIT_T+1 | |
INX | |
LDAA 0,X | |
STAA WAIT_T | |
BSR WAIT | |
JMP NEXT | |
; | |
WAIT2 EQU * | |
STS SP | |
LDS #735 | |
STS WAIT_T | |
LDS SP | |
BSR WAIT | |
JMP NEXT | |
; | |
WAIT3 EQU * | |
STS SP | |
LDS #882 | |
STS WAIT_T | |
LDS SP | |
BSR WAIT | |
JMP NEXT | |
; | |
; | |
WAIT EQU * | |
STX X_BUF | |
LDX WAIT_T | |
; | |
WAIT_LOOP EQU * | |
BSR WAIT1MS | |
DEX | |
BEQ WAIT_END | |
BRA WAIT_LOOP | |
; | |
WAIT_END EQU * | |
LDX X_BUF | |
RTS | |
; | |
WAIT1MS EQU * | |
LDAA #1 | |
WAIT1MS_LOOP EQU * | |
DECA | |
NOP ;DUMMY | |
NOP ;DUMMY | |
NOP ;DUMMY | |
BNE WAIT1MS_LOOP | |
RTS | |
; MESSAGE | |
MESG FCB $0D,$0C | |
FCC "** YM2151 PLAY for SBC6303 **" | |
FCB $0D,$0C,4 | |
; RAM | |
SP RMB 2 ; STACK POINTER STORE | |
X_BUF RMB 2 ; IX BUFF | |
WAIT_T RMB 2 | |
; STACK | |
RMB 46 | |
STACK RMB 1 ;STACK POINTER |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment