[Oberon] Batch processing of Oberon commands

Hellwig Geisse hellwig.geisse at mni.thm.de
Sat Jun 13 10:40:00 CEST 2020


Andreas,

On Sa, 2020-06-13 at 07:35 +0200, Andreas Pirklbauer wrote:
> 
> I was wondering where exactly you had noticed the hangups. Perhaps the REQ/
> ACK pair right after SND or REC is overkill. Removing it, i.e. changing the protocol
> 
> From:
> 
>     Receive = SND ACK* filename ACK* | NAK* {data* ACK} REQ ACK* | NAK*
> 
> To:
> 
>     Receive = SND filename ACK* | NAK* {data* ACK} REQ ACK* | NAK*
> 
> would bring the protocol more in line with the one used in module Net.
> 

IIRC, the processing time required for the file operations
was too big (and these were not properly guarded against the
next data sent). My protocol runs like that (a "data packet"
consisting of a count  - 255 max - and as many bytes as the
count says):

File transfer from host to target
host             target
-----------------------
REC          -> 
             <-  ACK
filename     ->
             <-  ACK
REPEAT
data packet  ->
             <-  ACK
UNTIL count < 255
REQ          ->
             <-  ACK

File transfer from target to host:
host             target
-----------------------
SND          ->
             <-  ACK
filename     ->
             <-  ACK
REPEAT
             <-  data packet
ACK          ->
UNTIL count < 255
REQ          ->
             <-  ACK

"ACK" really means "ACK|NAK", but retries are not implemented.

Furthermore, I inserted sending an ACK from the target system
after the end of bootloading (e.g.) Oberon0. The problem was
that the send buffer of my development system filled up rapidly,
the communication program "thought" that the target system was
operational and started working on its script, while the send
buffer was only slowly becoming empty.

All the details can be seen here:
https://git.thm.de/hg53/THM-Oberon
The project is publicly accessible, so I hope that you can look
into it. If you cannot (perhaps because our IT department blocks
accesses), please send me a note. I will happily transfer the
project to GitHub then.

Best,
Hellwig


More information about the Oberon mailing list