Files
Sprinter-SDCC/docs/converted/bugs.txt
T
snark13 c71e249a4e Add full compiler toolchain, libc, examples and reference docs
First substantive commit: the entire Sprinter C compiler tree on top of
the bare README+gitignore initial commit.

What's in here:
  bin/sprinter-cc        — driver script invoking SDCC + linker + mkexe
  libc/                  — Sprinter-specific libc layer over ESTEX/BIOS
                           (conio, gfx, io, mem, stdio + headers)
  runtime/               — crt0 variants (default/small/banked/minimal)
                           + heap + bank trampolines
  toolchain/             — mkexe (SprintEXE packer, C + tests)
  examples/              — 30 demo programs (gfx, file I/O, env, time, …)
  lib/Makefile           — builds the libc archive (sprinter.lib)
  docs/                  — converted Sprinter manuals + asm reference samples
  third_party/           — solid-c reference compiler dump + sdcc setup script
  release_docs/          — packaging / release notes

gitignore overhaul:
  • Drop dangerous blanket patterns: *.asm (would hide docs/samples/*.asm)
    and *.exe (case-insensitive match was hiding third_party/solid-c/*.EXE
    on macOS APFS).  Replaced with examples/*/*.{asm,exe,…} and lib/*.lib.
  • Restore tracking of toolchain/mkexe/tests/{one,big}.bin — those are
    INPUT fixtures, not build outputs.
  • Collapse the duplicated SDCC/C/Sdcc sections into one section per
    concern (build outputs / vendored / OS-junk).
  • Add .sprinter-cc-*/, build/ (catches lib/build/ too), .claude/.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-03 16:13:21 +03:00

73 lines
6.2 KiB
Plaintext

Глюки и недостатки ДОС (Биоса)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Дата последнего редактирования: 27.09.2004
1. Функция "Сохранить текущий путь" (1Eh) имеет недостаток:
а) При сохранении корневого пути запоминает символ "\".
б) Но в то же время, при сохранении не корневого пути,
не ставит в конце строки символ "\".
У MS-DOS такой же глюк, но это не меняет "погоду" ;). Нужно привести
к какому-то одному формату.
2. Функция "Закрыть файл" (12h) не закрывает файл, если он расположен
(был открыт/создан) не в тек. пути. Приходится принудительно устанав-
ливать диск и путь расположения закрываемого файла и только после этого
его закрывать ;(. Это происходит из-за того, что DSS текущей реализации
позволяет коppектно pаботать только в пpеделах одного диска. Т.е. пеpед
закpытием файла, текущим диском должен быть тот, где этот файл находится.
Важное замечание: Доработать DSS, чтобы система, в определенных случаях,
не трапалась при переполнении макс. числа (9) открытых дескрипторов.
3. Функция "Удалить файл" (0Eh) имеет недостаток:
Удаляет файл в тек. каталоге, при формате записи "prog.bin", но не уда-
ляет файл, указанный с диском и путем расположения, например:
"a:\test\prog.bin".
4. Функции опроса клавиатуры (30h,31h,..) не выдают признак (7,6 биты
регистра "B") нажатия "Shift" для клавиш "Home","End","PgUp","PgDn" и
клавиш управления курсором. У спец. клавиш, признак нажатия "Shift"
(биты 7,6) выдается только для F1..F12.
5. Не происходит скроллинг экрана, когда идет "переполнение" последней 32-й
строки и 80-й символ - не код завершения строки. Происходит просто пере-
ход в начало первой строки экрана, с продолжением вывода строки (с нало-
жением на старые данные экрана).
6. Estex не корректно работает с VFAT (которая фактически и используется в
Виндах). Трабл в следующем. Если в имени файла присутствует хотя бы одна
строчная (маленькая) буква, то для такого имени Винда создает в каталоге
две записи: первая для длинного имени, вторая - имя формата 8.3. Т.е. на
одно имя файла в каталоге имеется две записи. Если файл с таким именем
удалить в Estex, то будет удалено (помечено удаленным) только вторая за-
пись файла, имеющая формат 8.3, а первая запись останется не удаленной.
p.s. Эта ошибка легко исправляется нортоновским "ndd" или др. утилитой
проверки логич. структуры диска.
Если имя файла состоит только из одних прописных (больших) букв, то Винда
создает в каталоге лишь одну запись для имени файла (как MS-DOS до v6.22
включительно). Такой файл корректно удаляется Estex.
Вывод: Для корректного удаления файлов под ОС Спринтера, их имена должны
содержать только прописные буквы.
7. При включенном в Биосе пункте "System Disk: 1-st FDD" и при отсутствии
дискеты в дисководе, в некоторых случаях не сбрасывается обращение к дис-
ководу.
8. Нет биосной функции "54h" (DRV_VERIFY) верификации секторов, описанной в
документации. Поэтому она всегда возвращает установленный флаг "Carry".
9. Доработать функцию "32h" (DSS_ECHOKEY), чтобы нормально мигал курсор.
10. Функции ДОС 0Ah (Create) и 0Bh (Create new file) перед созданием файла
не проверяют число уже открытых дескрипторов. При переполнении числа
открытых дескрипторов, эти функции все-равно создают запись нового файла
в каталоге, хотя и выдают признак ошибки.
Эти функции также не отслеживают имя файла на недопустимые символы. Если
имя файла содержит недопустимый символ - функции просто "зависают".
Такая ситуация с именами файлов может возникнуть например при автомати-
ческом создании имен.
11. ДОС (v1.6) корректно выводит максимум 509 записей каталога.