background image

Summary of Contents for FD-4000

Page 1: ...Djsk Drives User s Manual For all FD Series Models...

Page 2: ...copied in whole or in part without prior written permission from Creative Micro Designs Inc JiffyDOSTM RAMLinkTM FD 2000TM FD 4000TM and HD Series are trademarks of Creative Micro Designs Inc Commodo...

Page 3: ...ying Software to the FD 10 Softwa e without copy protection 10 Copy Protected Software 11 GEOS gateWay and Cp M 12 1581 Compatible Software 12 Popular Programs that work on the FD 13 Loading and Runni...

Page 4: ...ion Numbers in Disk Commands 37 Partition Commands 38 Creating Partitions 38 Creating 1581 Style Sub partitions 38 Deleting Partitions 39 Deleting 1581 Style Sub partitions 39 Changing Partitions 39 M...

Page 5: ...The Direct Access ChanneL 63 Block Commands 63 Allocating and Freeing Blocks 63 The Buffer Pointer 64 Reading and Writing Blocks 64 Block Execute 64 Memory Commands 65 Reading from Drive Memory 65 Wr...

Page 6: ...ring data 97 1541SUB and 1581SUB 97 Appendix 8 Error Codes Command Channel Error Codes 99 Appendix C Disk Partition and File Formats Physical Disk Formats 105 Common Formats Used in all Partition Type...

Page 7: ...Partition types available include 1541 1571 1581 and CMD Native partitions Both FD Series drive models will automatically determine if an inserted disk is in 1581 or CMD partitionable format and spec...

Page 8: ...ich you own please have your serial number model number and any other pertinent information ready The phone number to call is CMD Technical Support 413 525 0023 If you have programming questions or yo...

Page 9: ...the back of the drive The other end of this cable may be connected to the port labeled SERIAL on the back of your computer or if this connection is already being used by another disk drive or printer...

Page 10: ...drive for When considering what device number to use the drive as be aware that the SWAP button on the front panel will allow you to swap the device number to 8 or 9 very easily for temporary requirem...

Page 11: ...d and write disks that were created on a Commodore 1581 and can format 800K disks for use on a 1581 Your FD responds to all 1581 commands and can read all 1581 files and formats including GEOS and CP...

Page 12: ...1 1571 or 1581 drive A good example is the standard GEOS desktop which will work on the FD only through the use of 1581 Emulation Mode partitions The table below gives the number of blocks required to...

Page 13: ...t disks in ED Enhanced Density Formatting Diskettes The easiest way to format disks is to use the FD TOOLS utility program supplied on the FD UTILITIES disk The FORMATTING OPTIONS area in FD TOOLS all...

Page 14: ...the tab by using the point of a pen or a similar instrument It is important to note that the write protect window on a 3 5 disk functions in a manner opposite to that of the write protect tab on a 5...

Page 15: ...te one or more partitions on a CMD formatted disk For each partition you create you must select a number name and type 1541 1571 1581 or Native If you choose to create a Native Mode partition you will...

Page 16: ...are to the FD by using FCOPY as it will allow you to place your programs and data files into the powerfiIl and flexible Native Mode partitions MCOPY is a full disk copier that makes a mirror image cop...

Page 17: ...ch are the same when copying these types of disks These files mayor may not be identical If some of the information for a program is stored directly on the disk without a file name or the disk name is...

Page 18: ...ble with commercial productivity software than the 1581 This is due mainly to the FD s ability to emulate the exact track and sector layout of 1541 and 1571 disks through the use of CMD s emulation mo...

Page 19: ...particular program To load a program from the FD you will use the same method as you did with your 1541 1571 or 1581 drive for example LOAD 8 1 However you may have to perform one or two preliminary s...

Page 20: ...nd ERROR lamps will stay on for about three seconds to indicate when an FD has been swapped to device 8 or 9 The following chart shows how the FD Series drives react to presses of the SWAP button NUMB...

Page 21: ...ocking up your computer A rule of thumb to apply before pressing the SWAP button is to make sure that none of your drive activity lights are on and that the program you are using is not processing dat...

Page 22: ...disk and a 1581 partition to a 1581 disk If you own another CMD device HD RAMLink RAMDrive or another FD you can also copy the contents of a Native Mode partition to another Native Mode partition tha...

