home *** CD-ROM | disk | FTP | other *** search
-
- ******************************************************************
- * *
- * Copyright (C) 1986, Commodore Amiga Inc. All rights reserved. *
- * Permission granted for non-commercial use * *
- * *
- ******************************************************************
-
-
- *****************************************************************
- *
- * mydev.i -- external declarations for skeleton device
- *
- * SOURCE CONTROL
- * ------ -------
- * $Header: ramlib.i,v 31.1 85/10/13 23:12:51 neil Exp $
- *
- * $Locker: neil $
- *
- *****************************************************************
- INFO_LEVEL EQU 0 ; Specify amount of debugging info desired
- *INTRRUPT SET 1 ; Remove "*" to enable fake interrupt code
-
- ; stack size and priority for the process we will create
- MYPROCSTACKSIZE EQU $800
- MYPROCPRI EQU 0
-
- SECTOR EQU 512 ; # bytes per sector
- SECSHIFT EQU 9 ; Shift count to convert byte # to sector #
- RAMSIZE EQU 512*200 ; Use this much RAM per unit
- IAMPULLING EQU 7 ; "I am pulling the interrupt" bit of INTCRL1
- INTENABLE EQU 4 ; "Interrupt Enable" bit of INTCRL2
- INTCTRL1 EQU $40 ; Interrupt control register offset on board
- INTCTRL2 EQU $42 ; Interrupt control register offset on board
- INTACK EQU $50 ; My board's interrupt reset address
- ;-----------------------------------------------------------------------
- ;
- ; device command definitions
- ;
- ;-----------------------------------------------------------------------
-
- DEVINIT
- DEVCMD CMD_MOTOR ; control the disk's motor (NO-OP)
- DEVCMD CMD_SEEK ; explicit seek (NO-OP)
- DEVCMD CMD_FORMAT ; format disk - equated to WRITE for RAMDISK
- DEVCMD CMD_REMOVE ; notify when disk changes (NO-OP)
- DEVCMD CMD_CHANGENUM ; number of disk changes (always 0)
- DEVCMD CMD_CHANGESTATE ; is there a disk in the drive? (always TRUE)
- DEVCMD CMD_PROTSTATUS ; is the disk write protected? (always FALSE)
- DEVCMD CMD_RAWREAD ; Not supported
- DEVCMD CMD_RAWWRITE ; Not supported
- DEVCMD CMD_GETDRIVETYPE; Get drive type
- DEVCMD CMD_GETNUMTRACKS; Get number of tracks
- DEVCMD CMD_ADDCHANGEINT; Add disk change interrupt (NO-OP)
- DEVCMD CMD_REMCHANGEINT; Remove disk change interrupt ( NO-OP)
- DEVCMD MYDEV_END ; place marker -- first illegal command #
-
- ;-----------------------------------------------------------------------
- ;
- ; Layout of parameter packet for MakeDosNode
- ;
- ;-----------------------------------------------------------------------
-
- STRUCTURE MkDosNodePkt,0
- APTR mdn_dosName ; Pointer to DOS file handler name
- APTR mdn_execName ; Pointer to device driver name
- ULONG mdn_unit ; Unit number
- ULONG mdn_flags ; OpenDevice flags
- ULONG mdn_tableSize ; Environment size
- ULONG mdn_sizeBlock ; # longwords in a block
- ULONG mdn_secOrg ; sector origin -- unused
- ULONG mdn_numHeads ; number of surfaces
- ULONG mdn_secsPerBlk ; secs per logical block -- unused
- ULONG mdn_blkTrack ; secs per track
- ULONG mdn_resBlks ; reserved blocks -- MUST be at least 1!
- ULONG mdn_prefac ; unused
- ULONG mdn_interleave ; interleave
- ULONG mdn_lowCyl ; lower cylinder
- ULONG mdn_upperCyl ; upper cylinder
- ULONG mdn_numBuffers ; number of buffers
- ULONG mdn_memBufType ; Type of memory for AmigaDOS buffers
- STRUCT mdn_dName,5 ; DOS file handler name "RAM0"
- LABEL mdn_Sizeof ; Size of this structure
-
- ;-----------------------------------------------------------------------
- ;
- ; device data structures
- ;
- ;-----------------------------------------------------------------------
-
- ; maximum number of units in this device
- MD_NUMUNITS EQU 4
-
- STRUCTURE MyDev,LIB_SIZE
- ULONG md_SysLib
- ULONG md_SegList
- ULONG md_Base ; Base address of this device's expansion board
- UBYTE md_Flags
- UBYTE md_pad
- STRUCT md_Units,MD_NUMUNITS*4
- LABEL MyDev_Sizeof
-
- STRUCTURE MyDevMsg,MN_SIZE
- APTR mdm_Device
- APTR mdm_Unit
- LABEL MyDevMsg_Sizeof
-
- STRUCTURE MyDevUnit,UNIT_SIZE
- UBYTE mdu_UnitNum
- UBYTE mdu_SigBit ; Signal bit allocated for interrupts
- APTR mdu_Device
- STRUCT mdu_stack,MYPROCSTACKSIZE
- STRUCT mdu_is,IS_SIZE ; Interrupt structure
- STRUCT mdu_tcb,TC_SIZE ; TCB for disk task
- STRUCT mdu_Msg,MyDevMsg_Sizeof
- ULONG mdu_SigMask ; Signal these bits on interrupt
- STRUCT mdu_RAM,RAMSIZE ; RAM used to simulate disk
- LABEL MyDevUnit_Sizeof
-
- ;------ state bit for unit stopped
- BITDEF MDU,STOPPED,2
-
- MYDEVNAME MACRO
- DC.B 'mydev.device',0
- ENDM
-
-