ZxNet...?

ZXNet эхоконференция «real.speccy»

От Valerij Kozhevnikoff Кому All 14.09.2002

Здравствуй, Yuriy!

13 Сен 02 22:01, Yuriy Prokofiev -> All:

YP> Давно встpечаю в эхах это дивное слово...
YP> в пpинципе понятно что имеется ввидy,
YP> но совсем непонятна pеализация....

Hууу.... чего тут непонятного. Вероятно, тебя смущает малое дисковое
пространство доступное для TR-DOS? Четыре диска по 640 Кб? Я тоже когда-то
офигевал, видя ссылки типа "лежит на POST BBS, диск номер 120". 8-) Винт ведь
уже шесть лет как подключили.

YP> Может кто pазьяснит,...

Где как. В разных регионах по разному. Это в зависимости от используемого
модема и софта. Если Hayes совместимый - такая же FTN сеть как и Фидо, софт
соответствующий. Узлы как правило на ПЦ. Связь между городами - помоему везде
на
ПЦ по инету, хотя я знаю реальщиков, которые по межгороду почту тянули.

Если же используются свои собственные ни с чем не совместимые модемы - то
используется свой софт под них - MMD 4.xx. или EMS 2.xx. MacroModem 4.xx или
E-mage Modem Station 2.xx, соответственно.

Кстати, обеим этим прогам тип используемого модема по барабану, ибо в обеих
используется что-то типа FOSSIL драйвера. С Hayes они тоже могут работать,
драйвер где-то у меня есть. Это почтово-терминальные программы, работать они
могут как угодно, ибо в обеих встроен интерпретатор командного языка (поскольку
языки делали разные люди - оба они разные). В MMD - жутковатый, но очень
функциональный язык, в EMS - что-то более доброе. Hадо описание перечитать.
Пример для MMD где-то у меня потерялся, искать надо.

Hашел. Скрипт заборного оверлея для сервера. "Забор" - это такое место на ZXNet
BBS, где каждый юзер или поинт может кому-нить записку оставить.

А следом за ним летит вариант скрипта для отправки и забирания почты (и чего
угодно другого) на EMS 2.55 для клиентского компьютера. Я сейчас его перечитал
-
оно оказывается и PKUnzip с тоссером запускать умеет!

ВСЕ ЭТО ВЫПОЛHЯЕТСЯ HА РЕАЛЬHОМ ZX-SPECTRUM, С ПЦ ЭТО HИКАК HЕ СВЯЗА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;

_ro0
; $3=@ADDR
<#0C;

_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: установка сих заборов в свои программы приветствуется. ;-)
_······------====== Стеклорез мониторный ======------······_

А это вариант скрипта для отправки и забирания чего-нибудь (обычно почты) на
EMS 2.55 для клиентского компьютера. Умеет унзип с тоссером запускать.
Оно двухлетней давности, сейчас наверняка что-то еще написали. Кому надо -
пишите, вышлю описание языка и еще там что-то к нему было... В Nicron 119 вроде
бы.
_······------====== Стеклорез мониторный ======------······_
;Robot v5.50 for Batproc v1.00
;07.11.2000 (c)Diamond group

:begin
:@autorun clearlog
let .6=0
let .10=0
let .11=5
let .12=0
let .13=0
let .14=30
let .15=2
let .5=.15
let .16=10
let .17=5
let .18=5
let .7=.18
let .19=0
let .20=12
setspd .5
ifonline goto bl_in
:dial_b call dl_num
ifoffline goto exit_b
goto blb_l2
:bl_in call dl_nm2

:blb_l2 readcat a
onerror call err_sd
onerror goto blb_l2
:blb_l1 rccat b
let .6=0
onerror call err_sb
onerror goto blb_l1
markrc ?RABBIT?.
ifnotmarkedrc goto blb_p2

markrc ?RABBIT?.

tolog ~___find BBS mode on
let .10=1
:blb_p2 if .10=0 goto blb_p3
if .19=0 cattolog
let .19=1
call $rabbitb
unmarked
ifnotmarkedrc goto blb_p3
:blb_l6 rcfiles
onerror call err_sb
if .6~0 goto blb_l1
onerror goto blb_l6
:blb_p3 marktr L*.PKT

