LORW
Перейти к навигации
Перейти к поиску
LORW — встроенное слово Каллисто. Чтение/запись блока из файла в загруженном каталоге.
LORW ( a c −− ) Чтение/запись (c=1/0) блока из файла с именем из 4 литер по адресу a.
Чтение/запись блока из файла в загруженном каталоге. Если файла нет, он создаётся.
a − адрес имени файла, состоящего из 4 символов
c=0 запись блока: имя 0 LORW
c=1 чтение блока: имя 1 LORW
Ввод слова LORW[править]
В режиме ЛАТ последовательно нажмите четыре белые клавиши − 5 × В↑
Реализация[править]
Нужный каталог выбирает слово КАТ.
Слово LORW реализует низкоуровневый доступ к файлам текста на внутреннем диске МК-161 и позволяет воплотить различные нестандартные сценарии такого доступа. Прикладному программисту рекомендуются более удобные стандартные и проверенные временем слова BLOCK BUFFER UPDATE и т.п.
4058 ;#LORW 4059 ; LORW ( a c −− ) Считать/записать (c=1/0) блок из файла с именем из 4 литер по адресу a. 4060 ; Прочесть/записать блока из файла в загруженном каталоге. 4061 ; Если файла нет, создать его. 4062 ; a − адрес имени файла, состоящего из 4 литер 4063 ; c − флаг "чтение−запись" (c=1 для чтения, c=0 для записи) 4064 LLORW: .DB 4 4065 .TEXT "LORW" ; ( a flg −− ) 4066 .DW LRERW 4067 LORW: .DW JLORW 4068 JLORW: PKRM03 MA ; RA := flg ( флаг R/W) 4069 RM3 1 + M7 1 + M3 4070 KRM7 10001 − M7 ; R7 := a−1 ( адрес четырёхлитерного имени файла − 1) 4071 Cx M8 9034 MB ; R8 := 0 ( номер строки в каталоге) ; RB := 9034 ( чтение по индексу 1) 4072 LORWN1: Cx PPM 9030 PPM 9031 ; Сбросить индексные регистры 0 и 1 4073 RM8 PPM 9122 ; Считать строчку каталога 4074 KRMB 5 − FX=0 LORWNXT ; Это файл с текстом? 4075 KRMB KRMB ; Пропустить поле 2 ( двухбайтовое) 4076 RM7 M5 4 M0 ; R5 := R7 ( адрес имени − 1) ; R0 := 4 ( длина имени) 4077 LORWZ: KRMB KRM5 − FX=0 LORWNXT ; Литеры равны? 4078 FL0 LORWZ ; Это Bxxx ? ( сравнить 4 литеры имени) 4079 RMA FX!=0 LORWR1 ; R/W ? 4080 RM8 PPM 9128 PPM 9123 ; Считать найденный файл 4081 KGOTO9 ; NEXT 4082 LORWR1: ;−−− Файл найден, записать в него. 4083 RM8 PPM 9128 PPM 9126 ; Перезаписать найденный файл 4084 KGOTO9 ; NEXT 4085 LORWNXT: RM8 1 + M8 64 − PX=0 LORWN1 ;−−− Перейти к следующей строчке каталога. Закончились? 4086 RMA FX!=0 LORWR2 ; R/W ? 4087 5095 M5 3072 M0 32 ; R5 := 5095 ( начало текста − 1) ; R0 := 3072 ( длина текста) 4088 LORWE: KM5 FL0 LORWE ; Заполнить текст пробелами 4089 KGOTO9 ; Всё, "считан" ещё не существующий блок. Сюрприз: он весь состоит из пробелов! 4090 LORWR2: ;−−− Файл не найден, надо создать и записать текст в него. 4091 PPM 9030 3 PPM 9031 ; Инициализировать индексные регистры 0 и 1 4092 RM7 M5 4 M0 ; R5 := R7 ( адрес имени − 1) ; R0 := 4 ( длина имени) 4093 LORWS: KRM5 KMB FL0 LORWS ; Перенести имя в буфер 4094 16 M0 32 ; R0 := 16 ( кол−во пробелов) ; RX := 32 ( код пробела) 4095 LORWS1: KMB FL0 LORWS1 ; Строка "Bxxx" ( 4 литеры имени + 16 литер пробелов) 4096 5 PPM 9128 PPM 9125 ; Создать файл ( записать текст) 4097 KGOTO9 ; NEXT
Ссылки[править]
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |