new@udel.edu (Darren New) (01/12/90)
I understand that there are multi-port serial boards out there. I also understand that the device-level interfaces are essentially the same as serial.device (mod Open parameters). My question is this: Do the current boards support 'AUX:' style devices? That is, can I Open("AUX:1", MODE_???) and Open("AUX:2", MODE_???) and read/write these (in a blocking way, of course)? (Or whatever the device names may be.) On a related question: When a user types a control-C, control-D, control-E or control-F on the AUX: connection, does the device-reader get Signal bits set? If so, exactly how does the device driver determine which task gets its bit(s) set? Also, how does CON: determine which Task gets the bits set? (This is for a BBS, in case you wonder) Thanks in advance! -- Darren
lphillips@lpami.wimsey.bc.ca (Larry Phillips) (01/13/90)
In <14137@grebyn.com>, ckp@grebyn.com (Checkpoint Technologies) writes: >In article <7970@nigel.udel.EDU> new@udel.edu (Darren New) writes: >>I understand that there are multi-port serial boards out there. >>I also understand that the device-level interfaces are essentially >>the same as serial.device (mod Open parameters). My question is this: >>Do the current boards support 'AUX:' style devices? That is, >>can I Open("AUX:1", MODE_???) and Open("AUX:2", MODE_???) and >>read/write these (in a blocking way, of course)? (Or whatever the >>device names may be.) >> > Due to it's limited usefulness, we (Checkpoint Technologies) >decided not to include an AUX:-style handler with the Serial Solution >board, but we do supply a utility which can make one. The ZapPort >utility on the driver disk automatically patches executable programs to >use our serial driver. This works just fine on aux-handler as well, so >you can make a duplcicate for the Serial Solution card. While I am glad to see that the aux-handler can be patched, I am a little shocked that you see AUX: as having limited usefulness. Indeed, for some folks, it is far more useful than SER:, allowing as it does, an easy way to use a shell or an application normally run using stdin/stdout over a serial port. Does your ZapPort utility patch executables in a generic manner? The reason I ask is that the aux-handler I use is not the one supplied by CBM, but has been improved significantly. -larry -- "Cavett Emptor - Let the talk show host beware!" - Evan Marcus +-----------------------------------------------------------------------+ | // Larry Phillips | | \X/ lphillips@lpami.wimsey.bc.ca -or- uunet!van-bc!lpami!lphillips | | COMPUSERVE: 76703,4322 -or- 76703.4322@compuserve.com | +-----------------------------------------------------------------------+
ckp@grebyn.com (Checkpoint Technologies) (01/14/90)
In article <7970@nigel.udel.EDU> new@udel.edu (Darren New) writes: >I understand that there are multi-port serial boards out there. >I also understand that the device-level interfaces are essentially >the same as serial.device (mod Open parameters). My question is this: >Do the current boards support 'AUX:' style devices? That is, >can I Open("AUX:1", MODE_???) and Open("AUX:2", MODE_???) and >read/write these (in a blocking way, of course)? (Or whatever the >device names may be.) > Due to it's limited usefulness, we (Checkpoint Technologies) decided not to include an AUX:-style handler with the Serial Solution board, but we do supply a utility which can make one. The ZapPort utility on the driver disk automatically patches executable programs to use our serial driver. This works just fine on aux-handler as well, so you can make a duplcicate for the Serial Solution card.
cmcmanis@stpeter.Sun.COM (Chuck McManis) (01/16/90)
In article <14137@grebyn.com> (Checkpoint Technologies) writes: > Due to it's limited usefulness, we (Checkpoint Technologies) >decided not to include an AUX:-style handler with the Serial Solution >board, but we do supply a utility which can make one. The ZapPort >utility on the driver disk automatically patches executable programs to >use our serial driver. This works just fine on aux-handler as well, so >you can make a duplcicate for the Serial Solution card. AAAAAAAAAAAAAAAAARRRRRRRRRRRRRRRRRRRRRRRRRGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHH! This reminds me of CP/M-80 where theoretically "professional" software came with instructions that said "Patch the executable in the usual way to customize it to your system." I'm not sure who I think deserves the blame for such a travesty, CheckPoint for making an executable zapper or Commodore for not following through on addressing this problem. (multiple serial ports) The port handler isn't even in ROM for heaven sake so something certainly could have been done. God what non-technoweenie in their right mind would buy a product that encouraged them to damage the software they already own! --Chuck McManis uucp: {anywhere}!sun!cmcmanis BIX: cmcmanis ARPAnet: cmcmanis@Eng.Sun.COM These opinions are my own and no one elses, but you knew that didn't you. "If it didn't have bones in it, it wouldn't be crunchy now would it?!"
perry@madnix.UUCP (Perry Kivolowitz) (01/16/90)
>In <14137@grebyn.com>, ckp@grebyn.com (Checkpoint Technologies) writes: >>In article <7970@nigel.udel.EDU> new@udel.edu (Darren New) writes: >>>the same as serial.device (mod Open parameters). My question is this: >>>Do the current boards support 'AUX:' style devices? That is, >>>can I Open("AUX:1", MODE_???) and Open("AUX:2", MODE_???) and >>>read/write these (in a blocking way, of course)? (Or whatever the >>> >> Due to it's limited usefulness, we (Checkpoint Technologies) >>decided not to include an AUX:-style handler with the Serial Solution Due to its enormous usefulness to those who need it, we (ASDG) provide both a ser: and aux: clone with the Dual Serial Board. These handlers both support complete command line serial parameter specification, like so (using Darren's example): Open("Joey:9600" , MODE_OLDFILE) or just as easily Open("Joey:19200/8N1/32000" , MODE_OLDFILE) etc. We also support two levels of defaults for filling in the serial parameters which were not specified on the command line. pk -- Perry Kivolowitz, ASDG Inc. ``We look for things. Things that make us go.'' UUCP: {harvard|rutgers|ucbvax}!uwvax!astroatc!nicmad!madnix!perry CIS: 76004,1765 PLINK: pk-asdg
peter@sugar.hackercorp.com (Peter da Silva) (01/16/90)
> Commodore for not following through on addressing this > problem. (multiple serial ports) The port handler isn't even in ROM > for heaven sake so something certainly could have been done. What should they have done? The serial port is in a documented name space. It's up to applications developers to provide a way of specifying the port number and device name to their program. Hardcoding ("serial.device",0) is as bad as a UNIX program hardcoding ("/dev/acu") or ("UNIX:0"). I've seen people go around and around on this, and I'm still missing the point. Devices have names. Are the names aesthetically displeasing or something? Whatever *new* scheme Commodore came up with would have no better chance of being supported by developers than the *old* scheme. -- Peter "Have you hugged your wolf today" da Silva <peter@sugar.hackercorp.com> `-_-' 'U` "I haven't lost my mind, it's backed up on tape somewhere"
ckp@grebyn.com (Checkpoint Technologies) (01/16/90)
In article <130261@sun.Eng.Sun.COM> cmcmanis@sun.UUCP (Chuck McManis) writes: >In article <14137@grebyn.com> (Checkpoint Technologies) writes: >>board, but we do supply a utility which can make one. The ZapPort >>utility on the driver disk automatically patches executable programs to > >God what non-technoweenie in their right mind would buy a product that >encouraged them to damage the software they already own! In fact we don't encourage people to zap their executables; ZapPort was rather a last minute addition. Instead we reccommend that a user use the NewPort utility; this leaves the executable untouched but creates a separate loader program which will load in the application and alter it in RAM. (It has the interesting side-benefit that your pointer is available more quickly after double-clicking the app in Workbench, which only has to load a small file rather than the whole application.) However, this will only work with WorkBench- or CLI-launched applications, not with handlers or drivers.
new@udel.edu (Darren New) (01/17/90)
O.K., great! Next question: Can anybody tell me an easy way to do an asynchronous, abortable read of a device from AREXX? Basically, I want to read the serial port with a timeout. I have one quite kludgy method: task one reads lines and posts them to a port. Task two delays and sends "TICK" to the same port every ten seconds. Task three reads the port and eventually times out. It works, but is really ugly. Also, can anybody tell me how to automatically change the serial-port speed depending on the connect-speed without losing the carrier? I.e., my Hayes will send "connect 1200" at 300 baud and then switch. Can any AUX: driver be switched when I get this line to 1200 baud without a close and reopen, which probably drops DTR? Alternately, can anybody direct me to the recent "rexserdev" programs/libs/etc mentioned recently here or in comp.lang.rexx? I would just as soon do this whole mess in ARexx w/o resorting to C hosts, but a pre-written host (freely distributable) would be acceptable, possibly better. Again, thanks in advance for any info anyone supplies! -- Darren
peter@sugar.hackercorp.com (Peter da Silva) (01/17/90)
> In fact we don't encourage people to zap their > executables; ZapPort was rather a last minute addition. Instead we > reccommend that a user use the NewPort utility; this leaves the > executable untouched but creates a separate loader program which will > load in the application and alter it in RAM. Since you're working on a copy anyway (I hope) zapping it on disk or in RAM isn't that different. Exactly what does ZapPort do? Change "serial.device" to "checkp.device"? Try to find the unit # and change it? -- Peter "Have you hugged your wolf today" da Silva <peter@sugar.hackercorp.com> `-_-' 'U` "I haven't lost my mind, it's backed up on tape somewhere"
ckp@grebyn.com (Checkpoint Technologies) (01/17/90)
In article <8438@nigel.udel.EDU> new@udel.edu (Darren New) writes: >O.K., great! Next question: >Can anybody tell me an easy way to do an asynchronous, abortable read >of a device from AREXX? Basically, I want to read the serial port >with a timeout. >Also, can anybody tell me how to >automatically change the serial-port speed depending on the connect-speed >without losing the carrier? I.e., my Hayes will send "connect 1200" at >300 baud and then switch. The things you speak of are generally in the domain of serial.device, which is perfectly capable of doing what you want (with the help of timer.device). You can't change the baud rate of an AUX: port once it's opened, you can only close it and re-open it, but this will drop DTR on the modem and (probably) make it hang up. I've seen mention of rexxserdev, but I don't know what it includes. It may be your best bet.
cmcmanis@stpeter.Sun.COM (Chuck McManis) (01/18/90)
In article <4943@sugar.hackercorp.com> (Peter da Silva) writes: >What should they have done? The serial port is in a documented name space. >It's up to applications developers to provide a way of specifying the port >number and device name to their program. Hardcoding ("serial.device",0) is as >bad as a UNIX program hardcoding ("/dev/acu") or ("UNIX:0"). Why do people use the serial.device and not SER: ? The reason is fairly simple, because the handler doesn't do what most people want to do with a serial device, which is usually things like : set_baud_rate() set_frame_format() set_parity() query_baud_rate() query_frame_format() query_parity() check_for_character() wait_for_character() send_character() send_buffer() send_break() query_status() These are the kinds of operations that any application might want to do with the serial port, but the handler doesn't let them. Rather the handler will just let them read it and write it. (buffered no less) >I've seen people go around and around on this, and I'm still missing the >point. Devices have names. Are the names aesthetically displeasing or >something? Whatever *new* scheme Commodore came up with would have no better >chance of being supported by developers than the *old* scheme. You are absolutely correct, devices do have names but no one is arguing that file requesters should put up "trackdisk.device", "harddisk.device" as selections. But you may be overly cynical in believing that a new scheme would not have a better chance of being supported. I think this is only true if the new system didn't offer any benefits over and above old scheme. And yet the benefits are clearly sufficicent to merit the change. Consider what we are trying to accomplish, and the obstacles thereto. The handler for the serial device sucks, granted, so lets fix it so that people will use it instead. No more DoIO's to the serial device and training new kids on the block that the loop : for (;;) { Waitfor_1_char(); Display_1_char(); } which has the two disadvantages that these are custom routines built out of calls to DoIO/SendIO/etc, and that they will be slower than molasses in winter because the massive overhead of the various system calls for each character. Instead have the handler read and write characters efficiently to and from the device for you, which it can because it is a separate task. Then use a loop like : for (;;) { l = Read(ser, &buf, 256); /* Return all characters in buf */ Write(con, &buf, l); /* Write them to console */ } which will have acceptable performance and uses prebuilt routines. That will get people to use the _handler_ instead of the actual device (because anyone who has written massive serial code with DoIO's will welcome the change). Just that will have a *tremendous* benefit, now with people using SER: instead of serial.device,0 we can point the handler at anybodies serial device code just like we point the printer handler PRT: to different printer drivers. Now people like CheckPoint and ASDG can just deliver their drivers and tell users "To use our port, set your preferences selection for the serial device to WhizBang" And the application will automatically pick up the new serial device. Once you get people using the name of the handler, you can actually make it into a full fledged name space if you chose. We have pipe handlers that let you do a directory of named pipes, why not a serial handler that lets you do a directory of available serial devices. Type dir SER: and get things like "modem, asdg1, asdg2, amiga" and now not only do you get human readable names (rather than trying to remember that serial unit 6 is the third board from the right, or was it left, first port). You also get a system supported way for listing all of the serial ports attached to a system (which is currently impossible given the DeviceList structure definition). Application developers want some way of providing a selection of devices, well this is it and they can use the same code that is in their file requester. Another red herring pops up in this discussion all the time as well, what about backward compatibility with those programs that don't use SER: ? Nonproblem, they still work with the Amiga serial port just fine so what have you lost ? Nothing. The commercial applications will migrate or die. The PD ones would definitely migrate because it would be so much easier to write them using this scheme. So what is this proposal/suggestion ? It can be laid out as follows : o New Serial Handler SER: that uses a field in preferences to to determine which device it defaults to. Additionally, it supports packets that allow users to change/query baud rates etc etc as described above. And it supports "locks" on different devices so that the high level DOS commands such as DIR, COPY, etc would do what you expected them to. o New library, serial.library that does the actual grunge work of sending the packets to the handlers and actually implement the routines I've shown above. What do you end up with ? Well, you end up with a system that can now have an unlimited number of serial ports added to it that can be supported by all future applications because they have a well defined and useful interface by which to access them. And further they can be easily understood by experienced and novice users because all you have to do is look in the directory and see which devices are there. This is a Good Thing. It also gives us another leg up on the competition (PC, Mac, and ST) because none of them have an expandable serial port architecture. If you play your cards right you can do this with PAR: as well and then you are even better off. Of course it only works if Commodore decides to do it, if I write the handler and library and give them away for free it will be 'nonstandard' and no one will rely on them because you may not have them on your disk. So here I sit. --Chuck McManis uucp: {anywhere}!sun!cmcmanis BIX: cmcmanis ARPAnet: cmcmanis@Eng.Sun.COM These opinions are my own and no one elses, but you knew that didn't you. "If it didn't have bones in it, it wouldn't be crunchy now would it?!"
ckp@grebyn.com (Checkpoint Technologies) (01/18/90)
In article <4949@sugar.hackercorp.com> peter@sugar.hackercorp.com (Peter da Silva) writes: >Since you're working on a copy anyway (I hope) zapping it on disk or in RAM >isn't that different. Exactly what does ZapPort do? Change "serial.device" >to "checkp.device"? Try to find the unit # and change it? The big advantage in using NewPort is that it only makes a 500-some odd byte long loader. This saves a lot in disk space, especially with 300K long executables. This is really important if the app is on a floppy, but still very nice when using a hard disk. What we do is find strings of "serial.device" and change them to "ckptss.device". Finding and changing the unit number is not something that can realistically be done, given the myriad numbers of ways programs might generate it. More and more programs are being released with support for multiple serial ports, especially communications programs. I figure many users won't need these zappers at all.
peter@sugar.hackercorp.com (Peter da Silva) (01/18/90)
In article <130368@sun.Eng.Sun.COM> cmcmanis@sun.UUCP (Chuck McManis) writes: > Why do people use the serial.device and not SER: ? The reason is fairly > simple, because the handler doesn't do what most people want to do with > a serial device, which is Which is not relevant. The default serial device is "serial.device",0. In fact, a well behaved terminal program should have requestors that allow you to change that. > You are absolutely correct, devices do have names but no one is arguing > that file requesters should put up "trackdisk.device", "harddisk.device" > as selections. If you have a generic format program, why not? [ Lots of stuff about improving the handler-level interface ] That's *also* a good idea, but in the existing world a modem program that doesn't allow you to specify things in the currently available name space is just plain broken. That's all. Oh yes, a modem program really shouldn't be busy-waiting on the serial port, as you describe. That's IBM-PC style stuff... busy-waiting is not acceptable on the Amiga. And there's no way to wait on two file handles at once (Hey, Commodore, how about making asynchronous I/O to handlers roek in 1.4?), so you have to go down to the DoIO level for an efficient terminal program anyway. > and ASDG can just deliver their drivers and tell users "To use our > port, set your preferences selection for the serial device to WhizBang" > And the application will automatically pick up the new serial device. Yeh? And what happens if I want to run two modem programs at once, on two lines? I've needed to do that badly enough that I wrote a dual-port split- screen modem program for the IBM-PC. > Once you get people using the name of the handler, you can actually make > it into a full fledged name space if you chose. We *have* a full-fledged name space. device name and unit number uniquely identifies a port. Now what you *really* need is a "ROOT:" device and a packet you can send to a handler to return the underlying device so you can DoIO to your heart's content. And there *are* existing modem programs that support underlying devices. -- Peter "Have you hugged your wolf today" da Silva <peter@sugar.hackercorp.com> `-_-' 'U` "I haven't lost my mind, it's backed up on tape somewhere"
d87-khd@sm.luth.se (Karl-Gunnar Hultland) (01/19/90)
In article <1053@madnix.UUCP> perry@madnix.UUCP (Perry Kivolowitz) writes: > >Due to its enormous usefulness to those who need it, we (ASDG) >provide both a ser: and aux: clone with the Dual Serial Board. These >handlers both support complete command line serial parameter specification, >like so (using Darren's example): > > Open("Joey:9600" , MODE_OLDFILE) or just as easily > Open("Joey:19200/8N1/32000" , MODE_OLDFILE) etc. > >We also support two levels of defaults for filling in the serial parameters >which were not specified on the command line. That seems like the thing I'd need if I manage to port MUD to the Amy. What's the price of the board , with software? Karl +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | Karl 'Dixie' Hultland | email: d87-khd@sm.luth.se | | University of Lulea | : {uunet,mcvax}!sunic.se!sm.luth.se!d87-khd| | Sweden | Snailmail: Mjolkuddsv. 63-5, S-95157 Lulea Sweden | |=======================| Voice nat: 0920-15479 | | Urbi et Orbi | Voice int: +46 920 15479 | |=============================================================================| | If two people agree on EVERYTHING , one of them is OBSOLETE!! | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
doug@xdos.UUCP (Doug Merritt) (01/20/90)
In article <1053@madnix.UUCP> perry@madnix.UUCP (Perry Kivolowitz) writes: >>In <14137@grebyn.com>, ckp@grebyn.com (Checkpoint Technologies) writes: >>> Due to it's limited usefulness, we (Checkpoint Technologies) >>>decided not to include an AUX:-style handler with the Serial Solution > >Due to its enormous usefulness to those who need it, we (ASDG) >provide both a ser: and aux: clone with the Dual Serial Board. <Snicker.> Nice comeback. Doug -- Doug Merritt {pyramid,apple}!xdos!doug Member, Crusaders for a Better Tomorrow Professional Wildeyed Visionary