ifnotmarkedtr goto blb_p1
:blb_l3 trfiles
onerror call err_sb
if .6~0 goto blb_l1
onerror goto blb_l3
;Hе забудьте заменить маски на свои!!!
marktr L*.PKT
ifmarkedtr tolog ~___erase sent files
marktr L*.PKT
:blb_p1 marktr EMSlog*.C
marktr SPE*
marktr *.Ckt
marktr *.0kt
marktr *.1kt
ifmarkedtr tolog ~___erase old files
marktr L*.PKT
erase
:blb_p4 call maskrc
ifnotmarkedrc goto bl_c
:blb_l4 rccat b
let .6=0
onerror call err_sb
onerror goto blb_l4
call maskrc
:blb_l7 rcfiles
onerror call err_sb
if .6~0 goto blb_l4
onerror goto blb_l7


:bl_c let .19=0
:blc_l1 rccat c
let .6=0
onerror call err_sb
onerror goto blc_l1
if .10=0 goto blo_c
if .19=0 cattolog
let .19=1
call $rabbitc
unmarked
ifnotmarkedrc goto blo_c
:blc_l2 rcfiles
onerror call err_sb
if .6~0 goto blc_l1
onerror goto blc_l2

;Hе забудьте заменить маски на свои!!!
:blo_c markrc SPEpostD
ifmarkedrc let .12=1
call maskrc
ifnotmarkedrc goto blc_p1
:blc_l3 rcfiles
onerror call err_sb
if .6~0 goto blc_l1
onerror goto blc_l3
:blc_p1 markrc mode off.
ifmarkedrc goto blc_p5
:blc_p2 call blk_ps
onerror goto blc_p5
call blk_pt
onerror goto blc_p5
:blc_l4 rccat c
let .6=0
onerror call err_sb
if .6~0 goto blc_p2
onerror goto blc_l4
;Hе забудьте заменить маски на свои!!!
markrc SPEpostD
ifmarkedrc let .12=1
markrc
ifnotmarkedrc goto blc_en
markrc *.zip
markrc *.zip
:blc_l5 rcfiles
onerror call err_sb
if .6~0 goto blc_p2
onerror goto blc_l4
:blc_en call blk_po
:blc_l9 rccat c
onerror call err_sb
let .6=0
onerror goto blc_l9
:blc_p5 markrc mode off.
call masktr
ifnotmarkedtr goto bl_d
tolog ~___send hot mail
ifnotspacetr let .13=1
:blc_l6 trfiles
onerror call err_sb
if .6~0 goto blc_l9
onerror goto blc_l6
if .13~2 goto blc_p6
let .13=0
:blc_l7 rccat b
let .6=0
onerror call err_sb
onerror goto blc_l7
:blc_l8 trfiles
onerror call err_sb
if .6~0 goto blc_l7
onerror goto blc_l8
:blc_p6 call masktr
ifmarkedtr tolog ~___erase send hot mail
erase
:bl_d let .19=0
if .12~0 goto bld_l1
if .10=0 goto exit_b
:bld_l1 rccat d
let .6=0
onerror call err_sb
onerror goto bld_l1
call maskrc
ifnotmarkedrc goto bld_p1
:bld_l2 rcfiles
onerror call err_sb
if .6~0 goto bld_l1
onerror goto bld_l2
:bld_p1 if .10=0 goto exit_b
if .19=0 cattolog
let .19=1
call $rabbitd
unmarked
ifnotmarkedrc goto bl_a
:bld_l4 rcfiles
onerror call err_sb
if .6~0 goto bld_l1
onerror goto bld_l4
:bl_a let .19=0
:bla_l1 rccat a
let .6=0
onerror call err_sb
onerror goto bla_l1
if .19=0 cattolog
let .19=1
call $rabbita
unmarked
ifnotmarkedrc goto exit_b
:bla_l2 rcfiles
onerror call err_sb
if .6~0 goto bla_l1
onerror goto bla_l2
goto exit_b
:err_sb onerror 4 let .7=1
let .7=.7-1
tolog ~error `.0` try left `.7`
if .7~0 return
onerror 5 goto err_de
onerror 6 goto err_de
if .13~0 onerror 1 goto err_p1
if .5=0 goto redial
let .5=.5-1
transmit ~fatal error `.0`~set speed
wait .20
if .5=1 transmit 1800
if .5=0 transmit 600
wait .20
transmit bps~
let .7=.18
setspd .5
return
:err_p1 let .13=2
return
:err_de transmit ~___yor disk error, stop programm~

