This is a binary release of LSEASON7 V0.6, a linux device driver
for the SEASON7 videocrypt interface.

Now some disclaimers:
I will not take any responsibility for any damage the programs 
lseason.o and lscontrol could do to your hardware. Use it at your own risk!
The programs and the file 'skycode' do not contain any copyrighted material
by BSB (see below).
The decoder part has been reverse engineered from the public domain
program season9.exe and season22.exe.
The program may be freely used for educational purposes, except where 
subscriptions for the decoded programs are available.

The device driver is implemented as a loadable module: lseason.o
To use it, create the character device /dev/lseason with major
device number 30 and the minor device number corresponding to the
serial port you use.
The DOS com-port com1 would correspond to 0, com2 to 1 ...

For com2 use:       mknod /dev/lseason c 30 1

Install lseason.o:  insmod lseason.o

Start lscontrol:    lscontrol

The module is compiled for the Linux kernel 1.88. Try the new insmod
(part of modules-1.1.85) with option -f to install it on other kernels.
I think the irq_handler prototype change sometime between 1.70 and 1.82.
So it might not work with older kernels.
You can change the major device number with: insmod lseason.o major=31

If everything goes well (you probably have to remove and reinsert your 
interface card), you should get a display of the total number of
interrupts (reads, writes and decoder resets), the resets issued by the
decoder, the total number of bytes read by the driver and the current
send_delay (increase and decrease it with '+' and '-').
'>' and '<' increase and decrease the delay after RESET.
The display of on screen messages can be toggled with 'm'.
'1' and '2' toggle between 1/10th and 1 second update intervals to save 
CPU-time. You can save even more CPU-time by suspending lscontrol with ^Z. 
The device driver will keep running until /dev/lseason is closed 
(e.g. when lscontrol terminates).
'd' toggles debugging messages, 'n' the display of nanoinstructions.

You will notice that the program does not decode all the time.
This is because the file 'skycode' does not include the copyrighted
codepage of the original sky card but only the first 256 bytes (of the 
first page?).
Just change the last 4096 bytes to the right values and press 'l' when 
running lscontrol. This will load skycode into the device driver.
You can also create a complete lseason.o with keys by completing
keys0.cc and linking it with lseason_wk.o like this:
  g++ -c keys0.cc 
  ld -r -o lseason.o lseason_wk.o keys0.o

(It's the same code table as in season22.exe but the positions are not xored
with 0xfff.)

I tested the program with a 486DX/33 and a 486DX2/66 and it worked
without problems.
You can compile, use X11, play DOOM etc.  without noticing lseason
or missing one second of SKY.

It is now possible to run two lscontrols on different ports at the 
same time (for now only if they use different interrupts, e.g. COM1&COM2
but not COM2&COM4).
You have to create another device node, e.g. mknod /dev/lseason0 c 30 0,
and start another lscontrol with the argument /dev/lseason0.
I tried it with my own season interface connected to COM2 and my brothers
interface connected to COM1 over a 10m cable and they didn't seem to 
disturb each other.  

Please post your own experiences with lseason to alt.satellite.tv.europe.
I am especially interested in how well it performs with slow 386 computers.

02/07/95


