/* ** asm-m68k/amigahw.h -- This header defines some macros and pointers for ** the various Amiga custom hardware registers. ** The naming conventions used here conform to those ** used in the Amiga Hardware Reference Manual, 3rd Edition ** ** Copyright 1992 by Greg Harp ** ** This file is subject to the terms and conditions of the GNU General Public ** License. See the file COPYING in the main directory of this archive ** for more details. ** ** Created: 9/24/92 by Greg Harp */ #ifndef _M68K_AMIGAHW_H #define _M68K_AMIGAHW_H #include /* * Different Amiga models */ #define AMI_UNKNOWN (0) #define AMI_500 (1) #define AMI_500PLUS (2) #define AMI_600 (3) #define AMI_1000 (4) #define AMI_1200 (5) #define AMI_2000 (6) #define AMI_2500 (7) #define AMI_3000 (8) #define AMI_3000T (9) #define AMI_3000PLUS (10) #define AMI_4000 (11) #define AMI_4000T (12) #define AMI_CDTV (13) #define AMI_CD32 (14) #define AMI_DRACO (15) /* * Chipsets */ extern unsigned long amiga_chipset; #define CS_STONEAGE (0) #define CS_OCS (1) #define CS_ECS (2) #define CS_AGA (3) /* * Miscellaneous */ extern unsigned long amiga_eclock; /* 700 kHz E Peripheral Clock */ extern unsigned long amiga_colorclock; /* 3.5 MHz Color Clock */ extern unsigned long amiga_chip_size; /* Chip RAM Size (bytes) */ extern unsigned char amiga_vblank; /* VBLANK Frequency */ #define AMIGAHW_DECLARE(name) unsigned name : 1 #define AMIGAHW_SET(name) (amiga_hw_present.name = 1) #define AMIGAHW_PRESENT(name) (amiga_hw_present.name) struct amiga_hw_present { /* video hardware */ AMIGAHW_DECLARE(AMI_VIDEO); /* Amiga Video */ AMIGAHW_DECLARE(AMI_BLITTER); /* Amiga Blitter */ AMIGAHW_DECLARE(AMBER_FF); /* Amber Flicker Fixer */ /* sound hardware */ AMIGAHW_DECLARE(AMI_AUDIO); /* Amiga Audio */ /* disk storage interfaces */ AMIGAHW_DECLARE(AMI_FLOPPY); /* Amiga Floppy */ AMIGAHW_DECLARE(A3000_SCSI); /* SCSI (wd33c93, A3000 alike) */ AMIGAHW_DECLARE(A4000_SCSI); /* SCSI (ncr53c710, A4000T alike) */ AMIGAHW_DECLARE(A1200_IDE); /* IDE (A1200 alike) */ AMIGAHW_DECLARE(A4000_IDE); /* IDE (A4000 alike) */ AMIGAHW_DECLARE(CD_ROM); /* CD ROM drive */ /* other I/O hardware */ AMIGAHW_DECLARE(AMI_KEYBOARD); /* Amiga Keyboard */ AMIGAHW_DECLARE(AMI_MOUSE); /* Amiga Mouse */ AMIGAHW_DECLARE(AMI_SERIAL); /* Amiga Serial */ AMIGAHW_DECLARE(AMI_PARALLEL); /* Amiga Parallel */ /* real time clocks */ AMIGAHW_DECLARE(A2000_CLK); /* Hardware Clock (A2000 alike) */ AMIGAHW_DECLARE(A3000_CLK); /* Hardware Clock (A3000 alike) */ /* supporting hardware */ AMIGAHW_DECLARE(CHIP_RAM); /* Chip RAM */ AMIGAHW_DECLARE(PAULA); /* Paula (8364) */ AMIGAHW_DECLARE(DENISE); /* Denise (8362) */ AMIGAHW_DECLARE(DENISE_HR); /* Denise (8373) */ AMIGAHW_DECLARE(LISA); /* Lisa (8375) */ AMIGAHW_DECLARE(AGNUS_PAL); /* Normal/Fat PAL Agnus (8367/8371) */ AMIGAHW_DECLARE(AGNUS_NTSC); /* Normal/Fat NTSC Agnus (8361/8370) */ AMIGAHW_DECLARE(AGNUS_HR_PAL); /* Fat Hires PAL Agnus (8372) */ AMIGAHW_DECLARE(AGNUS_HR_NTSC); /* Fat Hires NTSC Agnus (8372) */ AMIGAHW_DECLARE(ALICE_PAL); /* PAL Alice (8374) */ AMIGAHW_DECLARE(ALICE_NTSC); /* NTSC Alice (8374) */ AMIGAHW_DECLARE(MAGIC_REKICK); /* A3000 Magic Hard Rekick */ AMIGAHW_DECLARE(PCMCIA); /* PCMCIA Slot */ AMIGAHW_DECLARE(ZORRO); /* Zorro AutoConfig */ AMIGAHW_DECLARE(ZORRO3); /* Zorro III */ }; extern struct amiga_hw_present amiga_hw_present; struct CUSTOM { unsigned short bltddat; unsigned short dmaconr; unsigned short vposr; unsigned short vhposr; unsigned short dskdatr; unsigned short joy0dat; unsigned short joy1dat; unsigned short clxdat; unsigned short adkconr; unsigned short pot0dat; unsigned short pot1dat; unsigned short potgor; unsigned short serdatr; unsigned short dskbytr; unsigned short intenar; unsigned short intreqr; unsigned char *dskptr; unsigned short dsklen; unsigned short dskdat; unsigned short refptr; unsigned short vposw; unsigned short vhposw; unsigned short copcon; unsigned short serdat; unsigned short serper; unsigned short potgo; unsigned short joytest; unsigned short strequ; unsigned short strvbl; unsigned short strhor; unsigned short strlong; unsigned short bltcon0; unsigned short bltcon1; unsigned short bltafwm; unsigned short bltalwm; unsigned char *bltcpt; unsigned char *bltbpt; unsigned char *bltapt; unsigned char *bltdpt; unsigned short bltsize; unsigned char pad2d; unsigned char bltcon0l; unsigned short bltsizv; unsigned short bltsizh; unsigned short bltcmod; unsigned short bltbmod; unsigned short bltamod; unsigned short bltdmod; unsigned short spare2[4]; unsigned short bltcdat; unsigned short bltbdat; unsigned short bltadat; unsigned short spare3[3]; unsigned short deniseid; unsigned short dsksync; unsigned short *cop1lc; unsigned short *cop2lc; unsigned short copjmp1; unsigned short copjmp2; unsigned short copins; unsigned short diwstrt; unsigned short diwstop; unsigned short ddfstrt; unsigned short ddfstop; unsigned short dmacon; unsigned short clxcon; unsigned short intena; unsigned short intreq; unsigned short adkcon; struct { unsigned short *audlc; unsigned short audlen; unsigned short audper; unsigned short audvol; unsigned short auddat; unsigned short audspare[2]; } aud[4]; unsigned char *bplpt[8]; unsigned short bplcon0; unsigned short bplcon1; unsigned short bplcon2; unsigned short bplcon3; unsigned short bpl1mod; unsigned short bpl2mod; unsigned short bplcon4; unsigned short clxcon2; unsigned short bpldat[8]; unsigned char *sprpt[8]; struct { unsigned short pos; unsigned short ctl; unsigned short dataa; unsigned short datab; } spr[8]; unsigned short color[32]; unsigned short htotal; unsigned short hsstop; unsigned short hbstrt; unsigned short hbstop; unsigned short vtotal;