Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.javascript > #41213 > unrolled thread

ANN: Dogelog Player 1.0.4 (Time-Out Alarm)

Started byMostowski Collapse <janburse@fastmail.fm>
First post2023-02-27 20:46 +0100
Last post2023-04-01 16:11 -0700
Articles 12 — 4 participants

Back to article view | Back to comp.lang.javascript


Contents

  ANN: Dogelog Player 1.0.4 (Time-Out Alarm) Mostowski Collapse <janburse@fastmail.fm> - 2023-02-27 20:46 +0100
    Re: ANN: Dogelog Player 1.0.4 (Time-Out Alarm) Ezimene nimi Teine nimi <ezimenenimiteinenimi@gmail.com> - 2023-03-01 11:57 -0800
    Re: ANN: Dogelog Player 1.0.4 (Time-Out Alarm) Mostowski Collapse <bursejan@gmail.com> - 2023-03-03 17:34 -0800
      Re: ANN: Dogelog Player 1.0.4 (Time-Out Alarm) Mostowski Collapse <bursejan@gmail.com> - 2023-03-06 08:33 -0800
        Re: ANN: Dogelog Player 1.0.4 (Time-Out Alarm) Ezimene nimi Teine nimi <ezimenenimiteinenimi@gmail.com> - 2023-03-06 11:58 -0800
        Re: ANN: Dogelog Player 1.0.4 (Time-Out Alarm) Mostowski Collapse <bursejan@gmail.com> - 2023-03-11 10:55 -0800
          Re: ANN: Dogelog Player 1.0.4 (Time-Out Alarm) Mostowski Collapse <bursejan@gmail.com> - 2023-03-12 03:17 -0700
            Re: ANN: Dogelog Player 1.0.4 (Time-Out Alarm) Mostowski Collapse <bursejan@gmail.com> - 2023-03-14 09:35 -0700
    Re: ANN: Dogelog Player 1.0.4 (Time-Out Alarm) Ezimene nimi Teine nimi <yyyyyeeeee00000@writeme.com> - 2023-03-06 03:17 -0800
      Re: ANN: Dogelog Player 1.0.4 (Time-Out Alarm) Mostowski Collapse <janburse@fastmail.fm> - 2023-03-22 21:31 +0100
        Re: ANN: Dogelog Player 1.0.4 (Time-Out Alarm) Mostowski Collapse <bursejan@gmail.com> - 2023-03-25 09:30 -0700
          Re: ANN: Dogelog Player 1.0.4 (Time-Out Alarm) Mostowski Collapse <bursejan@gmail.com> - 2023-04-01 16:11 -0700

#41213 — ANN: Dogelog Player 1.0.4 (Time-Out Alarm)

FromMostowski Collapse <janburse@fastmail.fm>
Date2023-02-27 20:46 +0100
SubjectANN: Dogelog Player 1.0.4 (Time-Out Alarm)
Message-ID<ttj1as$1dbal$1@solani.org>
Dear All,

We are happy to announce a new edition
of the Dogelog player:

- library(markup):
To facilitate the generation of HTML texts inside
the browser, format/2 now accepts ~a for HTML attributes
and ~c for URL components. Further there are predicates
tag/[1,2] that switch the stream to raw mode
instead XML encoding, so that tags can be written.

- New setup_once_cleanup/3:
Since a stop button and Ctrl-C key started to work,
we needed to think of a robust setup and cleanup method.
We noticed a Logtalk idiom in the wild which we extended
by signal shielding and exception chaining. Also there
is a novel catch/3 which matches the head of a chain.

- New time_out/2:
There is also new predicate time_out/2 to abort a goal
after some delay. Implemented via the event loop of
JavaScript respectively Python. The predicate is not yet
perfect, for example it cannot prematurely abort a sleep/1,
but it can already abort where the Prolog interpreter
yields or auto-yields.

Have Fun!
Jan Burse, 27.02.2023
http://www.xlog.ch/

[toc] | [next] | [standalone]


#41215

FromEzimene nimi Teine nimi <ezimenenimiteinenimi@gmail.com>
Date2023-03-01 11:57 -0800
Message-ID<076c71b8-45e6-4a6d-8086-1d090ee0463dn@googlegroups.com>
In reply to#41213
Good day, lord.



