X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=hexed%2Fsega_gcc.s;h=59fa073414404c8362f28ceb5d4480c41ba042cd;hb=HEAD;hp=441d74c6de5c786b021024d3a886edb99626d5b1;hpb=27d5cc886de3c3481bba02f83c52a471521b4dec;p=megadrive.git diff --git a/hexed/sega_gcc.s b/hexed/sega_gcc.s index 441d74c..59fa073 100644 --- a/hexed/sega_gcc.s +++ b/hexed/sega_gcc.s @@ -1,13 +1,3 @@ -*------------------------------------------------------- -* -* Sega startup code for the GNU Assembler -* Translated from: -* Sega startup code for the Sozobon C compiler -* Written by Paul W. Lee -* Modified from Charles Coty's code -* -*------------------------------------------------------- - dc.l 0x0,0x200 dc.l INT,INT,INT,INT,INT,INT,INT dc.l INT,INT,INT,INT,INT,INT,INT,INT @@ -18,185 +8,99 @@ dc.l INT,INT,INT,INT,INT,INT,INT,INT dc.l INT,INT,INT,INT,INT,INT,INT .ascii "SEGA GENESIS " - .ascii "hexed (c) notaz, 2009 " - .ascii "HEXED (C) NOTAZ, 2009 " + .ascii "hexed (c) notaz, 2009-2011 " + .ascii "HEXED (C) NOTAZ, 2009-2011 " .ascii "GM 00000000-00" .byte 0x00,0x00 - .ascii "JD " - .byte 0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00 - .byte 0x00,0xff,0x00,0x00,0xff,0xff,0xff,0xff + .ascii "J " + dc.l 0x000000,0x1fffff + dc.l 0xff0000,0xffffff .ascii " " .ascii " " .ascii " " .ascii "JUE " -*debugee: -* bra debugee - tst.l 0xa10008 - bne SkipJoyDetect - tst.w 0xa1000c -SkipJoyDetect: - bne SkipSetup - lea Table,%a5 - movem.w (%a5)+,%d5-%d7 - movem.l (%a5)+,%a0-%a4 -* Check Version Number - move.b -0x10ff(%a1),%d0 - andi.b #0x0f,%d0 - beq WrongVersion -* Sega Security Code (SEGA) - move.l #0x53454741,0x2f00(%a1) -WrongVersion: - move.w (%a4),%d0 - moveq #0x00,%d0 - movea.l %d0,%a6 - move %a6,%usp -* Set VDP registers - moveq #0x17,%d1 -FillLoop: - move.b (%a5)+,%d5 - move.w %d5,(%a4) - add.w %d7,%d5 - dbra %d1,FillLoop - move.l (%a5)+,(%a4) - move.w %d0,(%a3) - move.w %d7,(%a1) - move.w %d7,(%a2) -L0250: - btst %d0,(%a1) - bne L0250 -* Put initial values into a00000 - moveq #0x25,%d2 -Filla: - move.b (%a5)+,(%a0)+ - dbra %d2,Filla - move.w %d0,(%a2) - move.w %d0,(%a1) - move.w %d7,(%a2) -L0262: - move.l %d0,-(%a6) - dbra %d6,L0262 - move.l (%a5)+,(%a4) - move.l (%a5)+,(%a4) -* Put initial values into c00000 - moveq #0x1f,%d3 -Filc0: - move.l %d0,(%a3) - dbra %d3,Filc0 - move.l (%a5)+,(%a4) -* Put initial values into c00000 - moveq #0x13,%d4 -Fillc1: - move.l %d0,(%a3) - dbra %d4,Fillc1 -* Put initial values into c00011 - moveq #0x03,%d5 -Fillc2: - move.b (%a5)+,0x0011(%a3) - dbra %d5,Fillc2 - move.w %d0,(%a2) - movem.l (%a6),%d0-%d7/%a0-%a6 - move #0x2700,%sr -SkipSetup: - bra Continue -Table: - dc.w 0x8000, 0x3fff, 0x0100, 0x00a0, 0x0000, 0x00a1, 0x1100, 0x00a1 - dc.w 0x1200, 0x00c0, 0x0000, 0x00c0, 0x0004, 0x0414, 0x302c, 0x0754 - dc.w 0x0000, 0x0000, 0x0000, 0x812b, 0x0001, 0x0100, 0x00ff, 0xff00 - dc.w 0x0080, 0x4000, 0x0080, 0xaf01, 0xd91f, 0x1127, 0x0021, 0x2600 - dc.w 0xf977, 0xedb0, 0xdde1, 0xfde1, 0xed47, 0xed4f, 0xd1e1, 0xf108 - dc.w 0xd9c1, 0xd1e1, 0xf1f9, 0xf3ed, 0x5636, 0xe9e9, 0x8104, 0x8f01 - dc.w 0xc000, 0x0000, 0x4000, 0x0010, 0x9fbf, 0xdfff - -Continue: - tst.w 0x00C00004 - -* set stack pointer -* clr.l %a7 - move.w #0,%a7 - -* user mode - move.w #0x2300,%sr - -* clear Genesis RAM - lea 0xff0000,%a0 - moveq #0,%d0 -clrram: move.w #0,(%a0)+ - subq.w #2,%d0 - bne clrram - -*---------------------------------------------------------- -* -* Load driver into the Z80 memory -* -*---------------------------------------------------------- -* halt the Z80 - move.w #0x100,0xa11100 -* reset it - move.w #0x100,0xa11200 + moveq #0,%d0 + movea.l %d0,%a7 + move %a7,%usp + bra main - lea Z80Driver,%a0 - lea 0xa00000,%a1 - move.l #Z80DriverEnd,%d0 - move.l #Z80Driver,%d1 - sub.l %d1,%d0 -Z80loop: - move.b (%a0)+,(%a1)+ - subq.w #1,%d0 - bne Z80loop - -* enable the Z80 - move.w #0x0,0xa11100 - -*---------------------------------------------------------- - jmp main - -INT: - rte +* INT: +* rte HBL: - /* addq.l #1,htimer */ rte * VBL: * addq.l #1,(vtimer).l * rte -*---------------------------------------------------------- -* -* Z80 Sound Driver -* -*---------------------------------------------------------- -Z80Driver: - dc.b 0xc3,0x46,0x00,0x00,0x00,0x00,0x00,0x00 - dc.b 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 - dc.b 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 - dc.b 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 - dc.b 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 - dc.b 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 - dc.b 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 - dc.b 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 - dc.b 0x00,0x00,0x00,0x00,0x00,0x00,0xf3,0xed - dc.b 0x56,0x31,0x00,0x20,0x3a,0x39,0x00,0xb7 - dc.b 0xca,0x4c,0x00,0x21,0x3a,0x00,0x11,0x40 - dc.b 0x00,0x01,0x06,0x00,0xed,0xb0,0x3e,0x00 - dc.b 0x32,0x39,0x00,0x3e,0xb4,0x32,0x02,0x40 - dc.b 0x3e,0xc0,0x32,0x03,0x40,0x3e,0x2b,0x32 - dc.b 0x00,0x40,0x3e,0x80,0x32,0x01,0x40,0x3a - dc.b 0x43,0x00,0x4f,0x3a,0x44,0x00,0x47,0x3e - dc.b 0x06,0x3d,0xc2,0x81,0x00,0x21,0x00,0x60 - dc.b 0x3a,0x41,0x00,0x07,0x77,0x3a,0x42,0x00 - dc.b 0x77,0x0f,0x77,0x0f,0x77,0x0f,0x77,0x0f - dc.b 0x77,0x0f,0x77,0x0f,0x77,0x0f,0x77,0x3a - dc.b 0x40,0x00,0x6f,0x3a,0x41,0x00,0xf6,0x80 - dc.b 0x67,0x3e,0x2a,0x32,0x00,0x40,0x7e,0x32 - dc.b 0x01,0x40,0x21,0x40,0x00,0x7e,0xc6,0x01 - dc.b 0x77,0x23,0x7e,0xce,0x00,0x77,0x23,0x7e - dc.b 0xce,0x00,0x77,0x3a,0x39,0x00,0xb7,0xc2 - dc.b 0x4c,0x00,0x0b,0x78,0xb1,0xc2,0x7f,0x00 - dc.b 0x3a,0x45,0x00,0xb7,0xca,0x4c,0x00,0x3d - dc.b 0x3a,0x45,0x00,0x06,0xff,0x0e,0xff,0xc3 - dc.b 0x7f,0x00 -Z80DriverEnd: - +* Standard 32X startup code for MD side at 0x3F0 + .org 0x3F0 + + .word 0x287C,0xFFFF,0xFFC0,0x23FC,0x0000,0x0000,0x00A1,0x5128 + .word 0x46FC,0x2700,0x4BF9,0x00A1,0x0000,0x7001,0x0CAD,0x4D41 + .word 0x5253,0x30EC,0x6600,0x03E6,0x082D,0x0007,0x5101,0x67F8 + .word 0x4AAD,0x0008,0x6710,0x4A6D,0x000C,0x670A,0x082D,0x0000 + .word 0x5101,0x6600,0x03B8,0x102D,0x0001,0x0200,0x000F,0x6706 + .word 0x2B78,0x055A,0x4000,0x7200,0x2C41,0x4E66,0x41F9,0x0000 + .word 0x04D4,0x6100,0x0152,0x6100,0x0176,0x47F9,0x0000,0x04E8 + .word 0x43F9,0x00A0,0x0000,0x45F9,0x00C0,0x0011,0x3E3C,0x0100 + .word 0x7000,0x3B47,0x1100,0x3B47,0x1200,0x012D,0x1100,0x66FA + .word 0x7425,0x12DB,0x51CA,0xFFFC,0x3B40,0x1200,0x3B40,0x1100 + .word 0x3B47,0x1200,0x149B,0x149B,0x149B,0x149B,0x41F9,0x0000 + .word 0x04C0,0x43F9,0x00FF,0x0000,0x22D8,0x22D8,0x22D8,0x22D8 + .word 0x22D8,0x22D8,0x22D8,0x22D8,0x41F9,0x00FF,0x0000,0x4ED0 + .word 0x1B7C,0x0001,0x5101,0x41F9,0x0000,0x06BC,0xD1FC,0x0088 + .word 0x0000,0x4ED0,0x0404,0x303C,0x076C,0x0000,0x0000,0xFF00 + .word 0x8137,0x0002,0x0100,0x0000,0xAF01,0xD91F,0x1127,0x0021 + .word 0x2600,0xF977,0xEDB0,0xDDE1,0xFDE1,0xED47,0xED4F,0xD1E1 + .word 0xF108,0xD9C1,0xD1E1,0xF1F9,0xF3ED,0x5636,0xE9E9,0x9FBF + .word 0xDFFF,0x4D41,0x5253,0x2049,0x6E69,0x7469,0x616C,0x2026 + .word 0x2053,0x6563,0x7572,0x6974,0x7920,0x5072,0x6F67,0x7261 + .word 0x6D20,0x2020,0x2020,0x2020,0x2020,0x2043,0x6172,0x7472 + .word 0x6964,0x6765,0x2056,0x6572,0x7369,0x6F6E,0x2020,0x2020 + .word 0x436F,0x7079,0x7269,0x6768,0x7420,0x5345,0x4741,0x2045 + .word 0x4E54,0x4552,0x5052,0x4953,0x4553,0x2C4C,0x5444,0x2E20 + .word 0x3139,0x3934,0x2020,0x2020,0x2020,0x2020,0x2020,0x2020 + .word 0x2020,0x2020,0x2020,0x2020,0x2020,0x2020,0x2020,0x2020 + .word 0x2020,0x2020,0x2020,0x524F,0x4D20,0x5665,0x7273,0x696F + .word 0x6E20,0x312E,0x3000,0x48E7,0xC040,0x43F9,0x00C0,0x0004 + .word 0x3011,0x303C,0x8000,0x323C,0x0100,0x3E3C,0x0012,0x1018 + .word 0x3280,0xD041,0x51CF,0xFFF8,0x4CDF,0x0203,0x4E75,0x48E7 + .word 0x81C0,0x41F9,0x0000,0x063E,0x43F9,0x00C0,0x0004,0x3298 + .word 0x3298,0x3298,0x3298,0x3298,0x3298,0x3298,0x2298,0x3341 + .word 0xFFFC,0x3011,0x0800,0x0001,0x66F8,0x3298,0x3298,0x7000 + .word 0x22BC,0xC000,0x0000,0x7E0F,0x3340,0xFFFC,0x3340,0xFFFC + .word 0x3340,0xFFFC,0x3340,0xFFFC,0x51CF,0xFFEE,0x22BC,0x4000 + .word 0x0010,0x7E09,0x3340,0xFFFC,0x3340,0xFFFC,0x3340,0xFFFC + .word 0x3340,0xFFFC,0x51CF,0xFFEE,0x4CDF,0x0381,0x4E75,0x8114 + .word 0x8F01,0x93FF,0x94FF,0x9500,0x9600,0x9780,0x4000,0x0080 + .word 0x8104,0x8F02,0x48E7,0xC140,0x43F9,0x00A1,0x5180,0x08A9 + .word 0x0007,0xFF80,0x66F8,0x3E3C,0x00FF,0x7000,0x7200,0x337C + .word 0x00FF,0x0004,0x3341,0x0006,0x3340,0x0008,0x4E71,0x0829 + .word 0x0001,0x000B,0x66F8,0x0641,0x0100,0x51CF,0xFFE8,0x4CDF + .word 0x0283,0x4E75,0x48E7,0x8180,0x41F9,0x00A1,0x5200,0x08A8 + .word 0x0007,0xFF00,0x66F8,0x3E3C,0x001F,0x20C0,0x20C0,0x20C0 + .word 0x20C0,0x51CF,0xFFF6,0x4CDF,0x0181,0x4E75,0x41F9,0x00FF + .word 0x0000,0x3E3C,0x07FF,0x7000,0x20C0,0x20C0,0x20C0,0x20C0 + .word 0x20C0,0x20C0,0x20C0,0x20C0,0x51CF,0xFFEE,0x3B7C,0x0000 + .word 0x1200,0x7E0A,0x51CF,0xFFFE,0x43F9,0x00A1,0x5100,0x7000 + .word 0x2340,0x0020,0x2340,0x0024,0x1B7C,0x0003,0x5101,0x2E79 + .word 0x0088,0x0000,0x0891,0x0007,0x66FA,0x7000,0x3340,0x0002 + .word 0x3340,0x0004,0x3340,0x0006,0x2340,0x0008,0x2340,0x000C + .word 0x3340,0x0010,0x3340,0x0030,0x3340,0x0032,0x3340,0x0038 + .word 0x3340,0x0080,0x3340,0x0082,0x08A9,0x0000,0x008B,0x66F8 + .word 0x6100,0xFF12,0x08E9,0x0000,0x008B,0x67F8,0x6100,0xFF06 + .word 0x08A9,0x0000,0x008B,0x6100,0xFF3C,0x303C,0x0040,0x2229 + .word 0x0020,0x0C81,0x5351,0x4552,0x6700,0x0092,0x303C,0x0080 + .word 0x2229,0x0020,0x0C81,0x5344,0x4552,0x6700,0x0080,0x21FC + .word 0x0088,0x02A2,0x0070,0x303C,0x0002,0x7200,0x122D,0x0001 + .word 0x1429,0x0080,0xE14A,0x8242,0x0801,0x000F,0x660A,0x0801 + .word 0x0006,0x6700,0x0058,0x6008,0x0801,0x0006,0x6600,0x004E + .word 0x7020,0x41F9,0x0088,0x0000,0x3C28,0x018E,0x4A46,0x6700 + .word 0x0010,0x3429,0x0028,0x0C42,0x0000,0x67F6,0xB446,0x662C + .word 0x7000,0x2340,0x0028,0x2340,0x002C,0x3E14,0x2C7C,0xFFFF + .word 0xFFC0,0x4CD6,0x7FF9,0x44FC,0x0000,0x6014,0x43F9,0x00A1 + .word 0x5100,0x3340,0x0006,0x303C,0x8000,0x6004,0x44FC,0x0001