@bogumil, post #89
@sanjyuubi, post #91
@bogumil, post #89
dc.w $1111 BRA.W lbC0000C4 NOP dc.l $7D13466A dc.l $4D8E26E6 dc.b 'ICB0369',0 ; ID number lbL000018 dc.l $369 ; ID hex ? dc.l $9FB8D981 lbL000020 dc.l $756F54AA ; checksum dc.l 0 dc.l 0 dc.l 0 dc.l 0 dc.l 0 dc.l 0 dc.l 0 dc.l 0 dc.l 0 dc.b 0 dc.b '$VER: 68060 BootStrap V1.9 (c) Ralph Schmidt' dc.b ' 1993-2001',$A,$D,0 dc.b '$VER: Blizzard PPC Bootstrap V 1.9 (c) Ralph' dc.b ' Schmidt 1993-2001',$A,$D,0 dc.b 0 lbC0000C4 MOVE.B #$13,($F60000) MOVE.L D5,D7 LEA ($BFE001),A3 MOVE.B #3,($200,A3) MOVE.B #2,(A3) LEA ($DFF000),A4 MOVE.W #$7FFF,D0 MOVE.W D0,($9A,A4) NOP MOVE.W D0,($9C,A4) NOP MOVE.W D0,($96,A4) NOP MOVE.W #$174,($32,A4) NOP MOVEC CACR,D0 MOVE.L #0,D0 MOVEC D0,CACR NOP MOVE.L SP,D4 MOVEA.L #$FFFFFC,A6 MOVEA.L A6,SP MOVE.L ($10),D3 LEA (lbC000156,PC),A6 MOVE.L A6,($10) dc.l $4E7A0808 ; MOVEC PCR,D0 ANDI.L #2,D0 CMP.L #2,D0 BEQ.W lbC00014E FNOP MOVE.L #2,D0 dc.l $4E7B0808 ; MOVEC D0,PCR lbC00014E MOVE.L D3,($10) BRA.B lbC000162 lbC000156 MOVE.L D3,($10) MOVE.L #$DEADBEEF,D3 lbC000162 MOVEA.L D4,SP CMP.L #$DEADBEEF,D3 BEQ.W lbC0001C2 MOVEC TC,D0 MOVE.L #$318,D0 MOVEC D0,TC MOVEC ITT0,D0 MOVE.L #$6060,D0 MOVEC D0,ITT0 MOVEC ITT1,D0 MOVE.L #$6060,D0 MOVEC D0,ITT1 MOVEC DTT0,D0 MOVE.L #$6060,D0 MOVEC D0,DTT0 MOVEC DTT1,D0 MOVE.L #$6060,D0 MOVEC D0,DTT1 MOVEC TC,D0 BCLR #15,D0 MOVEC D0,TC NOP lbC0001C2 MOVE.B #0,($E00,A3) NOP MOVE.B #0,($E00,A3) NOP MOVE.B #$40,($E00,A3) NOP MOVE.W #$61A8,D1 lbC0001DE NOP DBRA D1,lbC0001DE MOVE.B #0,($E00,A3) NOP MOVE.B #$FF,($F60038) MOVE.W #$200,($100,A4) MOVE.W #0,($110,A4) MOVE.W #0,($180,A4) MOVE.W #0,D0 MOVE.W D0,($180,A4) MOVE.W #0,($180,A4) lbC000214 MOVE.W #10,D1 lbC000218 NOP MOVE.B ($D00,A3),D2 ANDI.B #8,D2 BEQ.W lbC0002AE MOVE.B #$40,($E00,A3) NOP MOVE.W #$1388,D2 lbC000232 NOP DBRA D2,lbC000232 CLR.L D2 MOVE.B ($C00,A3),D2 NOT.B D2 ROR.B #1,D2 CMP.B #2,D2 BEQ.W lbC0002E4 CMP.B #$21,D2 BNE.W lbC00025A MOVE.B #1,($F60038) lbC00025A CMP.B #$37,D2 BNE.W lbC00026A MOVE.B #2,($F60038) lbC00026A CMP.B #$33,D2 BNE.W lbC00027C MOVE.B #4,($F60038) NOP lbC00027C CMP.B #$19,D2 BNE.W lbC00028E MOVE.B #8,($F60038) NOP lbC00028E CMP.B #$20,D2 BNE.W lbC00029E MOVE.B #15,($F60038) lbC00029E CMP.B #$45,D2 BEQ.W lbC0002BE MOVE.B #0,($E00,A3) NOP lbC0002AE DBRA D1,lbC000218 ADDI.W #1,D0 CMP.W #$FFF,D0 BNE.W lbC000214 lbC0002BE LEA (lbL000020,PC),A0 MOVEQ #0,D0 MOVE.L #$13FF8,D1 lbC0002CA ADD.L (A0)+,D0 SUBQ.L #1,D1 BNE.W lbC0002CA TST.L D0 BEQ.B lbC0002E0 MOVE.B #15,($F60038) NOP lbC0002E0 MOVE.L D7,D5 JMP (A5) lbC0002E4 MOVE.L #$4000,D0 MOVE.L #0,D1 MOVEA.L #0,A0 lbC0002F6 MOVE.L D1,(A0)+ DBRA D0,lbC0002F6 MOVE.L #$11114EF9,(0) NOP MOVE.L #$F800D0,(4) NOP MOVEA.L #$F60000,A0 MOVE.B #3,($200,A3) MOVE.B #3,(A3) NOP MOVE.B #$A0,(A0) NOP BRA.W lbC0002E0 dc.l $CAFECAFE ; unused ? MULU.W ????,D5 lbC000334 MOVE.L (4,A0),D0 MOVE.L #$5AA5A55A,(4,A0) NOP CMPI.L #$5AA5A55A,(4,A1) BNE.B lbC000370 MOVE.L #$A55A5AA5,(4,A0) NOP CMPI.L #$A55A5AA5,(4,A1) BNE.B lbC000370 MOVE.L D0,(4,A0) NOP EXG D1,A1 MOVE.L #1,D0 JMP (A1) lbC000370 MOVE.L D0,(4,A0) MOVE.L (A0),D0 MOVE.L #$5AA5A55A,(A0) NOP CMPI.L #$5AA5A55A,(A1) BNE.B lbC0003A4 MOVE.L #$A55A5AA5,(A0) NOP CMPI.L #$A55A5AA5,(A1) BNE.B lbC0003A4 MOVE.L D0,(A0) NOP EXG D1,A1 MOVE.L #1,D0 JMP (A1) lbC0003A4 MOVE.L D0,(A0) NOP EXG D1,A1 MOVE.L #0,D0 JMP (A1) lbC0003B2 MOVE.L (4,A0),D0 MOVE.B #$12,(4,A0) NOP MOVE.B #$34,(5,A0) NOP MOVE.B #$56,(6,A0) NOP MOVE.B #$78,(7,A0) NOP CMPI.L #$12345678,(4,A0) BNE.W lbC0004C0 MOVE.L #0,(4,A0) NOP CMPI.L #0,(4,A0) BNE.W lbC0004C0 MOVE.L #$5AA5A55A,(4,A0) NOP CMPI.L #$5AA5A55A,(4,A0) BNE.W lbC0004C0 MOVE.L #$A55A5AA5,(4,A0) NOP CMPI.L #$A55A5AA5,(4,A0) BNE.W lbC0004C0 MOVE.L #$FFFFFFFF,(4,A0) NOP CMPI.L #$FFFFFFFF,(4,A0) BNE.W lbC0004C0 MOVE.L D0,(4,A0) NOP CMP.L (4,A0),D0 BNE.W lbC0004C0 MOVE.L (A0),D0 MOVE.B #$12,(0,A0) NOP MOVE.B #$34,(1,A0) NOP MOVE.B #$56,(2,A0) NOP MOVE.B #$78,(3,A0) NOP CMPI.L #$12345678,(A0) BNE.B lbC0004C0 MOVE.L #0,(A0) NOP CMPI.L #0,(A0) BNE.B lbC0004C0 MOVE.L #$5AA5A55A,(A0) NOP CMPI.L #$5AA5A55A,(A0) BNE.B lbC0004C0 MOVE.L #$A55A5AA5,(A0) NOP CMPI.L #$A55A5AA5,(A0) BNE.B lbC0004C0 MOVE.L #$FFFFFFFF,(A0) NOP CMPI.L #$FFFFFFFF,(A0) BNE.B lbC0004C0 MOVE.L D0,(A0) NOP CMP.L (A0),D0 BNE.B lbC0004C0 EXG D1,A1 MOVEQ #1,D0 JMP (A1) lbC0004C0 EXG D1,A1 MOVEQ #0,D0 JMP (A1) lbC0004C6 CMPA.L A2,A1 BHI.W lbC00051E MOVEA.L A1,A0 MOVE.L A0,D1 LEA (lbC0004DA,PC),A0 EXG D1,A0 BRA.W lbC0003B2 lbC0004DA EXG D1,A1 BEQ.W lbC00057C lbC0004E0 ADDA.L #$80000,A0 CMPA.L A0,A2 BLS.W lbC000514 MOVE.L A0,D1 LEA (lbC0004F8,PC),A0 EXG D1,A0 BRA.W lbC0003B2 lbC0004F8 EXG D1,A1 BEQ.W lbC000516 MOVE.L A0,D1 LEA (lbC00050A,PC),A0 EXG D1,A0 BRA.W lbC000334 lbC00050A EXG D1,A1 BNE.W lbC000516 BRA.W lbC0004E0 lbC000514 MOVEA.L A2,A0 lbC000516 MOVE.L A0,D0 SUB.L A1,D0 BRA.W lbC00057E lbC00051E SUBA.L #8,A1 SUBA.L #8,A2 MOVEA.L A1,A0 MOVE.L A0,D1 LEA (lbC000538,PC),A0 EXG D1,A0 BRA.W lbC0003B2 lbC000538 EXG D1,A1 BEQ.W lbC00057C lbC00053E SUBA.L #$80000,A0 CMPA.L A2,A0 BLS.W lbC000572 MOVE.L A0,D1 LEA (lbC000556,PC),A0 EXG D1,A0 BRA.W lbC0003B2 lbC000556 EXG D1,A1 BEQ.W lbC000574 MOVE.L A0,D1 LEA (lbC000568,PC),A0 EXG D1,A0 BRA.W lbC000334 lbC000568 EXG D1,A1 BNE.W lbC000574 BRA.W lbC00053E lbC000572 MOVEA.L A2,A0 lbC000574 MOVE.L A1,D0 SUB.L A0,D0 BRA.W lbC00057E lbC00057C MOVEQ #0,D0 lbC00057E JMP (A6) lbC000580 MOVE.L ($7FFFFFFC),D1 MOVE.L #0,($7FFFFFFC) NOP CMPI.L #0,($FFFFFC) BNE.B lbC0005C0 MOVE.L #$5AA5A55A,($7FFFFFFC) NOP CMPI.L #$5AA5A55A,($FFFFFC) BNE.B lbC0005C0 MOVE.L D1,($7FFFFFFC) MOVEQ #1,D1 JMP (A6) lbC0005C0 MOVE.L D1,($7FFFFFFC) MOVE.L ($77FFFFFC),D1 MOVE.L #0,($77FFFFFC) NOP CMPI.L #0,($FFFFFC) BNE.B lbC000606 MOVE.L #$5AA5A55A,($77FFFFFC) NOP CMPI.L #$5AA5A55A,($FFFFFC) BNE.B lbC000606 MOVE.L D0,($77FFFFFC) MOVEQ #1,D1 JMP (A6) lbC000606 MOVE.L D0,($77FFFFFC) MOVEQ #0,D1 JMP (A6) lbC000610 MOVEM.L D0-D7/A0-A6,-(SP) MOVE.B #0,($F60053) NOP MOVEA.L #$48000000,A1 MOVEA.L #$50000000,A2 LEA (lbC000632,PC),A6 BRA.W lbC0004C6 lbC000632 MOVE.L D0,D2 MOVEA.L #$78000000,A1 MOVEA.L #$80000000,A2 LEA (lbC000648,PC),A6 BRA.W lbC0004C6 lbC000648 MOVE.L D0,D3 MOVEA.L #$48000000,A1 MOVEA.L #$40000000,A2 LEA (lbC00065E,PC),A6 BRA.W lbC0004C6 lbC00065E MOVE.L D0,D4 MOVEA.L #$78000000,A1 MOVEA.L #$70000000,A2 LEA (lbC000674,PC),A6 BRA.W lbC0004C6 lbC000674 MOVE.L D0,D5 MOVEA.L #$50000000,A1 MOVEA.L #$48000000,A2 LEA (lbC00068A,PC),A6 BRA.W lbC0004C6 lbC00068A CMP.L D3,D2 BHI.B lbC000694 MOVE.L #0,D2 lbC000694 CMP.L D5,D4 BHI.B lbC00069E MOVE.L #0,D4 lbC00069E OR.L D2,D2 BNE.B lbC0006B0 OR.L D3,D3 BNE.B lbC0006B0 MOVE.B #0,($F60052) NOP lbC0006B0 MOVE.L #0,D0 CMP.L D3,D2 BHI.B lbC0006C0 ORI.L #1,D0 lbC0006C0 CMP.L D5,D4 BHI.B lbC0006CA ORI.L #2,D0 lbC0006CA CMP.L #0,D0 BNE.B lbC0006E2 MOVEA.L #$48000000,A0 SUBA.L D4,A0 MOVE.L D2,D0 ADD.L D4,D0 BRA.W lbC00071E lbC0006E2 CMP.L #1,D0 BNE.B lbC0006FA MOVEA.L #$58000000,A0 SUBA.L D4,A0 MOVE.L D3,D0 ADD.L D4,D0 BRA.W lbC00071E lbC0006FA CMP.L #2,D0 BNE.B lbC000712 MOVEA.L #$68000000,A0 SUBA.L D5,A0 MOVE.L D2,D0 ADD.L D5,D0 BRA.W lbC00071E lbC000712 MOVEA.L #$78000000,A0 SUBA.L D5,A0 MOVE.L D3,D0 ADD.L D5,D0 lbC00071E CMP.L #$80000,D0 BCS.B lbC000736 LEA (lbC00072E,PC),A6 BRA.W lbC000580 lbC00072E BEQ.B lbC000736 SUBI.L #$80000,D0 lbC000736 CMP.L #$80000,D0 BCS.B lbC000744 SUBI.L #$80000,D0 lbC000744 MOVE.L #$505,D1 MOVE.L #$28,D2 MOVEA.L #0,A1 CMP.L #0,D0 BEQ.B lbC000768 ******* exec.library/AddMemList **************************************** * * NAME * AddMemList - add memory to the system free pool * * SYNOPSIS * AddMemList( size, attributes, pri, base, name ) * D0 D1 D2 A0 A1 MOVEA.L (4),A6 JSR (-$26A,A6) lbC000768 MOVEM.L (SP)+,D0-D7/A0-A6 RTS dc.w 0 lbC000770 ILLEGAL dc.l lbC000770+$F00000 dc.l lbC0007DC+$F00000 dc.l $2010078 dc.l BlizzardPPCEa.MSG+$F00000 dc.l BlizzardPPCEa.MSG0+$F00000 dc.l lbC0007C0+$F00000 BlizzardPPCEa.MSG dc.b 'BlizzardPPCEarlyStartup',0,0 dc.b 0 BlizzardPPCEa.MSG0 dc.b 'Blizzard PPC Early-Startup',0,0 lbC0007C0 MOVEM.L A0/A1/A5/A6,-(SP) BTST #1,($F60038) BEQ.B lbC0007D2 BSR.W lbC000610 lbC0007D2 MOVEM.L (SP)+,A0/A1/A5/A6 MOVEQ #0,D0 RTS dc.w 0 lbC0007DC NOP dc.w 0 lbC0007E0 ILLEGAL dc.l lbC0007E0+$F00000 dc.l lbC00093C+$F00000 dc.l $1010073 dc.l BlizzardPPCLa.MSG+$F00000 dc.l BlizzardPPCSt.MSG+$F00000 dc.l lbC000828+$F00000 BlizzardPPCLa.MSG dc.b 'BlizzardPPCLauncher',0,0 dc.b 0 BlizzardPPCSt.MSG dc.b 'Blizzard PPC Startup',0,0 dc.b 0 dc.b 0 lbC000828 BRA.W lbC00082C lbC00082C MOVEM.L A0/A1/A5/A6,-(SP) MOVEA.L (4),A6 LEA (lbC000850,PC),A5 JSR (-$1E,A6) MOVEM.L (SP)+,A0/A1/A5/A6 MOVE.L D5,-(SP) MOVE.W ($DFF01E),D5 MOVE.L (SP)+,D5 MOVEQ #0,D0 RTS lbC000850 MOVEC VBR,A0 LEA (lbC000872,PC),A1 MOVE.L A1,($F4,A0) RTE lbC00085E LEA (lbC00085E,PC),A5 JSR (-$1E,A6) RTS MOVEC VBR,A0 MOVE.L ($F4,A0),D0 RTE lbC000872 MOVEM.L D0-D7/A0-A7,-(SP) MOVE.L USP,A0 MOVE.L A0,($3C,SP) MOVE.W ($40,SP),D0 MOVEA.L ($42,SP),A0 MOVEQ #0,D1 MOVE.W (A0)+,D1 MOVE.W D1,D2 ANDI.W #$F138,D2 CMP.W #$108,D2 BEQ.W lbC0008B2 SUBA.L #2,A0 ADDA.L #2,A0 MOVEM.L (SP)+,D0-D7/A0-A6 LEA (4,SP),SP MOVE.L ($10),-(SP) RTS lbC0008B2 MOVE.L D1,D3 ANDI.W #$E00,D3 LSR.W #7,D3 MOVE.L D1,D4 ANDI.W #7,D4 LSL.W #2,D4 MOVEA.L ($20,SP,D4.W),A2 MOVE.W (A0)+,D5 LEA (A2,D5.W),A1 MOVE.W D1,D2 ANDI.W #$C0,D2 BEQ.B lbC00091C CMP.W #$40,D2 BEQ.B lbC000904 CMP.W #$80,D2 BEQ.B lbC0008F8 MOVE.L (SP,D3.W),D6 MOVEQ #3,D7 lbC0008E6 ROL.L #8,D6 MOVE.B D6,(A1) NOP LEA (2,A1),A1 DBRA D7,lbC0008E6 BRA.W lbC00092E lbC0008F8 MOVE.W (2,SP,D3.W),D6 MOVEQ #1,D7 SWAP D7 BRA.W lbC0008E6 lbC000904 MOVEQ #3,D7 lbC000906 LSL.L #8,D6 NOP MOVE.B (A1),D6 LEA (2,A1),A1 DBRA D7,lbC000906 MOVE.L D6,(SP,D3.W) BRA.W lbC00092E lbC00091C NOP MOVE.B (A1),D6 LSL.L #8,D6 LEA (2,A1),A1 NOP MOVE.B (A1),D6 MOVE.W D6,(2,SP,D3.W) lbC00092E MOVE.L A0,($42,SP) MOVEM.L (SP)+,D0-D7/A0-A6 LEA (4,SP),SP RTE lbC00093C ILLEGAL dc.l lbC00093C+$F00000 dc.l lbW000B36+$F00000 dc.l $2010078 dc.l BlizzardPPCID.MSG+$F00000 dc.l BlizzardPower.MSG+$F00000 dc.l lbC000B30+$F00000 dc.w 0 BlizzardPPCID.MSG dc.b 'BlizzardPPC.IDTag',0,0 dc.b 0 BlizzardPower.MSG dc.b 'Blizzard PowerPC',$A,$D dc.b '(c) phase 5 digital products 1997',$A,$D dc.b 'Concept: Gerald W. Carda, Wolf B. Die' dc.b 'trich',$A,$D,$A,$D dc.b 'Hardware: Gerald W. Carda, Christian K' dc.b 'eller,Doc L. Zhang',$A,$D,$A,$D dc.b 'Software: KING Ralph (Schmidt), KING F' dc.b 'OR ONE DAY Frank (Mariak),',$A,$D dc.b ' André Osterhues, Frank Gerbe' dc.b 'rding',$A,$D,$A,$D dc.b 'Documentation: Michael Sisti(g)x, Uwe Trebb' dc.b 'ien',$A,$D,$A,$D dc.b 'Best Boy: Thomas (Solderhand) Knäbel',$A,$D,$A,$D dc.b 'Best Girl:' dc.b 9 dc.b ' Brita (isses schon fertig) Kobuschinski',$A,$D,$A,$D,0 dc.b 0 dc.b 0 lbC000B30 NOP MOVEQ #0,D0 RTS lbW000B36 dc.w 0 lbC000B38 ILLEGAL dc.l lbC000B38+$F00000 dc.l lbL00F558+$F00000 dc.l $201006A dc.l BlizzardPPCSC.MSG+$F00000 dc.l BlizzardPower.MSG0+$F00000 dc.l lbC000B94+$F00000 dc.w 0 BlizzardPPCSC.MSG dc.b 'BlizzardPPCSCSI',0 BlizzardPower.MSG0 dc.b 'Blizzard PowerPC SCSI INIT',0,0 expansionlibr.MSG dc.b 'expansion.library',0,0 dc.b 0 lbC000B94 MOVEM.L D1-D7/A0-A6,-(SP) NOP BTST #0,($F60038) BEQ.W lbC000C2A MOVEA.L (4),A6 MOVE.L #0,D0 LEA (expansionlibr.MSG,PC),A1 JSR (-$228,A6) TST.L D0 BEQ.W lbC000C2A MOVEA.L D0,A6 JSR (-$30,A6) TST.L D0 BEQ.W lbC000C20 MOVEA.L D0,A0 LEA (lbL000C38,PC),A1 MOVE.B #2,(14,A0) LEA (lbL000C34,PC),A1 MOVE.L A1,($20,A0) MOVE.L #$20000,($24,A0) MOVE.W #2,($2A,A0) MOVE.W #$F0,($28,A0) MOVEQ #4,D0 MOVE.W D0,($1A,A0) MOVE.B #$FF,($13,A0) MOVE.W #$2140,($14,A0) MOVE.B #$6E,($11,A0) MOVE.L (lbL000018,PC),($16,A0) MOVE.B #$D2,($10,A0) JSR (-$1E,A6) BRA.W lbC000C20 lbC000C20 MOVEA.L A6,A1 MOVEA.L (4).W,A6 JSR (-$19E,A6) lbC000C2A MOVEM.L (SP)+,D1-D7/A0-A6 MOVEQ #0,D0 RTS dc.w 0 lbL000C34 dc.l 0 lbL000C38 incbin ram:blizzppc.device.bin lbL00F558
@Don_Adan, post #72
@bogumil, post #92
IFND LIBRARIES_CONFIGREGS_I LIBRARIES_CONFIGREGS_I SET 1 ** ** $Id: configregs.i,v 39.0 91/10/28 16:27:49 mks Exp $ ** ** AutoConfig (tm) hardware register and bit definitions ** ** (C) Copyright 1985,1989,1990 Commodore-Amiga, Inc. ** All Rights Reserved ** IFND EXEC_TYPES_I INCLUDE "exec/types.i" ENDC ;EXEC_TYPES_I ** ** AutoConfig (tm) boards each contain a 32 byte "ExpansionRom" area that is ** read by the system software at configuration time. Configuration of each ** board starts when the ConfigIn* signal is passed from the previous board ** (or from the system for the first board). Each board will present it's ** ExpansionRom structure at location $00E80000 to be read by the system. ** This file defines the appearance of the ExpansionRom area. ** ** Expansion boards are actually organized such that only one nybble per ** 16 bit word contains valid information. The low nybbles of each ** word are combined to fill the structure below. (This table is structured ** as LOGICAL information. This means that it never corresponds exactly ** with a physical implementation.) ** ** The ExpansionRom space is further split into two regions: The first 16 ** bytes are read-only. Except for the er_type field, this area is inverted ** by the system software when read in. The second 16 bytes contain the ** control portion, where all read/write registers are located. ** ** The system builds one "ConfigDev" structure for each board found. The ** list of boards can be examined using the expansion.library/FindConfigDev ** function. ** ** A special "hacker" Manufacturer ID number is reserved for test use: ** 2011 ($7DB). When inverted this will look like $F824. ** STRUCTURE ExpansionRom,0 ;-First 16 bytes of the expansion ROM UBYTE er_Type ;Board type, size and flags UBYTE er_Product ;Product number, assigned by manufacturer UBYTE er_Flags ;Flags UBYTE er_Reserved03 ;Must be zero ($ff inverted) UWORD er_Manufacturer ;Unique ID,ASSIGNED BY COMMODORE-AMIGA! ULONG er_SerialNumber ;Available for use by manufacturer UWORD er_InitDiagVec ;Offset to optional "DiagArea" structure UBYTE er_Reserved0c UBYTE er_Reserved0d UBYTE er_Reserved0e UBYTE er_Reserved0f LABEL ExpansionRom_SIZEOF ** ** Note that use of the ec_BaseAddress register is tricky. The system ** will actually write twice. First the low order nybble is written ** to the ec_BaseAddress register+2 (D15-D12). Then the entire byte is ** written to ec_BaseAddress (D15-D8). This allows writing of a byte-wide ** address to nybble size registers. ** STRUCTURE ExpansionControl,0 ;-Second 16 bytes of the expansion ROM UBYTE ec_Interrupt ;Optional interrupt control register UBYTE ec_Z3_HighBase ;Zorro III : Bits 24-31 of config address UBYTE ec_BaseAddress ;Zorro II/III: Bits 16-23 of config address UBYTE ec_Shutup ;The system writes here to shut up a board UBYTE ec_Reserved14 UBYTE ec_Reserved15 UBYTE ec_Reserved16 UBYTE ec_Reserved17 UBYTE ec_Reserved18 UBYTE ec_Reserved19 UBYTE ec_Reserved1a UBYTE ec_Reserved1b UBYTE ec_Reserved1c UBYTE ec_Reserved1d UBYTE ec_Reserved1e UBYTE ec_Reserved1f LABEL ExpansionControl_SIZEOF ** ** many of the constants below consist of a triplet of equivalent ** definitions: xxMASK is a bit mask of those bits that matter. ** xxBIT is the starting bit number of the field. xxSIZE is the ** number of bits that make up the definition. This method is ** used when the field is larger than one bit. ** ** If the field is only one bit wide then the xxB_xx and xxF_xx convention ** is used (xxB_xx is the bit number, and xxF_xx is mask of the bit). ** ** manifest constants ** E_SLOTSIZE EQU $10000 E_SLOTMASK EQU $ffff E_SLOTSHIFT EQU 16 ** these define the free regions of Zorro memory space. ** THESE MAY WELL CHANGE FOR FUTURE PRODUCTS! E_EXPANSIONBASE EQU $00e80000 ;Zorro II config address EZ3_EXPANSIONBASE EQU $ff000000 ;Zorro III config address E_EXPANSIONSIZE EQU $00080000 ;Zorro II I/O type cards E_EXPANSIONSLOTS EQU 8 E_MEMORYBASE EQU $00200000 ;Zorro II 8MB space E_MEMORYSIZE EQU $00800000 E_MEMORYSLOTS EQU 128 EZ3_CONFIGAREA EQU $40000000 ;Zorro III space EZ3_CONFIGAREAEND EQU $7FFFFFFF ;Zorro III space EZ3_SIZEGRANULARITY EQU $00080000 ;512K increments ***** er_Type definitions (ttldcmmm) **************************************** ** er_Type board type bits -- the OS ignores "old style" boards ** ERT_TYPEMASK EQU $c0 ;Bits 7-6 ERT_TYPEBIT EQU 6 ERT_TYPESIZE EQU 2 ERT_NEWBOARD EQU $c0 ERT_ZORROII EQU ERT_NEWBOARD ERT_ZORROIII EQU $80 ** other bits defined in er_Type ** BITDEF ERT,MEMLIST,5 ; Link RAM into free memory list BITDEF ERT,DIAGVALID,4 ; ROM vector is valid BITDEF ERT,CHAINEDCONFIG,3 ; Next config is part of the same card ** er_Type field memory size bits ** ERT_MEMMASK EQU $07 ;Bits 2-0 ERT_MEMBIT EQU 0 ERT_MEMSIZE EQU 3 ***** er_Flags byte -- for those things that didn't fit into the type byte **** ***** the hardware stores this byte in inverted form **** BITDEF ERF,MEMSPACE,7 ; Wants to be in 8 meg space. ; (NOT IMPLEMENTED) BITDEF ERF,NOSHUTUP,6 ; Board can't be shut up. BITDEF ERF,EXTENDED,5 ; Zorro III: Use extended size table ; for bits 0-2 of er_Type. ; Zorro II : Must be 0 BITDEF ERF,ZORRO_III,4 ; Zorro III: must be 1 ; Zorro II : must be 0 ERT_Z3_SSMASK EQU $0F ; Bits 3-0. Zorro III Sub-Size. How ERT_Z3_SSBIT EQU 0 ; much space the card actually uses ERT_Z3_SSSIZE EQU 4 ; (regardless of config granularity) ; Zorro II : must be 0 ** ec_Interrupt register (unused) ********************************************* BITDEF ECI,INTENA,1 BITDEF ECI,RESET,3 BITDEF ECI,INT2PEND,4 BITDEF ECI,INT6PEND,5 BITDEF ECI,INT7PEND,6 BITDEF ECI,INTERRUPTING,7 ************************************************************************** ** ** these are the specifications for the diagnostic area. If the Diagnostic ** Address Valid bit is set in the Board Type byte (the first byte in ** expansion space) then the Diag Init vector contains a valid offset. ** ** The Diag Init vector is actually a word offset from the base of the ** board. The resulting address points to the base of the DiagArea ** structure. The structure may be physically implemented either four, ** eight, or sixteen bits wide. The code will be copied out into ** ram first before being called. ** ** The da_Size field, and both code offsets (da_DiagPoint and da_BootPoint) ** are offsets from the diag area AFTER it has been copied into ram, and ** "de-nybbleized" (if needed). (In other words, the byte size is the size of ** the actual information, not how much address space is required to ** store it.) ** ** All bits are encoded with uninverted logic (e.g. 5 volts on the bus ** is a logic one). ** ** If your board is to make use of the boot facility then it must leave ** its config area available even after it has been configured. Your ** boot vector will be called AFTER your board's final address has been ** set. ** ************************************************************************** STRUCTURE DiagArea,0 UBYTE da_Config ; see below for definitions UBYTE da_Flags ; see below for definitions UWORD da_Size ; the size (in bytes) of the total diag area UWORD da_DiagPoint ; where to start for diagnostics, or zero UWORD da_BootPoint ; where to start for booting UWORD da_Name ; offset in diag area where a string ; identifier can be found (or zero if no ; identifier is present). UWORD da_Reserved01 ; two words of reserved data. must be zero. UWORD da_Reserved02 LABEL DiagArea_SIZEOF ; da_Config definitions ** ** DAC_BYTEWIDE can be simulated using DAC_NIBBLEWIDE. ** DAC_BUSWIDTH EQU $C0 ; two bits for bus width DAC_NIBBLEWIDE EQU $00 ; (indicates information is nybble wide) DAC_BYTEWIDE EQU $40 ; BUG: Will not work under V34 Kickstart! DAC_WORDWIDE EQU $80 DAC_BOOTTIME EQU $30 ; two bits for when to boot DAC_NEVER EQU $00 ; obvious DAC_CONFIGTIME EQU $10 ; call da_BootPoint when first configing ; the device DAC_BINDTIME EQU $20 ; run when binding drivers to boards ** ** These are the calling conventions for the diagnostic callback ** (from da_DiagPoint). ** ** A7 -- points to at least 2K of stack ** A6 -- ExecBase ** A5 -- ExpansionBase ** A3 -- your board's ConfigDev structure ** A2 -- Base of diag/init area that was copied ** A0 -- Base of your board ** ** Your board must return a value in D0. If this value is NULL, then ** the diag/init area that was copied in will be returned to the free ** memory pool. ** ENDC ;LIBRARIES_CONFIGREGS_I
@glichtanski, post #101
@sanjyuubi, post #104
@bogumil, post #81
@sanjyuubi, post #104
@Don_Adan, post #107
@sanjyuubi, post #109
Ciekawe, czy to ta własnie zmiana powoduje automatyczne wykrycie pamięci w kartach ACA.
Pytanie brzmi, czy wystarczy, aby pod danym adresem była jakaś pamięć i zostanie wykryta automatycznie tak jak pamięć SLOW?
@sanjyuubi, post #109
@Don_Adan, post #116
@Don_Adan, post #72