On Monday, February 27, 2023 at 9:46:44 PM UTC+2, Mostowski Collapse wrote:
> Dear All, 
> 
> We are happy to announce a new edition 
> of the Dogelog player: 
> 
> - library(markup): 
> To facilitate the generation of HTML texts inside 
> the browser, format/2 now accepts ~a for HTML attributes 
> and ~c for URL components. Further there are predicates 
> tag/[1,2] that switch the stream to raw mode 
> instead XML encoding, so that tags can be written. 
> 
> - New setup_once_cleanup/3: 
> Since a stop button and Ctrl-C key started to work, 
> we needed to think of a robust setup and cleanup method. 
> We noticed a Logtalk idiom in the wild which we extended 
> by signal shielding and exception chaining. Also there 
> is a novel catch/3 which matches the head of a chain. 
> 
> - New time_out/2: 
> There is also new predicate time_out/2 to abort a goal 
> after some delay. Implemented via the event loop of 
> JavaScript respectively Python. The predicate is not yet 
> perfect, for example it cannot prematurely abort a sleep/1, 
> but it can already abort where the Prolog interpreter 
> yields or auto-yields. 
> 
> Have Fun! 
> Jan Burse, 27.02.2023 
> http://www.xlog.ch/

[toc] | [prev] | [next] | [standalone]


#41217

FromMostowski Collapse <bursejan@gmail.com>
Date2023-03-03 17:34 -0800
Message-ID<45c06a92-3d3a-45ec-8fd0-b720ff1411a6n@googlegroups.com>
In reply to#41213
The Dogelog Player is a Prolog system written 100% in Prolog
that targets the Python and the JavaScript platform. It
features a Prolog engine that can suspend its execution, 
either on the occasion of an explicit '$YIELD'/1 call or of an 
implicit auto-yield, in case the later is enabled.

We stayed with the global state design of the Dogelog Player 
but could nevertheless provide stackless and stackfull coroutines. 
Our running example is two text echoing coroutines "tick" and 
"tock", with different frequencies. Works fine on the Python 
platform and the JavaScript platforms.

See also:

Multitasking with the Dogelog Player
https://twitter.com/dogelogch/status/1631827093758590976

Multitasking with the Dogelog Player
https://www.facebook.com/groups/dogelog

Mostowski Collapse schrieb am Montag, 27. Februar 2023 um 20:46:44 UTC+1:
> Dear All, 
> 
> We are happy to announce a new edition 
> of the Dogelog player: 
> 
> - library(markup): 
> To facilitate the generation of HTML texts inside 
> the browser, format/2 now accepts ~a for HTML attributes 
> and ~c for URL components. Further there are predicates 
> tag/[1,2] that switch the stream to raw mode 
> instead XML encoding, so that tags can be written. 
> 
> - New setup_once_cleanup/3: 
> Since a stop button and Ctrl-C key started to work, 
> we needed to think of a robust setup and cleanup method. 
> We noticed a Logtalk idiom in the wild which we extended 
> by signal shielding and exception chaining. Also there 
> is a novel catch/3 which matches the head of a chain. 
> 
> - New time_out/2: 
> There is also new predicate time_out/2 to abort a goal 
> after some delay. Implemented via the event loop of 
> JavaScript respectively Python. The predicate is not yet 
> perfect, for example it cannot prematurely abort a sleep/1, 
> but it can already abort where the Prolog interpreter 
> yields or auto-yields. 
> 
> Have Fun! 
> Jan Burse, 27.02.2023 
> http://www.xlog.ch/

[toc] | [prev] | [next] | [standalone]


#41228

FromMostowski Collapse <bursejan@gmail.com>
Date2023-03-06 08:33 -0800
Message-ID<2b07718d-b709-43ca-80a2-a7cf601c0ec3n@googlegroups.com>
In reply to#41217
The Dogelog Player is a Prolog system written 100% in Prolog
that targets the Python and the JavaScript platform. We recently
made strides in providing call_later/2 and create_task/1 to launch
non-fibers and fibers. Unfortunately sleep/1 wasn’t interruptible so far.

The solution for both the JavaScript and the Python platform work
with an additional object waiter in the context of the main stack or a
side stack. Whereas the JavaScript solution is inspired by an
AbortController, the Python solution simply calls cancel() on a task.

See also:

Interruptible sleep/1 for the Dogelog Player
https://twitter.com/dogelogch/status/1632779077827297282

Interruptible sleep/1 for the Dogelog Player
https://www.facebook.com/groups/dogelog

Mostowski Collapse schrieb am Samstag, 4. März 2023 um 02:34:59 UTC+1:
> The Dogelog Player is a Prolog system written 100% in Prolog 
> that targets the Python and the JavaScript platform. It 
> features a Prolog engine that can suspend its execution, 
> either on the occasion of an explicit '$YIELD'/1 call or of an 
> implicit auto-yield, in case the later is enabled. 
> 
> We stayed with the global state design of the Dogelog Player 
> but could nevertheless provide stackless and stackfull coroutines. 
> Our running example is two text echoing coroutines "tick" and 
> "tock", with different frequencies. Works fine on the Python 
> platform and the JavaScript platforms. 
> 
> See also: 
> 
> Multitasking with the Dogelog Player 
> https://twitter.com/dogelogch/status/1631827093758590976 
> 
> Multitasking with the Dogelog Player 
> https://www.facebook.com/groups/dogelog
> Mostowski Collapse schrieb am Montag, 27. Februar 2023 um 20:46:44 UTC+1: 
> > Dear All, 
> > 
> > We are happy to announce a new edition 
> > of the Dogelog player: 
> > 
> > - library(markup): 
> > To facilitate the generation of HTML texts inside 
> > the browser, format/2 now accepts ~a for HTML attributes 
> > and ~c for URL components. Further there are predicates 
> > tag/[1,2] that switch the stream to raw mode 
> > instead XML encoding, so that tags can be written. 
> > 
> > - New setup_once_cleanup/3: 
> > Since a stop button and Ctrl-C key started to work, 
> > we needed to think of a robust setup and cleanup method. 
> > We noticed a Logtalk idiom in the wild which we extended 
> > by signal shielding and exception chaining. Also there 
> > is a novel catch/3 which matches the head of a chain. 
> > 
> > - New time_out/2: 
> > There is also new predicate time_out/2 to abort a goal 
> > after some delay. Implemented via the event loop of 
> > JavaScript respectively Python. The predicate is not yet 
> > perfect, for example it cannot prematurely abort a sleep/1, 
> > but it can already abort where the Prolog interpreter 
> > yields or auto-yields. 
> > 
> > Have Fun! 
> > Jan Burse, 27.02.2023 
> > http://www.xlog.ch/

[toc] | [prev] | [next] | [standalone]


#41229

FromEzimene nimi Teine nimi <ezimenenimiteinenimi@gmail.com>
Date2023-03-06 11:58 -0800
Message-ID<1b0d1620-b142-40f6-ae97-3f80c77dc41an@googlegroups.com>
In reply to#41228
Good evening, m o n s e n j o u r ......................................................


