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;
- interface
- uses 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);
- implementation
- end.
|