Updated 1-19-17


You may have noticed that it requires almost zero time to find any item in the stock table by the stock number. This is because all of the stock numbers are indexed and held in memory by the program. Unfortunately there is limited memory in DOS software to do this. The theoretical maximum would be 32,000 items but since some memory must also be used for other purposes the program becomes unstable with more than 26,000 items.

The other consideration is that one of the reasons that this program is free is to help the small to medium business compete with the Wal-Marts of this world. With some exceptions once a retail business grows large enough to carry more than 26,000 different items then it is a Wal-Mart type large business and should be able to afford commercially produced POS software.

Eventually I am going to be adding a "Customer accounts" feature to the POS program. This will allow you to bill customers later for the merchandise that they purchase today.It will also allow lay-aways and other similar transactions.

This is going to be a huge project and will require a long time to complete once I have started it, and I have not started it yet. I hope to have it finished eventually.

A "deal" is something like "Buy one, get one free", or "Buy 2 of this and get 50% off on that", or "Buy this and get one of that for $2.00 off", etcetera, etcetera, etcetera without end.

This program will not automatically format and process "deals." One reason is that there is an infinite number of possible deals. A "deal" can be anything involving all products, a group of products, or individual products. Individual or groups of products can be linked to each other or other groups of products. Even if you were able to do the quantities or links then what is the actual discount for every possible deal. Is it a percentage off, is it a monetary value off. And of course every deal would have a different percentage or monetary value off.

But let's assume that you have a list of all possible deals, tens of thousands of them. How would the program mark which product is part of which deal? When a single product is part of several totally different deals, how would you mark the product for that?

But even if that could be figured out, how much code would the program require to process any possible deal? My guess is that it would take more than the 50,000 lines of the code that currently makes up the program.

"But", you say, "I don't need all possible deals, I only need my deals." Very true, however if I give you your deals then it would only be fair to give the other users their deals and we are now back to and infinite number of deals.

So, for me at least, it is just impossible, therefore, no deals.

The data generated by the POS software is saved to your hard drive usually in the same folder that holds the POS program files. When you first start the POS software, or create a new register on your computer, the program will ask you to enter a file name, for example MYSTORE. The software will then create many data files that begin with that file name but have different extensions for different types of data, for example MYSTORE.POS, MYSTORE.TBL, MYSTORE.IDX, MYSTORE.REC, MYSTORE.PS1, etc.

If you have forgotten the name you gave to your register files then run the POSCONFG.EXE program. At the top of the main menu it will say something like "File name = THESTORE.POS" In this example the file name is THESTORE

If you contact me with a problem I may ask you to send one or more of your data files to me by attaching them to an email. Since I have no idea what name you gave to your register files I cannot give you the exact name of the file you need to send to me. Instead I will ask you to send to me something like the ????????.POS file. You must replace the ???????? with the name you gave to your register files. If you named your register files MYSTORE then you would send the file MYSTORE.POS to me. If you named your files HARDWARE and I asked you to send your ???????.TBL file then you would send the HARDWARE.TBL file.

If you wish to backup your register data files then you would backup all the files with names that begin with the name you gave to your register files. IMPORTANT: Some data files will be stored in a sub folder that will have the same folder name as the name you gave to your register files. So if your register file name is THESTORE you would not only have to backup all of the files that begin with the file name THESTORE but also the entire sub-folder THESTORE.

Writing software is my hobby, it is something that I like to do and would continue to do it even if no one else ever saw it. Originally I gave my software away to friends and relatives then the internet happened and I posted my programs there. Originally they were only the educational programs because my wife and most of our friends are teachers.

One day one of the users of the programs suggested that I sell them so I contacted 7 educational software publishers. The results were 3 no reply, 3 not interested, and one threatened to sue me.

Then it was suggested that I try to distribute my programs a shareware, ie. that I give away copies but if the users like the program they are supposed to send $5 to $20 to me. The result was that I had thousands of downloads and every month maybe $5 would come in. On the other hand my email about the programs dropped down to almost nothing. I guess that people thought that if they sent me email but they had not paid for the programs that I would somehow track them down in Siberia, or wherever, and try to collect the $5. And lastly, these are DOS programs and who is going to pay for that.