Page 23: ...he battery wears down to the point where it cannot retain the proper time Viewing the Current Time The current time as kept by the RTC can be viewed by using the Set Real Time Clock option in FD TOOLS...

Page 24: ...Using the FD This page has been intentionally left blank 18...

Page 25: ...ntact Berkeley Softworks GEOWorks if you need to upgrade your GEOS to V2 0 Device Numbers GEOS utilizes devices numbered 8 9 or 10 and uses device number 11 temporarily for drive swapping Therefore yo...

Page 26: ...two drives besides the FD 3 Select the 1581 option 4 Select save configuration from thefile menu 5 Your FD is now installed and ready for use under GEOS Select quit from the file menu and begin using...

Page 27: ...in your FD you can automatically set the GEOS clock to the proper time whenever you boot GEOS To do so use GEOS to copy the CMDT ime autoexec utility from the FD Utilities disk onto your GEOS boot di...

Page 28: ...on partitions while the FDNative drivers allow you to use Native Mode partitions only one partition type can be used at a time Before you can use the FD with gateWay you will have to copy the driver s...

Page 29: ...block which is automatically appended to every subdirectory in a partition thus giving access to those files no matter which subdirectory you are in The most often realized benefit of this feature is...

Page 30: ...on the PDIR button to return to the partition directory to select a different partition 4 Select the files that you wish to copy You select any single file by clicking once on its name Selected files...

Page 31: ...1581 In fact as far as the CP M system itself is concerned the FD is a 1581 Because the FD is recognized as a 1581 you can presently use only 800K disks in your FD under CP M 1 6M and 3 2M disks will...

Page 32: ...l format the disk with 800K storage Important DO NOT reformat a disk that has already been formatted as a CMD Partitionable disk see Section 3 Use only blank unformatted disks or disks with a 1581 Com...

Page 33: ...using a number of separate disks all located within the same physical device In all your FD can handle up to 31 of these partitions For an FD disk to be partitionable it must be formatted as a CMD par...

Page 34: ...nd directory areas of these partitions are also located in the same blocks as they would be on the emulated drive Even the internal job queue codes and locations have been duplicated Other similaritie...

Page 35: ...you wish to use This will assure that any further file access will occur within that partition especially if the software does not allow you to send disk commands Native Mode Subdirectories The follo...

Page 36: ...s if you wish to be able to easily access files located in various subdirectories with a single command This is because the input buffer of the FD is only 127 characters long therefore nesting subdire...

Page 37: ...exactly as shown These will appear as plain text User supplied values are those which must be supplied by the user and whose values and type are dependent upon the use of the command These will appear...

Page 38: ...d a comma are enclosed in braces and are separated by a vertical bar This means that if you want to supply the unit number it must be preceded by either the literal ON or by a comma The full use of th...

Page 39: ...lO If your current partition is partition 2 but your current directory in partition 1 is UTILITIES you could enter LOAD l COPIERS COPY lO If your current partition is partition 2 but the current direc...

Page 40: ...ble to use BASIC 2 0 or DOS command channel commands on a C128 instead of using BASIC 7 0 commands This is because BASIC 7 0 places some limitations on the use of partition numbers in its command synt...

Page 41: ...BASIC s direct mode This example sends a command via the command channel OPEN15 lO 15 PRINT 15 I CLOSE15 This type of command may also be sent without using the PRINT OPEN15 lO 15 I CLOSE15 Some comm...

Page 42: ...l contain zeroes Note If you are using JiffyDOS it is also possible to read the error channel by simply pressing the commercial at key and then RETURN There are occasions where it is more desirable to...

Page 43: ...JiffyDOS l MCOPY Note If you LOAD a program from a partition other than the current one and that program needs to load other files located in the partition it came from the program will not be able t...

Page 44: ...st contain header and directory blocks the minimum size of a sub partition is 120 blocks The starting sector must be zero and the ending sector must be a mUltiple of 40 Sub partitions are not allowed...

Page 45: ...ng Partitions You may change from one partition to another by sending the CP Change Partition command to the FD via the command channel The syntax is OPENlf dv 15 PRINT lf CPn CLOSElf where If dv n Ex...

Page 46: ...occur if you issue an Emulation ModeINITIALIZE command to the 1581 Emulation Mode partition Please note that if you exit a 1581 Emulation Mode partition with a CP command and then return to it later...

