home *** CD-ROM | disk | FTP | other *** search
/ ftp.update.uu.se / ftp.update.uu.se.2014.03.zip / ftp.update.uu.se / pub / rainbow / msdos / latrobe / b / biodif.arc / RX50DRV.DIF < prev    next >
Text File  |  1987-06-20  |  15KB  |  503 lines

  1.  
  2. ----------RX50DRV.OLD
  3. ;    CREATION DATE:    17 May 1986
  4. ;
  5.  
  6. ----------RX50DRV.ASM
  7. ;    CREATION DATE:    18 May 1986
  8. ;
  9.  
  10. -----------------------------------------------
  11.  
  12. ----------RX50DRV.OLD
  13. ;
  14. ;--
  15.  
  16. ----------RX50DRV.ASM
  17. ;    RGT    17 Jan 1987    Changed names of offsets and added code
  18. ;                for double-sided disks
  19. ;
  20. ;
  21. ;--
  22.  
  23. -----------------------------------------------
  24.  
  25. ----------RX50DRV.OLD
  26. ;   Define the global entry points for this routine
  27. ;
  28.     PUBLIC    DECDISK, Z80ISR, PHYSDISK
  29. ;
  30.  
  31. ----------RX50DRV.ASM
  32. ;   Define the global entry points and global data for this routine
  33. ;
  34.     PUBLIC    DECDISK, Z80ISR, PHYSDISK
  35.     PUBLIC    DIRECT_DISK_TIMEOUT_FLAG
  36. ;
  37.  
  38. -----------------------------------------------
  39.  
  40. ----------RX50DRV.OLD
  41. ;   Define the IOCTL packet offsets
  42. ;
  43. XCOMMAND    EQU    000H            ;IOCTL Packet command offset
  44. XDRIVE        EQU    001H            ;Drive/side offset
  45. XSECTOR        EQU    002H            ;Sector offset
  46. XPHDRV        EQU    003H            ;Physical drive code
  47. XTRACK        EQU    004H            ;Track # to use
  48. XCOUNT        EQU    006H            ;# of sectors to transfer
  49. XDMAOFF        EQU    008H            ;Offset of DMA transfer
  50. XDMASEG        EQU    00AH            ;Segment of DMA transfer
  51. ;
  52. ;   Define the return values for the disks
  53. ;
  54. RX50        EQU    000H            ;RX-50 return value
  55. IBM8        EQU    008H            ;IBM 8-sector single side
  56. IBM9        EQU    002H            ;IBM 9-sector single side
  57. ;
  58. ;   Define the MS-DOS values for the disks
  59. ;
  60. RX50VAL        EQU    000H            ;RX-50 value
  61. IBM8VAL        EQU    001H            ;IBM 8-sector single side
  62. IBM9VAL        EQU    002H            ;IBM 9-sector single side
  63.  
  64.  
  65. ----------RX50DRV.ASM
  66.  
  67.  
  68. -----------------------------------------------
  69.  
  70. ----------RX50DRV.OLD
  71. ;
  72.  
  73. ----------RX50DRV.ASM
  74. ;                                    ;RGT
  75. ;   Define the calls to the disk cache routines                ;RGT
  76. ;                                    ;RGT
  77.     EXTRN    INVALIDATE_DISK_CACHE:NEAR    ;Routine to invalidate    ;RGT
  78.                         ;disk in cache        ;RGT
  79. ;
  80.  
  81. -----------------------------------------------
  82.  
  83. ----------RX50DRV.OLD
  84.  
  85.  
  86. ----------RX50DRV.ASM
  87. ;
  88.  
  89.  
  90. -----------------------------------------------
  91.  
  92. ----------RX50DRV.OLD
  93.     PUSH    ES            ;Save reg ES
  94.  
  95. ----------RX50DRV.ASM
  96. ;
  97. ;   Start of code  --  set up the segment registers as needed
  98. ;
  99.     PUSH    ES            ;Save reg ES
  100.  
  101. -----------------------------------------------
  102.  
  103. ----------RX50DRV.OLD
  104.     XOR    DL,DL            ;Clear drive byte and assume
  105.                     ;single side
  106.     MOV    DL,DRIVE[BX]        ;Make drive
  107.     SHL    DL,1            ;Select bits
  108.  
  109. ----------RX50DRV.ASM
  110. ;                                    ;RGT
  111. ;   If this is a double-sided disk,                    ;RGT
  112. ;    then the side number is the LSB of the track number.        ;RGT
  113. ;                                    ;RGT
  114.     XOR    AX,AX            ;Clear reg AH for side        ;RGT
  115.     MOV    AL,DISK_CMD_TRACK_OFF[BX]    ;Get track number    ;RGT
  116.     TEST    BYTE PTR DISK_CMD_DENSITY_OFF[BX],FDISK_DSIDE        ;RGT
  117.                     ;See if double-sided disk    ;RGT
  118.     JZ    STORE_TRK        ;If not, store track number    ;RGT
  119. ;                                    ;RGT
  120. ;   Disk is double-sided  --  put side no. in reg AH            ;RGT
  121. ;    and track number in reg AL                    ;RGT
  122. ;                                    ;RGT
  123.     MOV    AH,AL            ;Copy track number to reg AH    ;RGT
  124.     AND    AH,1            ;Mask out all but side no.    ;RGT
  125.     SHR    AL,1            ;Shift out side no. from track    ;RGT
  126. STORE_TRK:                                ;RGT
  127.     MOV    LOCAL_TRACK,AL        ;Store new track number        ;RGT
  128.     MOV    DL,DISK_CMD_DRIVE_OFF[BX]    ;Get drive        ;RGT
  129.     SHL    DL,1            ;Select bits
  130.  
  131. -----------------------------------------------
  132.  
  133. ----------RX50DRV.OLD
  134.     MOV    ES:DRVNO,DL        ;Store it
  135.  
  136. ----------RX50DRV.ASM
  137.     OR    DL,AH            ;OR in side number        ;RGT
  138.     MOV    ES:DRVNO,DL        ;Store it
  139.  
  140. -----------------------------------------------
  141.  
  142. ----------RX50DRV.OLD
  143.     MOV    AL,SECTOR[BX]        ;Get sector
  144.     CMP    BYTE PTR DENSITY[BX],0    ;See if RX-50
  145.     JNE    ZW0            ;If not, do not skew
  146.     CMP    BYTE PTR TRACK[BX],2    ;See if track < 2
  147.     JB    ZW0            ;If so, do not skew
  148.  
  149. ----------RX50DRV.ASM
  150.     MOV    AL,DISK_CMD_SECTOR_OFF[BX]    ;Get sector        ;RGT
  151.     MOV    AH,DISK_CMD_DENSITY_OFF[BX]    ;Get disk density    ;RGT
  152.     AND    AH,NOT FDISK_DSIDE    ;Mask out double-sided bit    ;RGT
  153.     JNZ    ZW0            ;If not, do not skew
  154.     CMP    BYTE PTR DISK_CMD_TRACK_OFF[BX],2    ;See if track < 2 ;RGT
  155.     JB    ZW0            ;If so, do not skew
  156.  
  157. -----------------------------------------------
  158.  
  159. ----------RX50DRV.OLD
  160.     MOV    AL,TRACK[BX]        ;Get track number
  161.     MOV    ES:TRACKN,AL        ;Set track
  162.     MOV    AL,COUNT[BX]        ;Get number of sectors
  163.     MOV    ES:NSECT,AL        ;Set number of sectors
  164.  
  165. ----------RX50DRV.ASM
  166.     MOV    AL,LOCAL_TRACK        ;Get track number
  167.     MOV    ES:TRACKN,AL        ;Set track
  168.     MOV    AL,DISK_CMD_COUNT_OFF[BX]    ;Get number of sectors    ;RGT
  169.     MOV    ES:NSECT,AL        ;Set number of sectors
  170.  
  171. -----------------------------------------------
  172.  
  173. ----------RX50DRV.OLD
  174.     MOV    AX,DMASEG[BX]        ;Get segment
  175.     SHL    AX,1            ;Shift over 4 bits to make abs.
  176.  
  177. ----------RX50DRV.ASM
  178.     MOV    AX,DISK_CMD_DMASEG_OFF[BX]    ;Get segment        ;RGT
  179.     SHL    AX,1            ;Shift over 4 bits to make abs.
  180.  
  181. -----------------------------------------------
  182.  
  183. ----------RX50DRV.OLD
  184.     ADD    AX,DMAOFF[BX]        ;Add in offset
  185.     MOV    ES:DMAADR,AX        ;Set DMA address
  186.     MOV    AL,COMMAND[BX]        ;Get command
  187.     CBW                ;Expand to word
  188.  
  189. ----------RX50DRV.ASM
  190.     ADD    AX,DISK_CMD_DMAOFF_OFF[BX]    ;Add in offset        ;RGT
  191.     MOV    ES:DMAADR,AX        ;Set DMA address
  192.     MOV    AL,DISK_CMD_CMD_OFF[BX]    ;Get command            ;RGT
  193.     CBW                ;Expand to word
  194.  
  195. -----------------------------------------------
  196.  
  197. ----------RX50DRV.OLD
  198. ;
  199.  
  200. ----------RX50DRV.ASM
  201. LOCAL_TRACK    DB    0        ;Storage for local track number
  202. ;
  203.  
  204. -----------------------------------------------
  205.  
  206. ----------RX50DRV.OLD
  207.     MOV    AL,XCOMMAND[BX]        ;Get command to perform
  208.     CMP    AL,6            ;Check if media function
  209.     JB    PHYS1            ;If not, then do disk I/O
  210.  
  211. ----------RX50DRV.ASM
  212.     MOV    AL,IOCTL_CMD_OFF[BX]    ;Get command to perform        ;RGT
  213.     CMP    AL,IOCTL_CMD_ENABLE_MC    ;Check if media function    ;RGT
  214.     JB    PHYS1            ;If not, then do disk I/O
  215.  
  216. -----------------------------------------------
  217.  
  218. ----------RX50DRV.OLD
  219. ;    Command = 6    -    Turn the function on
  220. ;    Command = 7    -    Turn the function off
  221. ;    Command = 8    -    Read the function status in Reg AL
  222. ;
  223.  
  224. ----------RX50DRV.ASM
  225. ;    Command = IOCTL_CMD_ENABLE_MC    -    Turn the function on    ;RGT
  226. ;    Command = IOCTL_CMD_DISABLE_MC    -    Turn the function off    ;RGT
  227. ;    Command = IOCTL_CMD_STATUS_MC    -    Read the func status     ;RGT
  228. ;
  229.  
  230. -----------------------------------------------
  231.  
  232. ----------RX50DRV.OLD
  233.     CMP    AL,7            ;Check if turn function on
  234.     JNZ    PHYS3            ;If > 8, then do as 8
  235.  
  236. ----------RX50DRV.ASM
  237.     CMP    AL,IOCTL_CMD_DISABLE_MC    ;Check if turn function off    ;RGT
  238.     JNZ    PHYS3            ;If > 8, then do as 8
  239.  
  240. -----------------------------------------------
  241.  
  242. ----------RX50DRV.OLD
  243.     MOV    AX,SEG Z80SEG        ;Set reg ES to Z80 segment
  244.     MOV    ES,AX
  245.     XOR    DL,DL            ;Clear drive
  246.     MOV    DL,XDRIVE[BX]        ;Get driver number
  247.     CMP    DL,0FFH            ;Is this a physical I/O
  248.     JNZ    LOGDRV            ;If not, it is logical
  249.     MOV    DL,XPHDRV[BX]        ;Otherwise, get user
  250.                     ;pre-defined drive code
  251.     JMP    SHORT STDRV        ;And set up the drive
  252. ;
  253.  
  254. ----------RX50DRV.ASM
  255.     MOV    AL,IOCTL_TRACK_OFF[BX]    ;Get track number        ;RGT
  256.     MOV    LOCAL_TRACK,AL        ;Store as local track        ;RGT
  257.     MOV    AX,SEG Z80SEG        ;Set reg ES to Z80 segment
  258.     MOV    ES,AX
  259.     XOR    DX,DX            ;Clear drive
  260.     MOV    DL,IOCTL_DRIVE_OFF[BX]    ;Get driver number        ;RGT
  261.     CMP    DL,0FFH            ;Is this a physical I/O
  262.     JNZ    LOGDRV            ;If not, it is logical
  263. ;                                    ;RGT
  264. ;   Since this is a direct call to the disk, invalidate disk cache    ;RGT
  265. ;                                    ;RGT
  266.     MOV    AL,IOCTL_PHDRV_OFF[BX]    ;Get user pre-defined drive code;RGT
  267.     SHR    AL,1            ;Shift over to get drive    ;RGT
  268.     SHR    AL,1                            ;RGT
  269.     SHR    AL,1                            ;RGT
  270.     SHR    AL,1                            ;RGT
  271.     CALL    INVALIDATE_DISK_CACHE    ;Invalidate cache for this disk    ;RGT
  272.     MOV    DL,IOCTL_PHDRV_OFF[BX]    ;Get user pre-defined drive code;RGT
  273.     JMP    SHORT STDRV        ;And set up the drive
  274. ;                                    ;RGT
  275. ;   Logical drive.                            ;RGT
  276. ;    Since this is a direct call to the disk, invalidate disk cache    ;RGT
  277. ;                                    ;RGT
  278. LOGDRV:
  279.     MOV    AL,IOCTL_DRIVE_OFF[BX]    ;Get driver number        ;RGT
  280.     CALL    INVALIDATE_DISK_CACHE    ;Invalidate cache for this disk    ;RGT
  281. ;
  282.  
  283. -----------------------------------------------
  284.  
  285. ----------RX50DRV.OLD
  286. LOGDRV:
  287.     SHL    DL,1            ;Move drive # to higher nybble
  288.  
  289. ----------RX50DRV.ASM
  290.     SHL    DL,1            ;Move drive # to higher nybble
  291.  
  292. -----------------------------------------------
  293.  
  294. ----------RX50DRV.OLD
  295. ;
  296.  
  297. ----------RX50DRV.ASM
  298. ;                                    ;RGT
  299. ;   If this is not a media check function, then a media check        ;RGT
  300. ;    must be done first to determine if this is a double-sided    ;RGT
  301. ;    media or not.                            ;RGT
  302. ;                                    ;RGT
  303.     CMP    BYTE PTR IOCTL_CMD_OFF[BX],IOCTL_CMD_MEDIA_CHK        ;RGT
  304.                     ;Is this a media check?        ;RGT
  305.     JE    SHORT STDRV        ;If so, then assume single side    ;RGT
  306. ;                                    ;RGT
  307. ;   If this is a format disk for logical disk, then the media check    ;RGT
  308. ;    cannot be done, as the disk may be uninitialized.        ;RGT
  309. ;    Thus, must assume a single-sided disk.                ;RGT
  310. ;                                    ;RGT
  311.     CMP    BYTE PTR IOCTL_CMD_OFF[BX],IOCTL_CMD_FMT_TRACK        ;RGT
  312.                     ;Is this a format command?    ;RGT
  313.     JE    STDRV            ;If so, then assume single side    ;RGT
  314. ;                                    ;RGT
  315. ;   Not a media check or format command.                ;RGT
  316. ;   Must find out what type of media this is.                ;RGT
  317. ;    First, see if it is already stored.                ;RGT
  318. ;                                    ;RGT
  319.     MOV    AL,IOCTL_DRIVE_OFF[BX]    ;Get drive number        ;RGT
  320.     CMP    AL,LAST_DISK_ACCESSED    ;See if same as last disk used    ;RGT
  321.     JNZ    DO_MEDIA_CHECK        ;If not, then do media check    ;RGT
  322. ;                                    ;RGT
  323. ;   Same disk is accessed as last time, but still may be different.    ;RGT
  324. ;    Now see if time has expired since last accessed.        ;RGT
  325. ;                                    ;RGT
  326.     CMP    DIRECT_DISK_TIMEOUT_FLAG,0    ;Timeout        ;RGT
  327.     JNZ    SET_SIDE        ;If not, then assume OK        ;RGT
  328.                     ;and set side            ;RGT
  329. ;                                    ;RGT
  330. ;   Do media check to set media type                    ;RGT
  331. ;                                    ;RGT
  332. DO_MEDIA_CHECK:                                ;RGT
  333.     MOV    AL,QKCMCOM        ;Get media check command    ;RGT
  334.     MOV    ES:FNCCOD,AL        ;Store in packet        ;RGT
  335.     MOV    ES:DRVNO,DL        ;Store drive no. in packet    ;RGT
  336.     PUSH    DS            ;Save old reg DS        ;RGT
  337.     MOV    AX,CS            ;Set DS to CS            ;RGT
  338.     MOV    DS,AX                            ;RGT
  339.     PUSH    DX            ;Save reg DX            ;RGT
  340.     PUSH    BX            ;Save reg BX            ;RGT
  341.     CALL    EXECZ80            ;Call Z80 to do media check    ;RGT
  342.     POP    BX            ;Restore saved reg BX        ;RGT
  343.     POP    DX            ;Restore saved reg DX        ;RGT
  344.     POP    DS            ;Restore saved reg DS        ;RGT
  345.     XOR    AX,AX            ;Clear reg AX            ;RGT
  346.     MOV    AL,IOCTL_DRIVE_OFF[BX]    ;Get drive number        ;RGT
  347.     MOV    SI,AX            ;Store in reg SI        ;RGT
  348.     MOV    AL,ES:BYTE PTR TFORMAT[SI]    ;Get media type        ;RGT
  349.     MOV    LAST_DISK_DENSITY,0    ;Set density to single-sided    ;RGT
  350. ;                                    ;RGT
  351. ;   Reg AL now has media type  --  see if double-sided            ;RGT
  352. ;                                    ;RGT
  353.     TEST    AL,010H            ;See if double-sided        ;RGT
  354.     JZ    STDRV            ;If not, leave side zero    ;RGT
  355. ;                                    ;RGT
  356. ;   This is a double-sided media  --  store for last disk accessed    ;RGT
  357. ;                                    ;RGT
  358.     MOV    LAST_DISK_DENSITY,0FFH    ;Set density to double-sided    ;RGT
  359. ;                                    ;RGT
  360. ;   This is a double-sided media  --  set up side to LSB of track    ;RGT
  361. ;                                    ;RGT
  362. SET_SIDE:                                ;RGT
  363.     CMP    LAST_DISK_DENSITY,0    ;See if single-sided        ;RGT
  364.     JZ    STDRV            ;If so, leave side zero        ;RGT
  365.     MOV    AL,LOCAL_TRACK        ;Get track number        ;RGT
  366.     AND    AL,1            ;Mask out all but side bit    ;RGT
  367.     OR    DL,AL            ;Put side in with drive        ;RGT
  368.     MOV    AL,LOCAL_TRACK        ;Get track number again        ;RGT
  369.     SHR    AL,1            ;Shift out side number        ;RGT
  370.     MOV    LOCAL_TRACK,AL        ;And store new value of track    ;RGT
  371. ;
  372.  
  373. -----------------------------------------------
  374.  
  375. ----------RX50DRV.OLD
  376.     MOV    ES:DRVNO,DL        ;Store drive/side in packet
  377.     MOV    CX,XTRACK[BX]        ;Get track number
  378.     XOR    AX,AX            ;Clear high byte
  379.     MOV    AL,XSECTOR[BX]        ;Get sector number
  380.     CMP    CX,02            ;See if track > 2
  381.     JB    SKWED            ;If not, do not skew
  382.  
  383. ----------RX50DRV.ASM
  384.     MOV    AL,IOCTL_DRIVE_OFF[BX]    ;Get drive number        ;RGT
  385.     MOV    LAST_DISK_ACCESSED,AL    ;Store as last disk used    ;RGT
  386.     MOV    DIRECT_DISK_TIMEOUT_FLAG,DIRECT_DISK_TIMEOUT_TIME    ;RGT
  387.                     ;Set timeout time        ;RGT
  388.     MOV    ES:DRVNO,DL        ;Store drive/side in packet
  389.     MOV    CL,IOCTL_TRACK_OFF[BX]    ;Get track number        ;RGT
  390.     XOR    AX,AX            ;Clear high byte
  391.     MOV    AL,IOCTL_SECTOR_OFF[BX]    ;Get sector number        ;RGT
  392.     CMP    CL,02            ;See if track > 2        ;RGT
  393.     JB    SKWED            ;If not, do not skew
  394.  
  395. -----------------------------------------------
  396.  
  397. ----------RX50DRV.OLD
  398.     MOV    ES:TRACKN,CL        ;Save track number
  399.  
  400. ----------RX50DRV.ASM
  401.     MOV    CL,LOCAL_TRACK        ;Get real track number        ;RGT
  402.     MOV    ES:TRACKN,CL        ;Save track number
  403.  
  404. -----------------------------------------------
  405.  
  406. ----------RX50DRV.OLD
  407.     MOV    AL,XCOMMAND[BX]        ;Get command
  408.     MOV    SI,AX            ;Move to index into function table
  409.     CMP    AL,0            ;If read, use intermediate buffer
  410.     JZ    REDFND1            ;and move the data later
  411.     MOV    CX,XDMASEG[BX]        ;Get users data buffer segment
  412.     MOV    AX,XDMAOFF[BX]        ;Get users data buffer offset
  413.     CMP    SI,03            ;Is this a format?
  414.     JZ    FMTFND1            ;If so, then user the user's buffer
  415.  
  416. ----------RX50DRV.ASM
  417.     MOV    AL,IOCTL_CMD_OFF[BX]    ;Get command            ;RGT
  418.     MOV    SI,AX            ;Move to index into function table
  419.     CMP    AL,IOCTL_CMD_READ    ;If read, use intermediate buf    ;RGT
  420.     JZ    REDFND1            ;and move the data later
  421.     MOV    CX,IOCTL_DMASEG_OFF[BX]    ;Get users data buffer segment    ;RGT
  422.     MOV    AX,IOCTL_DMAOFF_OFF[BX]    ;Get users data buffer offset    ;RGT
  423.     CMP    SI,IOCTL_CMD_FMT_TRACK    ;Is this a format?        ;RGT
  424.     JZ    FMTFND1            ;If so, then user the user's buffer
  425.  
  426. -----------------------------------------------
  427.  
  428. ----------RX50DRV.OLD
  429.     MOV    CX,0100H        ;Get sector size
  430.     REP    MOVSW            ;Move the data
  431.  
  432. ----------RX50DRV.ASM
  433.     MOV    CX,0100H        ;Get sector size in words
  434.     REP    MOVSW            ;Move the data
  435.  
  436. -----------------------------------------------
  437.  
  438. ----------RX50DRV.OLD
  439.     CMP    DX,04            ;Was this a media check
  440.     JNZ    EGGSIT            ;If not, just bail out
  441.  
  442. ----------RX50DRV.ASM
  443.     CMP    DX,IOCTL_CMD_MEDIA_CHK    ;Was this a media check        ;RGT
  444.     JNZ    EGGSIT            ;If not, just bail out
  445.  
  446. -----------------------------------------------
  447.  
  448. ----------RX50DRV.OLD
  449.     CMP    BYTE PTR XCOMMAND[BX],0    ;See if read
  450.     JNZ    OUTHERE            ;If not, get out of here
  451.  
  452. ----------RX50DRV.ASM
  453. ;                                    ;RGT
  454. ;   If this is a media check, then copy the buffer as if in a read    ;RGT
  455. ;                                    ;RGT
  456.     CMP    BYTE PTR IOCTL_CMD_OFF[BX],IOCTL_CMD_MEDIA_CHK        ;RGT
  457.                     ;See if media check        ;RGT
  458.     JZ    COPYBUF            ;If so, then copy the buffer    ;RGT
  459.     CMP    BYTE PTR IOCTL_CMD_OFF[BX],IOCTL_CMD_READ        ;RGT
  460.                     ;See if read            ;RGT
  461.     JNZ    OUTHERE            ;If not, get out of here
  462.  
  463. -----------------------------------------------
  464.  
  465. ----------RX50DRV.OLD
  466. ;
  467.     PUSH    DS            ;Save registers for move
  468.  
  469. ----------RX50DRV.ASM
  470. ;    Or it is a media check  --  move data to user buffer        ;RGT
  471. ;
  472. COPYBUF:                                ;RGT
  473.     PUSH    DS            ;Save registers for move
  474.  
  475. -----------------------------------------------
  476.  
  477. ----------RX50DRV.OLD
  478.     MOV    ES,XDMASEG[BX]        ;Put data where user expects
  479.     MOV    DI,XDMAOFF[BX]
  480.     PUSH    CS            ;Set up source address of buffer
  481.  
  482. ----------RX50DRV.ASM
  483.     MOV    ES,IOCTL_DMASEG_OFF[BX]    ;Put data where user expects    ;RGT
  484.     MOV    DI,IOCTL_DMAOFF_OFF[BX]                    ;RGT
  485.     PUSH    CS            ;Set up source address of buffer
  486.  
  487. -----------------------------------------------
  488.  
  489. ----------RX50DRV.OLD
  490. ;
  491.  
  492. ----------RX50DRV.ASM
  493. ;                                    ;RGT
  494. ;   Define a byte for the last disk accessed and the timeout time.    ;RGT
  495. ;                                    ;RGT
  496. LAST_DISK_ACCESSED    DB    0    ;Last disk used            ;RGT
  497. LAST_DISK_DENSITY    DB    0    ;Density of last disk used    ;RGT
  498. DIRECT_DISK_TIMEOUT_FLAG DB    0    ;Timeout for last disk used    ;RGT
  499. DIRECT_DISK_TIMEOUT_TIME EQU    5    ;Set timeout to 5 seconds    ;RGT
  500. ;
  501.  
  502. -----------------------------------------------
  503.