Текущая версия |
Ваш текст |
Строка 1: |
Строка 1: |
| '''(LINE)''' — адаптированное слово [[Каллисто]]. Считать строку с [[экран]]а. | | '''(LINE)''' — стандартное слово [[Каллисто]]. |
| (LINE) ( c1 c2 −− a c ) Вернуть адрес и длину строки c1 с экрана c2.
| |
| Выдаёт адрес a и длину c строки c1 с [[экран]]а c2. В [[Каллисто]] выдаёт длину без [[пробел]]ов в конце.
| |
|
| |
|
| == Ввод слова (LINE) ==
| | Выдаёт адрес a и длину u строки L с [[экран]]а S. |
| В [[Режим NUM|режиме NUM]] последовательно нажмите клавиши {{ШГ→}} [[Клавиша Р-ГРД-Г|{{Чёрная клавиша|Р-ГРД-Г}}]] [[Клавиша -|{{Серая клавиша|−}}]] [[Клавиша 7|{{Серая клавиша|7}}]] [[Клавиша 4|{{Серая клавиша|4}}]] [[Клавиша ИП|{{Чёрная клавиша|ИП}}]] [[Клавиша P|{{Синяя клавиша|P}}]] {{ШГ←}}
| |
|
| |
|
| == История ==
| |
| === (LINE) в fig-FORTH Release 1 glossary, май 1979 (англ.) ===
| |
| (LINE) n1 n2 --- addr count
| |
| Convert the line number n1 and the screen n2 to the disc buffer
| |
| address containing the data. A count of 64 indicates the full line
| |
| text length.
| |
|
| |
|
| === LINE в предыдущем стандарте Forth-83 (англ.) ===
| | == LINE в предыдущем стандарте Forth-83 (англ.) == |
| LINE +n -- addr M | | LINE +n -- addr M |
| addr is the address of the beginning of line +n for the | | addr is the address of the beginning of line +n for the |
| screen whose number is contained in SCR . The range of +n | | screen whose number is contained in SCR . The range of +n |
| is {0..15}. | | is {0..15}. |
|
| |
| === LINE в стандарте Forth-79 (англ.) ===
| |
| LINE n -- addr
| |
| Leave the address of the beginning of line n for the screen
| |
| whose number is contained in SCR. The range of n is {0..15}.
| |
|
| |
| == Реализация ==
| |
| <pre>
| |
| 3518 ;#xLINE
| |
| 3519 ; (LINE) ( c1 c2 −− a c ) Вернуть адрес и длину строки номер c1 с экрана c2.
| |
| 3520 ; Выдать адрес a и длину c строки c1 с экрана c2. В Каллисто выдаёт длину без пробелов в конце.
| |
| 3521 LDLINE: .DB 6
| |
| 3522 .TEXT "(LINE)" ; ( №строки №экрана −− адрес длина)
| |
| 3523 .DW LBLOCK
| |
| 3524 DLINE: .DW CALL
| |
| 3525 RDLINE: .DW TOR, LIT64,B3BUF,SSMOD, FROMR,PLUS, BLOCK
| |
| 3526 .DW PLUS, LIT64, DTRAI, EXIT
| |
| </pre>
| |
|
| |
| === Советская реализация ===
| |
| Юрий Семёнов приводит следующее описание слова (LINE) (стр. 157):
| |
| : (LINE) >R ( запись номера экрана в стек возврата)
| |
| 64 B/BUF ×/MOD ( частное указывает, на каком экране
| |
| по отношению к первому лежит
| |
| нужный текст)
| |
| R> + ( запись в стек абсолютного номера экрана,
| |
| откуда будет проведено чтение строки)
| |
| BLOCK + ( считывание экрана в буфер и запись в
| |
| стек адреса начала нужной строки)
| |
| 64 ( в стеке адрес начала текста и длина строки)
| |
| -TRAILING ( из 64 вычитается число пробелов в
| |
| конце строки)
| |
| ; ( всё готово для печати строки)
| |
| Определение слова .LINE в FORTH ИТЭФ:
| |
| <PRE>
| |
| HEAD 205Q,'.LIN',305Q,DLINE,$COL ; .LINE
| |
| DW TOR,$CL,BBUF,SSMOD,FROMR,PLUS,BLOCK
| |
| DW PLUS,$CL,DTRAI,$TYPE,SEMI
| |
| </PRE>
| |
|
| |
| == Ссылки ==
| |
| * {{Исходник|xLINE|(LINE)}}
| |
|
| |
|
|
| |
|
Строка 65: |
Строка 14: |
| {{заготовка}} | | {{заготовка}} |
| [[Категория:Слова Каллисто]] | | [[Категория:Слова Каллисто]] |
| [[Категория:Слова высокого уровня]]
| |
| [[Категория:Работа с внешней памятью Каллисто]] | | [[Категория:Работа с внешней памятью Каллисто]] |