ZxNet...?

ZXNet echo conference «real.speccy»

From Valerij Kozhevnikoff To All 14 September 2002

Hello, Yuriy!

13 Sep 02 22:01, Yuriy Prokofiev -> All:

YP> I have been seeing this wonderful word in echoes for a long time...
YP> in principle it is clear what is meant,
YP> but the implementation is completely incomprehensible....

Wow... what is so unclear here. Perhaps you are confused by the small disk space available for TR-DOS? Four 640 KB disks? I, too, was once flabbergasted when I saw links like “located on POST BBS, disk number 120.” 8-) The screw was
connected already six years ago.

YP> Maybe someone can explain...

Where and how. It's different in different regions. This depends on the modem and software used. If Hayes is compatible - the same FTN network as Fido, the software is appropriate. The nodes are usually on the PC. Communication between cities - in my opinion, everywhere
on
PC via the Internet, although I know real people who carried mail intercity.

If you use your own modems that are not compatible with anything, then
you use your own software for them - MMD 4.xx. or EMS 2.xx. MacroModem 4.xx or
E-mage Modem Station 2.xx, respectively.

By the way, both of these programs don’t care about the type of modem used, because both
use something like a FOSSIL driver. They can also work with Hayes, I have the driver somewhere. These are mail-terminal programs; they
can work in any way you like, because both have a built-in command language interpreter(since
languages ​​were made by different people - they are both different). In MMD there is a creepy, but very
functional language, in EMS there is something kinder. I need to re-read the description.
I lost the example for MMD somewhere, I need to look for it.

I found it. Fence overlay script for the server. “Fence” is a place on the ZXNet
BBS where every user or point can leave a note for someone.

And behind it flies a version of the script for sending and receiving mail (and anything else) on EMS 2.55 for the client computer. I just re-read it
-
it turns out that PKUnzip can run with a tosser!

ALL THIS IS PERFORMED ON THE REAL ZX-SPECTRUM, IT HAS NO CONNECTION WITH THE PC.
The central hub of the network is connected to a local network with a PC, through which the vicomm
part of the network communicates with external networks.

_······------====== Monitor glass cutter ======------······_
INT's are attached at the end.
Here is the fence overlay:
---------------------------------------------------------------
;
; User board
;
;&V - the number of the current fence
;$N - its name
~0=0

OVERLAY
. Fences
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#20Messagov#20net~!~#0d#0d#0d
? &9=666
? &8=666
? JP _RepZ
IF &8=1
? &9=1
? JP _ReadZ1
PAUSE 15
NORMAL
&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
< Select topic
<

<1 - general conversations
<2 - business
<3 - music
<0 - exit
WCHR
FAST
JPON $E "0" _RepZ
JPNZ _RepZ
CALL _ReadB_1
JP _ReadZ
;=======================================
_ReadB
NORMAL
<

<
< Which board will you read (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 Recording error
<
< ~Attention! Error!~
< ~It is impossible to record the message board!~
<
PAUSE 50
RET
;=====================================================
_locden
.printbadscr
NORMAL
<#0C
<
< How can I deceive you, user?!
< ,,,
< ┌───┐
< c│c c│) .────────────────────────────.
< ┌┘ l │ <<─┤HE IS A USER!!! Soak it!!! OO┌┘ (the board is nailed
< \__/ to the wall)
<
< It’s better to lick the vinyl dances!
< the users have fallen into crushing the bones along the fences.
&0=0
JP _waitent
;======================================================
_waitent
<
< enter[√];
_we0 RES %071
CLEARIN
WSTR
JPNZ _we0
SET %071
RET
;======================================================
_HelpZ
.help
<#0C;
< Buttons used.
< ____________________

<- O - back
<+ P - forward
<= L - repeat message
<< 7 - previous board
<> 6 - next board
< H - this manual
<
< The board system was made by Igor K.
< Valuable advice was given by FK0.
< Helped with testing - Vitaliy Buzov.
JP _waitent

;=======================================================
;in: $E - string with number
;out: &2=0 - o.k.
; &2=1 - error "empty string"
; &2=2 - not a number
; &9 - the required number
;use: &3,&4
_strnum
&2=1
RETIF @$E=0
IF @$E>3
? .entered a large number $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=~general conversations~
IF &V=2
? $0=bulb2 z
? $N=~business~
IF &V=3
? $0=bulb3 z
? $N=~music~
<#0Cloading...;
.ld &V
IF @DISK!~0
? DISK ~0
UNSEL_ALL
SEL $0
JPIF @MARK=0 _locload1
UNSEL_ALL
LDFEN $0
UNSEL_ALL
RETZ
.FENCE ERROR @ERR
.we make a connection break
<
< The station has switched to the system mark !
< Call back in 10 minutes.
INT 1
.int failed
ret
_locload1
.+ @TIME Creating a new board
OPEN_MEM
FILL_MEM 8 5115
SAVE_MEM $0
LDFEN $0
RETZ
<
< No further work is possible.
<

.!@TIME ERROR board file
PAUSE 70
APOP
RET

;
;
; piece of Overlay for writing a letter
;
;
;in:
; &0=4 - auto (to does not ask)
; ext. doesn’t put it herself
; (the address is asked at the beginning)
;out: mail
;
;Disk for letters
~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
<
< You can’t make such long lines!
<
CALL _waitent
&1=233
_read_str2
RET

---------------------------------------------------------------
_INT
INTLIST{
_ruslat_conv
_MAIN
}
-----------------------------------------------------------------

2Sysops: installing these fences in your programs is welcome. ;-)
_······------====== Monitor glass cutter ======------······_

And this is a script option for sending and receiving something (usually mail) on
EMS 2.55 for a client computer. It can run an unzip with a tosser.
It’s two years ago, they’ve probably written something else by now. Who needs -
write, I’ll send a description of the language and there was something else about it... In Nicron 119 it seems
_······------====== Monitor glass cutter ======------·····_
;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
ifnotmarkedrcgoto 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
;Don't forget to replace the greeting with your own!!!
:dl_nm2 transmit ~Robot v5.50 for BatProc v1.00
transmit ~Hello Volodya! This is Spencer.
if .6~0 onerror =1
return

;Don't forget to replace the masks with your own!!!
: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
:blkpsltransmit ~.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
_······------====== Monitor glass cutter ======------······_

Hmm. I threw all kinds of crap here. Well, okay, people should know
how it works for us.

* Original written in KHARKOV.SPECTRUM
* also sent to ZX.SPECTRUM
* also sent to REAL.SPECCY
* also sent to ZXNET.SOFT

WBR, Jason.

/*e-mail: jason2000(scary dog)yandex.ru ICQ: 62235830*/

/np:/ *silence*