==================================================== pOS BUG/LIMITATIONS List - 12/02/2003 ==================================================== 1. The Commodore C64 boot loader (boot) might display wrong error messages when failing to load the kernel image. It might state that there is a disk error though the floppy simply can't find the kernel image. This is an issue with the 1541 floppy's CBM-DOS 2.6. When trying to load a file with no disk inserted the floppy will produce an error 74 (device not ready). After that the floppy produces this error also when the drive is ready but the file is not found. Instead producing error 62 (file not found) it produces 74 again. This can only resolved by powering the floppy off and on again. Example: 1. Make sure there's no disk in the floppy 2. LOAD"FILE",8 // FILE, a file that does not exist on the disk 3. type this BASIC program 1 OPEN15,8,15 2 INPUT#15,NR 3 PRINT NR 4 CLOSE15 RUN the computer will answer "74" 4. Insert any formatted disk and reproduce steps 1 to 3, the computer will still answer "74" instead "62" This has been fixed with CBM-DOS 3.0 on the VC-1571 floppy drive. But the 1571 must be in C128 mode otherwise it will behave like a 1541-I/II including their bugs. 2. in include/asm-c64/schedule.h: m_saveenv this routine cannot handle stacks larger than 128 bytes due to the fact that it uses the "branch if plus"-condition in the stack-save loop: the loop aborts when the negative flag is set, this happens both when decrementing a zero value to -1 or when the value is larger than 127 (127 = 01111111, 128 (unsigned) = 10000000 = -128 (signed)) 3. free (remalloc) does not accept "wild" pointer values within a memory block. But it often occurs that a pointer is incremented or decremented. The free function will then need to jump from memory block to memory block to find the block the pointer belongs to. But I don't know whether this feature is in line with other OS designs, does Linux free accept wild pointers ? 4. The filesystem-driver for the 1541-filesystem does not comply to the kernels filesystem layer-architecture. Actually it does not manage a filesystem on a blockdevice over a block- device-driver as determined by the original layer-design. Instead it communicates with the 1541-floppy directly using conventional commands like the LOAD/SAVE-routines in the C64-ROM-KERNAL do and have the 1541-ROM-DOS manage the filesystem. This break-up of the system-design was chosen intentionally and is implemented for speed-issues, to reduce implementation-work and possible bugs. This way the filesystem-driver still appears as a normal filesystem- driver to the system with the interface required by the system-design. Once the kernel has reached a more advanced development status this 1541-filesystem-driver will be dropped and replaced with a proper driver possibly with a native filesystem providing more functionality.