Now that I give my programs away I am out maybe $35 a year but I get some really interesting email, endlessly entertaining. And I am also asking for a $5 donation if you really like the Cash Register program. Surprisingly, every once in a great while someone actually sends in $5. How weird is that?

Currently the POS program is only available in English. The program does have a feature whereby the language printed on the receipts can be changed. Use the "Receipt language" feature in the POSCONFG.EXE program to change the language of the receipts.

Eventually the "Receipt language" feature will be expanded to allow the language of the entire program to be changed. However this will be a hugely difficult feature to impliment because it will require rewriting the entire program. Every label, instruction, and anything else that is presented in text in the entire program will have to be converted into variables and each variable will be a different length than the static text that is there now. And since I am not perfect, every change will introduce the possibility of a bug being added to the program. I estimate that doing the program rewrite will take 6 months to a year assuming that I do nothing else.

And this is only to allow users to translate the program into different languages, I will not be doing the translating because the only language I speak is English. Who knows when someone will translate this into some of the less popular languages that are out there.

Unfortunatly I have not even started because there are other, much quicker features, that people really need. I have no idea of when I will be able to even start this.

Changing the language in the source code of the program is not an option. I tried this once with a Spanish language version and it was a nightmare. It took two months to do it and then for the next several months I tried to maintain two separate version of the program, one in English and the other in Spanish. Everytime I made a change in the English version I had to add it to the Spanish version and then debug both. In the Spanish version I could never tell where I was in the source code because every string was in Spanish. Eventually I just gave up.

To get POS to start up in full screen try this. RIGHT click on the icon you use to start the POS program. Now left click on [Properties] then the [Screen] tab. Click on the "Full screen" button then [Apply]. Now close everything you just opened. Now when you click on the icon to start POS it should come up full screen. If it does not come up full screen then after starting one of the POS programs hold down the [Alt] key and tap [Enter]. You will have to do [ALT] + [ENTER] every time you start one of the POS programs.

Windows XP and later
When this program runs on some XP computers in full screen it will die when the program calls another file. For example when you are in the POS.EXE program and you want to go to the "reports" feature or the POSCONFG.EXE feature. If your computer exhibits this problem then you can still run this program in a larger window (see below). It has been reported that Vista (and later) computers will not run this program full screen at all but it will still run in a window.

Using the "right click on icon + properties, etc" thing does not set the the program to always open full screen under Windows XP. When you open the POS program in XP and it is in a window, in the upper left corner of the window will be a button that says [ C:\] when you click on this button a menu will come up, click on [Properties]. Under "Display options" choose "Full screen" and click [OK] on the bottom of the window. On the next window that pops up click [OK], the POS program should now be in full screen. I could not find a way in XP for the POS program to automatically come up in full screen when you start it. But [ALT] + [ENTER] is working fine here.

Here is something else you can try with XP and later Windows versions to get the program to display in a larger window.

Try this. When you open the program into a window, in the upper left corner of the window, to the left of the program name, will be a [C:\] or icon. Click on the this icon and choose [Properties] then [Font]

Select the "Lucida Console" font and then pick or type a font size. Click [Ok] and then on the next screen select "Save properties for future windows with the same title" and then click [OK].

You may have to click and drag the edge of the window to make it larger.

Another option for full screen is to run this program under DOSBox. This will work even is you do not have a 64 bit system Read this DOSBox

Since the POS program is free there is no money coming in to purchase hardware to test with the POS program so I really cannot recommend any.

However many POS users over the years have told me what types of hardware they use and what works best for them. Therefore I can give you general guidelines on what will work best with the POS program.

Receipt printers
Most important, the receipt printer you choose MUST connect to your computer through the parallel printer port and NOT through the serial port. USB printers will work if you use the APRINT6.EXE program. The printer must be able to print 40 characters per line as most do. Do not spend extra for special features like printing in colors, italics, bold, different fonts, graphics, etc. as the POS program does not support these features.

