Name address decoder for sid player;PartNo 00 ;Date 05.08.2015 ;Revision 01 ;Designer i_r_on ;Company none;Assembly None ;Location ;Device G20V8AS;/* *************** INPUT PINS *********************/PIN 2 = S5 ; PIN 3 = S4 ; PIN 4 = S3 ; PIN 5 = S2 ;PIN 6 = S1 ;PIN 7 = S0 ;PIN 13 = !OE ; /* *************** OUTPUT PINS *********************/PIN 15 = CS0 ; PIN 16 = CS1 ; PIN 17 = CS2 ; FIELD SIGNALS = [S5..0]; /* [BC, PHI2, A15, A14, A13, A12]; */FIELD SEL = [CS2..0]; /*SIDCS, RAMCS, ROMCS*/TABLE SIGNALS => SEL {/* BC = 0, PHI2 = 0 */['b'000000] => 'b'111;['b'000001] => 'b'111;['b'000010] => 'b'111;['b'000011] => 'b'111;['b'000100] => 'b'111;['b'000101] => 'b'111;['b'000110] => 'b'111;['b'000111] => 'b'111;['b'001000] => 'b'111;['b'001001] => 'b'111;['b'001010] => 'b'111;['b'001011] => 'b'111;['b'001100] => 'b'111;['b'001101] => 'b'111;['b'001110] => 'b'111;['b'001111] => 'b'111;/* BC = 0, PHI2 = 1 */['b'010000] => 'b'101;['b'010001] => 'b'101;['b'010010] => 'b'101;['b'010011] => 'b'101;['b'010100] => 'b'101;['b'010101] => 'b'101;['b'010110] => 'b'101;['b'010111] => 'b'101;['b'011000] => 'b'111;['b'011001] => 'b'111;['b'011010] => 'b'111;['b'011011] => 'b'111;['b'011100] => 'b'111;['b'011101] => 'b'011;['b'011110] => 'b'111;['b'011111] => 'b'111;/* BC = 1, PHI2 = 0 */['b'100000] => 'b'111;['b'100001] => 'b'111;['b'100010] => 'b'111;['b'100011] => 'b'111;['b'100100] => 'b'111;['b'100101] => 'b'111;['b'100110] => 'b'111;['b'100111] => 'b'111;['b'101000] => 'b'111;['b'101001] => 'b'111;['b'101010] => 'b'111;['b'101011] => 'b'111;['b'101100] => 'b'111;['b'101101] => 'b'111;['b'101110] => 'b'111;['b'101111] => 'b'110;/* BC = 1, PHI2 = 1 */['b'110000] => 'b'101;['b'110001] => 'b'101;['b'110010] => 'b'101;['b'110011] => 'b'101;['b'110100] => 'b'101;['b'110101] => 'b'101;['b'110110] => 'b'101;['b'110111] => 'b'101;['b'111000] => 'b'111;['b'111001] => 'b'111;['b'111010] => 'b'111;['b'111011] => 'b'111;['b'111100] => 'b'111;['b'111101] => 'b'011;['b'111110] => 'b'111;['b'111111] => 'b'110;}
*=$FC00 ; Fixed here but the code should be relocatable CLD ; Close decimal mode LDA #$20 ; Operand of this command is a placeholder (will be patched by PIC) STA $FFFA LDA #$FC ; Placeholder STA $FFFB LDA #$00 ; Init music - Placeholder JSR $1000 ; Placeholder CLVTHERE: BVC THERE ; Idle main loopCOUNTER: .BYTE 00 *=$FC20 ; NMI routine is here.... PHA INC COUNTER ; Placeholder LDA #$32 ; Placeholder CMP COUNTER BNE OUT LDA #$00 STA COUNTER ; Placeholder ; Call the play routine. $1003 here is just a placeholder. ; PIC will send the actual play address JSR $1003 ; PlaceholderOUT: PLA RTI ;#define ROUTINELO = 0x02;#define ROUTINEHI = 0x07;#define STARTMUSIC = 0x0C;#define INITLO = 0x0E;#define INITHI = 0x0F;#define COUNTERLO = 0x22;#define COUNTERHI = 0x23;#define PALNTSC = 0x25;#define COUNTERLO2 = 0x27;#define COUNTERHI2 = 0x28;#define COUNTERLO3 = 0x2E;#define COUNTERHI3 = 0x2F;#define PLAYLO = 0x31;#define PLAYHI = 0x32