Please stop right now and make a backup copy of these programs on a floppy disk. And activate the Write Protection on that disk !! SSTV/FAX480/WEFAX SYSTEM for IBM and CLONES Copyright 1993 Ben Vester This system includes a receiving and transmitting program for Amateur Radio Color Slow-Scan TV and FAX480 and a receive only program for high resolution weatherfax. The so-called SSTV as being used today is really nothing more than color facsimile, so all of these systems are alike in that only one image is transmitted at a time and they all use 1500 hz to 2300 hz as limits for the modula- tion audio. The system is basically software-based, with the only hardware required being a very simple audio clipper interface between the receiver and the computer's serial COM port. The com- puter facsimile input and output to the amateur transceiver is transformer isolated to avoid grounding and noise problems. Details of the interface are contained in Sept. 1991 "QST" and in Jan. 1994 "QST". There was an error in the schematic in the Jan. 1994 arti- cle, however. The Transmit audio comes out of the Serial interface on the RTS pin, NOT the CTS pin. That is, the Transmit coupling capacitor connects to pin 7 on a 9-pin connector, NOT pin 8. RTS comes out on pin 4 on a 25-pin connector. An early draft of the 1994 article is contained on this disk under filename, ARTICLE.TXT and should be read for other needed information. Doing all of the fax demodulation in the computer requires a 80286 or higher class of computer with higher clock speeds helping the quality of the images being transmitted and received. All of the programs except the Wefax program could be handled in the minimal 640 Kb. of RAM but to get any reasonable speed in manipu- lating the images after reception a minimum of 1 megabyte of RAM is needed. For copying Wefax, 4 Mb. is needed for easy copying and manipulation. 2 Mb. is almost enough to copy a full pix. A RAMDISK should be created on your computer before trying to run the pro- grams. Just add a line to your CONFIG.SYS file as follows: For 1 Mb. system: device=c:\dos\ramdrive.sys 368 512 64 /e For 4 Mb. system: device=c:\dos\ramdrive.sys 3072 512 64/e If you must coexist with Windows (uses 2 mb.) 3072 is 2048. With less memory, you can use batch files (described below) to remove Windows from CONFIG.SYS and AUTOEXEC.BAT when you are using SSTV. When you reboot the system take note of what letter designation the computer assigns to the RAMDISK as you will need to tell the fax program what that is. Now if you only have 640 Kb of RAM you can use the hard disk "c" as the designated drive but it will be very slow in manipulating the color images and won't work at all on Wefax. Even a floppy drive can be designated but it will be ridicu- lously slow. High resolution color pix's with 3 bytes per pixel require a lot of memory, so the old PC's with minimal memory just won't hack it. Timing is extremely critical in decoding the fax modulation. We use the computer's TIME clock and since it is needed full-time during the actual copying, you may have to sacrifice other time- related functions while using the programs. Also, since we need both the TIME clock and most of the memory for our copying task, the program may not work properly if your system is loaded up with TSR resident programs, particularly ones that use the TIME timer or occupy any appreciable memory . This is a common problem with programs using SVGA graphics and I notice that my 8 year old grand- son has already learned how to unload the resident programs from his computer in order to get his favorite game programs to play. Some resident programs may look like small memory users but they often use the TIME clock continuosly, so they may interfere with the timing functions in the program. This depends on how fast the computer is. If it's very fast, it may accommodate both functions without interference. For example, with my 33 mhz 80386 computer, I can accommodate the excellent screen saver, "BLANK-IT", without interference. With a slower computer, that might not be possible. When I use my Computer Eyes/RT frame-grabber, however, I even have to remove the screen saver. These resident programs can be located in your AUTOEXEC.BAT file for your perusal. The easiest way to remove them and add them back is with two batch files, STARTTV.BAT and STOPTV.BAT. First, you copy the present AUTOEXEC.BAT into a AUTOEXEC.REG file. That is: c:>copy autoexec.bat autoexec.reg Then you create an AUTOEXEC.TV file that only contains the absolute minimum (ie, NO resident programs). The STARTTV.BAT will consist of one line: copy c:\autoexec.tv c:\autoexec.bat After you run STARTTV.BAT, you reboot and are ready to go. To restore the computer to normal, use STOPTV.BAT with this single line: copy c:\ autoexec.reg c:\autoexec.bat You, of course, could just type the single line each time, but using the batch file minimizes your chances of losing your present AUTOEXEC.BAT file information. If you have Windows installed and are working with limited RAM, you can add the CONFIG.SYS changes to eliminate Windows temporarily to these same START/STOP batch files. Once you have the system working, you might want to add back a screen saver for use with TV and see if it messes up your system. Another DOS resident program that is extremely useful to speed-up the continuous file manipulations in this program is SMARTDRV, so try to squeeze it in. The programs were developed for use by the experimentally inclined radio amateur. It uses GWBASIC to interface with the user, so you will need a copy of GWBASIC.EXE (note:some have tried using GWBASIC that was used on Tandy machines and it did not work. I've used versions 3.22 and 3.23, both created for true IBM clones.). The guts of the program are contained in machine language programs which are called up by the BASIC program as needed. To accommodate the wide variety of modes, the system parameters are changed by inserting POKE's in the BASIC program, a different set of POKE's being used for each mode. This allows experimenters with only a modest amount of skill in BASIC to create new modes, or adapt to additional modes that others have created. Even if you have no previous experience with BASIC, I recommend you LIST out the pro- grams and study them to find how easy it is to make mods. I have even included some motivations--like getting your own call sign on the pix you transmit, instead of my call sign--to encourage you to learn a little about hexidecimal numbers, about 2 color image formation, and about changing the program. To call up the frequently used programs directly from the DOS line you can use simple batch files. For example, to LOAD in GWBAS- IC, then LOAD in VU.BAS, and then RUN the program, you can create a batch file, VU.BAT, with a single line: gwbasic.exe vu.bas Now you just type VU on the DOS line to access the program. A number of these batch programs are included on this disk. Each of the programs has a fairly good description of it's operation on the opening screen, so you should read both that data and the data below to fill out your understanding. Also each BASIC program is supported by one or several machine language files. You can identify these by looking through the BASIC listing to find the BLOAD command followed by the name of the .ASM file. These ASM files must be in the same directory as the BASIC program so it can find them. I recommend you make a separate directory (ie; c:>MD TV and then c:>CD\TV) and copy all the files into that directory. In the different programs described below, you are often asked to hit certain keys. The program assumes you are keying the lower case letter, so make sure that you don't have the CAPS LOCK on! They are capitalized in the writeup strictly for emphasis. VU.BAS You need to find out how to see pictures on the screen before you can do anything, so we'll start with the viewing program. First activate BASIC; ie, c:\tv>gwbasic.exe and then when the BASIC screen comes up LOAD"VU. You actually hit F3 and then type VU---right here is where you can go astray and why you need backup copies. If you inadvertently hit F4 instead of F3 you will SAVE"VU---which means you will save a blank sheet under the title VU.BAS, writing right over the real VU.BAS program---another reason it helps to use batch programs for normal use. Now hit F2 to RUN the program. Read the first screen and then select the mode and give the file name of the sample picture. Note that the mode suffix to the filename is added by the program. If you add it too, the computer won't be able to find a file with a double suffix, so it will just return you to BASIC (you'll get Ok on the screen when you return to BASIC) when you answer all the questions. The program is still loaded, so you only need to hit F2 again and try to follow the instructions this time. The Video Card is the next selection to be made. If your card doesn't appear in the first 6 choices, then you'll make choice 7 and go find yourself a VESA driver for your card. If it's a recent card it may even meet the VESA standard without a driver. The drivers are a product of the board manufacturer and you may already have it on a Utility disk that came with the card. I understand that BBS: (416)729-4609 has a collection of drivers if you can't get one from the manufacturer. The driver gets loaded before the program, so you can add it as a first line in the VU.BAT or RT.BAT or AUTOEXEC.TV batch file for convenient operation. Be sure to try all 7 choices before looking for a driver since card names don't always reflect the name of the SVGA microchip used in it. Also, there are different microchips in the same name boards, so there's no guarantee the most common one I used for this program will necessarily have the same software commands. Some recent SVGA programs even include a collection of drivers to select from. The card type is often shown in the first message when you boot up the computer or you can go to the DOS directory and type: C:\DOS>debug then type in a dump -dC000:0000 You may need to hit d again to dump the whole message on the right, but this will often tell you the origin of the video card. Try dumping at D000:0000 and E000:0000 if C000:0000 doesn't work. A more direct way to find out the card parameters is to call the computer manufacturer's software assist line. The card must support 640x480 with 256 colors (requires 512K video memory) al- though a limited capability is possible with 640x400x256 (see Experimenter's Info below). Pix SAMPLE.M1 exercises the 640x480 capability while SAMPLE2.94 only needs 640x400 so you can use these to explore your card's parameters. Trident cards with 1 Mb. of video memory are available mail-order for less than $50 so you can easily upgrade. When you select the wrong video card, the program will faith- fully load the picture into the video buffer but no picture will result. After a short wait for the picture loading, hit Q (for Quit) and you should get the BASIC Ok displayed. Hit F2 to re-RUN the program and try the next video card selection. While the video cards in my two computers are well behaved and don't hang up the computer when sent the wrong choice, this may not be true for all cards. Once you get a picture, play with the scroll commands to see what happens. Moving up and/or left initially will move the file pointer outside the file and give peculiar results, so move down or right first. The arrows work for slow scroll and R and L give larger scroll increments (in the special case of the Robot 36 mode, the R stands for Reverse and will reverse the blue and red colors if you happen to start copying on the wrong line--it actually is scrolling but the scroll increment is chosen to be one line). Scroll through the color frames with R and see what an out-of-sync picture will look like. You can scroll it right back in sync. Now try the color registration keys, C and X. to see what they do. When you finish, go on to the next program, or maybe at this point you want to change the Default choice for the video card to be your card. LOAD the program and LIST 2000-3000 to see the SYSTEM CON- FIGURATION list. The first item sets the video card choice to either be automatically set to whatever you choose in the next line (2030) or you can leave it in manual so you answer the question about the card every time you view a picture. The BR brightness parameter is like the Color level control on a TV, and it and the TU tuning parameter are only applicable to the Robot modes. Setting TU to 1 will give you retune capability in 10 cps increments which allows best resolution in setting the color balance (or hue) using the F and G keys (note that the F stands for Frequency tuning and the G stands for Greener). The next item is the picture trimming parameter, PT, which you may want to change occasionally. If you have a pix with trash still showing on the right edge, you can raise PT to trim more off the edge. You can change the parameter and RUN the program without SAVEing it or you can make the change permanent by SAVEing it. The final item, EX, allows you to expand the pictures that have less bytes per line, such as Martin 2 and Scottie 2, to fill the screen. This aggravates any copying anoma- lies but gives the more correct perspective for these modes. Since these modes send only about 1/2 the bytes and use 1/2 the time of Scottie 1 and Martin 1, their fidelity is inherently worse, partic- ularly in less than optimum conditions. RT.BAS This will be the most used program, since you will spend a lot more time receiving than anything else. To view the SYSTEM CONFIGURATION for the program activate BASIC as described above and LOAD"RT. Now LIST (hit F1) 3000-6000. Move the cursor up to line 3030 where the video card selection is made and type in the VC selection you found worked in VU.BAS. Hit ENTER and then move the cursor back to the bottom of the screen. The RAMDISK designation that is stated on the screen when you boot the system will be inserted in line 3050. Most likely it will be "D", unless you have extra disk drives. The COM port you select will be noted in line 3170. After making the selections, move the cursor into the clear and LIST 3000-6000 to make sure you got what you wanted. Note that when you change anything in a line on the screen, you must hit ENTER to actually change it in the program. Also be sure to move the cursor in the clear before hitting any of the Function keys. Now SAVE the program as RT.BAS. Some of the other CONFIGURATION items may need to be changed later. You are now ready to check out the interface box with the program. Plug in the interface to the selected COM port and feed audio from the receiver into it--noise will be OK. Hit F2 to run the program and select mode 6 and ENTER. Normally the program will wait until it receives a header before it begins to copy. But if you miss the header, you can bypass that step by hitting SPACEBAR. In this case, with noise or voice audio, you'll need to bypass the header start, so hit SPACEBAR. If you get a tone with a tick super- imposed on top of it, you know that the system is copying the incoming signal. If nothing happens or you get a steady tone with- out any tick, the fax audio isn't getting into the serial port. You could have plugged into the wrong COM port (surprizing how confus- ing COM port numbering is!) or the audio may not be getting to the interface. You'll have to reboot the computer if you can't get audio in to start the copying. (A few people have gotten to this point and got a single interrupted tone and the computer hangs up. This occurs when you try to use a Tandy GWBASIC.) The tick is fairly brisk, about 2 per second. If it is very slow, you have some resident program interfering or you may be trying to run the program from Windows. Windows slows processing down drastically, so the timing-critical transmit and receive programs cannot be run from Windows. The most common problem with the interface is wiring errors. The pin numbers on the opamp seem to get mixed up with the pin numbers on the COM port plug. Once you get the machine ticking, let it run for 30 seconds or so and then hit H (for Halt) to stop the copying. The tone-tick should stop and after a brief delay, you should get an image on the screen---in this case it will be multi-colored noise. After looking at the image, you hit Q (for Quit) to exit the image. You can now choose to SAVE the image, retransmit the image, transmit another file, or return to BASIC where you can hit F2 to setup to copy another picture. The major keys to remember are SPACEBAR which bypasses the frame sync and starts the ticking, then H which halts the ticking and advances you to a picture, and then Q which exits the picture. You should now be ready to copy real pictures. Tune to 14230, the most used SSTV frequency and carefully tune in the voice of a transmitting SSTV station to make it sound natu- ral. If you have pass band tuning or other methods for shifting the received passband, move the passband to attenuate the lows. The lowest frequency used is 1100 hz. When the station announces it will send a certain mode, select that mode quickly and ENTER. Different modes have different header lengths---AVT and FAX480 headers are quite long before they start the picture. The picture copying should start properly synchronized. On everthing but AVT, this should be almost immediately after the fax audio begins. If no ticking starts (give it enough time for the long header on AVT pictures), you missed the header so hit SPACEBAR to bypass. Let the copying run until the machine turns itself off (or if you tuned in late you may need to Halt when the picture ends). It then will display what it copied. The pictures are intentionally offset just a little to facilitate easy scrolling to position the pix exactly if you choose to SAVE it or retransmit it. Use the right arrow to drop the trash off the left edge of the picture and then use the fine step left arrow to just bring the trash back to the left edge (look at the right edge to see what you are doing). The trash on the right will be trimmed off by the VUing program. If it is a 256 line picture (Scottie, Martin, etc.), it will have 16 lines of shades of gray display so you'll want to scroll down to see what fell off the bottom of the screen (there are only 240 lines avail- able on the screen). The transmit program adds the 16 line shades of "gray" display to whatever file it is asked to send, so if you don't scroll down before saving or retransmitting you'll transmit two such displays and less picture. (Actually, we use a shades of red and shades of green display since the gray looks incongruous with all the other pretty colors. This was promptly reported as a "fault" by some folks. C'est la vie !). To facilitate scrolling the shades of gray out of the picture, the key D (for Down) will scroll you down at 8 lines per hit. If the picture mode was a Robot mode the three frames are different widths (the chroma frames are 1/2 the B/W frame) so scrolling affects the color registration--you scroll to get the proper color registration. Then you use keys F and G to retune the signal in 10 hz increments to optimise the color balance. The Robot modes are critical to tuning and deteriorate more rapidly under poor conditions so on average don't expect to see equivalence to Scottie modes. When you SAVE a pix or retransmit it, DO carefully scroll it so the trash on the left edge of the picture is JUST BARELY off the left edge of the screen. The transmit program is based on you having done that. Occasionally, some one will send a pix in a mode different from what was announced. Let it go ahead and copy and after it shuts off you can go to BASIC, LOAD VU.BAS and click through the mode choices using the d:a.p default file name to find the right mode. The picture probably will be skewed slightly, but you don't lose the whole thing. Make a practice of listening to the fax signals and soon you'll be able to tell what mode it is with the tick rate being the most recognizable feature. The AVT's have a very distinctive "triple chirp" beginning (VIS code repeated 3 times) with a pro- longed count down to start and finally the pix starts with a more irregular sound. It doesn't appear justified to me for the AVT modes to spend so much time on the header. As the number of people using color fax grows, you can expect some attrition of modes that do not use on-the-air time efficiently. The AVT's don't waste time on line sync's but then they blow it on the header. This program was in the development cycle when WB8DQT came out with his FAX480. It was easy to add this mode to the software, so I did. He only had 16 shades of gray--my 64 shades processing gives truly photographic quality to this mode. Unfortunately, he suc- cumbed to the "header syndrome" and loaded up what is a very good mode with another excessive header (based on unattended commercial fax machines). I rebelled at this and decided not to make another header decoder but to just wait until most of the 20 empty lines in the header were finished to hit SPACEBAR to start it manually ; so that's how you have to manually acquire the FAX480 pictures. The empty lines are readily recognizable by ear. If he had just put a VIS header like Scottie on the front end, and called it a high resolution B/W SSTV mode, it would have worked great and would have been more welcome on 14230. The obsession with starting "in sync" every time comes from paper type fax systems. With a CRT system, the occasional out of sync condition just requires a little scroll- ing. Perhaps the next revision will include header recognition for this mode. As I sit here writing this, it occurs to me that we should create another fax standard. We'll use the full screen instead of wasting room for a few easily remembered key commands, so it will have 640x480 pixels with 64 gray shades per pixel. That will just fit within the 640 kb. limit in RAM. The header will be identical to the Scottie 1 except the VIS code will be different. Let's call it FAX640 and we'll assign mode number 96 to it. For the VIS code we'll also use 96 (hexidecimal &H60). The line sync and pixel rate will be identical to the FAX480. Since the system pixel rate gives 1024 pixels in 0.5 seconds to match the weather fax stand- ards, our line timing for 640 pixels will be 0.3125 + 0.00512 seconds per line (data + line sync). It should only take a few hours to add mode 96 to this program and all the supporting pro- grams. Since most pictures from frame grabbers or other sources are in 640x480 format, picture reformatting will be simplified. Maybe I'll add the FAX640 mode to the next revision of the software. When you're finished with the picture, hit Q to go back to a selection screen. You can retransmit the picture directly from the d:a.p file where it is stored. Or you can SAVE it. You'll be very happy about now if your computer is at least as fast as mine, and it's TIME clock loses exactly as many seconds per day as mine does. If that is not the case, you will have seen some slant to the sides of the picture and maybe even some break-locks on the sync (looks like someone cut the photo and slid the bottom half to the left). The parameters which affect these things are on the SYSTEM CONFIGURATION list (LIST 3000-6000). If you have a slow computer it may have bad breakup---if that is the case, start by doubling the sync window (SW). If there aren't too many sync breaks, ignore them for now and concentrate on adjusting the line timing, LT, first. Since the Navy Wefax is on the air all the time (on USB on frequencies 3354.9, 8077.9, 10862.9 and 16407.9 Khz.), that might be a good choice to set first. Choose mode 99 and answer the questions or accept the default choices. This is the only mode that offers a choice of manual start. If you choose AUTO-SYNC in this mode as in all other modes you can bypass it by hitting SPACE- BAR if the SYNC doesn't show---which happens more often in the Wefax transmissions. Scroll the image to put some vertical line in the picture against the edge of the screen. If the top leans right, lower LT99 and vice versa. You can converge on the right value more quickly if you use a ruler to measure and record the out-of-true across the top of the screen for each value of LT you try. If your screen aspect is the same as mine, the formula for the correction is 1125 TAN X, where X is the angle off vertical. Or if you count the pixels you are off by at the bottom of the screen, the correc- tion is about 1125/240 times the pixel offset. That is, measure the pixel offset and multiply it by 4.7. The most common mode being used on 14230 seems to be Scottie 1, so that will be a good SSTV mode to align first. PLEASE DON'T ask people to just transmit for your alignment use. Take whatever gets sent. Once you determine what the exact correction for one mode is you can calculate the correction for all the other modes. The corrections will tend to scale with line lengths (ie, the bytes/line) so you can get very close by taking the correction for one mode and adjusting it for other modes. For example, the Scottie 1 mode has 878 bytes/line. If we found that it's line timer, LT3, had to be increased by 25 counts, then the Martin 1 (915 bytes/line) timer, LT7, would be increased by 915/878 times 25 = 26 counts. For reference the bytes/line for each mode is: (1)306 (2)614 (3)878 (4)568 (5)768 (6)960 (7)915 (77)465 (8)745 (9)546 (99)1024. You may need to do a little more trimming on these calcu- lated values for LT. Reports from other users indicates the calcu- lated corrections are usually right on target, however. PLEASE DO take the trouble to make the pictures exactly square on receive as any skew you leave in will be transmitted to the world every time you send a picture. Fortunately, the exact same timing numbers are used for transmit, so you can get your transmit alignment done without even transmitting. Believe me, the people on 14230 will appreciate that courtesy. I have read a suggestion on one of the BBS that you use a tape recorder to copy a picture off the air and then play that back for alignment. This will be a futile exercise unless you have an extremely precise professional recorder (the line SYNC window in this system is only a few microseconds !). While most people oper- ating on the non-Robot modes have pretty accurate line timing, the Robot systems vary all over depending on how many updates a partic- ular station has. You can use the non-synchronous modes, (11) for Robot 36 and (22) for Robot 72, on receive to avoid having to align the Robot LT's but eventually you'll want to retransmit a Robot pix and it would be desirable to have determined the synchronous (ie,crystal-locked) alignment---on modes (1) and (2)---with an up- to-date Robot equipped station like W5ZR or N4OBQ. Note that LT1 is exactly 1/2 of LT2 so you only need to experimentally align one. The calculated value for this correction on Robot will be far better than you'll get by trying to align to just any station you happen to hear. I heard a lengthy exercise on 14230 recently which illustrated how NOT to do this. A station with this system asked W7--- to send him a Robot picture so he could align his LT (which is a no-no). The W7 was using a Pasokon which has different line timing from the Robot systems (on the Robot modes and the Wraase 96), so the frequency was tied up for an extended period of time aligning to the wrong standard. Remember the SSTV frequencies are like giant party-line phones with many people listening and waiting to send or copy pictures. Move your extended chit-chat to other frequencies. Since almost everyone has resigned themselves to copying Robot modes using Line-Sync due to the wide variety of timings, the benefits of crystal locked reception of the Robot will only be available to those who bother to set their timing to the Robot standard, and is communicating with a station who has done the same thing. When making these LT adjustments, note that if you pick anything but the BASIC choice when you exit the picture, you will lose any temporary changes you have made to the CONFIGURA- TION list. When you get perfectly square pictures, SAVE the program with the latest LT value. The program will only accept values for LT up to 65,535. You start over with 0 if you need greater num- bers. After aligning LT, if you still have any sync breaks, you will need to lower the Gross Timer. The process here is identical to trying to fit tiles into a fixed size room. We've squared the room with LT. We have a few hundred tiles (pixels) to squeeze into a room which has a fixed size (LT) and if the tiles are too wide, the last tile will run into the wall and break sync. The number for GT represents the width of each tile (pixel). Decreasing it by 1 will slice one microinch (microsecond) off of every tile. You can slice several microinches off each tile (maybe decrease GT by 5) so you're sure it will fit but that may leave an ugly gap at the edge of the floor. You can cover that over with trim at the edge of the floor, but if you copy the picture out-of-sync that ugly gap moves into the middle of the floor (picture). So you want to make GT low enough to eliminate any occasional break locks but not so low as to leave an ugly gap which will show up when you miss sync on a picture. If your computer is very fast, the measurement accuracy for each pixel (tile) will be more precise, so you can stack the pixels with less gap at the edge without having the risk of running into the "wall" set by LT. If you have sync breaklocks that seem independent of the GT value, you need a larger Sync Window (SW). The SW represents the amount of time in microseconds it takes the computer to decide if it's at the LT "wall". Obvious- ly, a slower computer needs more time. You may ask why we chose to use only one pixel (tile) size, GT, to fit all these different modes (rooms) with different line timing (widths). It was just a matter of convenience. You can further optimise the system by using a different GT for each mode---in fact, with the deterioration you might get from a slower computer, this could be quite worthwhile. You will note that we did use a different GT (GT99) in the Wefax mode. Remember, the way to see this effect is to copy a picture out-of-sync and look carefully at the results at the parting line and on either side of that line look at the color registration. Since the AVT modes have no line sync period in which to hide this "gap", the effect is more notice- able there. People who have not seen SSTV pictures are usually struck by the fact that many of them are noisy--in fact, anything you hear (noise, splatter, QRM, etc.)will be painted into the picture. So high S/N ratios are needed for flawless pictures. Narrowing the BW will help some, but at some point will smear the picture bytes. Another source of noise was found by KY1S in a serial interface board (made by Data Technology Corporation) which he changed out for another board he had which was clean. I have heard of several other cases since then which were solved the same way. Opinions have been heard that this is more common on the newer boards. The effect varies from a few flecks in the pix to very noisy pix even with very strong signals. These I/O boards are very cheap ($10 to $15) but finding which ones work may take a little research on the air. Signal modulation can also come from your receiver. My TS930S is completely clean while an old ICOM-720 which I use on the boat gives noticeable hum bars in the pictures even though there is no detectable hum in the audio. Clearly, the 120 cycle is frequency modulating the high frequency phase-lock loop in the IC720 but it was undetectable until I copied SSTV. With such a sensitive way of seeing it, I intend to fix it; and I won't be surprised if it improves my SSB voice signal. Both of these cases may be due to design faults or just to the particular piece of hardware. Point is, SSTV shows up shortfalls in hardware very clearly! You need at least 512 kb. of memory on the video board to copy the SSTV modes. The Wefax copying optimally will need 1 mb. But the provisions are made in the VUing program to look at Wefax pix through a 640x480 window. The program provides 1024x768 Wefax viewing on video card choices Trident, Tseng, and VESA only. The normal Wefax image has 1024 pixels per line and 1536 lines, so you only see a portion of the total image at a time. The keys S (for Shrink) and X (for eXpand) can be used to see more or less on the screen. Also, if you are using the 1024x768 screen, you can get an expanded view of a portion of the pix by switching to 640x480. Try copying maps in the Wefax mode. You'll be able to read the really small print ! If you want to print a copy of the map, position the place on the map where you'd like the printer to begin to the upper left corner of the screen and hit P to start the printer. Hitting any key will stop the printer. The Wefax images initially appear in 64 gray shades. You can choose color palettes 1 through 5 for various effects. This is useful for seeing ocean thermal currents like the Gulf stream on IR images (you can identify IR images as the black sky will be white; ie,cold). Cold is white and warm is black in IR images. Or you can take a vertical profile of the clouds by first hitting G to get Gray, then hit C to Color the top (coldest) layer. Each time you add another C, you color the next lower level. A total of 64 levels are available. This is useful to identify the more severe weather which generally boils up to higher altitudes. When you use one of the color palettes, C can also be used to step through the color palettes to highlight visibility of small temperature differences at sea level to see things like ocean currents. These currents are of particular interest to fishermen. A portion of a Wefax pix may be saved in FAX480 format. You're seldom interested in the whole image and it takes a lot of memory to save the whole thing. I use date/time/mode filenames for these. 28MY123V.FAX denotes 1230Z on May 28 in Visual mode. Scroll the Wefax image to put the portion to be saved in the upper left corner of the screen (you save 536x480 pixels--I use pencil marks on my CRT to mark these borders). When you or someone you send it to views this pix with VU, you select the Wefax mode (99) and when queried about screen size take the choice FAX480 PIX. This gives you the colorizing choices of Wefax described above for viewing IR pixes. Or just VU it as a B/W FAX480 pix. One last item on RT.BAS is the parameter, DE, on the SYSTEM CONFIG list. I made this delay DE=0 to suit my own practice. This value starts the picture copying a little early, so you'll always need to hit the right arrow first to scroll into picture left edge coincidence. You may prefer to set it to start at the picture beginning--accepting the risk that QRM will occasionally make it start late. If it starts late, you will move the "edge of floor" gap into the active picture region instead of hiding it under the SYNC period. You must set DE to numbers less than 256. Generally it will be less than 20. When you manually select the mode, the frame SYNC for the non- AVT modes is fairly simple and can be spooked by any 1200 hz tone of adequate length. This has not proved to be a problem except for a very few stations. For some reason, the Robot (?) systems have a capability to send your call sign in CW at the beginning (instead of at the end ?) of picture transmission and they chose to use keyed 1200 hz. Most people have turned off this feature (giving your call sign verbally, immediately followed by giving it in CW, followed by a picture with your call sign on it seems a tad too often) since it uses valuable on-the-air time unnecessarily. A few gentle reminders may fix this problem. With a little dexterity, you can hit the mode ENTER key on the last character of the CW and get a normal start--or just wait until start and bypass with the SPACE- BAR for any stations which continue to use this feature. Since the above paragraph was written, I have added automatic VIS recognition to the program. You need to be within 50 cps of the transmitting station's frequency for this to work well since the VIS frequencies are so close. Unfortunately, people have gotten careless about being right on frequency. When you select this option, the mode name is displayed as soon as it is recognised. You can break out of this mode by hitting any key, so if it fails to grab and start copying, you can hit the proper mode key and hit ENTER twice to start manually. This detection is made to have almost a zero chance of false alarm, and it also only works with fairly good signals. Since I wanted to use it for unattended operation to copy only fairly noise free pictures, this fits fine. It's sensitivity can be changed by playing with the parameters in lines 2605, 2606, 2607 of the RT program. I have made several versions of the VIS recognition machine language .ASM module; namely VISCODE.ASM, VISCODEA.ASM and VISCO- DEB.ASM: but have been unable to decide which is best under mistun- ing, QRM, etc. Not wanting to hold up the release of this version of the software, I have included copies of all 3 so you can have the fun of evaluating them. You just type the one you want to try into line 471 of RT.BAS. Any feedback will be appreciated. Another mode added provides Auto-recognition plus Save to give you unattended capability. It ignores weak signals. You can select any drive\path to Save the pix in. I use the RAMDISK so if I forget it's turned on I won't fill up my hard disk. When I return I use d:>ss (ie, Slidesho) to view what was received to decide what to save more permanently. This program puts itself into an endless loop so you have to exit it by using CTRL-BREAK. If it's waiting for a new picture you may need to also hit another random key. If you copy (or REName) the desired file in the RAMDISK to d:a.p you can then LOAD RT: make a temporary change to RT by typing a new line 880-----880 GOTO 890----and then RUN the program. Select the mode the picture was copied in and ENTER. The pix will appear as if it was just copied and you can rescroll it if needed and then save it permanently. Since AVT modes have both a VIS code and a compli- cated frame SYNC sequence, you can get hung up by passing the VIS test but missing the frame SYNC test, so I just bypassed the frame SYNC and copy them out of SYNC. You can eliminate line 724 if you want to keep the frame SYNC. Don't forget to clear out the RAMDISK for future copying. You can tell when the RAMDISK gets full when you copy a pix and it only fills part of the screen. In my experience with the previous wefax programs, I have only seen one computer (a name brand laptop) which didn't have a proper- ly operating crystal-controlled clock. I have heard of one other. The sympton is the lines in the pix wander all over the place. You'll have to fix the clock to crystal-controlled stability to use these programs if you run into this. We have seen one case like this which only broke out of crystal-lock in Transmit. This was a 486 machine and K3OWX solved it by going out of the turbo mode. There is some general trend we have noted that the crystal clocks are not being held to as stringent tolerances as before. TX.BAS [NOTE: The TX program has been superceded by the VT.BAS pro- gram below, so it is not being kept updated with new changes. Since there may be someone with a very slow computer who might want to still use TX instead of VT, it is still included.] The transmit program uses the same SYSTEM CONFIGURATION choices as the receive (RT.BAS) program, so the first step is to transfer those choices. LIST 1000-2000 to see the choices on TX.BAS. Be sure to put the cursor in the clear and re-LIST to check things before SAVEing the modified program. Note that if you don't put the cursor in the clear before hitting a function key, it will type the function key word right where the cursor is, over-writing the program and giving some weird results. Running TX.BAS is very simple. Put the transmitter in VOX if it isn't already there. You select the file you want to send and note what mode suffix it has. The mode suffix and file name are given when the program asks for them and after the file loads, you just hit G to start transmitting. If you give a non-existing path/filename, the program will return you to the BASIC "Ok" where you can hit F2 to try again. In this case ignore the Picture Trans- mitted message---it should be obvious that nothing has been trans- mitted. When you key G to start transmitting, the VOX will come on and the header is transmitted. The tone-tick audio cue will start when the actual picture starts being transmitted. If you want to terminate the sending before the picture is finished, key H (for Halt). Listen to the ticks to see that they are very regular. If you hear a skip, someone on frequency will probably tell you that the picture had a break-sync. Although it didn't happen on the two computers I have, it's conceivable that a different GT might be needed for TX.BAS since the overhead processing done on each line is different from the receive program. If that is the case, use the lower of the two values for GT in both programs. A better alterna- tive to lowering GT is available if the offending mode is NOT AN AVT MODE. You can LIST 240-370 in the TX.BAS program and locate the line that has the data for the offending mode (ie, 290 IF I=4 THEN LL=568 etc.etc. is the line for Mode 4). That line will have a value called out for a parameter SC, which is the number of 1/2 cycles of 1200 hz line sync that will be sent on each line. Lower- ing this value will fix your problem (equivalent to removing one "tile"). It's very unlikely you'll need to do either. Incidentally, don't try to send a picture in a mode other than the one it is formatted for. Hopefully I can find time to include a mode refor- matting program in future revisions. People seem to be using rather long sub-directory names these days, so if your PATH to the file to be transmitted is long, it may not fit in the space allocated in the program. You can copy the file to the RAMDISK as A.P and use the program default choice instead if you run into this:ie, if the program rejects a perfectly good Path/Filename. Before you actually start transmitting pictures, hook your headphones across the audio transformer output to the transmitter and listen to the signal while sending a pix. Compare it to what you hear when receiving. If the frequencies sound quite different, you'll save time by adjusting the header frequency as described in VT.BAS below before proceeding. If the frequencies are very differ- ent, you may be breaking out of SYNC on many lines and transmitting a mess. We've seen one 486DX2-66 machine where this was the case. His frequencies were quite low. You can do the initial checking of this program without actually transmitting, of course. But as soon as you do start transmitting, BE SURE to check that the transmitter is operating at a low enough level so it won't overheat. Most transmitters will not handle a 100% duty cycle signal like this and still operate at maximum peak power. I failed to take my own advice on this and had to make a multi-transistor repair on my TS-930. If your transmitter has an AM mode, set the output power in TV mode to the same output power level as AM. This should be plenty safe. The audio level resistor, R_x in the schematic, is set so that you can leave the transmitter mike gain at the same level whether you are talking or are sending fax. A useful feature in BASIC is the ability to list all files contained in the current default directory. For example, to list all Scottie 1 files, just type: FILES"*.S1 and RETURN . TX, VU, and SLIDESHO all can use this, so I have included an insert to make key F9 type the words FILES for convenience. FILES is the BASIC equivalent of DIR in DOS format, so the use of wildcards, etc. apply. Note that keys F9 and F10 are not operative for our program specific-use until at least one program has been RUN. VT.BAS This is identical to the TX program except the file to be transmitted is put on the screen to see if it is the one desired. It stays on the screen after transmitting so you can discuss it's details. Q will exit the picture. If you call up a non-file, the screen will be blank---you'll need Q to get back to BASIC. The SYSTEM CONFIGURATION for the VUing part of this program is seen by LIST 2000-3000 and is copied from VU.BAS. The transmitting SYSTEM CONFIGURATION is seen by LIST 4000-5000 and is copied from RT.BAS. I have added a couple of features to this program as a result of inputs from KY1S. He found it convenient to have listed on the screen all of the files in the current directory which were saved in the mode being used every time he picked a mode. That is, when you pick mode 3 in the VT program, all Scottie 1 files would be instantly listed for you to select from. With the BASIC format, this is very easy to insert and is a perfect example of how you can adapt to your own operating methods. I thought others might like this capability, so I added it so you can switch it ON or OFF in line 2092. Dennis also found that his LT numbers had to be changed by about 400. Other 486 users have also reported a wider variation in the frequency of the TIME-OF-DAY clock than we had seen before. While this has a rather small effect on the color registration, the headers used for automatic recognition of modes have somewhat more stringent tolerances. If you get reports of people receiving your pictures having to manually start their reception, or you had a large change in LT or a particularly slow computer, you may want to measure and possibly trim the header frequencies. We have added a test mode in VT.BAS which is turned on by a switch, TE, in line 4173 in SYSTEM CONFIGURATION. Switch TE to a 1200 or 1900 cps position and then hook up a counter or some other method of measur- ing frequency to the output of the interface which normally feeds fax audio to the transmitter. If you use a counter you will proba- bly need to divide the signal down by 50 or more to avoid over- driving the counter. Load in a Scottie 1 picture, and when you hit G(o), a prolonged steady tone at the selected frequency will pre- cede the picture. Parameter HF in line 4171 can be changed to center the frequency. If the frequency is 3% low, raise HF by 3%. A potentiometer to change the level into the counter is useful to avoid the erroneous results you get by overdriving the counter. After finding the best value for HF, SAVE it in VT.BAS and put the same value in line 3210 of RT.BAS and SAVE it. While this parameter is called "header" frequency, it actually recalibrates both header and picture frequencies with the pokes in line 3011 of VT.BAS (for reference in case you wanted to change only one of these, 2E9 and 2EA are the location for the header and 1FE and 1FF are for the picture data frequency). Many SSTV stations can give you a rough measurement of these frequencies over the air. SLIDESHO.BAS SLIDESHO works just like VU except that it has an additional capability to step through a series of pictures without knowing what the filenames are. You pick a mode, and if you want some constraints in the filenames viewed, enter that. For example, if you wanted to look at only Scottie 1 pix's starting with the letters BE, enter 3 for the mode and enter BE for the constraint. The first BE*.S1 pix in the directory will paint. To see the next BE*.S1 pix, hit N (for Next). It will exit to BASIC when it runs out of files. You can use this program to look at single files also. This program (and it's associated files, SS.BAT and 64SHO.ASM) is configured to go into your DOS directory, so it will be accessible from any drive or any directory where you might have picture files. If you want it somewhere else, you'll need to change the PATH callout in line 30 of SLIDESHO.BAS and in SS.BAT. I find it convenient to store pix files in a compressed .ARC file (using PKARC) grouped together by mode. When I want to view them, I decompress the .ARC file into the RAMDISK (using PKXARC---the format for an archived file named S1PIXES.ARC is: PKXARC S1PIXES d:). After the files load, with a quick d:>ss I can start the show. Incidentally, this program is not configured to work with the Robot modes or the Wefax mode. Another feature added since the original release is the capability to make the SLIDES advance automatically. The number of seconds you want to dwell on each slide can be set in SYSTEM CON- FIGURATION, line 2050 as DL. Instead of N(ext), you key A(utomatic) to start the show. It will go through every pix in the directory and then start over again indefinitely. Q will exit sequence. If you get large numbers of pix in the same mode in one directory, you may have to raise the "files=" reservation in CONFIG.SYS to use AUTO mode. When you're all finished remember to clear out the RAMDISK if you used it for temporary storage and you're going to return to copying pictures; particularly Wefax which uses a lot of RAMDISK memory. TIFCONV.BAS If you want to create some picture files to transmit, this program will convert from the TIFF 640x480, 24 bit color format to the SSTV/FAX480 formats. We chose the TIFF format because it is the most common format used for transferring high color/resolution pictures between programs and is an available format from most frame grabbers. The typical frame grabber will accept images from any video source. I have tried this with both the Computer Eyes/RT and S.S.C. grabbers. For some reason, the picture information started at a different offset into the picture file in these two cases. LIST 205 in this program will show you where to make the change for this. You'll know when the offset is wrong as the re- sulting picture will have the colors scrambled. Change the offset by one and try again. Note that the TIF file must be 640x480 with 24-bit color so the file size is over 920,000 bytes. If it doesn't have that many bytes, it isn't an acceptable format. KY1S reports that he has used TIFCONV with the TEMPRA program and with PHOTO FINISH 3. WB7PAP found a Graphics Workshop 7.0 on Rimmer's BBS (tel:416-729-4609) which converts other formats very well. It is called GRAFWK70.ZIP. N9ARX reports success using Print Shop Pro for Windows. The last two are shareware. I believe all of these and other programs accept pictures in lower resolution formats which can then be converted to the highest resolution format that we use. The TIF file must be in a non-compressed format. I use the RAMDISK as temporary storage for this monster file and immediately convert it to a SSTV format for permanent storage. Since this program includes the VU program to show you the end result, you must transfer the SYSTEM CONFIGURATION from VU.BAS to lines 2000-3000 in this program. TIFLABEL.BAS and PCXLABEL.BAS You may have one of the fancier software programs to take the original TIFF file and add text titles and labels to it before converting it to the SSTV format. I don't, so a LABEL program was written to give some limited capability in this area. Not having a library of fonts and of different background patterns to paint the letters with, we made the program general purpose enough to use any font and any background pattern you can take a camcorder picture of or can obtain in a TIFF file format or in a SSTV format. There are a number of interesting patterns right in the room you are sitting in which will add interest to your labels---wicker chair back, tile floor, rug, venetian blinds, etc., etc. These two program accept TIF or PCX 1 bit (ie, two color) files which might typically come from a handscanner or one of the many PAINT programs of whatever font letters you may choose. Typically you can resize the letters to fit. The TIF or PCX file is used as a mask and where ever the file picture is black, the LABEL program inserts either a color which you can choose, or a cutout from any background file picture which you might have available. You can even use a pix you copied on the air as a background file. The effect is as if you cut the letters out of the background photograph and pasted it on your picture. You manually select where you paste it on. You can get a three dimension effect by pasting on a color mask, then going back through LABEL again, moving the mask a few pixels and pasting another color or background file on top of what's there. With multiple passes, you can get a variety of effects. You also can make a square or circular mask and place it to transfer a face or some other feature of one file to paste it over another. A mask file, K3BC.PCX which is 64 pixels wide, is included for you to try out this program on the SAMPLE.M1 pix. You can use SAMPLE2.94 as a background file. Or rename SAMPLE2 with a different mode suffix for a different background file, etc. I use the RAMDISK to store suc- cessive passes thru LABEL (under PATH/NAMES of d:a, d:b, d:c, etc.); then with SS (SLIDESHO) in drive d: you can view the pro- gressive results. Since these programs use VU for VUing, you must transfer the SYSTEM CONFIGURATION you settled on in VU.BAS to lines 2000-3000 in these programs. Some TIF 2-color files don't seem to work with these, but I have not found a PCX 2-color file source yet that doesn't work. Put the text in the upper left corner of the PAINT screen when you generate the mask. EXPERIMENTER'S INFO To simplify the use and modification of these programs by experimeters, some of the conventions used are detailed here. First of all, the file bytes are the raw data as received. If you sub- tract the number 138 from each of them and XOR the result with 63, you will get the actual color amplitude for that byte in 6 bit format. Conversely, you can take a picture in 3x6=18 bit format and convert each of it's bytes to the SSTV format by XORing each byte with 63 and adding 138 to the result. The symbol, LL, refers to total line length (measured in bytes/line) in a picture. This includes sync bytes, picture bytes, etc. The symbol L refers to the byte count in a single color frame line. This also is the number of pixels in the color picture. Since there are 3 colors, 3xL would equal to the line length, LL, if there were no sync bytes. In the AVT modes, there is no line sync, so there 3xL=LL. The symbol I is the mode chosen. Or in one case where two modes are used in a program, J is used for the second mode. The symbol FS is used for frame sync. If this is called out in a mode, then a routine is inserted which holds the program captive until a 1200 hz sync is received before it allows the frame to be copied. Parameter DE allows you to adjust the delay after frame sync before the picture copying begins. LT denotes line timing with LT3 being line timing for mode 3. D% represents the number of lines in the picture mode. DR$ is the letter assigned to the RAMDISK (with quotes, "d"). SW is the line sync window in TIME clock counts (approxi- mately in microseconds). EA is the number of bytes used by the line sync when it is present. In the viewing program, this same number is POKEd into memory location, &H3EA, which is where it got it's name. In the transmit program it is the bytes thrown away in each line of the file being transmitted and replaced by sync. It is identical to the above except in the non-synchronously copy modes , (11) and (22). VC is the video card choice. S% is the number of bytes a picture was scrolled to get it aligned for SAVEing. It is returned as an output when you run the VUing program. It gets converted to it's 4 byte form as S! in RT.BAS. SC is used in the transmit program and represents the number of 1/2 cycles of the sync frequency (1200 hz) transmitted on each line. LI is used as the number of picture lines in the TIFCONV program. This program also uses Z as the byte value to be inserted in blank bytes. Z=138 is white; Z=249 is black. The files as SAVEd have the picture color bytes placed in 3 successive groups of bytes, each group being L bytes long. Then the line sync bytes (if they are used in the particular mode) are tacked on to the end of each line. The DEF SEG statement in each of these programs tells the program where in memory to place the program. All of the programs are relocatable, so if you find interference between some TSR resident program and one of these programs, you may be able to move it up to keep from overwriting the TSR (typically, this shows up as a computer hang-up which can only be cleared by re-booting). You still need enough memory between DEF SEG and &HA000:0000 to accom- modate the pictures you want to copy. If you find all of your Robot pictures are initially too green or too purple, you can change the number 10 in line 1371 (in both memory locations) of RT.BAS to better center it for your particular tuning habits. If you find that you want to reset the default setting for the color registration on a mode, you can find out what the desired values are by first using C and X to get what you like with the VU.BAS program. Then when you return to BASIC, type PRINT PEEK (&H3EA). This will be the new value to poke into &H3EA for this mode. Then PRINT PEEK(&h15D) and call the value A. Then PRINT PEEK(&H15E) and call the value B. Then PRINT PT. The new value for L, the color frame width, then is L = A + 256*B + PT. These values are added back into the program and SAVE'ed. This capability is not available in the Robot modes. The color shades display at the beginning of the 256 line modes has my call sign (K3BC) superimposed over it. In order for you to change it to your call sign, you'll need to learn a bit about how two-color (or 1 bit) images are formed. If, for example, in the call sign array of bytes you wanted to make the first 8 pixels overwrite white, you would make the first byte equal to 255 or in hexidecimal, &hFF (which is 1111,1111 in binary). To paint the first 4 pixels out of 8, the first byte would be &hF0 (in binary equals 1111,0000). Look at the lines starting at 780 in the TX.BAS program, at line 3430 in VT.BAS, and at line 2400 in the RT.BAS program to see how to figure out what DATA bytes to include to get your call sign. Once you determine the DATA array for your call sign insert it in all three programs. If you have 6 characters in your call sign it'll be a bit crowded---time for an upgrade! Don't try to change the number of DATA bytes. If you're too lazy to figure this out, you can signal that to the world by changing all the DATA line bytes to 0, which removes the call sign. If you belatedly decide to save a picture and haven't yet overwritten it in D:a.p then you can recover by LOAD "RT" and then typing a temporary line---- 880 GOTO 890. Now execute the program choosing the same mode as was used to capture d:a.p. The picture will show up and you can scroll it to the proper position and SAVE it. You can move any file to d:a.p and re-scroll it this way if you don't like the initial choice you made when you saved the file. Or if you want to transfer a part of one file to another using LABEL, use this method to scroll the transfer image to where you want it, and use the new file as a background file. In the transmit program, each mode has it's VIS code poked into memory location &h3A5. The delay (in pixels) between the end of the VIS code and the beginning of the red frame is poked into memory locations &h523 (LSB) and &h510 (MSB). This delay is switched in by the poke, poke &h52B,227, and is used in S1, S2, and WR96. The pokes into &h373, &h374, and &h375 are to switch a path inside the program for modes which have the 16 line gray shade header. A few of you may have a SVGA card which only supports 640x400x256. You can still view up to 200 lines of picture, but the perspective stretches the picture vertically by a factor of 480/400 in the 240 and 256 line modes. The programs are constructed to use the 640x400 mode for the AVT94 (mode 6) only. There are a number of lines which state: IF I=6 THEN POKE &h113 or &H398 with some number. If you take these lines and eliminate the "IF I=6" con- straint you will use the 640x400 for all modes: specifically you delete the words "IF I=6 THEN" in each line and leave the POKE. In the RT.BAS program, the lines affected are 1765, 1815, 1875, 1925, 1995, and 2045. In the VU.BAS, VT.BAS, TIFCONV.BAS, and SLIDESHO.BAS programs the affected lines are 1590, 1635, 1685, 1735, 1787, and 1835. In PCXLABEL.BAS and TIFLABEL.BAS the lines affected are 1540, 1610, 1680, 1740, 1820, and 1890. Strictly speaking, you only need to eliminate the constraint for the partic- ular Video Card choice you are using. To my surprise, a few sys- tems have shown up with 640x480 but not 640x400. If you have this, just eliminate all of the above lines, and mode 6 will be painted in the 640x480 screen. COPYRIGHT NOTICE These programs were developed for the free use of other Radio Amateurs but since they might have other commercial use, I have registered them with the U.S. Copyright Office. Radio Amateurs are free to make copies for other amateurs provided no monetary compen- sation is involved. Any other use for commercial purposes is for- bidden without specific written permission from the author. Share- ware vendors may not reproduce them. Have fun, Ben Vester, K3BC 1/30/94