ICH Meeting

Internet Club Hengelo ..

Later we started Intranet Club Enschede, which was the birth of Icecrew.

Some explained website building, browsing the net, and tools to use.

Bigred and me build the network, and services which where used for demonstrations.
We also helped with solving network related problems.

Interview Radio Oost

Above was done with my little DIY streaming webcam.
(progressive push jpg cgi script, see other post)

I found some text/log about this day
(found a scanned item first, then i used namazu .. i love namazu, it found the original ascii text file.
(Dutch only)

Zaterdag 20 September 1997
--------------------------

's ochtens om 8 uur wakker gemaakt door Marco.
Ik was nog een beetje ziek, maar toch maar de 2 pc's ingepakt.
(die van Miko en die van mij)
Ook Marco z'n pc met cd-brander stond al in de auto.
Omdat het een kleine opel kadett was moesten we behoorlijk proppen.
Ondertussen had ik al overgegeven maar ik kon moeilijk thuisblijven want ik moest het netwerk voor die dag nog aan de praat zien te krijgen.
Na een 'bumpy ride' in de Kadett waren we eindelijk op de plaats van bestemming.

Hier aangekomen bleek dat waar we de pc's neer moesten zetten, toch verder van de ISDN-aansluiting was als verwacht.
Moest ik nu mijn pc (welke als proxy-server/firewall moest werken) nu in dit kantoortje staan en dan een coax naar de rest van de pc's of moesten we voor een lang ISDN kabel zorgen?
Omdat de Webcam aan mijn pc zat moesten we eigenlijk een langere ISDN kabel hebben.
(Het was ook nog een probleem met de ISDN aansluitingen omdat de beide aansluitingen die de PTT had aangelegd al bezet waren i.v.m. de telefoonaansluitingen)
Nadat we 1 van de aansluitingen eruit hadden getrokken bleek dat he helft van de telefoons in het gebouw niet meer werken.

Na bij de PTT kabel's te hebben gekocht (1x 10 meter en 1x 25 meter plus en tussenstukje 62 gulden nogwat)
Kon ik eindelijk beginnen met het opzetten van de proxy server.

(Ondertussen nog even iemand van een netwerk-kaart voorzien en andere problemen opgelost)
Ook de netwerk instellingen moesten marco en ik bij iedereen behalve Miko en mijzelf veranderen.
(Komt er ook nog 1 zeuren over Office enzo)

Na wat aanpassingen werkte de proxy-server en de webcam.
Ook de http-server op Miko's pc werkte tegelijkertijd.

We werden ook nog geinterviewed door radio-oost ofzo. Dit wilden we tegelijkertijd via de webcam op internet laten zien, maar dat kon niet want die radio-meneer moest
zijn microfoon via de telefoon laten werken om rechtstreeks in de uitzending te komen.
Dus de proxy-server maar even uitgezet en het interview als avi opgenomen.

Later nog een website gemaakt met wat foto's van die dag erop.

Voor de volgende keer moet ik wel zorgen dat ik ook Irc en Mail via de proxy kan laten werken.

Op de terugweg nog een paar keer problemen gehad met de auto, deze viel zomaar uit.
Na met een startkabel tegen de stuurkolom de auto weer aan 't starten te hebben gekregen.
Liet marco de startkabel maar tussen de deur van de auto, zo kon hij nog een paar keer de auto simpel starten door de startkabel (welke van onder de moterkap kwam) tegen de stuurkolom te houden.
Website with pictures, avi part probably contained the streaming webcam part

My first Linux installation

Roalt helped me to get my first Linux system running.

I don’t know if it was a floppy install or cd-roms.

I remember buying cdrom sets like these at our local computershop for later installs.

A year later my system was reinstalled with Slackware by Gmc.
Although Roalt helped me getting started with Linux, i’ve learned a lot from Gmc.

First time i saw an Unix system was at my friend Richard when i was 16-ish.
It was a commercial unix system he had on loan. Later he installed Minix or something simulair. This was all pre-linux

I used the Slackware distribution for a long time, but tried others also.

List of Linux distributions and other Unix variants i remember.

  • Suse
  • Redhat
  • Gentoo
  • Fedora
  • Centos/Rocky
  • Bsd
  • Aix
  • Solaris
  • Debian
  • Ubuntu
  • Mint
  • Damn Small Linux
  • Backtrack
  • Kali
  • OpenZaurus
  • Slax
  • Puppy Linux
  • Linux Router Project

Internet costs in 1995-1996

Internet using a 14k4 modem paying by the minute.
About 0,08 cents per minute.
(Without your phone costs!)
Thats 2456 hfl (dutch guilders) per month (24*7)!
That was using the landline, nobody could touch the regular phone.
I had to tape the phone down in our Student residence.

Later I paid for a personal ISDN line.
Much faster, but with my friend Aloha we made a kickdailer.
This would start the internet connection when needed.
Some rogue processes and bad scripting later ..
We got a bill for 1000+ guilders!
It made many short connections, and stopped.
We didn’t believe this bill we got, so we requested a specified bill on paper. When it arrived, it was a pile of paper 30cm high!
Thousands of connections to the provider. Damn

Back to the year 1996
There was not yet a usable google. Only a stanford.edu prototype.
I was using altavista as my main search engine

You can check some old sites using https://theoldnet.com/browser/
(this uses archive.org as backend)

14k4 simulated with browser

Above shows a simulated 14k4 modem. (just make a bandwidth profile using settings you want to test)
First site is my tunesearch, made with low bandwidth in mind.
Second is my current (2024) site .. about 6M for a page with many images.

Verbruiksinformatie
Verbruiksinformatie van fash
Specificatiepagina
Specificatie pagina van abonnee:      fash             31 Juli 1996

Startdatum huidig abonnement:         11 Oktober 1995
Abonnementsgeld per maand:            29,95
Aantal vrije inlog uren per maand:    8:00 uur
Extra verbruikskosten per uur:        3,75
Einddatum huidig abonnement:          Onbepaald




Aantal vrije inlog uren van Juli 96:               8:00 uur
Aantal gebruikte inlog uren Juli 96:               25:27 uur
Aantal resterende vrije inlog uren van Juli 96:    0:00 uur

Al in rekening gebracht
10 Juli 1996 12 Juni 1996 14 Mei 1996 12 April 1996
(Nog) niet afgerekend
Juli 1996
(Nog) Niet afgerekende bedragen Juli 1996
abonnement:  	hfl. Is al afgerekend 

Extra verbruik:


Let op:
Het overzicht is bijgewerkt tot 30/07/96.
Het gebruik na die datum is dus nog niet in het overzicht opgenomen.

Inlogsessies:


Datum 		Tijdstip 	Kosten	Aantal
		van		in	minuten
		inloggen	hfl.


30/07/96	17:56:00	0,88	14
29/07/96	22:57:00	0,19	3
24/07/96	22:23:00	2,69	43
24/07/96	22:13:00	0,56	9
23/07/96	17:57:00	7,31	117
22/07/96	21:28:00	4,75	76
22/07/96	19:34:00	1,25	20
22/07/96	19:30:00	0,31	5
22/07/96	18:31:00	1,25	20
21/07/96	21:45:00	1,06	17
20/07/96	19:41:00	0,13	2
20/07/96	19:30:00	0,06	1
19/07/96	23:39:00	0,31	5
19/07/96	22:58:00	1,94	31
18/07/96	22:11:00	0,19	3
18/07/96	21:50:00	0,44	7
17/07/96	22:04:00	2,13	34
17/07/96	17:59:00	2,63	42
16/07/96	18:51:00	0,19	3
16/07/96	18:33:00	0,19	3
15/07/96	19:00:00	3,44	55
15/07/96	18:33:00	1,50	24
14/07/96	01:51:00	0,75	12
13/07/96	22:48:00	7,63	122
13/07/96	01:16:00	10,00	160
13/07/96	01:13:00	0,13	2
13/07/96	00:59:00	0,88	14
12/07/96	21:43:00	12,25	196
12/07/96	17:41:00	0,19	3
11/07/96	18:20:00	0,25	66
10/07/96	22:25:00	0,00	43




In rekening gebracht
Datum verwerkt: 	     10 Juli 1996
Abonnement(en):		hfl. 29,95 
Extra verbruik:  	hfl. 10,55
Totaal gefaktureerd:    hfl. 40,50

Betreft abonnementen:

	
Maand		Bedrag	


Juli     	29,95



Betreft inlogsessies:


Datum 		Tijdstip 	Kosten	Aantal
		van		in 	minuten
		inloggen  	hfl.



Maand: Juli

09/07/96	23:05:00	0,00	2
09/07/96	22:52:00	0,00	3
09/07/96	22:24:00	0,00	2
09/07/96	22:19:00	0,00	4
09/07/96	21:54:00	0,00	24
08/07/96	22:19:00	0,00	53
08/07/96	20:47:00	0,00	30
07/07/96	18:26:00	0,00	55
06/07/96	23:30:00	0,00	74
06/07/96	23:13:00	0,00	4
06/07/96	00:37:00	0,00	3
05/07/96	23:51:00	0,00	15
05/07/96	18:57:00	0,00	14
05/07/96	18:43:00	0,00	15
03/07/96	21:46:00	0,00	6
03/07/96	21:37:00	0,00	3
03/07/96	21:31:00	0,00	2
02/07/96	21:43:00	0,00	15
02/07/96	20:26:00	0,00	46
01/07/96	17:09:00	0,00	5

Maand: Juni

28/06/96	19:52:00	1,13	18
28/06/96	19:46:00	0,13	2
27/06/96	19:49:00	1,38	22
27/06/96	19:20:00	0,38	6
26/06/96	19:08:00	0,13	2
26/06/96	18:52:00	0,19	3
24/06/96	20:41:00	0,31	5
24/06/96	20:35:00	0,38	6
23/06/96	00:23:00	2,13	34
22/06/96	15:11:00	0,50	8
21/06/96	21:29:00	0,13	2
21/06/96	19:05:00	0,56	9
21/06/96	18:22:00	0,63	10
20/06/96	17:37:00	0,13	2
20/06/96	17:15:00	0,19	3
18/06/96	22:24:00	2,25	56
18/06/96	22:13:00	0,00	12
18/06/96	21:18:00	0,00	55
16/06/96	23:15:00	0,00	3
16/06/96	21:01:00	0,00	113
15/06/96	18:50:00	0,00	11
15/06/96	18:05:00	0,00	35
13/06/96	22:57:00	0,00	9
13/06/96	22:00:00	0,00	3
13/06/96	21:14:00	0,00	29




In rekening gebracht
Datum verwerkt: 	     12 Juni 1996
Abonnement(en):		hfl. 29,95 
Extra verbruik:  	hfl. 23,07
Totaal gefaktureerd:    hfl. 53,02

Betreft abonnementen:

	
Maand		Bedrag	


Juni     	29,95



Betreft inlogsessies:


Datum 		Tijdstip 	Kosten	Aantal
		van		in 	minuten
		inloggen  	hfl.



Maand: Juni

05/06/96	23:31:00	0,00	2
05/06/96	23:02:00	0,00	7
03/06/96	23:27:00	0,00	4
03/06/96	22:02:00	0,00	70
03/06/96	21:50:00	0,00	56
03/06/96	21:57:00	0,00	3
03/06/96	21:54:00	0,00	3
02/06/96	23:52:00	0,00	24
02/06/96	21:41:00	0,00	11
01/06/96	00:00:00	0,00	10
31/05/96	23:17:00	2,75	43

Maand: Mei

31/05/96	23:03:00	0,75	12
29/05/96	23:17:00	0,19	3
28/05/96	23:34:00	0,13	2
28/05/96	22:43:00	0,81	13
27/05/96	22:22:00	6,13	98
27/05/96	22:08:00	0,44	7
24/05/96	21:46:00	0,75	12
24/05/96	21:14:00	1,56	25
24/05/96	21:05:00	0,56	9
24/05/96	19:14:00	4,25	68
23/05/96	21:29:00	0,56	9
23/05/96	20:39:00	3,19	51
22/05/96	23:35:00	1,00	67
19/05/96	22:46:00	0,00	83
19/05/96	21:59:00	0,00	7
19/05/96	21:47:00	0,00	3
16/05/96	19:44:00	0,00	3




In rekening gebracht
Datum verwerkt: 	     14 Mei 1996
Abonnement(en):		hfl. 29,95 
Extra verbruik:  	hfl. 14,01
Totaal gefaktureerd:    hfl. 43,96

Betreft abonnementen:

	
Maand		Bedrag	


Mei     	29,95



Betreft inlogsessies:


Datum 		Tijdstip 	Kosten	Aantal
		van		in 	minuten
		inloggen  	hfl.



Maand: Mei

11/05/96	20:04:00	0,00	32
11/05/96	00:12:00	0,00	40
10/05/96	22:43:00	0,00	55
08/05/96	22:21:00	0,00	30
07/05/96	20:46:00	0,00	9
04/05/96	22:14:00	0,00	28
04/05/96	21:53:00	0,00	21
04/05/96	21:29:00	0,00	20
02/05/96	23:26:00	0,00	98

Maand: April

30/04/96	00:31:00	7,38	118
29/04/96	23:15:00	4,75	76
25/04/96	21:59:00	1,88	71
23/04/96	23:09:00	0,00	15
22/04/96	23:08:00	0,00	3
20/04/96	09:21:00	0,00	51
19/04/96	18:28:00	0,00	66
18/04/96	23:44:00	0,00	2
17/04/96	22:59:00	0,00	169
15/04/96	21:09:00	0,00	3
13/04/96	01:44:00	0,00	4




In rekening gebracht
Datum verwerkt: 	     12 April 1996
Abonnement(en):		hfl. 180,67 
Extra verbruik:  	hfl. 41,27
Totaal gefaktureerd:    hfl. 221,94

Betreft abonnementen:

	
Maand		Bedrag	


November     	29,95
Oktober     	0,97
April     	29,95
Maart     	29,95
December     	29,95
Februari     	29,95
Januari     	29,95



Betreft inlogsessies:


Datum 		Tijdstip 	Kosten	Aantal
		van		in 	minuten
		inloggen  	hfl.



Maand: December

29/12/95	18:41:00	0,00	13
29/12/95	18:25:00	0,00	12
29/12/95	17:45:00	0,00	17

Maand: April

11/04/96	00:27:00	0,00	103
10/04/96	15:59:00	0,00	12
10/04/96	15:24:00	0,00	11

Maand: Maart

29/03/96	20:32:00	3,05	37
28/03/96	21:34:00	2,06	25
28/03/96	21:19:00	1,24	15
28/03/96	21:14:00	0,08	1
27/03/96	22:02:00	4,21	51
26/03/96	17:59:00	1,65	20
26/03/96	17:37:00	1,57	19
25/03/96	20:56:00	2,15	26
25/03/96	19:54:00	4,79	58
24/03/96	14:09:00	2,15	26
24/03/96	13:52:00	0,58	7
24/03/96	12:25:00	3,96	48
23/03/96	22:28:00	7,51	91
23/03/96	21:10:00	6,27	76
23/03/96	20:17:00	0,00	2
23/03/96	18:17:00	0,00	65
23/03/96	14:01:00	0,00	31
23/03/96	00:46:00	0,00	61
22/03/96	22:24:00	0,00	10
22/03/96	22:16:00	0,00	7
22/03/96	22:07:00	0,00	9
22/03/96	21:38:00	0,00	29
22/03/96	21:28:00	0,00	10
22/03/96	20:43:00	0,00	40
22/03/96	16:39:00	0,00	41
22/03/96	16:36:00	0,00	2
22/03/96	16:24:00	0,00	11
19/03/96	19:15:00	0,00	8
19/03/96	18:40:00	0,00	34

Maand: Februari

02/02/96	19:04:00	0,00	41

Maand: Januari

12/01/96	21:18:00	0,00	2
05/01/96	23:18:00	0,00	29

Hardware scroller

I came across a really old post from 1996.
It was from a good friend of mine Martin.

It was a while before this post, which was by Fido mail, that he came to our house with a great idea. (1993)

FidoNet is a worldwide computer network that is used for communication between bulletin board systems (BBSes). It uses a store-and-forward system to exchange private (email) and public (forum) messages between the BBSes in the network, as well as other files and protocols in some cases. (Dial-up!)


He took a record player and connected leds to it. Connecting this to a C64 and synching the speed of rotation and the output, he wanted to display text on this.

Probably this was the mistery tape i mentioned here:

So he did the most of the programming, i made a version of my own and added a sync bit to it. This enabled it to get the scolling text more “in place”

Some pictures from Sepp’s website

--- Terminate 3.00/Pro
 * Origin: Sepp Mail Development Department (2:283/334.13)

Ä Mail van en voor mij ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄBewarenÄ
Msg  :  781     [1-3089]                   Loc
From : Martin ********                     02-Apr-96  00:59:51  2:283/334.13
To   : Henri Aanstoot                                           2:283/334
Subj : Hardware scroller
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄSEPP.INTERESSANTÄ
* Written in: TUKKER=PROAT
Ha die Henri!
 MM>> Heb je de laatste KIJK al gezien??? Die eikels hebben onze 8-ledjes-
 MM>> hardware-scroller na zitten maken, alleen scrollt-ie bij hunnie niet
 MM>> in de vorm van een cirkel, maar hebben ze mijn ruitenwisserversie
 MM>> gebruikt... En het enige wat-ie doet is de tijd aangeven...
 HA> Bah, wat een na-apers.
Ja, vreselijk...

 HA> Maar die van ons was toch beter!
Inderdaad... kunnen ze nog wat van leren... :-)

 MM>> Btw is jouw prototype nog operationeel??? De mijne niet, omals de
 HA> Nee, ik wil heb eigenlijk opnieuw bouwen! (was ik al een tijdje van plan)