Page 47: ...sk will be formatted as an 800K CMD Partitionable disk containing a system partition plus 1 1581 emulation partition If the disk is already formatted as any of the CMD Partitionable formats then only...

Page 48: ...e name you wish to appear in the partition header il a two character id for the partition header n the partition number you wish to format 0 or 1 dv the device number of the FD drive Examples HEADER P...

Page 49: ...le I3 Validating Partitions The DOS VALIDATE and BASIC 7 0 COLLECf commands check all files in a partition to verify proper allocation of disk space free any improperly allocated blocks and delete unc...

Page 50: ...er of the FD drive Examples LOAO P 10 LOAO P 10 LOAO P 8 10 JiffyDOS examples P P N 10 Renaming Partitions If you reformat a partition with the DOS NEW command you may wish to change its name in the p...

Page 51: ...DY64 CLOSE15 JiffyDOS Examples R H WORK R H ASSEM BUDDY64 lO Getting Partition Information The DOS Get Partition Info command has been created for the purpose of gathering information about the curren...

Page 52: ...partition middle byte Byte 29 Size of partition low byte Byte 30 CHR 13 Note The values returned in bytes 19 21 and 27 29 are specified in 512 byte blocks Also keep in mind that any currently undefin...

Page 53: ...S commands have been added to allow you to create and remove subdirectories as well as to change the current directory Both the Create and Change commands use a similar syntax while the syntax for the...

Page 54: ...the partition in which you are located place the partition number at the start of the path in front of any slashes The following examples should help clarify these guidelines OPEN15 lO 15 PRINT 15 MD...

Page 55: ...II TEMP CLOSE S OPEN15 10 15 PRINT 15 CD1 TEMP TEMP2 CLOSE15 OPEN15 10 15 PRINT 15 Dl C OSE1 5 OPEN15 10 15 PRINTf15 CD TEMP TEMP2 CLOSE15 JiffyDOS Examples CD TEMP 10 CD1 TEMP CD1 TEMP TEMP2 CD1 CD...

Page 56: ...partition number or path and by using a filename or pattern matching characters to determine which files to include in the listing The equals sign and a filetype designator may also be included after...

Page 57: ...ading directories These options allow the stamp to be viewed and also permit you to select files which were created within a specifie d timeframe The syntax for the time and date stamped d ir tory is...

Page 58: ...ated was to allow you to use the time and date of files as pattern matching criteria within programs which cannot accept the extra time and date characters The stamp option will list all files which h...

Page 59: ...nta can be used to load programs in BASIC 2 0 and BASIC 7 0 LOAD enj path j filename dv sal where n is any legal partition number from 1 to 31 path the subdirectory path to the file filename is any le...

Page 60: ...O U9 BO P3584 DLOAD TEST DO ON U9 DLOAD TEST2 Saving Files The following syntax can be used to save programs in BASIC 2 0 and BASIC 7 0 SAVE n path filename dv where n path filename dv is any legal pa...

Page 61: ...Replace Examples BSAVE SPRITE DO U9 BO P3584 DSAVE TEST Dl ON U9 DSAVE TEST2 Verifying Files BASIC 2 0 and 7 0 contain commands which allow you to verify if a program has been saved properly These co...

Page 62: ...cified for the two file names must either be the same or must indicate the same partition The syntax for the DOS RENAME command is OPENlf dv 15 PRINT lf R n path newname n path filename CLOSElf where...

Page 63: ...ile s Multiple files may be scratched with this command which will accept up to five separate filename parameters Different partitions can be specified with the separate filenames The filename paramet...

Page 64: ...because they look at specific memory locations to try to identify the drive being used or attempt to write drive specific code into the disk drive to speed up the copy process Copying and Combining f...

Page 65: ...rent device number of the FD drive If you use this command to copy a file to a different partition you may use the same fIlename for both files If they are to reside in the same partition you must use...

Page 66: ...n unlocked The Lock command is a toggle function Using it on an unlocked file will cause the file to become locked Using it on a file which has already been locked will unlock that file The syntax for...

Page 67: ...SIC 7 0 DOPEN commands Here is the BASIC 2 0 syntax for opening or creating a new relative file OPENlf dv sa en path filename I L CHR rl where If the logical file number dv the current device number o...

