Редактирование: ‗RW

Перейти к навигации Перейти к поиску
Внимание: Вы не вошли в систему. Ваш IP-адрес будет общедоступен, если вы запишете какие-либо изменения. Если вы войдёте или создадите учётную запись, её имя будет использоваться вместо IP-адреса, наряду с другими преимуществами.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий ниже, чтобы убедиться, что это нужная вам правка, и запишите страницу ниже, чтобы отменить правку.

Текущая версия Ваш текст
Строка 24: Строка 24:


== Реализация ==
== Реализация ==
<pre>
4099 ;#lowRW
4100 ; _RW              ( c1 c2 −− )                        Считать/записать (c2=1/0) блок номер c1.
4101 ; c1 − номер экрана (блока)
4102 ; c2 − флаг "чтение−запись" (c2=1 для чтения, c2=0 для записи)
4103 LRW:            .DB    3
4104                .TEXT  "_RW"                  ; ( bl# flg −− )
4105                .DW    LLORW
4106 RW:            .DW CALL
4107 RRW:            .DW DUP,ZEQU, ZBRAN,RW1, SAVETEXT
4108 RW1:            .DW SWAP
4109                .DW DUP,ONEM,ABS, LITB
4110                .DB 60
4111                .DW SLASH,LITB
4112                .DB 3
4113                .DW MIN,LITB
4114                .DB 49
4115                .DW PLUS,KAT                    ; Выбрать нужный каталог
4116                .DW BDIGS, DIG,DIG,DIG, LITB
4117                .DB 66
4118                .DW HOLD, EDIGS, DROP          ; Состряпать имя файла "Bxxx"
4119                .DW SWAP, LORW                  ; Считать/записать
4120                .DW DISKOFF, EXIT              ; Запретить все дисковые операции
</pre>
Пример реализации R/W из fig-Форта, симулирующий блоки в ОЗУ:
<PRE>
HEX
4000 CONSTANT LO ( начало буферной области )
6800 CONSTANT HI ( эквивалент 10 экранов )
: _RW >R ( сохранить boolean )
    B/BUF × LO + ↑
    HI > 6 ?ERROR ( проверка диапазона )
    R> IF ( чтение ) ↔ ENDIF
    B/BUF CMOVE ;
</PRE>
=== Советская реализация ===
В ФОРТ-ЕС общением с диском занимались [[примитив]]ы RBLK и WBLK
В ФОРТ-ЕС общением с диском занимались [[примитив]]ы RBLK и WBLK


Строка 77: Строка 39:
</PRE>
</PRE>


Пример реализации R/W из fig-Форта, симулирующий блоки в ОЗУ:
<PRE>
HEX
4000 CONSTANT LO ( начало буферной области )
6800 CONSTANT HI ( эквивалент 10 экранов )
: _RW >R ( сохранить boolean )
    B/BUF × LO + ↑
    HI > 6 ?ERROR ( проверка диапазона )
    R> IF ( чтение ) ↔ ENDIF
    B/BUF CMOVE ;
</PRE>
Определение слова R/W в FORTH ИТЭФ:
Определение слова R/W в FORTH ИТЭФ:
<PRE>
<PRE>
Пожалуйста, учтите, что любой ваш вклад в проект «ПМК вики» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. Pmkwiki:Авторские права). НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!

В целях защиты вики от автоматического спама в правках просим вас решить следующую каптчу:

Отменить Справка по редактированию (в новом окне)
Источник — https://pmk.the-hacker.ru/‗RW