Met full-colour LEDs, 16 hoog???

 MM>> elastiekjes die ik heb gebruikt in de loop der tijd helemaal poreus
 MM>> We moeten maar weer eens iets compleet revolutionair nieuws uitvinden,
 MM>> ik heb nog wel een paar innovatieve ideejen...
 HA> Als je gaat kijken wat ze allemaal van mijn gejat hebben .......
Nou, vertel...

To the loo,

Martin ********

Old old pictures, our TV remote!

(Date not certain)

Below one of the two setups we made to control our TV. The kind of TV which was big, ungly and without remote.

This version used 3 strings.
One for moving a little wooden piece to the left, one for moving to the right and one for pressing a bunch of nails agains a touch/capacitive button. (We only used channel 1 till 4 i believe)

The other version used a string per channel.
A piece of metal, with at the end of it a little alumium-foil ball

3 strings remote
many strings remote with alumium-foil balls

VGA image on dos without borders.

This year i’ve been really into assembly on Intel x86 machines.
With EDK we made some demo’s and generally trying to find the limits of the machines we had.

Funny story, edk made a program which changed the palette every scanline (if memory serves me right), while running the program and looking at the screen the colors faded to grayscale. (Something with run-away tables) We look at eachother and said: We must have been using up all colors, we need to refill the graphics card.

I previously made a copperbar alike thingy on a hercules system. (Have not seen them before on a pc back then )
But with below program, i could display pictures which removed the borders.

Below a nsfw video example (pass protected), but a simplified example in pictures below that.

Restricted Content
To view this protected content, enter the password below:

Test image i’ve used on a 320×200 screen resolution

    name split_screen
.286

parm_vert equ 0

data segment
intmsk      db ?
oldvidtab   db 18h dup (?)      ;actuele video-parameters
newvidtab   label byte
            ;HORIZONTAAL
            db 0
            db 12
            db 12
            db 0
            ;VERTIKAAL
            db 0
            db 5
            db 5
            db 0;-40
            ;
            db 0
            db 0
            db 0
            db 0
            db 0
            db 0
            db 0
            db 0
            db 0
            db 0
            db 0
            ;       REGISTER 13H (OFFSET)
            db 0
            ;
            db 18h dup (0)
data ends

stack segment stack
    dw 128 dup (?)
stack ends

code    segment
        assume cs:code,ds:data
cols label byte
set_scrparms:
    mov dx,3d4h
    mov al,11h
    out dx,al
    inc dx
    in al,dx
    and al,7fh  ;clear bit 7: enable writes to vga reg 0..7
    out dx,al
    dec dx
    mov al,13h      ;offset register
    out dx,al
    inc dx
    in al,dx        ;get actual value
    add al,4
    out dx,al
    ret