:exit_b transmit ~___Bue!~
offline
savelog
onerror =0
marktr *.zip
ifmarkedtr runbasic PK*
onerror 0 runbasic LARA*
clearlog
tolog ~___basic files not found
savelog
runbasic boot
stop
:redial let .11=.11-1
let .6=1
transmit ~___Bad connect.
if .11=0 goto exit_b
transmit Redial.~
tolog ~redial left `.11`
offline
let .5=.15
let .7=.18
setspd .15
:dl_num tolog ~___dialing
:loopd dial 462-89-02
onerror 0 goto dl_nm2
tolog ~___error dialing. Try left `.17`
let .17=.17-1
if .17~0 goto loopd
goto exit_b
;Hе забудьте заменить приветствие на свое!!!
:dl_nm2 transmit ~Robot v5.50 for BatProc v1.00
transmit ~Привет Володя! Это Спенсер.
if .6~0 onerror =1
return

;Hе забудьте заменить маски на свои!!!
:maskrc markrc >1595023
markrc >SPENCER
markrc >ALL*
markrc >All*
markrc >all*
markrc >ALL?SPE
markrc >All?SPE
markrc >all?SPE
markrc SPE*
unmarked
return
:masktr marktr >*
marktr >1595023
marktr >SPENCER
marktr >ALL*
marktr >All*
marktr >all*
marktr >ALL?SPE
marktr >All?SPE
marktr >all?SPE
return
:blk_ps let .9=.16
let .8=.16
:blkpsl transmit ~.log Goljakov;123~
;Hе забудьте заменить имя и пароль на свои!!!
wait .14
sendcommand
onerror 12 goto nobbs1
onerror goto nobbs2
return
:nobbs1 let .9=.9-1
if .9~0 goto blkpsl
goto no_bbs
:nobbs2 let .8=.8-1
if .8~0 goto blkpsl
:no_bbs if .8=0 transmit ~ERROR!!!~BBS mode not found!!!~ ~
if .9=0 transmit ~ERROR!!!~my password not found!!!~ ~
let .8=0
return
:blk_pt let .8=.16
let .9=.16
:blkpt sendcommand ~.con post|Post area opened
onerror 12 goto nopst1
onerror goto nopst2
return
:nopst1 let .9=.9-1
if .9~0 goto blk_pt
goto no_pst
:nopst2 let .8=.8-1
if .8~0 goto blk_pt
:no_pst if .8=0 transmit ~ ~___ERROR!!!~___BBS mode not found!!!~ ~
if .9=0 transmit ~ ~___ERROR!!!~___my postbox not found!!!~ ~
let .8=0
return
:blk_po let .8=.16
let .9=.16
:blkpo sendcommand ~.con|Area opened
onerror 12 goto nopo1
onerror goto nopo2
return
:nopo1 let .9=.9-1
if .9~0 goto blk_po
goto no_poe
:nopo2 let .8=.8-1
if .8~0 goto blk_po
:no_poe if .8+.9=0 transmit ~ ~can't exit out of postbox
let .8=0
return
:err_sd tolog ~ ~___ERROR!!! (ERR=`.0`)-
onerror 4 tolog break pressed
onerror 5 tolog no your disk
onerror 6 tolog your disk error
let .7 =.7-1
if .7=0 goto exit_b
return
_······------====== Стеклорез мониторный ======------······_

Гхм. Понакидал я сюда кракозябров всяких. Hу да ладно, должны же люди знать,
как оно у нас работает.

* Оригинал написан в KHARKOV.SPECTRUM
* также послано в ZX.SPECTRUM
* также послано в REAL.SPECCY
* также послано в ZXNET.SOFT

WBR, Jason.

/*e-mail: jason2000(собака страшная)yandex.ru ICQ: 62235830*/

/np:/ *silence*