****************************************************************** * * * Copyright (C) 1986-1999, Amiga, Inc. All rights reserved. * Permission granted for non-commercial use * ***************************************************************** * * ramdev.i -- external declarations for skeleton ramdisk device * ***************************************************************** ;--- Assemble-time options INFO_LEVEL EQU 0 ; Specify amount of debugging info desired ; If > 0 you must link with debug.lib! ; You will need to run a terminal program to ; set the baud rate. *INTRRUPT SET 1 ; Remove "*" to enable fake interrupt code AUTOMOUNT EQU 0 ; Work with the "mount" command if 0 ; Do it automatically if 1 ;--- stack size and priority for the process we will create MYPROCSTACKSIZE EQU $900 MYPROCPRI EQU 0 ;Devices are often 5, NOT higher ;--- Base constants NUMBEROFTRACKS EQU 40 ;<<<< Change THIS to change size of ramdisk <<<< SECTOR EQU 512 ;# bytes per sector SECSHIFT EQU 9 ;Shift count to convert byte # to sector # SECTORSPER EQU 10 ;# Sectors per "track" RAMSIZE EQU SECTOR*NUMBEROFTRACKS*SECTORSPER ; Use this much RAM per unit BYTESPERTRACK EQU SECTORSPER*SECTOR 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 (copied from devices/trackdisk.i) ; ;----------------------------------------------------------------------- BITDEF TD,EXTCOM,15 ; for "extended" commands !!! 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 # DRIVE3_5 EQU 1 DRIVE5_25 EQU 2 ;----------------------------------------------------------------------- ; ; 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 UBYTE md_Flags UBYTE md_Pad1 ;now longword aligned ULONG md_SysLib ULONG md_SegList ULONG md_Base ; Base address of this device's expansion board STRUCT md_Units,MD_NUMUNITS*4 LABEL MyDev_Sizeof STRUCTURE MyDevUnit,UNIT_SIZE ;Odd # longwords UBYTE mdu_UnitNum UBYTE mdu_SigBit ; Signal bit allocated for interrupts ;Now longword aligned! APTR mdu_Device STRUCT mdu_stack,MYPROCSTACKSIZE STRUCT mdu_tcb,TC_SIZE ; Task Control Block (TCB) for disk task ULONG mdu_SigMask ; Signal these bits on interrupt IFD INTRRUPT STRUCT mdu_is,IS_SIZE ; Interrupt structure UWORD mdu_pad1 ;Longword align ENDC 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 'ramdev.device',0 ENDM