ZxNet...?
ZXNet echo conference «real.speccy»
From Valerij Kozhevnikoff → To All 14 September 2002
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 ;====================================================== ;====================================================== ;======================================= _replz1 $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# _aa_repl1 ; _aa_writ1 ;======================================= $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# ;====================================================== ;======================================================= ;
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
<
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
$3=~to : ~
$2=$0(24 59)
$3=$3$2
CALL _conv_netaddr
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 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
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
NORMAL
WTXT 240
FAST
$0=[cont:&0(2)]#0D#0D$E
JPNZ _autoadd_repl
JP _WritZ1
_WritZ
.cr_m
CALL _conv_netaddr
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
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
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
<
< 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
<
<
.!@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;