Уважаемый All.
Вот, зависает Post-station в этих заборах. Глюка такого, чтобы
станция зависала, я найти не могу.
Пиплы, поможите, чем можите! Hайдите глюк! (мой или фатальный
Масовый)...
INT'ы прилагаются в конце.
Вот заборный оверлей:
;
; Доска пользователей
;
;&V - номер текущего забора
;$N - его название
~0=0
OVERLAY
. Заборы
CP @NAME User
JPZ _locden
FAST
&V=1
CALL _locload
RES %080
_zabor1
<#0C
< Bulletin system v4.1 by Igor K.
_ReadZ
.rd
_ReadZ0 &8=@MAX_FEN
IF &8=0
? $0=#0d#0d#0d#20#20#20#20Мессагов#20нет~!~#0d#0d#0d
? &9=666
? &8=666
? JP _RepZ
IF &8=1
? &9=1
? JP _ReadZ1
PAUSE 15
NORMAL
<
<
< С какого мессага будешь читать ?
<(можно от 1 до &8).
WSTR
FAST
CALL _strnum
IF &2!0
? &9=@MAX_FEN
_ReadZ1
FAST
$8=
IF &9=0
? &9=1
IF &9>&8
? &9=&8
$7=
JPIF @MAX_FEN=0 _ReadZ0
DEC &9
SETFEN &9
PRIFEN $0
$6=$0(0 7)
CP $6 [cont:01
JPNZ _ReadZ1_1
JPIF &9<1 _ReadZ1_1
JP _ReadZ1
_ReadZ1_1 INC &9
SETFEN &9
PRIFEN $5
$6=$5(0 7)
CP $6 [cont:01
JPZ _ReadZ1_2
RES %080
$5=
JP _RepZ
_ReadZ1_2 SET %080
&1=11
&0=@$5-&1
_loops $7=$7$5(&1)
INC &1
DJNZ &0 _loops
$8=~+add~
_RepZ
NORMAL
<#0C;
<[&V/7]: $N
<[&9(3)/&8(3)] $8
<
<$0;
<$7
<
<
<- + = n w a s < > z m q "H" - HELP
RES %071
CLEARIN
WCHR
FAST
SET %071
INT 0
JPON $E "-" _PrevZ "+" _NextZ "=" _RepZ "N" _ReadZ "W" _WritZ "A" _ReplZ "S"
_sel_b "<" _PrevB2 ">" _NextB2 "M" _WrTo
JPON $E "Z" _ReadB2
JPON $E "O" _PrevZ "P" _NextZ "L" _RepZ "1" _ReadZ "2" _WritZ "3" _ReplZ "4"
_sel_b "7" _PrevB2 "6" _NextB2 "8" _WrTo
JPON $E "5" _ReadB2
JPON $E 13 _NextZ "H" _HelpZa "Q" _rett "0" _rett
JP _RepZ
;
_rett
NORMAL
RET
_HelpZa
CALL _HelpZ
JP _RepZ
_ReadB2
CALL _ReadB
JP _ReadZ
_NextB2
CALL _NextB
JP _ReadZ
_PrevB2
CALL _PrevB
JP _ReadZ
;=======================================
_NextZ JPIF &9=&8 _ReadZ1
INC &9
IF %080=1
? INC &9
IF &9>&8
? &9=&8
JP _ReadZ1
_PrevZ JPIF &9=1 _ReadZ1
DEC &9
JP _ReadZ1
;=======================================
_sel_b
.select subj
NORMAL
<#0C
< Выберите тему
<
<текущая: $N
<
<1 - общие разговоры
<2 - бизнес
<3 - музыка
<0 - выход
WCHR
FAST
JPON $E "0" _RepZ
JPNZ _RepZ
CALL _ReadB_1
JP _ReadZ
;=======================================
_ReadB
NORMAL
<
<
<Текущая тема: $N
<
< Какую доску будешь читать (1..3) ?
WCHR
FAST
JPIF @$E=0 _NextB
_ReadB_1 IF $E="1"
? &V=1
IF $E="2"
? &V=2
IF $E="3"
? &V=3
JP _locload
;=======================================
_PrevB
IF &V=1
? &V=&3
DEC &V
JP _locload
;=======================================
_NextB
IF &V=3
? &V=1
INC &V
JP _locload
;=======================================
_WrTo
FAST
.wrto
&3=0
$1=$0(0 40)
FND_WORD $1 &3 ~from~
JPNZ _wrtoerr
&3=0
FND_WORD $1 &3 ~[cont~
JPNZ _wrto1
_wrtoerr
NORMAL
<
PAUSE 70
FAST
JP _RepZ
_wrto1
&3=0
FND_WORD $0 &3 ~User~
JPNZ _wrto2
NORMAL
<
< Он же не имеет адреса !
PAUSE 70
FAST
JP _RepZ
_wrto2
$9=$0(51 56)
$9=$9$0(58 59)
$9(3)=-
$9=$9#16C
$0=$0(24 59)
&3=0
&0=0
$1=#20
FND_WORD $0 &3 $1
FND_WORD $0 &3 $1
DEC &3
DEC &3
$1=(500:812/
$1=$1$0(31 35)
$1=$1)
$4=$0(0 &3)#20$1
CALL _noto_mail
CALL _locload
JP _ReadZ1
;=======================================
_ReplZ
.rpl
&3=0
$1=$0(0 40)
FND_WORD $1 &3 ~from~
JPNZ _rplerr
&3=0
FND_WORD $1 &3 ~[cont~
JPNZ _replz1
_rplerr
.rplerr
NORMAL
<#0C
<
<~Я не вижу на сим манускрипте имени !~
<
PAUSE 70
FAST
JP _RepZ
_replz1
$3=~to : ~
$2=$0(24 59)
$3=$3$2
CALL _conv_netaddr
$0=#20#20#20#20#20#20#20#20#20#20#20#20#20#20#20#20#20#20#20#20#20#20#20#20#20#
20#20#20#20#20#20
$0(23 30)=~500:812/~
$1=@NAME#20@FAM
&5=@$1
DEC &5
$0(0 &5)=@NAME#20@FAM
NORMAL
<#0c
<@TIME @DATE
<$3#0D#20;
&0=0
WTXT 150
FAST
$1=$E
$0=@TIME#20@DATE#0Dfrom:#20$0$4$3#0d#20$1
JPNZ _autoadd_repl
JP _replz0
;
_autoadd_repl
INC &0
.autoadd, &0
ADDFEN $0
&8=@MAX_FEN
JPZ _aa_repl1
.! @TIME Ошибка записи @ERR
NORMAL
<#0E
< Ошибка сохранения !!!
FAST
JP _ReadZ1
_aa_repl1
NORMAL
WTXT 240
$0=[cont:&0(2)]#0D#0D$E
JPNZ _autoadd_repl
JP _WritZ1
;
_autoadd_writ
INC &0
.autoadd, &0
ADDFEN $0
&8=@MAX_FEN
JPZ _aa_writ1
.! @TIME Ошибка записи @ERR
NORMAL
<#0E
< Ошибка сохранения !!!
FAST
JP _ReadZ1
_aa_writ1
NORMAL
WTXT 240
FAST
$0=[cont:&0(2)]#0D#0D$E
JPNZ _autoadd_repl
JP _WritZ1
;=======================================
_WritZ
.cr_m
CALL _conv_netaddr
$0=#20#20#20#20#20#20#20#20#20#20#20#20#20#20#20#20#20#20#20#20#20#20#20#20#20#
20#20#20#20#20#20
$0(23 30)=~500:812/~
$1=@NAME#20@FAM
&5=@$1
DEC &5
$0(0 &5)=@NAME#20@FAM
NORMAL
<#0c
<@TIME @DATE
&0=0
WTXT 190
FAST
$1=$E
$0=@TIME#20@DATE#0Dfrom:#20$0$4#0D#0D$1
JPNZ _autoadd_writ
_replz0
_WritZ1
NORMAL
<#0C
<$0
<
<
<1(L) - review 2(e) - save
<3(D) - add 0(Q) - exit;
RES %071
CLEARIN
WCHR
FAST
SET %071
INT 0
JPON $E "3" _addzab "2" _addzabf_0 "0" _ReadZ1
JPON $E "D" _addzab 13 _addzabf_0 "Q" _ReadZ1
JP _WritZ1
;
_addzabf_0
CALL _addzabfen
JP _ReadZ1
_addzab
INC &0
.add, &0
CALL _addzabfen
NORMAL
<#0C
<[cont:&0(2)]
<
WTXT 240
FAST
$0=[cont:&0(2)]#0D#0D$E
JP _WritZ1
;=======================================
_addzabfen
NORMAL
<
<
FAST
ADDFEN $0
.wr @ERR
&8=@MAX_FEN
RETZ
NORMAL
.! @TIME Ошибка записи
<
< ~Внимание! Ошибка!~
< ~Hевозможно записать доску сообщений!~
<
PAUSE 50
RET
;=======================================
_locden
.printbadscr
NORMAL
<#0C
<
< Да ты, как я залукаю, юзерок ?!
< ,,,
< ┌───┐
< c│c c│) .────────────────────────────.
< ┌┘ l │ <<─┤Он USER !!! Замочить его !!!│
< ( __└┐ .────────────────────────────.
< OO┌┘ (доска прибита гвоздями
< __/ на стенку)
<
< Лиснай лучше виниловые пляски !
< впадло юзерам по заборам кости мять.
&0=0
JP _waitent
;=======================================
_waitent
<
< enter[√];
_we0 RES %071
CLEARIN
WSTR
JPNZ _we0
SET %071
RET
;=======================================
_HelpZ
.help
<#0C;
< Используемые кнопки.
< ____________________
<
<- O - назад
<+ P - вперед
<= L - повтор мессаги
<< 7 - предыдущая доска
<> 6 - следующая доска
< H - этот мануал
<
< Система досок сделана Igor K.
< Ценные советы давал FK0.
< Помогал тестировать - Vitaliy Buzov.
JP _waitent
;=======================================
;in: $E - строка с числом
;out: &2=0 - o.k.
; &2=1 - ошибка "пустая строка"
; &2=2 - ввели не число
; &9 - искомое число
;use: &3,&4
_strnum
&2=1
RETIF @$E=0
IF @$E>3
? .ввел большое число $E
? RET
&2=@$E
&3=0
&9=0
_strnum_1
&4=$E(&3)
INC &3
JPIF &4=13 _strnum_2
JPIF &4<"0" _strnum_3
JPIF &4>"9" _strnum_3
&4=&4-"0"
&9=&9*10+&4
DJNZ &2 _strnum_1
_strnum_2
&2=0
RET
_strnum_3
&2=2
RET
;=======================================
_conv_netaddr
$4=@ADDR
; $4=$4(4 7)
; $4=$4(0 1)#2E$4(2 3)
RET
;=======================================
_locload
FAST
IF &V=1
? $0=bulb1 z
? $N=~общие разговоры~
IF &V=2
? $0=bulb2 z
? $N=~бизнес~
IF &V=3
? $0=bulb3 z
? $N=~музыка~
<#0Cloading...;
.ld &V
IF @DISK!~0
? DISK ~0
UNSEL_ALL
SEL $0
JPIF @MARK=0 _locload1
UNSEL_ALL
LDFEN $0
UNSEL_ALL
RETZ
.ОШИБКА ЗАБОРА @ERR
.делаем обрыв связи
<
<Внимание!
< Станиция перешла на системную метку !
< Перезвоните через 10 минут.
INT 1
.int не выполнен
ret
_locload1
.+ @TIME Создание новой доски
OPEN_MEM
FILL_MEM 8 5115
SAVE_MEM $0
LDFEN $0
RETZ
<
<Ошибка диска !
< Дальнейшая работа невозмона.
<
<
.! @TIME ERROR файла доски
PAUSE 70
APOP
RET
;
;
; кусок Оверля написания письма
;
;
;in:
; &0=4 - авто (to не спрашивает)
; расш. не ставит сама
; (адрес спрашивается в начале)
;out: mail
;
;Диск для писем
~0=0
;
;=======================================
_noto_mail
_nt_mail2 CALL _read_subj
JPIF &1=233 _nt_mail2
$1=$E
;
_read_other
$F=
$G=
$H=
$I=
$J=
$K=
$L=
_ro1
<#0c;
<
<$F;
<$G;
<$H;
<$I;
<$J;
<$K;
<$L;
WTXT 230
$F=$G
$G=$H
$H=$I
$I=$J
$J=$K
$K=$L
$L=$E
_ro0
; $3=@ADDR
<#0C;
<
<$F;
<$G;
<$H;
<$I;
<$J;
<$K;
<$L;
<
<
<
<--- mmd 4.00
< * Origin: POST-station (500:812/@ADDR)
<
<1(D) - продолжить ввод 2(S) - отправить
<3(B) - ввести с начала 0(Q) - Выход.
CLEARIN
WCHR
INT 0
JPON $E "1" _ro1 "2" _save_mail "3" _read_other "0" _rett
JPON $E "D" _ro1 "S" _save_mail "B" _read_other "Q" _rett
JP _ro0
;=======================================
_save_mail
IF @DISK!~0
? DISK ~0
OPEN_MEM
; $3=@ADDR
+
+~area : NETMAIL~
+~from : ~@NAME @FAM
+~to : ~$4
+~subj : ~$1
+~date : ~@DATE
+~time : ~@TIME
+
+$F;
+$G;
+$H;
+$I;
+$J;
+$K;
+$L;
+
+
+
+~--- mmd 4.00~
+~ * Origin: POST-station (500:812/~@ADDR)
+
_all_save
.name=$9
<
<
< Сделать письмо локальным?
CLEARIN
WASK
JPNZ _all_s1
$9(9)=l
_all_s1 SAVE_MEM $9
JPNZ _as_err
. saved
<#0c
<
<Письмо сохранено.
<
JP _waitent
_as_err
. save error =@ERR
<#0c#0e
<
< Hевозможно сохранить !
<
JP _waitent
;=======================================
_read_subj
<#0c
<Введи тему письма:
<
_read_str
CLEARIN
WSTR
JPZ _read_str1
&1=233
RET
_read_str1
&1=0
JPIF @$E<64 _read_str2
<#0c
<
< Такие длинные строчки делать нельзя !
<
CALL _waitent
&1=233
_read_str2
RET
_INT
INTLIST{
_ruslat_conv
_MAIN
}
2Sysops: установка сих заборов в свои программы приветствуется. ;-)
С уважением, Игорь.
[ZX] [Post] [ВЕЛОСПОРТ] [КИHО]
-=- e-mail: Igor_Krauklis.sp2824@zxnet.spb.ru