Seek will not change the address.
---------- Original Message ----------- From: Doriano Blengino <doriano.bleng...@fastwebnet.it> To: nand...@nothingsimple.com, mailing list for gambas users <gambas-user@lists.sourceforge.net> Sent: Wed, 07 Apr 2010 11:06:42 +0200 Subject: Re: [Gambas-user] Parallel Port - Illegal Seek - > nando ha scritto: > > Using SEEK is not correct. > > If you think of the parallel port as a file, you cannot seek. > > It doesn't make sense. > > You can only read and write. > > What are you trying to accomplish ? > > -Fernando > > > He is trying to do low level access to the parallel port, which has 3 > hardware addresses. > In that respect, seek() would make sense to select which IO address to > read from/write to. > Whether this works or not, depends on how the kernel driver interprets > the seeks, but the following listing makes it clear that somewhere > (other OSes?) this behavior works. > The error could also arise from other problems: permissions, missing > modules, wrong major/minor numbers and so on... > > Regards, > Doriano > > > > > > > ---------- Original Message ----------- > > From: Bjorn Macintosh <bjorn.macint...@gmail.com> > > To: gambas-user@lists.sourceforge.net > > Sent: Fri, 2 Apr 2010 21:09:58 +1300 > > Subject: [Gambas-user] Parallel Port - Illegal Seek - > > > > > >> Hi All, > >> > >> I am writing a parallel port interface, however I am struggling with how to > >> write to the parallel port. Below I have included the code that I have > >> used. Following that I have included the BASIC code that I am > >> bastardizing. > >> > >> My Gambas version is Gambas2.13 > >> I am running Linux Mint 8 > >> I do have a parallel port on my PC. It is '0378' - '037a' and '0778' - > >> '077a' > >> The error code I am getting is "System error. illegal seek" > >> > >> Thanks in advance for any help anyone can give. > >> ---------------------------------------------------------------------GAMBAS2 > >> CODE FOLLOWS------------------------------------------------------ > >> ' Gambas module file > >> PUBLIC SUB Main() > >> > >> DIM N AS Integer > >> DIM pin AS Integer > >> DIM pinout AS Integer[] = [0, 0, 0, 0, 0, 0, 0, 0] > >> DIM pump AS Integer > >> DIM Ptime AS Integer > >> DIM Clock AS Integer > >> DIM UClock AS Integer > >> DIM DClock AS Integer > >> DIM commit AS Integer > >> DIM poweron AS Integer > >> DIM switch AS Integer > >> DIM gate AS File > >> DIM base0, base1, base2 AS Integer > >> > >> base0 = 0 > >> base1 = 1 > >> base2 = 2 > >> poweron = 64 > >> commit = 144 > >> switch = 17 > >> UClock = 130 > >> DClock = 128 > >> gate = OPEN "/dev/parport0" FOR READ WRITE > >> SEEK #gate, base0 > >> WRITE #gate, poweron > >> FOR Ptime = 1 TO 2000 STEP 1 > >> NEXT > >> > >> SEEK #gate, base2 > >> WRITE #gate, switch > >> > >> GOTO START > >> CommitChanges: > >> FOR N = 0 TO 7 STEP 1 > >> pump = CInt(1000000 & pinout[Fix(N)]) > >> Clock = CInt(1000001 & pinout[Fix(N)]) > >> SEEK #gate, base0 > >> WRITE #gate, pump > >> FOR Ptime = 1 TO 2000 STEP 1 > >> NEXT > >> SEEK #gate, base0 > >> WRITE #gate, Clock > >> FOR Ptime = 1 TO 2000 STEP 1 > >> NEXT > >> SEEK #gate, base0 > >> WRITE #gate, pump > >> NEXT > >> FOR Ptime = 1 TO 2000 STEP 1 > >> NEXT > >> > >> FOR N = 1 TO 16 STEP 1 > >> SEEK #gate, base0 > >> WRITE #gate, UClock > >> FOR Ptime = 1 TO 2000 STEP 1 > >> NEXT > >> SEEK #gate, base0 > >> WRITE #gate, DClock > >> NEXT > >> FOR Ptime = 1 TO 2000 STEP 1 > >> NEXT > >> SEEK #gate, base0 > >> WRITE #gate, commit > >> FOR Ptime = 1 TO 2000 STEP 1 > >> NEXT > >> SEEK #gate, base0 > >> WRITE #gate, poweron > >> GOTO PrintPinout > >> > >> PrintPinout: > >> FOR N = 0 TO 7 STEP 1 > >> PRINT pinout[Fix(N)] > >> NEXT > >> GOTO START > >> > >> PinSelectFail: > >> PRINT "You have selected a pin that does not exist, careful as this may > >> cause a divide by 0 and end the universe, Select between pin 0 and pin 7" > >> GOTO START > >> > >> START: > >> PRINT "What input do you want to toggle? (pins 0 -> 7 are outputs, Pin 8 > >> is the activation sequence)" > >> INPUT pin > >> IF pin < 0 OR pin > 8 THEN > >> GOTO PinSelectFail > >> ELSE IF pin = 8 THEN > >> GOTO CommitChanges > >> ELSE IF pinout[Fix(pin)] = 0 THEN > >> pinout[Fix(pin)] = 1 > >> ELSE IF pinout[Fix(pin)] = 1 THEN > >> pinout[Fix(pin)] = 0 > >> ENDIF > >> GOTO PrintPinout > >> END > >> ---------------------------------------------------------------------Gambas2 > >> END------------------------------------------------------------------------ > >> > >> ---------------------------------------------------------------------BASIC > >> CODE FOLLOWS------------------------------------------------------ > >> > >> BASE0=&H378 > >> > >> 'SWITCH POWER AND OUTPUTS ON > >> OUT BASE0, &H80 > >> OUT BASE0 + 2, 11 > >> > >> 'DEFINE ALL DIGITAL OUTPUTS [OUT(N)] AS BEING OFF (0) > >> FOR N = 0 TO 7 > >> DOUT(N) = 0 > >> NEXT N > >> DOUT=0 > >> > >> START: > >> INPUT "WHICH DIGITAL OUTPUT DO YOU WANT TO TOGGLE (0 TO 7)...."; N > >> IF N < 0 OR N > 7 THEN GOTO START > >> N = FIX(N) > >> DOUT9N0=ABS(NOT (-DOUT(N))) ' THIS LINE TOGGLES THE OUTPUT > >> > >> 'CREATE COMPLETE BYTE FOR IC3 CALLED DOUT > >> FOR N = 0 TO 7 > >> IF DOUT(N) = 0 THEN > >> DOUT = DOUT AND NOT (2^N) > >> ELSE > >> DOUT = DOUT OR 2^N > >> ENDIF > >> NEXT N > >> > >> 'SEND 8 CLOCK PULSES AND DIGITAL OUT DATA (ALL ZERO'S) > >> FOR BIT = 1 TO 8 > >> B = 8 - BIT > >> BYTE = ((DOUT AND 2^B) / 2^B) OR &H80 > >> OUT BASE0, BYTE > >> OUT BASE0, BYTE OR 2 > >> OUT BASE0 BYTE > >> NEXT BIT > >> > >> 'SEND ANOTHER 16 CLOCK PULSES TO SHIFT THE DATA INTO IC3 > >> FOR BIT = 9 TO 24 > >> OUT BASE0, &H82 > >> OUT BASE0, &H80 > >> NEXT BIT > >> > >> 'LOAD IC3 > >> OUT BASE0, &H90 > >> OUT BASE0, &h80] > >> > >> ---------------------------------------------------------------------BASIC > >> END------------------------------------------------------------------------ > >> > >> Bjorn Macintosh > >> ------------------------------------------------------------------------------ > >> > > ------------------------------------------------------------------------------ > Download Intel® Parallel Studio Eval > Try the new software tools for yourself. Speed compiling, find bugs > proactively, and fine-tune applications for parallel performance. > See why Intel Parallel Studio got high marks during beta. > http://p.sf.net/sfu/intel-sw-dev > _______________________________________________ > Gambas-user mailing list > Gambas-user@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/gambas-user ------- End of Original Message ------- ------------------------------------------------------------------------------ Download Intel® Parallel Studio Eval Try the new software tools for yourself. Speed compiling, find bugs proactively, and fine-tune applications for parallel performance. See why Intel Parallel Studio got high marks during beta. http://p.sf.net/sfu/intel-sw-dev _______________________________________________ Gambas-user mailing list Gambas-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/gambas-user