On Monday, March 6, 2023 at 6:33:29 PM UTC+2, Mostowski Collapse wrote:
> The Dogelog Player is a Prolog system written 100% in Prolog
> that targets the Python and the JavaScript platform. We recently 
> made strides in providing call_later/2 and create_task/1 to launch 
> non-fibers and fibers. Unfortunately sleep/1 wasn’t interruptible so far. 
> 
> The solution for both the JavaScript and the Python platform work 
> with an additional object waiter in the context of the main stack or a 
> side stack. Whereas the JavaScript solution is inspired by an 
> AbortController, the Python solution simply calls cancel() on a task. 
> 
> See also: 
> 
> Interruptible sleep/1 for the Dogelog Player 
> https://twitter.com/dogelogch/status/1632779077827297282 
> 
> Interruptible sleep/1 for the Dogelog Player 
> https://www.facebook.com/groups/dogelog
> Mostowski Collapse schrieb am Samstag, 4. März 2023 um 02:34:59 UTC+1: 
> > The Dogelog Player is a Prolog system written 100% in Prolog 
> > that targets the Python and the JavaScript platform. It 
> > features a Prolog engine that can suspend its execution, 
> > either on the occasion of an explicit '$YIELD'/1 call or of an 
> > implicit auto-yield, in case the later is enabled. 
> > 
> > We stayed with the global state design of the Dogelog Player 
> > but could nevertheless provide stackless and stackfull coroutines. 
> > Our running example is two text echoing coroutines "tick" and 
> > "tock", with different frequencies. Works fine on the Python 
> > platform and the JavaScript platforms. 
> > 
> > See also: 
> > 
> > Multitasking with the Dogelog Player 
> > https://twitter.com/dogelogch/status/1631827093758590976 
> > 
> > Multitasking with the Dogelog Player 
> > https://www.facebook.com/groups/dogelog 
> > Mostowski Collapse schrieb am Montag, 27. Februar 2023 um 20:46:44 UTC+1: 
> > > Dear All, 
> > > 
> > > We are happy to announce a new edition 
> > > of the Dogelog player: 
> > > 
> > > - library(markup): 
> > > To facilitate the generation of HTML texts inside 
> > > the browser, format/2 now accepts ~a for HTML attributes 
> > > and ~c for URL components. Further there are predicates 
> > > tag/[1,2] that switch the stream to raw mode 
> > > instead XML encoding, so that tags can be written. 
> > > 
> > > - New setup_once_cleanup/3: 
> > > Since a stop button and Ctrl-C key started to work, 
> > > we needed to think of a robust setup and cleanup method. 
> > > We noticed a Logtalk idiom in the wild which we extended 
> > > by signal shielding and exception chaining. Also there 
> > > is a novel catch/3 which matches the head of a chain. 
> > > 
> > > - New time_out/2: 
> > > There is also new predicate time_out/2 to abort a goal 
> > > after some delay. Implemented via the event loop of 
> > > JavaScript respectively Python. The predicate is not yet 
> > > perfect, for example it cannot prematurely abort a sleep/1, 
> > > but it can already abort where the Prolog interpreter 
> > > yields or auto-yields. 
> > > 
> > > Have Fun! 
> > > Jan Burse, 27.02.2023 
> > > http://www.xlog.ch/

[toc] | [prev] | [next] | [standalone]


#41240

FromMostowski Collapse <bursejan@gmail.com>
Date2023-03-11 10:55 -0800
Message-ID<7145be43-2dbe-4088-90c2-f7ef7c0801f5n@googlegroups.com>
In reply to#41228
The Dogelog Player is a Prolog system written 100%
in Prolog. It features a cross compiler and integrated
compiler. So far the Dogelog Player used a stream format
for its intermediate representation. We report some
results of a new AST format for the Dogelog Player.

Prolog systems should not have so much trouble dealing
with AST nodes, usually they have excellent sharing and
garbage collection. We changed the representation and
replaced the node atomic/1 by a new node const/1 that
can hold a ground term, allowing us a new analysis.

See also:

Dogelog Player: Using AST Compilation for Ground Analysis
https://twitter.com/dogelogch/status/1634625514076794880

Dogelog Player: Using AST Compilation for Ground Analysis
https://www.facebook.com/groups/dogelog

[toc] | [prev] | [next] | [standalone]


#41241

FromMostowski Collapse <bursejan@gmail.com>
Date2023-03-12 03:17 -0700
Message-ID<65a9303d-7ee2-4d53-96c8-dc217daecf49n@googlegroups.com>
In reply to#41240
We could complete our design of tasks and callbacks for
the Dogelog Player. There were some last minute changes
concerning the new data structure of task contexts. But we
are now in position to present our take and how for example
HTML animations could profit from it.

We wondered whether we can use tasks for multiple
HTML animations. Juggling with the DOM cursor is very
brittle and makes the code bloathed. Our new task contexts
came to the rescue, since we could realize a HTML animation
specific launchpad predicate.

See also:

Dogelog Player: Task Contexts for HTML Animations
https://twitter.com/dogelogch/status/1634726825229156352

Dogelog Player: Task Contexts for HTML Animations
https://www.facebook.com/groups/dogelog

Mostowski Collapse schrieb am Samstag, 11. März 2023 um 19:55:23 UTC+1:
> The Dogelog Player is a Prolog system written 100%
> in Prolog. It features a cross compiler and integrated 
> compiler. So far the Dogelog Player used a stream format 
> for its intermediate representation. We report some 
> results of a new AST format for the Dogelog Player. 
> 
> Prolog systems should not have so much trouble dealing 
> with AST nodes, usually they have excellent sharing and 
> garbage collection. We changed the representation and 
> replaced the node atomic/1 by a new node const/1 that 
> can hold a ground term, allowing us a new analysis. 
> 
> See also: 
> 
> Dogelog Player: Using AST Compilation for Ground Analysis 
> https://twitter.com/dogelogch/status/1634625514076794880 
> 
> Dogelog Player: Using AST Compilation for Ground Analysis 
> https://www.facebook.com/groups/dogelog

[toc] | [prev] | [next] | [standalone]


#41242

FromMostowski Collapse <bursejan@gmail.com>
Date2023-03-14 09:35 -0700
Message-ID<50345d5e-8994-4bca-a506-802975611590n@googlegroups.com>
In reply to#41241
This is a follow-up to our new AST based intermediate
representation compiler. The resulting instruction
stream exhibits more ground term sharing, also thanks
to a new instruction const/1. We started using it to
pre-process callbacks and tasks in Dogelog Player.

We then made an experiments with a new bind/3
predicate that adds an event listener to a DOM element
in the form of a clause thunk. The results are encouraging, 
the example event listeners is able to visualize a click
to start/stop multiple animations.

See also:

Thunks: A Way of Compiling Callbacks and Tasks
https://twitter.com/dogelogch/status/1635667779129942026

Thunks: A Way of Compiling Callbacks and Tasks
https://www.facebook.com/groups/dogelog

Mostowski Collapse schrieb am Sonntag, 12. März 2023 um 11:17:11 UTC+1:
> We could complete our design of tasks and callbacks for 
> the Dogelog Player. There were some last minute changes 
> concerning the new data structure of task contexts. But we 
> are now in position to present our take and how for example 
> HTML animations could profit from it. 
> 
> We wondered whether we can use tasks for multiple 
> HTML animations. Juggling with the DOM cursor is very 
> brittle and makes the code bloathed. Our new task contexts 
> came to the rescue, since we could realize a HTML animation 
> specific launchpad predicate. 
> 
> See also: 
> 
> Dogelog Player: Task Contexts for HTML Animations 
> https://twitter.com/dogelogch/status/1634726825229156352 
> 
> Dogelog Player: Task Contexts for HTML Animations 
> https://www.facebook.com/groups/dogelog
> Mostowski Collapse schrieb am Samstag, 11. März 2023 um 19:55:23 UTC+1: 
> > The Dogelog Player is a Prolog system written 100% 
> > in Prolog. It features a cross compiler and integrated 
> > compiler. So far the Dogelog Player used a stream format 
> > for its intermediate representation. We report some 
> > results of a new AST format for the Dogelog Player. 
> > 
> > Prolog systems should not have so much trouble dealing 
> > with AST nodes, usually they have excellent sharing and 
> > garbage collection. We changed the representation and 
> > replaced the node atomic/1 by a new node const/1 that 
> > can hold a ground term, allowing us a new analysis. 
> > 
> > See also: 
> > 
> > Dogelog Player: Using AST Compilation for Ground Analysis 
> > https://twitter.com/dogelogch/status/1634625514076794880 
> > 
> > Dogelog Player: Using AST Compilation for Ground Analysis 
> > https://www.facebook.com/groups/dogelog

[toc] | [prev] | [next] | [standalone]


#41224

FromEzimene nimi Teine nimi <yyyyyeeeee00000@writeme.com>
Date2023-03-06 03:17 -0800
Message-ID<97f07f97-0e61-4160-8c2e-9a5fc1967058n@googlegroups.com>
In reply to#41213
Come to: http://meetupplace4everyone.medianewsonline.com/a.php

and invite all Your friends too !!!!!!!!!!!!!!!



On Monday, February 27, 2023 at 9:46:44 PM UTC+2, Mostowski Collapse wrote:
> Dear All, 
> 
> We are happy to announce a new edition 
> of the Dogelog player: 
> 
> - library(markup): 
> To facilitate the generation of HTML texts inside 
> the browser, format/2 now accepts ~a for HTML attributes 
> and ~c for URL components. Further there are predicates 
> tag/[1,2] that switch the stream to raw mode 
> instead XML encoding, so that tags can be written. 
> 
> - New setup_once_cleanup/3: 
> Since a stop button and Ctrl-C key started to work, 
> we needed to think of a robust setup and cleanup method. 
> We noticed a Logtalk idiom in the wild which we extended 
> by signal shielding and exception chaining. Also there 
> is a novel catch/3 which matches the head of a chain. 
> 
> - New time_out/2: 
> There is also new predicate time_out/2 to abort a goal 
> after some delay. Implemented via the event loop of 
> JavaScript respectively Python. The predicate is not yet 
> perfect, for example it cannot prematurely abort a sleep/1, 
> but it can already abort where the Prolog interpreter 
> yields or auto-yields. 
> 
> Have Fun! 
> Jan Burse, 27.02.2023 
> http://www.xlog.ch/

