|
IDEDOS is a ROM-based disk operating system written in 6502/65816 assembly language for the Commodore 64, 128 and SuperCPU. Its main purpose is to control ATA(PI) devices connected to an IDE64 cartridge and present them like normal Commodore drives. Additionally it supports networked drives (PCLink) and has a built-in machine code monitor and file manager. ==Architecture== The C64 KERNAL uses a vector table at page 3 to allow redirection of common kernal file handling and basic functions. This feature is used by IDEDOS to hook into the C64 kernal. The operating system itself is divided into four pages of 16 KiB which are mapped in when required. The mapping is temporarily switched off while interrupts are running for increased compatibility, however this causes a ≈40 μs latency. Additional RAM for buffers and internal data are also mapped in from either the IDE64 cartridge (28 KiB) or the additional RAM of the SuperCPU is used. The standard kernal memory locations at page zero and page two are handled in a kernal-compatible way; temporarily used memory is restored after the routines are finished. Beyond the kernal table IDEDOS has two new calls for bulk data handling (read/write) which allows much faster data transfer rates than the character-based I/O. The native file system is non-CBM style at the low level to allow partitions greater than 16 MiB. High-level features like the 16-character filenames or filetypes are retained. Due to complexity and memory requirements, the filesystem creation and consistency check is not part of the operating system, unlike CBM DOS or CMD DOS. Additional filesystems like ISO 9660 or FAT are abstracted internally and mostly use the same routines for handling, thereby little difference is noticeable to user programs, except if some features are not fully implemented. The device handling is done by additional device numbers assigned to the new devices. The device numbers for IDEDOS devices are configurable and is normally in the range of 10–14. Over the years many programs assumed that there is only device 8 and do not allow selecting anything else; this can be worked around by temporary changing the used IDEDOS device number to 8. For standard devices, the original kernal routines are used, while IDEDOS devices use custom routines which closely imitate the results and behavior of kernal calls for floppy devices. Kernal calls not going through the vector table (most notably IEC bus-specific calls) present an incompatibility with those programs using them. Special features (like CD-ROM audio handling) are implemented by new channel 15 commands, while features not found on floppy drives follow the CMD style commands to allow programs to easily support a wider range of devices. Unlike intelligent external devices which have a separate processor (like 1541 with CBMDOS), IDEDOS runs on the host computer, thereby all disk routines block until finished. This rules out the use of "IRQ loaders" which are commonly used to speed up operation of serial bus peripherals. Interrupts are generally allowed while IDEDOS is running (they are disabled on rare time-critical operations), however the system was written to be non-reentrant, just like the original kernal. 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「IDEDOS is a ROM-based disk operating system written in 6502/65816 assembly language for the Commodore 64, 128 and SuperCPU. Its main purpose is to control ATA(PI) devices connected to an IDE64 cartridge and present them like normal Commodore drives. Additionally it supports networked drives (PCLink) and has a built-in machine code monitor and file manager.==Architecture==The C64 KERNAL uses a vector table at page 3 to allow redirection of common kernal file handling and basic functions. This feature is used by IDEDOS to hook into the C64 kernal.The operating system itself is divided into four pages of 16 KiB which are mapped in when required. The mapping is temporarily switched off while interrupts are running for increased compatibility, however this causes a ≈40 μs latency.Additional RAM for buffers and internal data are also mapped in from either the IDE64 cartridge (28 KiB) or the additional RAM of the SuperCPU is used. The standard kernal memory locations at page zero and page two are handled in a kernal-compatible way; temporarily used memory is restored after the routines are finished.Beyond the kernal table IDEDOS has two new calls for bulk data handling (read/write) which allows much faster data transfer rates than the character-based I/O.The native file system is non-CBM style at the low level to allow partitions greater than 16 MiB. High-level features like the 16-character filenames or filetypes are retained. Due to complexity and memory requirements, the filesystem creation and consistency check is not part of the operating system, unlike CBM DOS or CMD DOS.Additional filesystems like ISO 9660 or FAT are abstracted internally and mostly use the same routines for handling, thereby little difference is noticeable to user programs, except if some features are not fully implemented.The device handling is done by additional device numbers assigned to the new devices. The device numbers for IDEDOS devices are configurable and is normally in the range of 10–14. Over the years many programs assumed that there is only device 8 and do not allow selecting anything else; this can be worked around by temporary changing the used IDEDOS device number to 8.For standard devices, the original kernal routines are used, while IDEDOS devices use custom routines which closely imitate the results and behavior of kernal calls for floppy devices. Kernal calls not going through the vector table (most notably IEC bus-specific calls) present an incompatibility with those programs using them.Special features (like CD-ROM audio handling) are implemented by new channel 15 commands, while features not found on floppy drives follow the CMD style commands to allow programs to easily support a wider range of devices.Unlike intelligent external devices which have a separate processor (like 1541 with CBMDOS), IDEDOS runs on the host computer, thereby all disk routines block until finished. This rules out the use of "IRQ loaders" which are commonly used to speed up operation of serial bus peripherals.Interrupts are generally allowed while IDEDOS is running (they are disabled on rare time-critical operations), however the system was written to be non-reentrant, just like the original kernal.」の詳細全文を読む スポンサード リンク
|