И всё-таки, где флаги посмотреть можно? Почему именно 7F (0111 1111) это включение нумерации?Shaos wrote:> Флаг (байт) 7F в адрес 762D нужно записать (выполните D0,0 и сразу U).
Есть описание всех флагов какие можно устанавливать в 762D? Я чего-то с ходу не нашёл...
ПОБЕДИТ - Редактор текстового буфера
Moderator: Shaos
Re: Текстовый редактор ПОБЕДИТ
Я тут за главного - если что шлите мыло на me собака shaos точка net
Текстовый редактор ПОБЕДИТ
Можно и FF - разницы нет. В строке #618 это происходит.Shaos wrote:И всё-таки, где флаги посмотреть можно? Почему именно 7F (0111 1111) это включение нумерации?Shaos wrote:> Флаг (байт) 7F в адрес 762D нужно записать (выполните D0,0 и сразу U).
Есть описание всех флагов какие можно устанавливать в 762D? Я чего-то с ходу не нашёл...
Т.е. «GF000,» (с запятой), думаю, разрешит нумерацию строк (надо проверить)…
![:idea:](./images/smilies/icon_yesicon.gif)
Re: Текстовый редактор ПОБЕДИТ
А поконкретенее? Какие ещё флаги могут быть и т.д.
Я тут за главного - если что шлите мыло на me собака shaos точка net
Re: Текстовый редактор ПОБЕДИТ
Условно - это флаг, который Монитором обнуляется при чтении параметров директивы и при обнаружении Запятой «,» выставляет FF, чтобы сигнализировать директиве I о наличии второго параметра для изменения константы скорости ввода с магнитофона.Shaos wrote:А поконкретенее? Какие ещё флаги могут быть и т.д.
«Победит» этим кодом маскирует все десятичные символы при отображении нумерации строк. Значит:
- При 00/A0/60/20 вся нумерация отображается как символ 00h/20h
- При F0/70/30 вся нумерация строк отобразится символом 30h
- При FF (а также 7F/3F) нумерация строк отображается кодами 30h-39h
- При EF/6F/2F нумерация строк отобразится кодами 20h-29h
- При DF/5F/1F нумерация строк отобразится кодами 10h-19h
- При FE/7E/3E нумерация строк исказится с маскировкой до чётных цифр
В Emu80 в отладчике можно поиграться значениями и увидеть результат (но только при обновлении столбца строк).
Re: Текстовый редактор ПОБЕДИТ
А зачем? ![:)](./images/smilies/icon_smile.gif)
Нумерация она ведь либо есть, либо её нет - зачем остальные вариации?![;)](./images/smilies/icon_wink.gif)
![:)](./images/smilies/icon_smile.gif)
Нумерация она ведь либо есть, либо её нет - зачем остальные вариации?
![;)](./images/smilies/icon_wink.gif)
Я тут за главного - если что шлите мыло на me собака shaos точка net
Re: Текстовый редактор ПОБЕДИТ
Ну, дык, я и говорю, что всё происходит в строке #618:Shaos wrote:А зачем?
Нумерация она ведь либо есть, либо её нет - зачем остальные вариации?
Code: Select all
;;;;;;;;;;;;;;;;;;;;;;;;;
; BC - SCREEN POINTER
;;;;;;;;;;;;;;;;;;;;;;;;;
PUTHEX: CALL PUTNBL ; Печать ниббла (дважды)
PUTNBL: RRC
RRC
RRC ; Прокручиваем для вывода каждого ниббла
RRC
PUSH PSW
ANI 00FH ; Маскируем, для печати младшего ниббла
CPI 00AH
SBI 02FH
DAA ; Приводим к стандартному 0-9 и A-F в Aккумуляторе
PUSH H ; Сохраняем HL, так как
LHLD DIGITS ; нужно загрузить "маску" из служебной области
ANA L ; и "замаскировать" аккумулятор
POP H ; Восстанавливаем HL
STAX B ; Выводим символ на экран
INX B ; и переходим к следующей позиции
POP PSW
RET
Code: Select all
;;;;;;;;;;;;;;;;;;;;;;;;;
; BC - SCREEN POINTER
;;;;;;;;;;;;;;;;;;;;;;;;;
PUTHEX: CALL PUTNBL ; Печать ниббла (дважды)
PUTNBL: RRC
RRC
RRC ; Прокручиваем для вывода каждого ниббла
RRC
PUSH PSW
ANI 00FH ; Маскируем, для печати младшего ниббла
CPI 00AH
SBI 02FH
DAA ; Приводим к стандартному 0-9 и A-F в Aккумуляторе
PUSH PSW ; Сохраняем HL, так как
LDA DIGITS ; нужно загрузить "флаги" из служебной области
ANI 040H ; и используем лишь один некий бит
CPI 040H ; Только он оказывает влияние
CMC ; Корректируем флаги
SBB A ; Формируем маску
XTHL ; Читаем предыдущее значение Aккумулятора
ANA L ; и маскируем цифры
POP H ; Восстанавливаем HL
STAX B ; Выводим символ на экран
INX B ; и переходим к следующей позиции
POP PSW
RET
![:wink:](./images/smilies/icon_wink.gif)
К тому же, в редакторе не так уж много флагов и упаковывать их в один байт не имеет смысла.
(Так же, как подпрограмма опроса клавиатуры Монитора F812 использует флаг 00 или FF в ячейке 7605, но реагирует лишь на 00 либо 01-FF в самом деле.)
Re: Текстовый редактор ПОБЕДИТ
А какие ещё есть флаги и как они используются?
Я тут за главного - если что шлите мыло на me собака shaos точка net
Текстовый редактор ПОБЕДИТ
Ну, тут уже всё описывалось и ничего нового я не скажу.Shaos wrote:А какие ещё есть флаги и как они используются?
Кроме того, что он сам передаёт флаги в PSW при вызове пользовательского кода.
Редактор в этом плане работает как некая замкнутая среда, с вызовом пользовательского кода при нажатии управляющих комбинаций клавиш:
- F1…F5 или УС+A…D (коды 00…04)
- УС+E…G (коды 05…07)
- УС+K (код 0B)
- УС+Т…W (коды 0E…17)
- АР2 или УС+[ (код 1B)
- УС+\]^ (коды 1С…1E)
Всё - под ответственность пользовательского кода.
В качестве примера, именно пользовательский код по нажатию F1 переключает буферы текста (можно и страницы памяти просто переключать), скрывает/отображает нумерацию строк и боковые границы, а по УС+E удаляет целую строку.
Re: Текстовый редактор ПОБЕДИТ
А какие флаги то? ![:)](./images/smilies/icon_smile.gif)
![:)](./images/smilies/icon_smile.gif)
Я тут за главного - если что шлите мыло на me собака shaos точка net
Re: Текстовый редактор ПОБЕДИТ
Shaos wrote:А какие флаги то?
Если указан адрес вызова пользовательской вспомогательной подпрограммы, обращение к ней происходит при нажатиях любой клавиши или клике "световым пером".
При этом через регистры общего назначения передаётся следующая информация:Всего этого вполне достаточно, чтобы реализовать все необходимые операции работы с текстом.
- BC - Шестнадцатеричный индекс (редактируемой) текущей строки
- DE - Адрес на начало самой верхней отображаемой строки
- HL - Адрес на начало текущей (редактируемой) строки
- A - Номер столбца по позиции курсора (начало - 01) с учётом панорамы (логическая позиция)
- CF флаг - Экран готовится к полной перерисовке (при клике "световым пером" или перемещением стрелками)
- PF флаг - Двойной (повторный) клик "светового пера" по знакоместу с курсором
- ZF флаг - Клавиши F1-F4, АР2 или УС+A-Z (код читается через вызов F803 обязательно, иначе возникнет зацикливание редактора/!\)
- SF флаг - Буферная строка (редактирование в активном состоянии)
Re: Текстовый редактор ПОБЕДИТ
И с какой стороны тут присовокупляется нумерация строк?…
Я тут за главного - если что шлите мыло на me собака shaos точка net
Re: Текстовый редактор ПОБЕДИТ
Нумерация строк - это «LDA 762D | CMA | STA 762D» в область служебных ячеек Монитора напрямую…Shaos wrote:И с какой стороны тут присовокупляется нумерация строк?…
И на обработке (компиляции) текста никак не сказывается - чисто декоративный элемент.
Вы страницы памяти как-то переключаете?
Применительно к 128 Кб, если служебная область 7600…76CF будет попадать под страничное переключение, нужно быть осторожным и дублировать все важные для редактора ячейки.
Re: Текстовый редактор ПОБЕДИТ
в других страницах монитором пользоваться будет нельзя
Я тут за главного - если что шлите мыло на me собака shaos точка net
Re: Текстовый редактор ПОБЕДИТ
Т.е. регион F000-F7FF можно тоже переключать и, соответственно, выбирать нужное ПЗУ?Shaos wrote:в других страницах монитором пользоваться будет нельзя
Типа:
- Страница #0 - под КНГМД
- Страница #1 - под ПобЭдит
- Страница #2 - под Yozh
- Страница #3 - под Паскаль или Форт (запускается из-под ПобЭдита, например)
Re: Текстовый редактор ПОБЕДИТ
Надо подумать - может быть в будущем надо сделать область переменных монитора (и экрана) опционально непереключаемой…
Я тут за главного - если что шлите мыло на me собака shaos точка net