;
; RE-INIT DISPLAY ROUTINE
;
get_oldvidparms:
    mov dx,3d4h
    mov cx,18h  ;18h registers
    mov di,offset oldvidtab
    mov bl,0    ;begin met register 0
govp1:
    mov al,bl   ;register index
    out dx,al
    inc dx      ;3d5
    in al,dx    ;get actual register content
    dec dx
    mov [di],al
    inc di
    inc bl      ;volgend register
    loop govp1

    mov si,offset oldvidtab
    mov di,offset newvidtab
    mov cx,18h
donewparms:
    mov al,[si]
    add al,[di]
    mov [di],al
    inc si
    inc di
    loop donewparms
    ret
set_newvidparms:
    mov dx,3d4h
    mov cx,18h  ;18h registers
    mov si,offset newvidtab
    mov bl,0    ;begin met register 0
snvp1:
    mov al,bl   ;register index
    out dx,al
    inc dx      ;3d5
    mov al,[si]
    inc si
    out dx,al   ;set register value
    dec dx
    inc bl      ;volgend register
    loop snvp1
    ret

;
; MAIN ENTRY POINT
;
init:
    mov ax,data
    mov ds,ax
    in al,21h
    mov intmsk,al
    cli
    mov al,11111101b
    out 21h,al
    sti
    mov ax,13h
    int 10h
