Редактирование:
RGRW
(раздел)
Перейти к навигации
Перейти к поиску
Внимание:
Вы не вошли в систему. Ваш IP-адрес будет общедоступен, если вы запишете какие-либо изменения. Если вы
войдёте
или
создадите учётную запись
, её имя будет использоваться вместо IP-адреса, наряду с другими преимуществами.
Анти-спам проверка.
Не
заполняйте это!
== Реализация == Нужный каталог выбирает слово [[КАТ]]. В регистрах хранятся служебные переменные и структуры [[Каллисто]] (включая исполняемый [[шитый код]]), повреждение которых легко приводит среду в нестабильное состояние. Поэтому слово низкого уровня RGRW вряд ли потребуется обычному разработчику, для которого разработаны удобные слова [[SAVE"]] и [[LOAD"]] При необходимости освобождения места в [[Память программ|памяти программ]] заголовок RGRW можно исключить. <pre> 3996 ; Сохранить регистры в энергонезависимую память 3997 ; R1 = 4 для десятичных регистров (0..999), всего 1000 3998 ; = 2 для двоичных регистров (1000..5095), всего 4096 3999 SAVRGS: 4000 RM1 4 − FX=0 SAVBIN 4001 SAVDEC: 1 M5 998 ; R0, R1 не сохранять 4002 GOTO SMLM0 4003 SAVBIN: 999 M5 4096 4004 SMLM0: M0 4005 SML: 1 PPM 9047 4006 KRM5 PKM05 4007 FL0 SML 4008 RTN 4009 4010 ;#RGRW 4011 ; RGRW ( a c1 c2 −− c ) Считать/записать (c2=1/0) десятичный/двоичный (c1=4/2) файл с именем из 20 литер по адресу a+1. 4012 ; Служебное слово, которое вряд ли потребуется разработчику. 4013 ; Чтение/запись файла регистров (словаря) в загруженном каталоге. 4014 ; Выдаёт код ошибки дисковой операции, 0 если успех. 4015 ; a − адрес имени файла, состоящего из 20 литер, минус 1 4016 ; c1 − тип файла (c1=4 для десятичных регистров, c1=2 для двоичных регистров) 4017 ; c2 − флаг "чтение−запись" (c2=1 для чтения, c2=0 для записи) 4018 ; c − статус операции (c=0 нет ошибок, c<>0 код ошибки дисковой операции) 4019 LRERW: .DB 4 4020 .TEXT "RGRW" ; ( a t flg −− f ) 4021 .DW LWYKL 4022 RERW: .DW JRERW 4023 JRERW: PKRM03 MA ; RA := flg ( флаг R/W) 4024 RM3 1 + M8 1 + M7 1 + M3 4025 KRM7 1 EE 4 − M7 ; R7 := a−1 ( адрес 20−литерного имени файла − 1) 4026 KRM8 M1 ; R1 := t ( тип файла) 4027 Cx M8 9034 MB ; R8 := 0 ( номер строки в каталоге) ; RB := 9034 ( чтение по индексу 1) 4028 RERWN1: Cx PPM 9030 PPM 9031 ; Сброс индексных регистров 0 и 1 4029 RM8 PPM 9122 ; Считать строчку каталога. 4030 KRMB RM1 − FX=0 JZRERWNXT ; Нужный нам тип файла? 4031 KRMB KRMB ; Пропустить поле 2 ( двухбайтовое) 4032 RM7 M5 20 M0 ; R5 := R7 ( адрес имени − 1) ; R0 := 20 ( длина имени) 4033 RERWZ: KRMB KRM5 − 4034 JZRERWNXT: FX=0 RERWNXT 4035 FL0 RERWZ ; Совпадает имя в каталоге с нужным? 4036 RMA FX!=0 RERWR1 ; R/W ? 4037 RMC ; Нужно только при чтении дестичных регистров 4038 RM8 PPM 9128 PPM 9123 ; Считать найденный файл 4039 <−> MC ; Восстановить RC 4040 256 ME 4041 GOTO JRERWRET ; Выход 4042 RERWR1: PGSB SAVRGS 4043 RM8 PPM 9128 PPM 9126 ; Перезаписать найденный файл 4044 JRERWRET: PGOTO RERWRET ; Выход 4045 RERWNXT: RM8 1 + M8 64 − PX=0 RERWN1 ; Следующая строчка. Она 64−я? 4046 RMA FX!=0 RERWR2 ; R/W ? 4047 4 ; Выход с кодом ошибки 40 "файл не найден". 4048 JZERO: 0 KM3 KGOTO9 ; Обработчик FALSE 4049 RERWR2: PPM 9030 3 PPM 9031 ; RX==0 ( инициализация индексных регистров) 4050 RM7 M5 20 M0 4051 RERWS: KRM5 KMB FL0 RERWS ; Записать имя файла в буфер. 4052 PGSB SAVRGS 4053 RM1 PPM 9128 PPM 9125 ; Создать файл. 4054 RERWRET: PPRM 9129 FX!=0 RERW0 ; Выйти 4055 40 + ; Преобразовать код ошибки дисковой операции в код ошибки Каллисто 4056 RERW0: KM3 KGOTO9 </pre>
Описание изменений:
Пожалуйста, учтите, что любой ваш вклад в проект «ПМК вики» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см.
Pmkwiki:Авторские права
).
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!
В целях защиты вики от автоматического спама в правках просим вас решить следующую каптчу:
Отменить
Справка по редактированию
(в новом окне)
Навигация
Персональные инструменты
Вы не представились системе
Обсуждение
Вклад
Создать учётную запись
Войти
Пространства имён
Статья
Обсуждение
русский
Просмотры
Читать
Править
История
Ещё
Поиск
Навигация
Заглавная страница
Свежие правки
Случайная страница
Справка по MediaWiki
Инструменты
Ссылки сюда
Связанные правки
Служебные страницы
Сведения о странице