c71e249a4e
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>
73 lines
6.2 KiB
Plaintext
Executable File
73 lines
6.2 KiB
Plaintext
Executable File
Глюки и недостатки ДОС (Биоса)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
Дата последнего редактирования: 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 записей каталога.
|