;extend video-memory to 256kb or more
    mov dx,3ceh
    mov al,06h
    out dx,al
    inc dx
    in al,dx
    and al,0f3h
    out dx,al
    ;
    mov ax,0a000h
    mov es,ax
    call set_scrparms
    call get_oldvidparms
    call set_newvidparms
    mov dx,3cch
    in al,dx
    and al,03fh
    mov ah,parm_vert
    ror ah,2
    or al,ah
    mov dx,3c2h
    out dx,al
;
    ;
    push ds
    mov ax,5000h
    mov ds,ax
;
; pallet
;

setpal:
    mov dx,3c8h
    xor al,al
    out dx,al
    inc dx
    mov cx,256*3
    mov si,100h
    cld
    rep outsb
;disp picture routine
    mov ax,6000h
    mov ds,ax
    mov si,0
    mov di,0
    mov ax,0
    mov cx,352*8
    cld
    rep stosw
    mov si,di
    mov cx,8
    cld
    rep stosw
    mov bp,170
    mov si,di
 hiero:
    mov cx,320
    cld
    rep movsb
    mov ax,0
    mov cx,16
    cld
    rep stosw
    mov si,di
    dec bp
    jnz hiero


    xor si,si
    xor di,di
    mov ax,0b000h
    mov es,ax
    mov ax,07000h
    mov ds,ax
    mov cx,3000
    cld
    mov ax,0
    rep stosw
    mov ax,0a000h
    mov es,ax

    mov ax,6000h
    mov ds,ax
    mov di,0
    mov si,di