Page 68: ...where if m of Examples the logical fIle number for the relative fIle the record number you wish to access or create the byte number in the record which you wish to start reading from or writing to fir...

Page 69: ...st change partitions with the CP command first All further access to this file will occur in that Ioartition number even if vou change oartitions after opening the file Block Commands The BLOCK comman...

Page 70: ...W sa n t s where If the logical menumber used for the command channel sa the secondary address used for the direct access flle n partition number always 0 t the logical track of the block to be read...

Page 71: ...R mb CHR nb CHR d where If ml mh nb d the logical file number used for the command channel the low byte of the starting memory address the high byte of the starting memory address the number of bytes...

Page 72: ...ntax is PRINTttlf Ul sa n t s PRINTttlf U2 sa n t s where If the logical file number used for the command channel sa the secondary address used for the direct access file n partition number always 0 t...

Page 73: ...isks and COPYRIGHT CBM 86 on 1581 compatible disks In order to retain 1581 compatibility the FD will also search for the autoboot file whenever you initialize a 1581 Emulation partition that has bit 6...

Page 74: ...mber t a variable to be used for the timing loop Here is a sample program using all of the SWAP commands This program assumes that the FD is device number 10 at the time the program begins 100 OPEN1S...

Page 75: ...e and Date in ASCII Format The T RA command allows you to read the FD s clock and return the date and time as all ASCII string over the error channel The syntax is OPENlf dv 15 PRINT lf T RA where If...

Page 76: ...se parameters are not provided in the correct manner the FD will not set the time correctly Reading Time and Date in Decimal Format The T RD command allows you to read the FD s clock and return the da...

Page 77: ...e and time as a series of BCD bytes over the error channel The syntax is OPENlf dv 1S PRINT lf T RB where If the logical file number dv the device number of the FD The error channel will return the da...

Page 78: ...HES PROTOCOL BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 1 0 1 0 1 0 0 1 1 0 0 0 E X S 0 0 0 DESTINATION TRACK DESTINATION SECTOR NUMBER OF SECTORS NEXT TRACK optional Logical Format Dependent on partition type see...

Page 79: ...sing physical format Partition Number only 0 is supported Output data set fast serial in pull clock low wait for status byte release clock Repeat for multiple sectors CONVENTIONS Before READING from o...

Page 80: ...03 09 X Don t Care N Partition Number only 0 is supported Bytes 03 09 are optional and areonly accepted when physical formatting is specified M l If you do not specify values for these bytes system de...

Page 81: ...24 byte sector size 10 2048 byte sector size 5 4096 byte sector size 2 8192 byte sector size Byte 6 Starting Track 0 through 79 default 0 Byte 7 Fill Byte othrough 255 defaults ISO E5 IBM F6 Byte 8 St...

Page 82: ...or table if T l Notes The sector table is a series of bytes 1 2 3 showing the sector numbers of the sectors found Second status byte is from track offset 0 unless F l then status is from offset track...

Page 83: ...R ri Set Cache Dump Interval n time in milliseconds lO Mn Mode Select returns error n 0 single sided n 1 double sided MR CHR a CHR p Memory Read 1 0 0 a high byte of starting address p number of pages...

Page 84: ...is used to set the starting sector for the dump Fastload Utility BYTE BIT7 00 0 01 0 02 P 03 SWITCHES PROTOCOL OUlPUT STATUS 78 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BITO 1 0 1 0 1 0 1 0 1 1 0 0 0 0 X X 1 1 1...

Page 85: ...ber only 0 is supported Z Sector Size 00 128 or 2048 byte sector size 01 256 or 4096 byte sector size 10 512 or 8192 byte sector size 11 1024 byte sector size C Controller Status 0000 OK 0001 OK 0010...

Page 86: ...ine The emulation job queues are scanned first if the current partition is an emulation type Important Job Queue Memory Locations 1 le Agg e s Bang Desc lption JOBS 41 0000 0004 1541 1571 Job Queues H...

Page 87: ...ormats track where head is located using current side density sector size sectors per track and starting sector Fills sectors using value in FMT_FILL unless FMT_FILL contains F5 and density is 800K in...

Page 88: ...ache Same as READ_PHYS_NQ except marks cache as dirty Tests write protect status and returns 08 if write protect is on 00 if off Seeks to the physical track sector and side of the logical block specif...

