Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
msx:assembler_programming_guide-fakhrutdinov_bocharov:02 [2021-07-28 17:26] brawaga [2.23.1. Троянские кони] |
msx:assembler_programming_guide-fakhrutdinov_bocharov:02 [2022-09-09 22:17] (текущий) GreyWolf |
||
---|---|---|---|
Строка 1812: | Строка 1812: | ||
В этом случае можно либо попытаться включить необходимые слоты и вызвать подпрограмму, либо выполнить межслотовый вызов. | В этом случае можно либо попытаться включить необходимые слоты и вызвать подпрограмму, либо выполнить межслотовый вызов. | ||
- | Межслотовый вызов выполняется подпрограммой BIOS ''CALSLT'' по адресу 1Ch. [[msx:dos|MSX-DOS]] также поддерживает эту подпрограмму. Перед вызовом в регистр ''IX'' нужно загрузить адрес требуемой подпрограммы BIOS, а в ''IY'' — указатель слота в виде: | + | Межслотовый вызов выполняется подпрограммой BIOS ''CALSLT'' по адресу 1Ch. [[msx:dos:|MSX-DOS]] также поддерживает эту подпрограмму. Перед вызовом в регистр ''IX'' нужно загрузить адрес требуемой подпрограммы BIOS, а в ''IY'' — указатель слота в виде: |
<code> | <code> | ||
┌───┬───┬───┬───┬───┬───┬───┬───┐ | ┌───┬───┬───┬───┬───┬───┬───┬───┐ | ||
Строка 1986: | Строка 1986: | ||
Приведём несколько примеров. | Приведём несколько примеров. | ||
- | Первый пример — обязательная чистка экрана перед выполнением команды ''[[msx:basic_programming_guide:02#list|LIST]]'' языка [[msx:basic:]]. Ловушка для ''[[msx:basic_programming_guide:02#list|LIST]]'' и ''[[msx:basic_programming_guide:02#llist|LLIST]]'' находится по адресу FF89h. Мы можем заполнить её следующими кодами: | + | Первый пример — обязательная чистка экрана перед выполнением команды ''[[msx:basic_dialogue_programming_language:002#list|LIST]]'' языка [[msx:basic:]]. Ловушка для ''[[msx:basic_dialogue_programming_language:002#list|LIST]]'' и ''[[msx:basic_dialogue_programming_language:002#llist|LLIST]]'' находится по адресу FF89h. Мы можем заполнить её следующими кодами: |
<code> | <code> | ||
Адрес Код Команда ассембл. | Адрес Код Команда ассембл. | ||
Строка 1995: | Строка 1995: | ||
</code> | </code> | ||
- | На языке [[msx:basic:]] заполнить ловушку можно при помощи команды ''[[msx:basic_programming_guide:10#poke|POKE]]''. После этого перед выполнением команды ''[[msx:basic_programming_guide:02#list|LIST]]'' ловушкой будет выполняться чистка экрана. | + | На языке [[msx:basic:]] заполнить ловушку можно при помощи команды ''[[msx:basic_dialogue_programming_language:010#poke|POKE]]''. После этого перед выполнением команды ''[[msx:basic_dialogue_programming_language:002#list|LIST]]'' ловушкой будет выполняться чистка экрана. |
{{anchor:n2141}} | {{anchor:n2141}} | ||
==== 2.14.1. Работа с файлами ==== | ==== 2.14.1. Работа с файлами ==== | ||
- | Рассмотрим установку ловушки для команды [[msx:basic_programming_guide:09#files|FILES]], которая должна очистить экран и вывести список файлов. Особенность здесь заключается в том, что ловушку на эту команду устанавливает и [[msx:disk_basic|]]. Поэтому вначале будет работать наша ловушка, а затем нужно обеспечить выполнение ловушки [[msx:disk_basic|]]. | + | Рассмотрим установку ловушки для команды [[msx:basic_dialogue_programming_language:009#files|FILES]], которая должна очистить экран и вывести список файлов. Особенность здесь заключается в том, что ловушку на эту команду устанавливает и [[msx:disk_basic|]]. Поэтому вначале будет работать наша ловушка, а затем нужно обеспечить выполнение ловушки [[msx:disk_basic|]]. |
<code> | <code> | ||
Z80-Assembler Page: 1 | Z80-Assembler Page: 1 | ||
Строка 2142: | Строка 2142: | ||
Список входных точек и правила вызова операций и функций [[msx:basic:]] приведены в книге "Архитектура микрокомпьютера MSX-2". | Список входных точек и правила вызова операций и функций [[msx:basic:]] приведены в книге "Архитектура микрокомпьютера MSX-2". | ||
- | Не забывайте, что вызов подпрограмм [[msx:basic:]] возможен, например, либо если Вы работаете в обычном режиме [[msx:basic:]] (слот 0 активен), либо если в режиме [[msx:dos|]] выполняется межслотовый вызов MSX-BASIC BIOS. | + | Не забывайте, что вызов подпрограмм [[msx:basic:]] возможен, например, либо если Вы работаете в обычном режиме [[msx:basic:]] (слот 0 активен), либо если в режиме [[msx:dos:|]] выполняется межслотовый вызов MSX-BASIC BIOS. |
При возникновении ошибки при выполнении подпрограмм происходит обращение к программе обработки ошибки [[msx:basic:]]. Для применения своей реакции на ошибку следует использовать хук H.ERRO (FFB1h). | При возникновении ошибки при выполнении подпрограмм происходит обращение к программе обработки ошибки [[msx:basic:]]. Для применения своей реакции на ошибку следует использовать хук H.ERRO (FFB1h). | ||
Строка 2362: | Строка 2362: | ||
[[msx:yamaha_local_network:yamaha_local_network|Локальная сеть КУВТ-2]] имеет систему стандартных сетевых функций ввода/вывода (Net ROM BIOS), включающую в себя функции инициализации сети, проверки номера компьютера, передачи/приёма программ и данных, чтения/записи из памяти своего компьютера или компьютера ученика и другие. | [[msx:yamaha_local_network:yamaha_local_network|Локальная сеть КУВТ-2]] имеет систему стандартных сетевых функций ввода/вывода (Net ROM BIOS), включающую в себя функции инициализации сети, проверки номера компьютера, передачи/приёма программ и данных, чтения/записи из памяти своего компьютера или компьютера ученика и другие. | ||
- | Сетевые функции могут быть вызваны как при работе в режиме [[msx:basic:]], так и при работе в [[msx:dos|MSX-DOS]]. Список сетевых функций дан в книге "Архитектура микрокомпьютера MSX-2". | + | Сетевые функции могут быть вызваны как при работе в режиме [[msx:basic:]], так и при работе в [[msx:dos:|]]. Список сетевых функций дан в книге "Архитектура микрокомпьютера MSX-2". |
Для проверки, имеет ли система сетевое ПЗУ, можно посмотреть, хранится ли по вызываемому адресу "заглушка" RST30 (F7h) или записан ли идентификатор "RNT" в сетевом ПЗУ по адресам 4040h-4042h. | Для проверки, имеет ли система сетевое ПЗУ, можно посмотреть, хранится ли по вызываемому адресу "заглушка" RST30 (F7h) или записан ли идентификатор "RNT" в сетевом ПЗУ по адресам 4040h-4042h. | ||
- | Для инициализации сети в стандартной [[msx:dos|MSX-DOS]] необходимо вызвать подпрограмму по адресу F98Eh. | + | Для инициализации сети в стандартной [[msx:dos:|]] необходимо вызвать подпрограмму по адресу F98Eh. |
Для вызова сетевой функции нужно поместить код функции (01h-1Ah) в регистр ''C'', начальный адрес блока параметров в регистровую пару DE и вызвать подпрограмму по адресу F989h. | Для вызова сетевой функции нужно поместить код функции (01h-1Ah) в регистр ''C'', начальный адрес блока параметров в регистровую пару DE и вызвать подпрограмму по адресу F989h. | ||
Строка 2372: | Строка 2372: | ||
Для окончания работы с сетью вызывается подпрограмма по адресу F984h. | Для окончания работы с сетью вызывается подпрограмма по адресу F984h. | ||
- | Посмотрите пример программы, работающей с локальной сетью в стандартной [[msx:dos|MSX-DOS]]. | + | Посмотрите пример программы, работающей с локальной сетью в стандартной [[msx:dos:|]]. |
<code> | <code> | ||
MSX.M-80 1.00 01-Apr-85 PAGE 1 | MSX.M-80 1.00 01-Apr-85 PAGE 1 | ||
Строка 3420: | Строка 3420: | ||
</code> | </code> | ||
- | Таким образом, например, ячейка RAM с адресом FD02h отвечает за страницу 1 слота 3-2, т.е. за страницу RAM по адресу 4000h. Запись числа 32 в ячейку FD02h означает разрешение обработки расширенного оператора ''[[msx:basic_programming_guide:07#call|CALL]]'' [[msx:basic:]] подпрограммами RAM по адресу 4000h. | + | Таким образом, например, ячейка RAM с адресом FD02h отвечает за страницу 1 слота 3-2, т.е. за страницу RAM по адресу 4000h. Запись числа 32 в ячейку FD02h означает разрешение обработки расширенного оператора ''[[msx:basic_dialogue_programming_language:007#call|CALL]]'' [[msx:basic:]] подпрограммами RAM по адресу 4000h. |
[[msx:basic:]] просматривает все слоты (включая вторичные) по адресам с 4000H по 0BFFFH для нахождения ID устройства, начинающего каждую страницу. Формат заголовка кассеты, содержащего ID, приведён ниже. | [[msx:basic:]] просматривает все слоты (включая вторичные) по адресам с 4000H по 0BFFFH для нахождения ID устройства, начинающего каждую страницу. Формат заголовка кассеты, содержащего ID, приведён ниже. | ||
Строка 3440: | Строка 3440: | ||
* ''ID'' — это двухбайтовая строка, при помощи которой можно отличить картридж ROM или SUB-ROM от пустой страницы. Картридж ROM обозначается строкой "AB" (41h,42h), а картридж SUB-ROM — строкой "CD". | * ''ID'' — это двухбайтовая строка, при помощи которой можно отличить картридж ROM или SUB-ROM от пустой страницы. Картридж ROM обозначается строкой "AB" (41h,42h), а картридж SUB-ROM — строкой "CD". | ||
* ''INIT'' содержит адрес процедуры инициализации этого картриджа. Ноль записывается, если такой процедуры нет. Программы, которые нуждаются в связи с интерпретатором языка BASIC, возвращают управление командой Z80 ''RET''. Все регистры, за исключением указателя стека SP, могут быть изменены. Для некоторых программ (например, для игр) соблюдать соглашение о вызове ''INIT'' не нужно, поэтому игры могут запускаться процедурой инициализации. | * ''INIT'' содержит адрес процедуры инициализации этого картриджа. Ноль записывается, если такой процедуры нет. Программы, которые нуждаются в связи с интерпретатором языка BASIC, возвращают управление командой Z80 ''RET''. Все регистры, за исключением указателя стека SP, могут быть изменены. Для некоторых программ (например, для игр) соблюдать соглашение о вызове ''INIT'' не нужно, поэтому игры могут запускаться процедурой инициализации. | ||
- | * <WRAP>''STATEMENT'' содержит адрес обработки расширенного оператора ''[[msx:basic_programming_guide:07#call|CALL]]'', если его обработка в картридже предусмотрена. Ноль записывается в том случае, если обработки оператора ''[[msx:basic_programming_guide:07#call|CALL]]'' нет. | + | * <WRAP>''STATEMENT'' содержит адрес обработки расширенного оператора ''[[msx:basic_dialogue_programming_language:007#call|CALL]]'', если его обработка в картридже предусмотрена. Ноль записывается в том случае, если обработки оператора ''[[msx:basic_dialogue_programming_language:007#call|CALL]]'' нет. |
- | Когда [[msx:basic:]] встречает оператор ''[[msx:basic_programming_guide:07#call|CALL]]'', то он записывает его имя в PROCNM (FD89h), в регистр ''HL'' — указатель на текст, следующий за ''CALL (список параметров)'', и вызывает адрес STATEMENT. | + | Когда [[msx:basic:]] встречает оператор ''[[msx:basic_dialogue_programming_language:007#call|CALL]]'', то он записывает его имя в PROCNM (FD89h), в регистр ''HL'' — указатель на текст, следующий за ''CALL (список параметров)'', и вызывает адрес STATEMENT. |
Картридж может быть расположен по адресам с 4000H по 7FFFH. | Картридж может быть расположен по адресам с 4000H по 7FFFH. | ||
- | Синтаксис оператора расширения ''[[msx:basic_programming_guide:07#call|CALL]]'': | + | Синтаксис оператора расширения ''[[msx:basic_dialogue_programming_language:007#call|CALL]]'': |
<code> | <code> | ||
CALL <инструкция> [(<параметр>[,<параметр>])] | CALL <инструкция> [(<параметр>[,<параметр>])] | ||
Строка 3493: | Строка 3493: | ||
==== 2.21.2. Создание CALL-подпрограмм пользователем ==== | ==== 2.21.2. Создание CALL-подпрограмм пользователем ==== | ||
- | Приведём пример программы создания следующих подпрограмм пользователя, вызываемых из [[msx:basic:]] оператором ''[[msx:basic_programming_guide:07#call|CALL]]'' : | + | Приведём пример программы создания следующих подпрограмм пользователя, вызываемых из [[msx:basic:]] оператором ''[[msx:basic_dialogue_programming_language:007#call|CALL]]'' : |
* ''CALL RUSON'' — включение русских букв; | * ''CALL RUSON'' — включение русских букв; | ||
* ''CALL RUSOFF'' — выключение русских букв; | * ''CALL RUSOFF'' — выключение русских букв; | ||
Строка 3858: | Строка 3858: | ||
Как уже говорилось, для работы с файлами имеются стандартные функции ввода/вывода BDOS. Они вызываются по адресу 0005h (дисковая операционная система) или F37Dh ([[msx:disk_basic|]]). При этом надо занести в регистр C номер вызываемой функции, а через остальные регистры передать необходимые параметры. | Как уже говорилось, для работы с файлами имеются стандартные функции ввода/вывода BDOS. Они вызываются по адресу 0005h (дисковая операционная система) или F37Dh ([[msx:disk_basic|]]). При этом надо занести в регистр C номер вызываемой функции, а через остальные регистры передать необходимые параметры. | ||
- | Для того, чтобы открыть файл, необходимо подготовить FCB — блок управления файлом. Его можно создать в любом месте оперативной памяти (при работе в [[msx:dos|MSX-DOS]]) и в области 8000h–FFFFh (при работе в [[msx:basic:]]). | + | Для того, чтобы открыть файл, необходимо подготовить FCB — блок управления файлом. Его можно создать в любом месте оперативной памяти (при работе в [[msx:dos:|]]) и в области 8000h–FFFFh (при работе в [[msx:basic:]]). |
Как Вы можете убедиться, номер функции "открыть файл" равен 0Fh. Поэтому для обращения к этой функции в регистр C надо занести 0Fh, в регистровую пару DE — адрес FCB и затем обратиться по указанному адресу BDOS. | Как Вы можете убедиться, номер функции "открыть файл" равен 0Fh. Поэтому для обращения к этой функции в регистр C надо занести 0Fh, в регистровую пару DE — адрес FCB и затем обратиться по указанному адресу BDOS. | ||
Строка 3954: | Строка 3954: | ||
==== 2.23.2. Компьютерные вирусы ==== | ==== 2.23.2. Компьютерные вирусы ==== | ||
- | Компьютерный вирус — это программа, обычно скрыто располагающаяся на диске, обладающая возможностью к "саморазмножению" (копированию на другие диски или файлы) и имеющая некоторый вредоносный эффект, который проявляется через определённое время после заражения. | + | Компьютерный вирус — это программа, обычно скрыто располагающаяся на диске, обладающая возможностью к «саморазмножению» (копированию на другие диски или файлы) и имеющая некоторый вредоносный эффект, который проявляется через определённое время после заражения. |
- | Таким образом, некоторое время вирус "размножается" и только потом начинает производить эффекты. В самых простых случаях это уничтожение директория и FAT. Более коварные вирусы слегка портят информацию или уничтожают её не сразу, а незаметными порциями. | + | Таким образом, некоторое время вирус «размножается» и только потом начинает производить эффекты. В самых простых случаях это уничтожение директорий и FAT. Более коварные вирусы слегка портят информацию или уничтожают её не сразу, а незаметными порциями. |
Особенно подлым является незаметное изменение цифр в больших массивах числовых данных. | Особенно подлым является незаметное изменение цифр в больших массивах числовых данных. | ||
Три основных типа вирусов, разработанных в настоящее время для системы MSX — это: | Три основных типа вирусов, разработанных в настоящее время для системы MSX — это: | ||
- Загрузочные вирусы; | - Загрузочные вирусы; | ||
- | - Вирусы [[msx:dos|]]; | + | - Вирусы [[msx:dos:|]]; |
- Файловые вирусы. | - Файловые вирусы. | ||
- | Для понимания основных принципов их работы необходимо хорошо знать архитектуру компьютера и основы функционирования операционной системы [[msx:dos|]]. | + | Для понимания основных принципов их работы необходимо хорошо знать архитектуру компьютера и основы функционирования операционной системы [[msx:dos:|]]. |
Рассмотрим процесс начальной загрузки системы MSX. Система MSX запускается следующим образом: | Рассмотрим процесс начальной загрузки системы MSX. Система MSX запускается следующим образом: | ||
- Сброс питания компьютера приводит к тому, что в процессе перезагрузки сначала проверяются все слоты, и если в вершине проверяемого слота записаны 2 байта 41Н и 42Н, слот интерпретируется как относящийся к определённой части ПЗУ. После этого выполняется программа ''INIT'' (инициализация), адрес которой установлен в верхней части ПЗУ. В случае использования программы ''INIT'' из ПЗУ дискового интерфейса в первую очередь определяется рабочая область для относящегося к нему дисковода. | - Сброс питания компьютера приводит к тому, что в процессе перезагрузки сначала проверяются все слоты, и если в вершине проверяемого слота записаны 2 байта 41Н и 42Н, слот интерпретируется как относящийся к определённой части ПЗУ. После этого выполняется программа ''INIT'' (инициализация), адрес которой установлен в верхней части ПЗУ. В случае использования программы ''INIT'' из ПЗУ дискового интерфейса в первую очередь определяется рабочая область для относящегося к нему дисковода. | ||
- Когда все слоты проверены, машина обращается к адресу FEDAh (H.STKE). Если содержимое этого адреса не равно C9h (т.е. если в этот хук не был записан вызов определённой программы при выполнении процедуры INIT), подготавливается конфигурация DISK-BASIC и управление передаётся на H.STKE. | - Когда все слоты проверены, машина обращается к адресу FEDAh (H.STKE). Если содержимое этого адреса не равно C9h (т.е. если в этот хук не был записан вызов определённой программы при выполнении процедуры INIT), подготавливается конфигурация DISK-BASIC и управление передаётся на H.STKE. | ||
- | - Если же содержимое H.STKE равно C9h, во всех слотах ищется кассета со входом TEXT. В случае её нахождения подготавливается конфигурация [[msx:disk_basic|]] и выполняется [[msx:basic:]]–программа из этой кассеты. | + | - Если же содержимое H.STKE равно C9h, во всех слотах ищется кассета со входом TEXT. В случае её нахождения подготавливается конфигурация [[msx:disk_basic|]] и выполняется программа [[msx:basic:]] из этой кассеты. |
- Затем содержимое загрузочного сектора диска (логический сектор #0) передаётся в память на адреса с C000H по C0FFH. При этом, если возникает ошибка неготовности диска или ошибка чтения, или если значение первого байта этого сектора не равно ни EBh, ни E9h, вызывается [[msx:disk_basic|]]. | - Затем содержимое загрузочного сектора диска (логический сектор #0) передаётся в память на адреса с C000H по C0FFH. При этом, если возникает ошибка неготовности диска или ошибка чтения, или если значение первого байта этого сектора не равно ни EBh, ни E9h, вызывается [[msx:disk_basic|]]. | ||
- Вызывается подпрограмма по адресу C01Eh, и происходит сброс флага ''C''. При нормальной работе, поскольку по этому адресу записан код ''RET NC'', ничего не выполняется, и управление возвращается обратно. Любая записанная здесь на языке ассемблера программа запустится автоматически (первый вход в BOOT-программу). | - Вызывается подпрограмма по адресу C01Eh, и происходит сброс флага ''C''. При нормальной работе, поскольку по этому адресу записан код ''RET NC'', ничего не выполняется, и управление возвращается обратно. Любая записанная здесь на языке ассемблера программа запустится автоматически (первый вход в BOOT-программу). | ||
- Проверяется ёмкость ОЗУ (его содержимое при этом не разрушается). Если она менее 64 Кбайт, вызывается [[msx:disk_basic|]]. | - Проверяется ёмкость ОЗУ (его содержимое при этом не разрушается). Если она менее 64 Кбайт, вызывается [[msx:disk_basic|]]. | ||
- | - 7. Подготавливается конфигурация [[msx:dos|]] и вызывается C01EH, на этот раз с установленным флагом C (второй вызов BOOT-программы). Загружается ''MSXDOS.SYS'' с адреса 100Н, и на этот же адрес передаётся управление (т.е. начинает работать [[msx:dos|]]). После этого [[msx:dos|]] переносит себя на более высокий адрес. Если файл ''MSXDOS.SYS'' на диске отсутствует, вызывается [[msx:disk_basic|]]. | + | - 7. Подготавливается конфигурация [[msx:dos:|]] и вызывается C01EH, на этот раз с установленным флагом C (второй вызов BOOT-программы). Загружается ''MSXDOS.SYS'' с адреса 100Н, и на этот же адрес передаётся управление (т.е. начинает работать [[msx:dos:|]]). После этого [[msx:dos:|]] переносит себя на более высокий адрес. Если файл ''MSXDOS.SYS'' на диске отсутствует, вызывается [[msx:disk_basic|]]. |
- 8. ''MSXDOS.SYS'' загружает ''COMMAND.COM'' с диска по адресу 100Н и выполняет переход на его начальный адрес. ''COMMAND.COM'' тоже переносит себя на более высокий адрес и запускается. Если ''COMMAND.COM'' отсутствует, появляется сообщение "INSERT DOS DISKEТТЕ" (вставьте системный диск), и выполнение прерывается до тех пор, пока в дисковод не будет вставлена соответствующая дискета. | - 8. ''MSXDOS.SYS'' загружает ''COMMAND.COM'' с диска по адресу 100Н и выполняет переход на его начальный адрес. ''COMMAND.COM'' тоже переносит себя на более высокий адрес и запускается. Если ''COMMAND.COM'' отсутствует, появляется сообщение "INSERT DOS DISKEТТЕ" (вставьте системный диск), и выполнение прерывается до тех пор, пока в дисковод не будет вставлена соответствующая дискета. | ||
- | - 9. При первой загрузке [[msx:disk_basic|]], если существует файл с именем ''AUTOEXEC.BAT'', он выполняется как обычный пакетный файл. Когда [[msx:disk_basic|]] не запущена и работает [[msx:disk_basic|]], и если на диске имеется файл ''AUTOEXEC.BAS'', то он будет автоматически запущен. | + | - 9. При первой загрузке [[msx:disk_basic|]], если существует файл с именем ''AUTOEXEC.BAT'', он выполняется как обычный пакетный файл. Когда [[msx:dos:|]] не запущен и работает [[msx:disk_basic|]], и если на диске имеется файл ''AUTOEXEC.BAS'', то он будет автоматически запущен. |
=== Загрузочные вирусы === | === Загрузочные вирусы === | ||
- | Бутовыми вирусами называют вирусы, которые размещают себя в загрузочном (BOOT–секторе) диска и изменяют программу начальной загрузки таким образом, чтобы получать управление до начала работы "настоящей" загрузочной программы. Получив управление, вирус устанавливает ловушки так, что при записи информации на другой диск на него записывается и заражённый вирусом загрузочный сектор. | + | Бутовыми вирусами называют вирусы, которые размещают себя в загрузочном (BOOT-секторе) диска и изменяют программу начальной загрузки таким образом, чтобы получать управление до начала работы «настоящей» загрузочной программы. Получив управление, вирус устанавливает ловушки так, что при записи информации на другой диск на него записывается и заражённый вирусом загрузочный сектор. |
=== Вирусы MSX-DOS === | === Вирусы MSX-DOS === | ||
Строка 4036: | Строка 4036: | ||
* Используйте программное обеспечение, полученное (приобретённое) только от лиц или организаций, которым Вы полностью доверяете. Приобретайте программы законным образом, поскольку защита от копирования может быть выполнена в виде вирусов, а украденные программы могут оказаться троянскими конями или программами, инфицированными вирусами. | * Используйте программное обеспечение, полученное (приобретённое) только от лиц или организаций, которым Вы полностью доверяете. Приобретайте программы законным образом, поскольку защита от копирования может быть выполнена в виде вирусов, а украденные программы могут оказаться троянскими конями или программами, инфицированными вирусами. | ||
* Не работайте с оригиналами дистрибутивных дисков. Делайте с них (если это разрешено поставщиком) копии и работайте с копиями. | * Не работайте с оригиналами дистрибутивных дисков. Делайте с них (если это разрешено поставщиком) копии и работайте с копиями. | ||
- | * Лучше иметь не одну, а несколько копий. Под рукой всегда должна быть защищённая от записи дискета с "чистой" [[msx:dos|]], оболочкой [[msx:nd:nd|ND]], антивирусами и утилитами восстановления ''FIXER'', ''DBG'', ''VFY'', ''DSKVER'' и т.п. | + | * Лучше иметь не одну, а несколько копий. Под рукой всегда должна быть защищённая от записи дискета с "чистой" [[msx:dos:|]], оболочкой [[msx:nd:nd|ND]], антивирусами и утилитами восстановления ''FIXER'', ''DBG'', ''VFY'', ''DSKVER'' и т.п. |
* Не пользуйтесь "чужими" дискетами на своём компьютере. Не запускайте с них операционную систему и программы. Не давайте свои дискеты для работы на других компьютерах. Не запускайте программы, назначение которых Вам точно неизвестно. | * Не пользуйтесь "чужими" дискетами на своём компьютере. Не запускайте с них операционную систему и программы. Не давайте свои дискеты для работы на других компьютерах. Не запускайте программы, назначение которых Вам точно неизвестно. | ||
- | * В конце работы делайте копии того, что было сделано, на дисках-архивах, с которыми не ведётся никакая другая работа, кроме записи на них копий файлов. Лучше всего копировать исходные файлы программ в текстовом виде (в том числе и программы на языке BASIC — в коде ASCII). Перед копированием выключите ненадолго компьютер и затем загрузите "чистую" [[msx:dos|]] или [[msx:nd:nd|ND]]. Перед копированием можно просмотреть файл, но нельзя запускать никакие программы. | + | * В конце работы делайте копии того, что было сделано, на дисках-архивах, с которыми не ведётся никакая другая работа, кроме записи на них копий файлов. Лучше всего копировать исходные файлы программ в текстовом виде (в том числе и программы на языке BASIC — в коде ASCII). Перед копированием выключите ненадолго компьютер и затем загрузите "чистую" [[msx:dos:|]] или [[msx:nd:nd|ND]]. Перед копированием можно просмотреть файл, но нельзя запускать никакие программы. |
- | * Если Вы хотите поработать на уже включённом кем–то компьютере MSX, обязательно выключите его ненадолго и затем произведите загрузку со своей дискеты. Компьютер мог быть умышленно или случайно заражён вирусом, а его выключение, к счастью, уничтожает все вирусы. | + | * Если Вы хотите поработать на уже включённом кем-то компьютере MSX, обязательно выключите его ненадолго и затем произведите загрузку со своей дискеты. Компьютер мог быть умышленно или случайно заражён вирусом, а его выключение, к счастью, уничтожает все вирусы. |
- | * Если Вы поняли, что диск заражён вирусом, выключите компьютер, загрузите "чистую" систему с эталонного диска [[msx:dos|]] или [[msx:nd:nd|ND]], перепишите файлы с заражённой дискеты, за исключением файлов типа ''COM'', ''SYS'', ''OBJ'', ''GM'' (а лучше всего переписывать только текстовые файлы), на чистую дискету, отформатируйте и отверифицируйте заражённую дискету и восстановите на ней файлы. | + | * Если Вы поняли, что диск заражён вирусом, выключите компьютер, загрузите «чистую» систему с эталонного диска [[msx:dos:|]] или [[msx:nd:nd|ND]], перепишите файлы с заражённой дискеты, за исключением файлов типа ''COM'', ''SYS'', ''OBJ'', ''GM'' (а лучше всего переписывать только текстовые файлы), на чистую дискету, отформатируйте и отверифицируйте заражённую дискету и восстановите на ней файлы. |