rhiero:
    push ax
    mov ah,8
    int 21h
    pop ax
    std
    mov cx,-1
    rep movsb


    xor si,si
    xor di,di
    mov ax,0b000h
    mov es,ax
    mov ax,07000h
    mov ds,ax
    mov cx,3000
    cld
    rep movsw
    mov ax,0a000h
    mov es,ax
    pop ds
    ;
mloop:
    mov dx,3dah
wtv1:
    in al,dx
    test al,8
    jnz wtv1
wtv2:
    in al,dx
    test al,8
    jz  wtv2
    mov ah,1
    int 16h
    jz mloop
    xor ah,ah
    int 16h
exit:
    mov ax,3
    int 10h
    cli
    mov al,intmsk
    out 21h,al
    sti
    mov ax,4c00h
    int 21h

code ends
end init

Sakura demo

I think i started programming in assembly on PC around 1992. I learned a lot from my friend Edk. Who was a assembly wizard just like Sepp. Reverse engineering routines, writing emulators etc.

We made several demo’s like the one below. It must have been around 1994.

Dos emulator running our demo from 1994

Just after this one, we started a demo which could run from a 5.25″ boot disk. No dos operating system.
When starting your pc, booting from a floppy you would get a starfield, with some text (from a bootsector) ,after that it would load the next sectors, wich contained the rest of the demo.
Due to directly programming soundcard and graphics card, this was hard to pull off on different kinds of hardware.

