Jump to content

Commodore 1541

From C64 Wiki


The Commodore 1541 is an external 5¼-inch floppy-disk drive for Commodore’s 8-bit home-computer environment. Rather than acting only as a mechanism controlled by the host, it contains a 1 MHz MOS 6502, 2 KiB of RAM, 16 KiB of ROM, and drive-resident DOS; consequently, it performs disk and file-system work in the peripheral itself.[1][2] Its normal medium is a single-sided 5¼-inch diskette, and its standard DOS layout provides 174,848 bytes in 683 sectors, of which 664 blocks are free after formatting.[3][4]

Architecture and drive-resident DOS

[edit | edit source]

The 1541’s 6502 runs from a 1 MHz system clock. Its two ROM chips occupy the upper 16 KiB of the processor’s address space, while the 2 KiB RAM area supplies processor workspace and four temporary buffers.[1][5] The practical result is a small computer dedicated to storage: the host sends requests, while the drive’s ROM routines locate blocks, manage the disk’s allocation and directory structures, and marshal sector data through RAM buffers.[5][2]

The service documentation identifies a 6522 Versatile Interface Adapter (VIA) on the serial-interface side and another VIA in the read/write and motor-control path.[1] The first connects the processor to the serial lines; the latter exchanges bytes with the disk logic and controls the stepper and spindle mechanisms.[1] This division is important when interpreting software that addresses the drive directly: a request can use the documented DOS interface, but software can also rely on drive timing, buffering, or ROM behavior that belongs to the peripheral rather than the host computer.[5][6]

The name “1541” covers more than one board and ROM revision. Commodore’s technical-manual archive distinguishes long-board, short-board, and 1541B material, while a reconstructed ROM-source history records original and updated 1541 ROM part numbers before the later 1541C and 1541-II revisions.[7][6] Accordingly, a program or repair procedure that assumes a particular board or ROM should identify that revision rather than treating every unit carrying the 1541 name as electrically identical.[7][8]

Serial bus

[edit | edit source]

The drive connects through Commodore’s standard serial bus. The two rear serial sockets allow a device chain: the user guide describes connecting the computer to either socket and continuing from the other socket to a printer or additional drive.[3] At the electrical level, the six-pin connector carries ground, reset, service request, attention, clock, and data; clock and data provide the serial transfer and handshake roles, while attention participates in bus selection.[1][9]

This is a shared, daisy-chained peripheral bus rather than a point-to-point disk cable. A computer acts as controller, addresses a participant, and uses byte-stream transfers; devices can expose multiple channels, including a command/status channel and data channels.[9][10] The 1541’s serial implementation is also a major performance constraint. The original 6522 shift-register issue led Commodore to implement the transfer protocol in software, and C64 timing accommodations lengthened the relevant hold time to 60 microseconds for device-to-controller sending.[9] This explains why the data rate visible to the computer should not be confused with the much faster rate at which magnetic data passes the head.[9][5]

Disk organization and recording

[edit | edit source]

In the standard DOS format, the disk is divided into 35 numbered tracks and 256-byte sectors. Tracks 1–17 contain 21 sectors each, tracks 18–24 contain 19, tracks 25–30 contain 18, and tracks 31–35 contain 17, for 683 sectors in total.[3][4] Track 18 holds the directory and allocation information, which accounts for the difference between the total 683 blocks and the 664 blocks reported free on a newly formatted disk.[3][5] The larger sector count on the outer tracks uses their longer circumference rather than making every track carry the same payload.[3][4]

The 1541 writes the disk using group-coded recording (GCR). For a normal sector, the mechanism reads an encoded stream into drive memory, the drive decodes it to the 256-byte logical sector, and a write operation re-encodes a full sector with its associated framing and checksum information.[5][11] The drive varies recording rate across four track ranges so that the physical track length and encoded data budget remain matched.[1][11]

There is a documentation inconsistency worth making explicit. One circuit-theory paragraph in the 1985 service manual reverses the physical orientation of the numbered track extremes, whereas the earlier user guide and the independently maintained D64 specification place track 1 at the outside and associate the 21-sector zone with tracks 1–17.[1][3][4] The latter numbering is used here because the two independent descriptions agree with the sector table; the isolated reversed orientation statement is not used as a basis for this article.[3][4]

Disk images and compatibility

[edit | edit source]

A D64 file is a sector-for-sector representation of the standard 35-track 1540/1541 logical layout, not a claim that every disk readable by a physical 1541 has the same structure. Its conventional size is 174,848 bytes before optional per-sector error information.[4] G64 preserves a lower-level raw GCR track stream and was designed for disks whose custom recording, protection data, or nonstandard track content cannot be represented faithfully by a conventional D64 sector image.[11][4] The distinction matters because the 1541 hardware can encounter more than the standard DOS layout, while the standard DOS itself formats 35 tracks.[3][11]

For host use, the original user guide expressly describes attachment to the VIC-20 and Commodore 64, and the standard serial protocol is documented as the serial-bus variant used by the VIC-20, C64, Plus/4 series, C128, and C65 families.[3][10] Compatibility at the cable and command level therefore does not by itself guarantee compatibility with software that bypasses normal DOS operations, depends on a ROM revision, changes bus timing, or expects a nonstandard disk encoding.[5][8][11] The service manual’s rounded “170K” formatted-capacity figure and the user guide’s 174,848-byte figure describe the same standard layout at different precision, rather than competing capacities.[1][3][4]

See also

[edit | edit source]

References

[edit | edit source]
  1. 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 Commodore, Service Manual 1540–1541 Disk Drive (November 1985), “Product Specification” and “Circuit Theory”.
  2. 2.0 2.1 Smithsonian National Museum of American History, “Commodore VIC-1541 Floppy Disk Drive”, collection record 1989.0544.01.2.
  3. 3.00 3.01 3.02 3.03 3.04 3.05 3.06 3.07 3.08 3.09 Commodore, 1541 Disk Drive User’s Guide (September 1982), “Specifications” and chapter 6.
  4. 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 VICE Manual, “The D64 disk image format”, section 17.5.
  5. 5.0 5.1 5.2 5.3 5.4 5.5 5.6 C64 OS, “How Does the 1541 Drive Work” (10 November 2020), sections on drive-resident DOS and sector buffering.
  6. 6.0 6.1 mist64, “Commodore 1541 DOS ROM Source Code”, README and source-file inventory.
  7. 7.0 7.1 Zimmers.net, “Commodore Single Disk Drive, Technical Manual, Model 1540/1541, P/N 990445”, catalogue and board-documentation listing.
  8. 8.0 8.1 Michael Steil, “Building the Original Commodore 1541 DOS Source” (17 April 2019).
  9. 9.0 9.1 9.2 9.3 Michael Steil, “Commodore Peripheral Bus: Part 4: Standard Serial” (6 May 2019), “Layer 1: Electrical” and “Layer 2: Byte Transfer”.
  10. 10.0 10.1 Michael Steil, “Commodore Peripheral Bus: Part 0: Overview”, protocol-stack overview.
  11. 11.0 11.1 11.2 11.3 11.4 “G64 (raw GCR binary representation of a 1541 diskette)”, revision 1.6 (25 March 2004), introduction and track-data description.

Automation and sourcing note

[edit | edit source]

This article was independently synthesized from cited sources under c64.wiki publication policy. Original manuals and schematics were used as citation-only evidence; no scans, images, code, or source prose have been reproduced.