The cash drawer will attach to the printer and then the printer will pop open the drawer. This means that you will have to know the control code for the printer you purchase to get it to open the drawer. Here is a list of printers for which I know the codes http://keyhut.com/popopen.htm It would be a good idea to select one of these.

There are two basic types of receipt printers, impact and thermal. Impact printers cost less, are slower, use cheaper paper rolls, require ink ribbons, and the print does not fade over time. Thermal printers cost more, are quicker, use more expensive paper rolls, do not require ink, but the print fades over time.

Cash drawer.
Make sure that you get the type of cash drawer that connects to the receipt printer and

NOT one that connects to the serial port.

All "keyboard wedge" scanners that connect to the PS/2 keyboard port on your computer will work. The vast majority of USB scanners will work. Most serial scanners will work but you will have to make some changes to your Windows setup to get it to work.

After the scanner scans a barcode it will send a "termination character" to the computer to let the computer know that it is finished. The termination character that the POS program requires is [ENTER], [RETURN], CR, CR-LF, or ASCII-13 which are actually all the same thing. You will have to program your scanner to send this character after reading the barcode so make sure that you get a manual with your scanner to tell you how to do it.

Pole Display.
Only Logic Control brand pole displays have been tested. However since this is a serial device getting to work may be iffy. Make sure you do not get the "By-pass" type.

However a much better (and cheaper) solution to a traditional pole display is to use a second monitor like a 7 inch one. For more details look here Bigpole.htm

If you go to the "Rounding" feature of the POSCONFG.EXE program and change the "rounding" factor to "1" all decimals will be dropped from money amounts and the maximum money amounts will be increased by a factor of 100. For example the limits on the price of any item will change from .01 - 9999.99 to 0 - 999999.

If you set a rounding factor from "10" to "10000" then currency values throughout the program will be rounded to "1", however only on receipts and the sales screen will extra zeros will follow all currency amounts to make the values appear to be larger. For example if you set rounding to 1000 and have a price for something of 257 then everywhere in the program except the receipts and sales screen the price will be listed as 257, on the receipts and sales screen the price will be listed as 257000.

So how does that help? In most parts of the program there is no place to display and endless number of zeros. So if the value of the currency in your country is so small that a loaf of bread costs 2570000 then the program just cannot handle numbers that large. In that case what you have to do is to just drop the 4 zeros (and use a rounding factor of "10000") and list the price in the stock table as 257. In fact all the currency values in the program will have to be divided by 10000. You (and your local government tax buddies) will just have to understand that, and understand that currency values in the program are actually 1/10000 of the actual value, and to obtain the actual value the printed value must be multiplied by 10000. For example if the program tells you that the tax collected at the end of the day is 6539 then the actual tax collected was 65390000.

Well this is easy for you to understand and you should have to explain it to your tax buddies only once, but you sure do not want to have to explain it to every customer you have. So only on the sales screen and the receipts (what the customers can see) will the extra zeros follow every currency value.

Occasionally this program is used in a "mall" situation like a antiques mall or flea market where several vendors rent booths to sell their wares. However there is only one cash register and each vendor's merchandise must all be rung up on the same register. The problem is at the end of the day to provide each vendor with the information on what merchandise was sold for his booth and the total sales and taxes were collected for each vendor.

The easiest way is to consider each vendor to be an "employee". The program will allow you to ring up sales by employee, up to 56 of them. If you go to the "Employee setup" feature of the POSCONFG.EXE program you will be able to set "Do you wish to use an employee list for this cash register" to "YES" Then press [F4] to enter the employee names. For this purpose you will want to enter the names of the vendors as the employees. Now when you are ringing up a sale the first thing that will happen is that you will be asked for the employee number 1 to 56 (the names will be displayed for you to choose.) Pick the vendor you want to credit for the sale to as the "employee" and ring up the sale. At the end of the day, and BEFORE you close out the cash register from the main POS.EXE cash register program go to the "Reports" feature and print out an "Employee sales" report for each vendor. This will give you the same information as the register's closing receipt except it will be for each vendor separately. This however will not work if you have more than 56 vendors or if it would be possible to ring up the merchandise from more than one vendor in the same sale.

