Поделитесь пожалуйста программой cas2com. Нигде не могу найти.
Поделитесь пожалуйста программой cas2com. Нигде не могу найти.
Что-то оно сильно глючит. Небольшие программы нормально сохраняет, например, Минёр, Тест с родной кассеты. А большие программы получаются битые. Например, Клад с этой же кассеты. При выполнении этой команды в Бейсике компьютер может долго думать, либо вовсе зависнуть.
Я попробовал это в эмуляторе. Команда в Бейсике на больших программах нормально отрабатывает, но DSAVE пишет "Неверное имя диска". Я указываю А.
Похоже, дело не в размере программы. КЛАД получилось пересохранить. Без проблем пересохранилась программа FOOTBAL.COM (25 кб). А вот мои программы - никак.
Последний раз редактировалось Arix; 10.03.2019 в 23:28.
Здесь
Глюков быть не должно, проверял неоднократно на разных программах. Откуда брали DSAVE?
DSAVE брал из образов дисков, которые в "Софте старом и новом". Но я думаю, он тут не причем, т.к. ещё в Бейсике при вводе данной команды Бейсик надолго задумывается или вовсе зависает. Дсейву достается мусор. Однако, в эмуляторе эта команда проходит нормально, но там DSAVE пишет "Неправильное имя диска".
Только контроллер НДД. Если с компом было бы что-то не то, я думаю, я бы это уже заметил. Программы не глючат, а я их уже много позапускал. Я попробую отключить контроллер, загрузить с "магнитофона" эту же программу и запустить эту команду.
Вот оно для чего! Значит, если бейсик-программа меньше 16 кб, эту команду можно и не запускать? Перенос происходит в область от 48992 байта. Если память глючит в этой области? Не всякая программа до неё доберётся, это же 32 кб её размера. Поэтому с работой программ я глюков не замечал. А можно сделать перенос в другую область? Но всё равно странно: если в переносимой области нет данных программы, то всё копируется нормально, а если она занята программой, то происходят глюки.
Желательно попробовать.
Нет. Программа располагается по адресам 4000h-BF00h. Значит до 7FF7 будет чуть менее 16Кб.
Да, конечно. В DSAVE.COM по смещению 4Dh (от начала файла) есть байты: 21h, 60h, BFh. Это как раз часть кода, отвечающая за восстановление области 7FF7h:
Меняете BF60 на что-то другое и пробуйте. До C400h память в принципе свободна.Код:RAM:014D lxi h, 0BF60h RAM:0150 lxi d, 7FF7h RAM:0153 lxi b, 17 RAM:0156 call _memcpy ; copy from HL to DE, with BC length
Нет, я имел в виду область, куда копируются данные - BF60, а это 48992. От 4000h (16384) до неё около 32 кб.
Кстати, я пишу десятичные значения:
FOR I = 0 TO 16: Y= PEEK(32759+I): POKE (48992+I),Y: NEXT
Так проще.
Итак, результаты эксперимента. Без HDD - то же самое.
Загружаю свою программу. Пищу просто FOR I = 0 TO 16:NEXT. Как-то долговато оно выполняется, где-то секунды две.
Сделал так: FOR I = 0 TO 16: Y= PEEK(32759+I): PRINT Y;:POKE (48992+I),Y: NEXT.
Выводится девять нулей, дальше идут 255. Но на вывод каждого числа уходит 4 секунды, на 15-м процесс стопорится. Дальше ничего не происходит, останавливаю через УПР+СТОП. Делаю FOR I = 0 TO 15 - так же медленно, но команда успешно завершается.
Загружаю небольшую программу, например, Минёр. Не пишу команду копирования, сразу жму reset, запускаю DSAVE, сохраняю. Выключаю и включаю комп, запускаю сохраненную копию программы - всё нормально. Вывожу листинг программы - никаких глюков и абракадабр. Ввожу FOR I =... Всё выполняется моментально.
Ещё меня смущает, что не работает оператор FRE. Я пишу FRE(0), а мне в ответ - 2 Error. Но раньше-то работало! Правда, это было очень давно.
А теперь я опять загрузил свою программу, без FOR I = 0 TO 16: и т.д. сразу перезагрузил, сохранил через DSAVE - программа работает нормально. Её cas-файл в формате CSAVE весит 13919 байт, не достает до этой области.
Я доделаю эту программу и дам её вам, проверите у себя. Последний раз я её запускал ещё в 90-х.
Последний раз редактировалось Arix; 16.03.2019 в 00:17.
Или пзу частично "заросло" или озу сбоит. Начать наверно проще и лучше с проверки пзу (сохранить и сравнить на пк с имеющимися вариантами).
- - - Добавлено - - -
Первый раз не обратил внимание
Если именно так писать:
FRE(0)
то 2 Error в ответ нормальная реакция, т.к. FRE функция, не оператор. А вот если ругается на
PRINT FRE(0)
тогда стоит проверить пзу.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)