Page 89: ...identical to READ_MULTI FO FRMT_DSK Formats entire disk using the currently defined physical format if disk is not a CMD formatted disk or fills current partition using FMT_FILL byte HDRS should cont...

Page 90: ...ERDKCG 00 Disk changed OC ERINFf 00 Invalid fonnat 00 EREQFL 00 Equipment check FDC error OE CllJOB 00 Illegal job code OF ERNOMD CDNR 00 No media drive not ready 20 ERSKFL 01 Seek failed 21 ERCDIP 00...

Page 91: ...9C BLKJMP FF15 019E USRJMP FF18 OlAO RECJMP FFIB 01A2 UTLJMP FFlE 01A4 COPJMP FF21 01A6 RENJMP FF24 01A8 SCRJMP FF27 OlAA NEWJMP FF2A OlAC CERJMP FF2D OIAE ATNJMP FF30 OlBO TLKJMP FF33 OlB2 LSNJMP FF3...

Page 92: ...ble 1581 Compatible Jump tti m AdduHHi JSTJMP FF54 CMDJMP FF57 ALXJMP FF5A RCRJMP FF5D AEDJMP FF60 FSDJMP FF63 ALBJMP FF66 LDKJMP FF69 DTCJMP FF6C 86 Description Direct controller call 1581 Job Queue...

Page 93: ...ay 128 driver for Native partitions Partition selector and copier for GEOS Clock setting autoexec for GEOS The function and use of the gateWay drivers and the CMD_MOVE and CMD_TIME utilities for GEQS...

Page 94: ...E SELECTION LOG NEW DISK EXIT FROM PROGRAM DISKETTE FORMATTING OPTIONS This option enables you to format disks for use with your FD Appropriate choices must be made regarding format type density and p...

Page 95: ...beginning the actual formatting of the disk FD TOOLS will prompt you to insert a diskette After you have inserted the disk press RETURN to format it or press to exit without performing the format It w...

Page 96: ...ew partition in the same manner described above If you press N you will then be asked whether of not you want to write the new partition table the new partitions you have defined are not actually crea...

Page 97: ...k Press Y to delete the partitions or press N to return to the main menu without altering the partition layout on the disk Reformat Partition This option allows you to NEW the directory of a partition...

Page 98: ...d edit the time and date again CHANGE DEVICE SELECTION If you have more than one FD attached to your system this option allows you to select the particular FD that you want to work with in FD TOOLS Af...

Page 99: ...he particular drive happens to be highly incompatible with standard Commodore style DOS commands and file handling procedures Set Target Device FS This option selects the disk drive that you wish to c...

Page 100: ...d press the back arrow key to return to the main menu Reselect Files R You may at any time after selecting files return to the file selection mode without re reading the directory This allows you to c...

Page 101: ...tions to a floppy disk or to other partitions on the FD It is also possible to copy Native Mode partitions to other Native Mode partitions of different sizes This can be useful when you decide that yo...

Page 102: ...using the f1 key When in Backup Mode BCOPY will let you select only CMD devices for the source drive the device you will backup rom CMD devices include the PD HD RAMLink and RAMDrive When you select...

Page 103: ...ure you are inserting them in the proper order or if they are the correct ones for the intended target disk or partition Therefore it is important that you label your backup disks properly and that yo...

Page 104: ...e way Native Mode subdirectories work 1581SUB must create two subdirectories to provide the proper headers and directory space This program has been tested for use with Superbase and Superbase 128 and...

Page 105: ...error may actually have occurred See Appendix C for listings of the logical track and sector layouts of the various partition types utilized by the PD In addition some errors define special meanings f...

Page 106: ...that data stored in drive memory Often caused by defective media 26 WRITE PROTECT ON Indicates that an attempt was made to write to the FD while the disk inserted was write protected or while the sof...

Page 107: ...to issue a command to the FDC while the previous command was still executing This should never occur while using the standard DOS but might result if custom FDC routines are utilized 4 2 CONTROLLER E...

Page 108: ...FILE TOO LARGE The last attempt to access a relative record would have exceeded the amount of storage space remaining in the partition specified Under this condition no additional records were added...