More flexible but more complicated to set up will be to use the stock table to split the sales by vendor. Go to the "Stock table" feature of the POSCONFG.EXE program and press [TAB] to set the "Maximum number of different items" to something other than zero. Now press [F4] to enter the actual stock table. It is assumed that before you do this that you have already entered the vendor names into the "Vendor list" of the POSCONFG.EXE program and have set up your tax rates (if any) also in the POSCONFG.EXE program. The number of possible different vendors is now limited to the number of slots in the vendor list which is 256.

The simplest way to set up the stock table is to set up one line for each vendor. All of the vendor's merchandise will be rung up using the stock number on that line. For the stock numbers the easiest thing to do is to use the position of the vendor in the vendor list as the stock number. For example the vendor in slot #1 of the vendor list will ring up all of his stuff as stock number 1. Vendor #34 in the vendor list will ring up all of his stuff as stock number 34. You can then put the name of the vendor in the "Description" column of the stock table. Also remember to set the tax rate for each vendor and to assign the vendor number in the "Vendor column" of the stock table. Here is a sample stock table...

      1  ACME CORP           1      0.00    0.00        0      1
      2  TOM'S WIDGITS       1      0.00    0.00        0      2
      3  JANE'S FRUITCAKE    1      0.00    0.00        0      3
      4  WICKER WORLD        1      0.00    0.00        0      4
      5  TOYS AND STUFF      1      0.00    0.00        0      5
      6  JACK'S JUNK         1      0.00    0.00        0      6

Now when you ring up a sale the program will ask you for the stock number for each thing being sold. Therefore you must make sure that each item being sold not only has the price for that item stuck on it but also the vendor's number. This method will allow you to ring up items from several different vendors in the same sale.

At the end of the day, BEFORE you close out the register go to the "Reports" feature of the main POS.EXE cash register program and print out a "MERCHANDISE REPORT - E. Total by vendor." This will give you a total of the net sales for each vendor. If a vendor has not sold anything it will not be in the report.

Remember that when you do close out the register for the day that when it asks you if you want to "Reset the merchandise data" to answer "YES" so that everything is reset to zero for the next time you use this program.

To make the program even more useful you can assign a group of stock numbers to each vendor. To do this you make the first 3 digits of the stock number set to the vendor's position in the vendor list and then let him assign the last 4 digits (this assumes that you are using 7 digit stock numbers. For example vendor #1could use stock numbers from 10000 to 19999, vendor 38 could use stock numbers from 380000 to 389999, and vendor #185 could use stock numbers from 1850000 to 1859999. This prevents two different vendors from using the same stock number. No vendor has to use all 10,000 stock numbers assigned to him and remember that the maximum total of different stock numbers that the program will track is 26,000 for all vendors combined. While the POS program will not require that all of a vendor's items be grouped together in the stock table it will make maintaining the stock table easier. Doing it this way will allow each vendor to list a description and a price for each item he is selling and different tax rates if required. Here is a sample stock table using this method....

  10001  GIRL'S PANTS        1     14.99    0.00        0      1
  10002  REBEL CAP           1      9.99    0.00        0      1
  10003  CANDLE HOLDER       1      5.00    0.00        0      1
  10014  ENGRAVING / LETTER  0      0.25    0.00        0      1
 420526  ANVIL / SMALL       1     12.00    0.00        0     42
 421528  IMPACT HAMMER       1     24.49    0.00        0     42
      0                      0      0.00    0.00        0      0
  18542  TRINKET BOX         1      9.99    0.00        0      1
1243652  SPRITE / 12 OZ.     2      1.29    0.00        0    124

Now at the end of the day when you do a "MERCHANDISE REPORT - E. Total by vendor." report it will sort the items sold by vendor and then by stock number. Each vendor will not only get a report of how much he sold but also how much of what was sold.

It is possible and recommended that if you have 56 or less vendors that you use both the "Employee" and the "Vendor list" methods. That way you can provide both a sales report and a merchandise report to each vendor.

Needless to say, whatever method you choose you should try it out before actually implementing this with sample data and sales to make sure that you understand what is going on and that you have got it correct.

