home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 8 / FreshFishVol8-CD1.bin / useful / dev / c / rkrm / sampledevice / ramdev.i < prev    next >
Text File  |  1992-09-03  |  5KB  |  133 lines

  1. ******************************************************************
  2. *
  3. *
  4. * Copyright (C) 1986, Commodore Amiga Inc.  All rights reserved.
  5. * Permission granted for non-commercial use
  6. *
  7. *****************************************************************
  8. *
  9. * ramdev.i -- external declarations for skeleton ramdisk device
  10. *
  11. *****************************************************************
  12.  
  13.  
  14. ;--- Assemble-time options
  15. INFO_LEVEL  EQU 0     ; Specify amount of debugging info desired
  16.               ; If > 0 you must link with debug.lib!
  17.               ; You will need to run a terminal program to
  18.               ; set the baud rate.
  19. *INTRRUPT   SET 1     ; Remove "*" to enable fake interrupt code
  20. AUTOMOUNT   EQU 0     ; Work with the "mount" command if 0
  21.               ; Do it automatically if 1
  22.  
  23. ;--- stack size and priority for the process we will create
  24. MYPROCSTACKSIZE   EQU    $900
  25. MYPROCPRI      EQU    0   ;Devices are often 5, NOT higher
  26.  
  27. ;--- Base constants
  28. NUMBEROFTRACKS EQU  40    ;<<<< Change THIS to change size of ramdisk <<<<
  29. SECTOR           EQU  512 ;# bytes per sector
  30. SECSHIFT       EQU  9    ;Shift count to convert byte # to sector #
  31. SECTORSPER     EQU  10    ;# Sectors per "track"
  32.  
  33. RAMSIZE       EQU   SECTOR*NUMBEROFTRACKS*SECTORSPER
  34.             ; Use this much RAM per unit
  35. BYTESPERTRACK EQU   SECTORSPER*SECTOR
  36.  
  37. IAMPULLING    EQU   7      ; "I am pulling the interrupt" bit of INTCRL1
  38. INTENABLE     EQU   4      ; "Interrupt Enable" bit of INTCRL2
  39. INTCTRL1      EQU   $40   ; Interrupt control register offset on board
  40. INTCTRL2      EQU   $42   ; Interrupt control register offset on board
  41. INTACK          EQU   $50   ; My board's interrupt reset address
  42. ;-----------------------------------------------------------------------
  43. ;
  44. ; device command definitions (copied from devices/trackdisk.i)
  45. ;
  46. ;-----------------------------------------------------------------------
  47.    BITDEF  TD,EXTCOM,15      ; for "extended" commands !!!
  48.  
  49.    DEVINIT
  50.    DEVCMD   CMD_MOTOR         ; control the disk's motor (NO-OP)
  51.    DEVCMD   CMD_SEEK         ; explicit seek (NO-OP)
  52.    DEVCMD   CMD_FORMAT         ; format disk - equated to WRITE for RAMDISK
  53.    DEVCMD   CMD_REMOVE         ; notify when disk changes (NO-OP)
  54.    DEVCMD   CMD_CHANGENUM    ; number of disk changes (always 0)
  55.    DEVCMD   CMD_CHANGESTATE  ; is there a disk in the drive? (always TRUE)
  56.    DEVCMD   CMD_PROTSTATUS   ; is the disk write protected? (always FALSE)
  57.    DEVCMD   CMD_RAWREAD      ; Not supported
  58.    DEVCMD   CMD_RAWWRITE     ; Not supported
  59.    DEVCMD   CMD_GETDRIVETYPE ; Get drive type
  60.    DEVCMD   CMD_GETNUMTRACKS ; Get number of tracks
  61.    DEVCMD   CMD_ADDCHANGEINT ; Add disk change interrupt (NO-OP)
  62.    DEVCMD   CMD_REMCHANGEINT ; Remove disk change interrupt ( NO-OP)
  63.    DEVCMD   MYDEV_END         ; place marker -- first illegal command #
  64.  
  65. DRIVE3_5    EQU    1
  66. DRIVE5_25    EQU    2
  67. ;-----------------------------------------------------------------------
  68. ;
  69. ; Layout of parameter packet for MakeDosNode
  70. ;
  71. ;-----------------------------------------------------------------------
  72.  
  73.     STRUCTURE MkDosNodePkt,0
  74.    APTR    mdn_dosName     ; Pointer to DOS file handler name
  75.    APTR    mdn_execName   ; Pointer to device driver name
  76.    ULONG   mdn_unit   ; Unit number
  77.    ULONG   mdn_flags   ; OpenDevice flags
  78.    ULONG   mdn_tableSize   ; Environment size
  79.    ULONG   mdn_sizeBlock   ; # longwords in a block
  80.    ULONG   mdn_secOrg    ; sector origin -- unused
  81.    ULONG   mdn_numHeads   ; number of surfaces
  82.    ULONG   mdn_secsPerBlk   ; secs per logical block -- unused
  83.    ULONG   mdn_blkTrack   ; secs per track
  84.    ULONG   mdn_resBlks     ; reserved blocks -- MUST be at least 1!
  85.    ULONG   mdn_prefac    ; unused
  86.    ULONG   mdn_interleave   ; interleave
  87.    ULONG   mdn_lowCyl    ; lower cylinder
  88.    ULONG   mdn_upperCyl   ; upper cylinder
  89.    ULONG   mdn_numBuffers   ; number of buffers
  90.    ULONG   mdn_memBufType   ; Type of memory for AmigaDOS buffers
  91.    STRUCT  mdn_dName,5     ; DOS file handler name "RAM0"
  92.    LABEL   mdn_Sizeof    ; Size of this structure
  93.  
  94. ;-----------------------------------------------------------------------
  95. ;
  96. ; device data structures
  97. ;
  98. ;-----------------------------------------------------------------------
  99. ; maximum number of units in this device
  100. MD_NUMUNITS   EQU   4
  101.  
  102.     STRUCTURE MyDev,LIB_SIZE
  103.    UBYTE   md_Flags
  104.    UBYTE   md_Pad1
  105.    ;now longword aligned
  106.    ULONG   md_SysLib
  107.    ULONG   md_SegList
  108.    ULONG   md_Base    ; Base address of this device's expansion board
  109.    STRUCT  md_Units,MD_NUMUNITS*4
  110.    LABEL   MyDev_Sizeof
  111.  
  112.    STRUCTURE MyDevUnit,UNIT_SIZE   ;Odd # longwords
  113.    UBYTE    mdu_UnitNum
  114.    UBYTE    mdu_SigBit        ; Signal bit allocated for interrupts
  115.    ;Now longword aligned!
  116.    APTR     mdu_Device
  117.    STRUCT   mdu_stack,MYPROCSTACKSIZE
  118.    STRUCT   mdu_tcb,TC_SIZE    ; Task Control Block (TCB) for disk task
  119.    ULONG    mdu_SigMask     ; Signal these bits on interrupt
  120.    IFD     INTRRUPT
  121.     STRUCT   mdu_is,IS_SIZE     ; Interrupt structure
  122.     UWORD    mdu_pad1        ;Longword align
  123.    ENDC
  124.    STRUCT   mdu_RAM,RAMSIZE    ; RAM used to simulate disk
  125.    LABEL    MyDevUnit_Sizeof
  126.  
  127.    ;------ state bit for unit stopped
  128.    BITDEF   MDU,STOPPED,2
  129.  
  130. MYDEVNAME   MACRO
  131.       DC.B   'ramdev.device',0
  132.       ENDM
  133.