NULMODEM pseudo code
De nu volgende pseudo code kan gebruikt worden om het DamExchange laag 1 NULMODEM protocol in een damprogramma in te bouwen. Code om tijdens doorrekenen in de tijd van de tegenstander te testen of via de seriële poort een zet binnen komt van de andere computer is hier niet opgenomen. Ook is hier geen code opgenomen om een damprogramma tussentijds te laten eindigen door bijvoorbeeld een toetsaanslag, een muisklik of een commando.
zendteken(teken)
// zend een teken en wacht op terugontvangst
// return 1 als hetzelfde teken is terugontvangen
// return 0 als een ander teken, of geen teken is
terugontvangen
verzend teken naar COM poort
als dit een fout geeft, return dan 0
lees in een wachtlus wat op de COM poort binnenkomt
als deze wachtlus 5 seconden niets binnenkrijgt,
return dan 0
als het lezen van de COM poort fout gegaan is, return
dan 0
als het ontvangen teken niet gelijk is aan het
verzonden teken, return dan 0
als alles wel in orde is, return dan 1
ontvangteken()
// wacht op ontvangst van een teken, en zend dit
terug
// return het ontvangen teken als alles in orde is
// return 0 als iets fout is
lees in een oneindige wachtlus wat op de COM poort
binnenkomt
als dit lezen fout gaat, return dan 0
verzend het ontvangen teken naar de COM poort
als het verzenden een fout geeft, return dan 0
als alles in orde is, return dan het ontvangen teken
ontvangbuffer()
// ontvang alle zetinformatie en plaats deze (zonder S
en E) in berichtbuffer
// de berichtbuffer is maximaal 128 posities: 127
(bericht) + eind '\0'
// return 1 als alles goed verloopt
// return 0 als buffer overflow
startallesopnieuw:
als ontvangteken() != 'S'
ga naar startallesopnieuw
herstart:
i = 0
doe
teken = ontvangteken()
als teken == 0 ga naar startallesopnieuw
als teken == 'S'
ga naar herstart
als teken == 'E'
dan berichtbuffer[ i ] = '\0'
anders berichtbuffer[ i ] = teken
i = i + 1
totdat teken == 'E'
of i > 127
als teken == 'E'
dan return 1
anders return 0
zendbuffer()
// verzend de zet in berichtbuffer
opnieuw:
rc = zendteken( 'S'
)
als rc == 0 ga naar opnieuw
i = 0
volgende:
als berichtbuffer[ i ] == '\0' ga naar
bufferverzonden
rc = zendteken( berichtbuffer[ i ] )
als rc == 0 ga naar opnieuw
i = i + 1
ga naar volgende
bufferverzonden:
rc = zendteken( 'E'
)
als rc == 0 ga naar opnieuw
// anders klaar met verzenden berichtbuffer