| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582 | {    This file is part of the Free Pascal run time library.    Copyright (c) 2004 Karoly Balogh for Genesi S.a.r.l. <www.genesi.lu>    Hardware definitions unit for MorphOS/PowerPC    MorphOS port was done on a free Pegasos II/G4 machine    provided by Genesi S.a.r.l. <www.genesi.lu>    See the file COPYING.FPC, included in this distribution,    for details about the copyright.    This program is distributed in the hope that it will be useful,    but WITHOUT ANY WARRANTY; without even the implied warranty of    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. **********************************************************************}{$PACKRECORDS 2}unit hardware;interfaceuses exec;{ * adkcon bit defines  * Copyright (c) 2002 The MorphOS Development Team, All Rights Reserved.  * }const  ADKB_SETCLR   = 15;  ADKB_PRECOMP1 = 14;  ADKB_PRECOMP0 = 13;  ADKB_MFMPREC  = 12;  ADKB_UARTBRK  = 11;  ADKB_WORDSYNC = 10;  ADKB_MSBSYNC  = 9;  ADKB_FAST     = 8;  ADKB_USE3PN   = 7;  ADKB_USE2P3   = 6;  ADKB_USE1P2   = 5;  ADKB_USE0P1   = 4;  ADKB_USE3VN   = 3;  ADKB_USE2V3   = 2;  ADKB_USE1V2   = 1;  ADKB_USE0V1   = 0;const  ADKF_SETCLR   = (1 Shl ADKB_SETCLR);  ADKF_PRECOMP1 = (1 Shl ADKB_PRECOMP1);  ADKF_PRECOMP0 = (1 Shl ADKB_PRECOMP0);  ADKF_MFMPREC  = (1 Shl ADKB_MFMPREC);  ADKF_UARTBRK  = (1 Shl ADKB_UARTBRK);  ADKF_WORDSYNC = (1 Shl ADKB_WORDSYNC);  ADKF_MSBSYNC  = (1 Shl ADKB_MSBSYNC);  ADKF_FAST     = (1 Shl ADKB_FAST);  ADKF_USE3PN   = (1 Shl ADKB_USE3PN);  ADKF_USE2P3   = (1 Shl ADKB_USE2P3);  ADKF_USE1P2   = (1 Shl ADKB_USE1P2);  ADKF_USE0P1   = (1 Shl ADKB_USE0P1);  ADKF_USE3VN   = (1 Shl ADKB_USE3VN);  ADKF_USE2V3   = (1 Shl ADKB_USE2V3);  ADKF_USE1V2   = (1 Shl ADKB_USE1V2);  ADKF_USE0V1   = (1 Shl ADKB_USE0V1);const  ADKF_PRE000NS = 0;  ADKF_PRE140NS = (ADKF_PRECOMP0);  ADKF_PRE280NS = (ADKF_PRECOMP1);  ADKF_PRE560NS = (ADKF_PRECOMP0 or ADKF_PRECOMP1);{ * blitter defines  * Copyright (c) 2002 The MorphOS Development Team, All Rights Reserved.  * }const  HSIZEBITS = 6;  VSIZEBITS = (16 - HSIZEBITS);  HSIZEMASK = $3F;  VSIZEMASK = $3FF;{$IFNDEF NO_BIG_BLITS}  MINBYTESPERROW = 128;  MAXBYTESPERROW = 4096;{$ELSE}  MAXBYTESPERROW = 128;{$ENDIF}const  ABC    = $80;  ABNC   = $40;  ANBC   = $20;  ANBNC  = $10;  NABC   = $8;  NABNC  = $4;  NANBC  = $2;  NANBNC = $1;const  A_OR_B  = (ABC or ANBC or NABC or ABNC or ANBNC or NABNC);  A_OR_C  = (ABC or NABC or ABNC or ANBC or NANBC or ANBNC);  A_XOR_C = (NABC or ABNC or NANBC or ANBNC);  A_TO_D  = (ABC or ANBC or ABNC or ANBNC);const  BC0B_DEST = 8;  BC0B_SRCC = 9;  BC0B_SRCB = 10;  BC0B_SRCA = 11;  BC0F_DEST = (1 Shl BC0B_DEST);  BC0F_SRCC = (1 Shl BC0B_SRCC);  BC0F_SRCB = (1 Shl BC0B_SRCB);  BC0F_SRCA = (1 Shl BC0B_SRCA);  BC1F_DESC = 2;  DEST = BC0F_DEST;  SRCC = BC0F_SRCC;  SRCB = BC0F_SRCB;  SRCA = BC0F_SRCA;  ASHIFTSHIFT = 12;  BSHIFTSHIFT = 12;const  LINEMODE     = $1;  FILL_OR      = $8;  FILL_XOR     = $10;  FILL_CARRYIN = $4;  ONEDOT       = $2;  OVFLAG       = $20;  SIGNFLAG     = $40;  BLITREVERSE  = $2;  SUD = $10;  SUL = $8;  AUL = $4;  OCTANT8 = 24;  OCTANT7 = 4;  OCTANT6 = 12;  OCTANT5 = 28;  OCTANT4 = 20;  OCTANT3 = 8;  OCTANT2 = 0;  OCTANT1 = 16;type  Pbltnode = ^Tbltnode;  Tbltnode = record    n        : Pbltnode;    _function: Pointer;    stat     : Byte;    blitsize : SmallInt;    beamsync : SmallInt;    cleanup  : Pointer;  end;const  CLEANUP = $40;  CLEANME = CLEANUP;{ * byteswap routines  * Copyright (c) 2002 The MorphOS Development Team, All Rights Reserved.  * }{$WARNING Byteswap macros not yet converted!}{ * cia registers and bits  * Copyright (c) 2002 The MorphOS Development Team, All Rights Reserved.  * }type  PCIA = ^TCIA;  TCIA = record    ciapra   : Byte;    pad0     : Array[0..254] of Byte;    ciaprb   : Byte;    pad1     : array[0..254] of Byte;    ciaddra  : Byte;    pad2     : array[0..254] of Byte;    ciaddrb  : Byte;    pad3     : array[0..254] of Byte;    ciatalo  : Byte;    pad4     : array[0..254] of Byte;    ciatahi  : Byte;    pad5     : array[0..254] of Byte;    ciatblo  : Byte;    pad6     : array[0..254] of Byte;    ciatbhi  : Byte;    pad7     : array[0..254] of Byte;    ciatodlow: Byte;    pad8     : array[0..254] of Byte;    ciatodmid: Byte;    pad9     : array[0..254] of Byte;    ciatodhi : Byte;    pad10    : array[0..254] of Byte;    unusedreg: Byte;    pad11    : array[0..254] of Byte;    ciasdr   : Byte;    pad12    : array[0..254] of Byte;    ciaicr   : Byte;    pad13    : array[0..254] of Byte;    ciacra   : Byte;    pad14    : array[0..254] of Byte;    ciacrb   : Byte;  end;const  CIAICRB_TA     = 0;  CIAICRB_TB     = 1;  CIAICRB_ALRM   = 2;  CIAICRB_SP     = 3;  CIAICRB_FLG    = 4;  CIAICRB_IR     = 7;  CIAICRB_SETCLR = 7;  CIAICRF_TA     = (1 Shl CIAICRB_TA);  CIAICRF_TB     = (1 Shl CIAICRB_TB);  CIAICRF_ALRM   = (1 Shl CIAICRB_ALRM);  CIAICRF_SP     = (1 Shl CIAICRB_SP);  CIAICRF_FLG    = (1 Shl CIAICRB_FLG);  CIAICRF_IR     = (1 Shl CIAICRB_IR);  CIAICRF_SETCLR = (1 Shl CIAICRB_SETCLR);const  CIACRAB_START   = 0;  CIACRAB_PBON    = 1;  CIACRAB_OUTMODE = 2;  CIACRAB_RUNMODE = 3;  CIACRAB_LOAD    = 4;  CIACRAB_INMODE  = 5;  CIACRAB_SPMODE  = 6;  CIACRAB_TODIN   = 7;  CIACRAF_START   = (1 Shl CIACRAB_START);  CIACRAF_PBON    = (1 Shl CIACRAB_PBON);  CIACRAF_OUTMODE = (1 Shl CIACRAB_OUTMODE);  CIACRAF_RUNMODE = (1 Shl CIACRAB_RUNMODE);  CIACRAF_LOAD    = (1 Shl CIACRAB_LOAD);  CIACRAF_INMODE  = (1 Shl CIACRAB_INMODE);  CIACRAF_SPMODE  = (1 Shl CIACRAB_SPMODE);  CIACRAF_TODIN   = (1 Shl CIACRAB_TODIN);const  CIACRBB_START   = 0;  CIACRBB_PBON    = 1;  CIACRBB_OUTMODE = 2;  CIACRBB_RUNMODE = 3;  CIACRBB_LOAD    = 4;  CIACRBB_INMODE0 = 5;  CIACRBB_INMODE1 = 6;  CIACRBB_ALARM   = 7;  CIACRBF_START   = (1 Shl CIACRBB_START);  CIACRBF_PBON    = (1 Shl CIACRBB_PBON);  CIACRBF_OUTMODE = (1 Shl CIACRBB_OUTMODE);  CIACRBF_RUNMODE = (1 Shl CIACRBB_RUNMODE);  CIACRBF_LOAD    = (1 Shl CIACRBB_LOAD);  CIACRBF_INMODE0 = (1 Shl CIACRBB_INMODE0);  CIACRBF_INMODE1 = (1 Shl CIACRBB_INMODE1);  CIACRBF_ALARM   = (1 Shl CIACRBB_ALARM);const  CIACRBF_IN_PHI2   = 0;  CIACRBF_IN_CNT    = (CIACRBF_INMODE0);  CIACRBF_IN_TA     = (CIACRBF_INMODE1);  CIACRBF_IN_CNT_TA = (CIACRBF_INMODE0 or CIACRBF_INMODE1);const  CIAB_GAMEPORT1 = (7);  CIAB_GAMEPORT0 = (6);  CIAB_DSKRDY    = (5);  CIAB_DSKTRACK0 = (4);  CIAB_DSKPROT   = (3);  CIAB_DSKCHANGE = (2);  CIAB_LED       = (1);  CIAB_OVERLAY   = (0);  CIAF_GAMEPORT1 = (1 Shl CIAB_GAMEPORT1);  CIAF_GAMEPORT0 = (1 Shl CIAB_GAMEPORT0);  CIAF_DSKRDY    = (1 Shl CIAB_DSKRDY);  CIAF_DSKTRACK0 = (1 Shl CIAB_DSKTRACK0);  CIAF_DSKPROT   = (1 Shl CIAB_DSKPROT);  CIAF_DSKCHANGE = (1 Shl CIAB_DSKCHANGE);  CIAF_LED       = (1 Shl CIAB_LED);  CIAF_OVERLAY   = (1 Shl CIAB_OVERLAY);const  CIAB_COMDTR    = (7);  CIAB_COMRTS    = (6);  CIAB_COMCD     = (5);  CIAB_COMCTS    = (4);  CIAB_COMDSR    = (3);  CIAB_PRTRSEL   = (2);  CIAB_PRTRPOUT  = (1);  CIAB_PRTRBUSY  = (0);  CIAF_COMDTR    = (1 Shl CIAB_COMDTR);  CIAF_COMRTS    = (1 Shl CIAB_COMRTS);  CIAF_COMCD     = (1 Shl CIAB_COMCD);  CIAF_COMCTS    = (1 Shl CIAB_COMCTS);  CIAF_COMDSR    = (1 Shl CIAB_COMDSR);  CIAF_PRTRSEL   = (1 Shl CIAB_PRTRSEL);  CIAF_PRTRPOUT  = (1 Shl CIAB_PRTRPOUT);  CIAF_PRTRBUSY  = (1 Shl CIAB_PRTRBUSY);const  CIAB_DSKMOTOR  = (7);  CIAB_DSKSEL3   = (6);  CIAB_DSKSEL2   = (5);  CIAB_DSKSEL1   = (4);  CIAB_DSKSEL0   = (3);  CIAB_DSKSIDE   = (2);  CIAB_DSKDIREC  = (1);  CIAB_DSKSTEP   = (0);  CIAF_DSKMOTOR  = (1 Shl CIAB_DSKMOTOR);  CIAF_DSKSEL3   = (1 Shl CIAB_DSKSEL3);  CIAF_DSKSEL2   = (1 Shl CIAB_DSKSEL2);  CIAF_DSKSEL1   = (1 Shl CIAB_DSKSEL1);  CIAF_DSKSEL0   = (1 Shl CIAB_DSKSEL0);  CIAF_DSKSIDE   = (1 Shl CIAB_DSKSIDE);  CIAF_DSKDIREC  = (1 Shl CIAB_DSKDIREC);  CIAF_DSKSTEP   = (1 Shl CIAB_DSKSTEP);{ * custom-chip registers and bits  * Copyright (c) 2002 The MorphOS Development Team, All Rights Reserved.  * }type  PAudChannel = ^TAudChannel;  TAudChannel = record    ac_ptr: Pointer;    ac_len: Word;    ac_per: Word;    ac_vol: Word;    ac_dat: Word;    ac_pad: array[0..1] of Word;  end;  PSpriteDef = ^TSpriteDef;  TSpriteDef = record    pos  : Word;    ctl  : Word;    dataa: Word;    datab: Word;  end;  PCustom = ^TCustom;  TCustom = record    bltddat : Word;    dmaconr : Word;    vposr   : Word;    vhposr  : Word;    dskdatr : Word;    joy0dat : Word;    joy1dat : Word;    clxdat  : Word;    adkconr : Word;    pot0dat : Word;    pot1dat : Word;    potinp  : Word;    serdatr : Word;    dskbytr : Word;    intenar : Word;    intreqr : Word;    dskpt   : Pointer;    dsklen  : Word;    dskdat  : Word;    refptr  : Word;    vposw   : Word;    vhposw  : Word;    copcon  : Word;    serdat  : Word;    serper  : Word;    potgo   : Word;    joytest : Word;    strequ  : Word;    strvbl  : Word;    strhor  : Word;    strlong : Word;    bltcon0 : Word;    bltcon1 : Word;    bltafwm : Word;    bltalwm : Word;    bltcpt  : Pointer;    bltbpt  : Pointer;    bltapt  : Pointer;    bltdpt  : Pointer;    bltsize : Word;    pad2d   : Byte;    bltcon0l: Byte;    bltsizv : Word;    bltsizh : Word;    bltcmod : Word;    bltbmod : Word;    bltamod : Word;    bltdmod : Word;    pad34   : array[0..3] of Word;    bltcdat : Word;    bltbdat : Word;    bltadat : Word;    pad3b   : array[0..2] of Word;    deniseid: Word;    dsksync : Word;    cop1lc  : Longint;    cop2lc  : Longint;    copjmp1 : Word;    copjmp2 : Word;    copins  : Word;    diwstrt : Word;    diwstop : Word;    ddfstrt : Word;    ddfstop : Word;    dmacon  : Word;    clxcon  : Word;    intena  : Word;    intreq  : Word;    adkcon  : Word;    aud     : array[0..3] of TAudChannel;    bplpt   : array[0..7] of Pointer;    bplcon0 : Word;    bplcon1 : Word;    bplcon2 : Word;    bplcon3 : Word;    bpl1mod : Word;    bpl2mod : Word;    bplcon4 : Word;    clxcon2 : Word;    bpldat  : array[0..7] of Word;    sprpt   : array[0..7] of Pointer;    spr     : array[0..7] of TSpriteDef;    color   : array[0..31] of Word;    htotal  : Word;    hsstop  : Word;    hbstrt  : Word;    hbstop  : Word;    vtotal  : Word;    vsstop  : Word;    vbstrt  : Word;    vbstop  : Word;    sprhstrt: Word;    sprhstop: Word;    bplhstrt: Word;    bplhstop: Word;    hhposw  : Word;    hhposr  : Word;    beamcon0: Word;    hsstrt  : Word;    vsstrt  : Word;    hcenter : Word;    diwhigh : Word;    padf3   : array[0..10] of Word;    fmode   : Word;  end;const  VARVBLANK   = $1000;  LOLDIS      = $0800;  CSCBLANKEN  = $0400;  VARVSYNC    = $0200;  VARHSYNC    = $0100;  VARBEAM     = $0080;  DISPLAYDUAL = $0040;  DISPLAYPAL  = $0020;  VARCSYNC    = $0010;  CSBLANK     = $0008;  CSYNCTRUE   = $0004;  VSYNCTRUE   = $0002;  HSYNCTRUE   = $0001;  USE_BPLCON3 = 1;  BPLCON2_ZDCTEN    = (1 Shl 10);  BPLCON2_ZDBPEN    = (1 Shl 11);  BPLCON2_ZDBPSEL0  = (1 Shl 12);  BPLCON2_ZDBPSEL1  = (1 Shl 13);  BPLCON2_ZDBPSEL2  = (1 Shl 14);  BPLCON3_EXTBLNKEN = (1 Shl 0);  BPLCON3_EXTBLKZD  = (1 Shl 1);  BPLCON3_ZDCLKEN   = (1 Shl 2);  BPLCON3_BRDNTRAN  = (1 Shl 4);  BPLCON3_BRDNBLNK  = (1 Shl 5);{ * dma bits  * Copyright (c) 2002 The MorphOS Development Team, All Rights Reserved.  * }const  DMAB_AUD0     = 0;  DMAB_AUD1     = 1;  DMAB_AUD2     = 2;  DMAB_AUD3     = 3;  DMAB_DISK     = 4;  DMAB_SPRITE   = 5;  DMAB_BLITTER  = 6;  DMAB_COPPER   = 7;  DMAB_RASTER   = 8;  DMAB_MASTER   = 9;  DMAB_BLITHOG  = 10;  DMAB_BLTNZERO = 13;  DMAB_BLTDONE  = 14;  DMAB_SETCLR   = 15;  DMAF_AUD0     = (1 Shl DMAB_AUD0);  DMAF_AUD1     = (1 Shl DMAB_AUD1);  DMAF_AUD2     = (1 Shl DMAB_AUD2);  DMAF_AUD3     = (1 Shl DMAB_AUD3);  DMAF_DISK     = (1 Shl DMAB_DISK);  DMAF_SPRITE   = (1 Shl DMAB_SPRITE);  DMAF_BLITTER  = (1 Shl DMAB_BLITTER);  DMAF_COPPER   = (1 Shl DMAB_COPPER);  DMAF_RASTER   = (1 Shl DMAB_RASTER);  DMAF_MASTER   = (1 Shl DMAB_MASTER);  DMAF_BLITHOG  = (1 Shl DMAB_BLITHOG);  DMAF_BLTNZERO = (1 Shl DMAB_BLTNZERO);  DMAF_BLTDONE  = (1 Shl DMAB_BLTDONE);  DMAF_SETCLR   = (1 Shl DMAB_SETCLR);const  DMAF_AUDIO    = (DMAF_AUD0 or DMAF_AUD1 or DMAF_AUD2 or DMAF_AUD3);  DMAF_ALL      = (DMAF_AUD0 or DMAF_AUD1 or DMAF_AUD2 or DMAF_AUD3 or DMAF_DISK or DMAF_SPRITE or DMAF_BLITTER or DMAF_COPPER or DMAF_RASTER);{ * interrupt bits  * Copyright (c) 2002 The MorphOS Development Team, All Rights Reserved.  * }const  INTB_SETCLR  = (15);  INTB_INTEN   = (14);  INTB_EXTER   = (13);  INTB_DSKSYNC = (12);  INTB_RBF     = (11);  INTB_AUD3    = (10);  INTB_AUD2    = (9);  INTB_AUD1    = (8);  INTB_AUD0    = (7);  INTB_BLIT    = (6);  INTB_VERTB   = (5);  INTB_COPER   = (4);  INTB_PORTS   = (3);  INTB_SOFTINT = (2);  INTB_DSKBLK  = (1);  INTB_TBE     = (0);  INTF_SETCLR  = (1 Shl INTB_SETCLR);  INTF_INTEN   = (1 Shl INTB_INTEN);  INTF_EXTER   = (1 Shl INTB_EXTER);  INTF_DSKSYNC = (1 Shl INTB_DSKSYNC);  INTF_RBF     = (1 Shl INTB_RBF);  INTF_AUD3    = (1 Shl INTB_AUD3);  INTF_AUD2    = (1 Shl INTB_AUD2);  INTF_AUD1    = (1 Shl INTB_AUD1);  INTF_AUD0    = (1 Shl INTB_AUD0);  INTF_BLIT    = (1 Shl INTB_BLIT);  INTF_VERTB   = (1 Shl INTB_VERTB);  INTF_COPER   = (1 Shl INTB_COPER);  INTF_PORTS   = (1 Shl INTB_PORTS);  INTF_SOFTINT = (1 Shl INTB_SOFTINT);  INTF_DSKBLK  = (1 Shl INTB_DSKBLK);  INTF_TBE     = (1 Shl INTB_TBE);implementationend.
 |