ZXNet эхоконференция «code.zx»
тема: ввод строки.
от: Yaroslav Kozlov
кому: Kirill Frolov
дата: 23 Apr 1998
Kirill Frolov at 21-04-98 =>
Igor Krauklis ....
[...]
Привет, Kirill & Igor!
IK>> Люди, а есть ли у кого-нидудь
IK>> подпрограммка ввода строки ?
KF> У "кого-нидудь" может и есть. А куда ее и откуда вводить ?
KF> С клавы типа инпута в бейсике ?
Если для виевера, то...
LD B,42; символы в строке
LD HL,lab2
PUSH HL
LD HL,adr_str;адрес тек. строки
LD DE,string ;строка, что будет
lab1 LD A,(HL) ;напечатана
INC HL
CP #D
RET Z
;здесь можно опросить
;на наличие упр.
;символов
LD (DE),A
INC DE
DJNZ lab1
CP #D
RET NZ
INC HL; в HL адрес след. строки.
RET
lab2 ..... ;теперь можно и напечатать.
Если хотите, чтобы Спек работал с полной
отдачей, можно позаботится о скорости.
INC RR, на 2 такта больше, чем INC R,
и INC RR не влияет на флаги. Этим можно
воспользоватся. Многие системные програм-
меры забывают, что у Z80 есть стек.
Его использоание в чтении данных дает
ускорение в 2, а то и больше раз.
Притом, что трата памяти при разумном
использовании незначительна. Конечно,
когда стеком пользуются в таких целях,
прерывания обязательно надо запретить!
И еще: на скорпе magic в таких местах
нажимать не следует.
.....
; в HL адрес экрана
LD (savesp+1),SP
LD C,H
LD B,32; печать по 2 символа
EXX
DI
LD SP,strind
LD B,#F0; маска
EXX
P64_0 EXX
POP DE
LD H,#60
LD L,D
LD D,H
LD A,(DE)
INC D
AND B
LD C,A
LD A,(HL)
INC H
AND #F
OR C
EXX
LD (HL),A
INC H
....
....
LD H,C
INC L
DJNZ p64_0
savesp LD SP,0 ; здесь стек
EI
RET ; вот и вернулись..
Это был фрагмент процедуры печати строки
на 64 символа.
[...]
С наилучшими пожеланиями, PHOENIX
-+- ZXASM 3.0
|