Demo gfx

Example of assembly code for a effect.

    NAME plasma

.model small
.386
.data
colshades   db +001h, 001h,+001h
            db -001h,-001h,-000h
            db +000h,-000h,-001h
            db -000h,-000h,+000h
rgb_cols    db 256*3 dup (?)
cosptr dw 0
sinptr dw 30

.code
demo        proc near

show proc near
    xor di,di
    mov bp,200
show1:
    mov cx,320
    mov si,0
    mov dx,0
show0:
;    push ds
;    mov ax,7000h
;    mov ds,ax
;    lodsb
;    pop ds
    call getsincos
    add cosptr,1
    stosb
    loop show0
;    add dx,1
    add sinptr,1
    dec bp
    jnz show1
    ret
show endp

effect proc near
;   add cosptr,1
;    add sinptr,0
    ret
effect endp

getsincos proc near
    push di
    push ds
    mov si,cosptr
    mov di,sinptr
    mov ax,7000h
    mov ds,ax
    lodsb           ;get cos value
    cmp si,320      ;einde costab?
    jb cosok
    xor si,si
    lodsb
cosok:
    mov ah,al
    xchg si,di
    lodsb           ;get cos value
    cmp si,320      ;einde costab?
    jb sinok
    xor si,si
    lodsb
sinok:
    xchg si,di
    pop ds
    mov cosptr,si
    mov sinptr,di

    mov dx,0
    mov dl,al
    add dl,ah
    adc dh,0
    shr dx,1
    mov al,dl
;    xor al,ah
;    add al,ah
    pop di
    ret
getsincos endp

setcols proc near
    push    es
    push    ds
    pop     es
    mov     di,offset rgb_cols
    mov     si,offset colshades
    mov     dl,0    ;start with black
    mov     bh,0
    mov     bl,0
    mov     bp,4
set_rgball:
    mov     cx,64-1
set_rgb:
    mov     al,dl
    stosb
    mov     al,bh
    stosb
    mov     al,bl
    stosb
    mov     al,[si]
    add     dl,al
    mov     al,[si+1]
    add     bh,al
    mov     al,[si+2]
    add     bl,al
    loop    set_rgb
    add     si,3
    dec     bp
    jnz     set_rgball
    pop     es
    ret
setcols endp

setrgb proc near
    mov dx,3c8h
    xor al,al       ;start with colour 00h
    out dx,al
    inc dx
    mov si,offset rgb_cols
    mov cx,256*3
    rep outsb       ;set 256 RGB values
    ret
setrgb endp

wvtr proc near
    mov dx,3dah
wtv:
    in al,dx
    test al,8
    jz wtv
    ret
wvtr endp

start:
    cld
    mov ax,@data
    mov ds,ax
    mov ax,0a000h
    mov es,ax
    mov ax,13h
    int 10h         ;screen 320x200 256 colours
    call setcols
    call setrgb
    call show
    mov al,11111101b
    out 21h,al      ;disable int
mloop:
    call wvtr
;    call show
    call effect
    mov ah,1
    int 16h
    jz mloop
    xor ah,ah
    int 16h
exit:
    xor al,al
    out 21h,al      ;enable int
    mov ax,3
    int 10h         ;screen  80x25 text
    mov ax,4c00h
    int 21h         ;back to DOS
demo        endp

end start

"If something is worth doing, it's worth overdoing."