[toc] | [prev] | [next] | [standalone]


#41245

FromMostowski Collapse <janburse@fastmail.fm>
Date2023-03-22 21:31 +0100
Message-ID<tvfoi4$2ein4$2@solani.org>
In reply to#41224
Dogelog Player is a Prolog system 100% written
in Prolog itself. Recently the browser integration
got a new feature in the form of a bind/3 predicate,
that allows registering event listeners. We used it
to provide a little propositional minimal logic explorer.

We search natural deduction proofs and render them
in the HTML page. The used Prolog DOM built-ins
are still experimental. Interestingly, thanks to
a programming language analogy, our proof search
is analytic and needs less iterative deepening.

See also:

Minlog Explorer in Dogelog Player
https://twitter.com/dogelogch/status/1638628045081784321

Minlog Explorer in Dogelog Player
https://www.facebook.com/groups/dogelog

[toc] | [prev] | [next] | [standalone]


#41248

FromMostowski Collapse <bursejan@gmail.com>
Date2023-03-25 09:30 -0700
Message-ID<3cbfc360-890d-433b-8d61-637bab7cda6fn@googlegroups.com>
In reply to#41245
Dogelog Player is a Prolog system 100% written in Prolog itself
that targets the JavaScript and the Python platform. On the
JavaScript platform the Prolog system can directly run in
the browser. There exists a DOM-API in the form of library(markup).

Related approaches were already pioneered by Tau-Prolog.
We recently developed a sequent system proof search in Prolog
for minimal logic, and used the library to display natural
deduction proofs. We report about an extenson to first order logic.

Gerhard Gentzens paper “Untersuchungen über das logische
Schließen” in 1934 is a real treasure when it comes to theorem
proving. In the classical case it highlights a number of optimizations,
which we could realize in a Prolog technology prover, that despite

the cut-elimination can extract and display natural
deduction proofs for classical first order logic.

See also:

Drinker Paradox in Dogelog Player
https://twitter.com/dogelogch/status/1639662487317389316

Drinker Paradox in Dogelog Player
https://www.facebook.com/groups/dogelog

Mostowski Collapse schrieb am Mittwoch, 22. März 2023 um 21:31:10 UTC+1:
> Dogelog Player is a Prolog system 100% written 
> in Prolog itself. Recently the browser integration 
> got a new feature in the form of a bind/3 predicate, 
> that allows registering event listeners. We used it 
> to provide a little propositional minimal logic explorer. 
> 
> We search natural deduction proofs and render them 
> in the HTML page. The used Prolog DOM built-ins 
> are still experimental. Interestingly, thanks to 
> a programming language analogy, our proof search 
> is analytic and needs less iterative deepening. 
> 
> See also: 
> 
> Minlog Explorer in Dogelog Player 
> https://twitter.com/dogelogch/status/1638628045081784321 
> 
> Minlog Explorer in Dogelog Player 
> https://www.facebook.com/groups/dogelog

[toc] | [prev] | [next] | [standalone]


#41254

FromMostowski Collapse <bursejan@gmail.com>
Date2023-04-01 16:11 -0700
Message-ID<3dac5cfe-026d-462b-855f-5a0de243a4b1n@googlegroups.com>
In reply to#41248
Dogelog Player is a Prolog system that is 100%
written in Prolog. To deserve the later label, it
would need to have predicates such as keysort/2,
bagof/3, etc.. also written in Prolog itself. 

We added according realizations to demonstrate
Chat-80 in Dogelog Player. As a little extra experiment
we transpiled Chat-80 into a single JavaScript file.
The result is a .mjs file which occupies around

400 kBytes and that loads in less than 100ms. One
can now admire Chat-80 in the browser, answering
questions of a toy world that existed 40 years ago.

See also:

Chat-80 in Dogelog Player
https://twitter.com/dogelogch/status/1642301753147129857

Chat-80 in Dogelog Player
https://www.facebook.com/groups/dogelog

[toc] | [prev] | [standalone]


Back to top | Article view | comp.lang.javascript


csiph-web