Serial printers are the bane of all human existence, will probably not work at all, will not work at all under versions of Windows after Windows '98, will require a huge amount if time and effort to get it to work under DOS or versions of Windows from 3.1 to '98 assuming that you can get it to work at all which is doubtful, will require you to know the SPEED, PARITY, DATA BITS, STOP BITS and MODE for your printer. Serial printers are a really bad, terrible, thoughtless, horrible, depressing, lame, useless, agonizing, painful, pointless idea!!!!

Please, PLEASE, PLEASE do not try to use a serial printer with this POS software!

"Cash Register" is DOS software and expects to use all of your processor's cycles when it is running. This will slow down the operation of any other software that you have running in other windows. To fix this problem right click on the icon you use to start any of the POS programs then click on [Properties]. Now click the [Misc.] tab. Move the "Idle" indicator toward "High" and then click [Apply] and [OK] and close the Properties window. You will have to do this for each POS program file.

Sorry, but I do not release the source code for any of my software. This is particularly true for the Cash Register program.

The Cash Register program. has many things that must be hidden like the passwords and PIN numbers. It also has things that users must not be able to change like sales and tax amounts and transaction numbers. These things could easily be changed by anyone who has the source code and anyone with the source code could write a program that would change the hidden things and then release it on the internet making my program useless.

The POS????.EX file that you download is actually a compilation of several files that have then been compressed. To be able to run the program you must uncompress the files and split it back into its component files.

You must create a new folder on your hard drive. One named C:\POS would be a swell idea.

To create a new folder...

1 Using the Windows feature "My Computer" open the folder in which you want to create a new folder. If you just double click on the "C: drive" icon you will be able to open the new folder in the root directory of the C: drive, a good idea.

2 At the upper left of the "My Computer" window click on [File], then [New], and then [Folder]. The new folder will appear somewhere in the box below with a temporary name, usually "New Folder."

3. Find the "New Folder" icon and right click on it. Now click on [Rename] and type in the new name for the folder, the name POS would be a good choice, press [ENTER].

Now download the POS????.EXE file to your new folder. Now run the POS????.EXE file and the other files will pop out of it into the folder.

To start the program, run the POS.EXE program file.

Regular stock numbers must be all numbers because the program treats them as numbers, i.e. they are stored in a numeric compressed format so the program can hold up to 26,000 of them in memory allowing the POS program to very quickly find any item in the stock table. This would be completely impossible if the stock numbers contained non- numeric characters and had to be stored as 26,000 thirty character strings.

However you can use the vendor stock numbers to ring up items in a sale and vendor stock numbers can use any character. Go to the "Vendor list" feature in the POSCONFG.EXE program and the first thing it will ask you is if you want to "Search first ????? lines" This allows the Cash Register program to search the first ????? lines of the stock table for a matching vendor stock number. While on this screen pressing [TAB] will make the vendor stock number the default method of entering items into a sale. Remember that searching for a vendor stock number is much slower than finding a matching regular stock number so this setting allows you to limit the search. This means that items that you want to ring up by vendor stock number should be at the beginning of the stock table. Remember that if you set this limit to 1000 and the item you are searching for is in line 1023 that the Cash Register program will not be able to find it.

If you set "Search first ????? lines" to a number larger than zero then when you are ringing up an item into a sale you may press the asterisk [*] and the Cash Register program will allow you to enter a vendor stock number to ring up the item.

However all items must still have a regular all number stock number because all other parts of the program will refer to each item only by the regular all number stock number.

There is no Windows version of POS mainly because I cannot think of a reason to have a Windows version. And to create a Windows version would mean that I would have to stop working on the DOS version to write it and I still have many new features to add to the DOS version of POS.

A Windows version would do the exact same things that the DOS version does except that it would not run on many computers, it would have a much larger file size, and run slower. What would be the point?

Working on a Windows version would take up all of my time and therefore no new features would be added to the DOS version. The Windows version would take me 1 to 2 years to rewrite the 50,000 lines of code in the POS program.

Click on [BACK] on your web browser to return to the previous page, or
Previous page | Table of contents | Next page