Page 109: ...ffers in the drive are currently in use This may be an indication that too many files are currently open 71 DIRECTORY ERROR Indicates that the BAM Block Availability Map on the diskette is invalid To...

Page 110: ...Error Codes This page has been intentionally left blank 104...

Page 111: ...e commands see the Command Reference section for more information on the physical access ofFD disks This appendix details the physical layout of standard FD disk formats along with the logical DOS tra...

Page 112: ...255 indicates last block 2 31 File entry 1 see Figure C3 32 33 Two zero 0 bytes reserved 34 63 File entry 2 see Figure C3 64 65 Two zero 0 b tes reserveti 66 95 File entry 3 see FiQure C3 96 97 Two z...

Page 113: ...ta block or header block if filetype is DIR 2 Sector pointer to first data block or header block if filetype is DIR 3 18 Filename padded with shifted spaces AO 19 Pointer to starting track of side sec...

Page 114: ...Qh 17 18 66 through 70 othrough 16 17 Figure C5 HEADER BAM 1541 1571 EMULATION MODES TRACK 18 SECTOR 0 BYTE VALUE DESCRIPTION 0 18 Track pointer to first directory block 1 1 Sector pointer to first di...

Page 115: ...ed by that byte A binary value of 1 indicates that the sector is available while a value of 0 indicates that the sector is allocated Figure C8 BAM ENTRY FORMAT 1571 side 2 EMULATION MODE Format of byt...

Page 116: ...shifted spaces 22 23 Disk 10 24 160 Shifted Space for separator 25 51 ASCII 3 for DOS version 26 68 ASCII D for format tyRe 27 28 160 Shifted spaces for separators 29 255 0 Null bytes reserved Figure...

Page 117: ...ectors 1 and 2 Figures C12 C13 BYTE DESCRIPTION 0 Number of sectors available on track 1 Block Availability for sectors 0 7 2 Block Availability for sectors 8 15 3 Block Availability for sectors 16 23...

Page 118: ...to ROOT header track 33 1 Pointer to ROOT header sector 34 Track pointer to DIR PARENT header 35 Sector pointer to DIR PARENT header 36 Track pointer to DIR entry in PARENT directory 37 Sector pointer...

Page 119: ...or tracks 112 throuqh 119 32 bytes per track 1 17 BAM for tracks 120 throuQh 127 32 bytes per track 1 18 BAM for tracks 128 through 135 32 bytes per track 1 19 BAM for tracks 136 throuqh 143 32 bytes...

Page 120: ...5 Block Availability for sectors 120 127 16 Block Availability for sectors 128 135 17 Block Availability for sectors 136 143 18 Block Availability for sectors 144 151 19 Block Availability for sectors...

Page 121: ...21 RELATIVE FILE DATA BLOCK FORMAT BYTE DESCRIPTION 0 Pointer to track of next data file block contains a zero if current block is last data block in file 1 Pointer to sector of next data file block c...

Page 122: ...of first side sector in this group number 0 5 Pointer to sector of first side sector in this group number 0 6 7 Pointer to track and sector of second side sector in this group number 1 8 9 Pointer to...

Page 123: ...7FFF Cache BAM Buffers 5000 4FFF System I O 4000 3FFF 2K Free RAM 3800 37FF System RAM Variables 2200 21FF DOS Buffers 0300 02FF System Variables 0280 027F Command Buffer 0200 OlFF Vectors Variables...

Page 124: ...Job 01FF System Variables 027F Input Command Buffer 127 bytes 02FF System Variables 21FF OOS Buffers 31 buffers 256 bytes each 24FF System Buffers 253F Error Buffer 27FF System Variables 283F Native M...

Page 125: ...OS clock If you purchased your FD with the RTC option already installed you can disregard these instructions However if you purchased the RTC as a separate add on accessory at a later date you will ne...

Page 126: ...must point toward the outside of the circuit board see the figure below Make sure all pins are aligned properly to avoid damage and then press the ROM or RTC firmly into place RTC installations only...

Page 127: ...ion repair or replace any part deemed to be defective at no charge for parts labor to the original retail customer During the applicable warranty period wherein CMD will repair or replace defective pa...

Page 128: ...es of unauthorized service agencies CMD will not be responsible for labor charges from CMD authorized service agencies or CMD itself except during the warranty period applicable thereto CMD will not b...

Reviews: