Wednesday, January 30, 2013

Nexus 7: first thoughts.

Have had a chance to play with the Google Nexus 7 that runs Android (I think was built by Asus ) for little over a month now.  Generally have a good thoughts about it though there are just a few reservations which I may discuss later. Since the unit has been out a while, you probably already know the specifications of the unit (you can use you web search engine to get the details if you have not.) I was lucky enought the get the 32 gigabyte version of the unit. Getting anything less than that could make real challenges for you.

What was the first thing I added to the unit. first was some experimentation with some home made stands. Even the dollar store had a plastic stand. I based one of my experimental stands off of it.






The main reason why I wanted the unit was to see how web applications work with touchpads and maybe also develop some software for the unit. Found out right way that the touchpads react differently than the traditional web browser does with web pages. That meant I would have to rewrite some code on the server to better accomodate the new technology. Even the Chumby had for the most part no problem with existing web pages. That leads to the second part about developing software for the unit. Well the Android development package despite preaching to the otherwise became pretty much closed. Or as they say, if it walks like a duck, talks like a duck, and acts like a duck. then it is a duck. The Android development system was forked. That means it was  copied and the copy is still open source. More about that at some other time.

In using the Nexus 7, I found that they had an app store by Google of course. There are a lot of good free applications that you can download.Some will automatcally download and install on your unit and others require you to give special permission to allow for installation of an application. You could also uninstall applications fairly easily, if you found a bummer of a program.

Installed several applications to help fullfill my needs. One was an secure shell application that would allow me to access the servers I manage so that I could access them as if I was at any computer using the keyboard to do admin duties. Another application was an RDP client that would allow me to remotely access remote systems using the gui interface of those systems rather than the command line as I would do with SSH. Had a bit of trouble with that. I may get out my old MSWindows XP box Insteal of using linux as a server to see If I mave the same kinds of issues, Then maybe I can remedy the problems I am having with rdp. The ssh app works just fine.

Though the Andoid development system is not really my cup of tea, I did download dosbox and "x11 basic"applications to do any special project I want to use. That also means all the source code I have developed for other systems can be used immediately without reinventing the wheel. Also downloaded an office package, but have not installed it as of yet. You really probably need and external keyboard to take advantage of that software.

For relaxation you can always listen to music from the web. Of that takes some bandwidth. Already have most of the music I like on a local server. I downloaded an applicaton that will play music from a server that supports the daap protocol. Traditionally daap was used in the Itunes world. Even Fruit has changed the way that works for them. Ironically I can access a daap server with no problem at all. Apple based systems do not want to access that kind of server unless you want to reinvent the wheel of your securty or your Apple Ipad or the like. Another reason I did not want an IOS based device. You can always get movies and other video from Youtube and the like. 





The last major area I wanted to talk about is connectivity. Have to admit that like most seasoned computer users, you like to attach goodies to your system. Out of the box, with the Nexus, 7 out of the box you are out of luck to add anything such as usb drives to your unit. Not to say you can not, but you are expected to do everything over the wifi connection. There is special hardware you can attach to the single microusb port, but that cost big bucks. My second gripe in that direction is that if you want to hook a usb drive to the Nexus 7 you have to have super powers to do that. That means you have to disable the security on your unit to use the device. Not good.

Another issue is that a lot of companies will not let you use a wifi enabled device at their location. Again you feel kind of frustrated. At home I do not like to run wifi either. In fact I have a special router just for wifi that usually stays off unless I have to use it. But there is an answer.   You can get what is known as a OTG (on the go) cable for your unit. Good luck getting one for your local Nexus 7 from a local brick and mortar store. You can get one from off the internet from places such as Amazon. One advantage of the OTG cable is that you can connect keyboards, mice, and "usb to ethernet" devices to your Nexus 7 without super powers.

After searching the web, I found way to modify an existing usb cable so that it works like an OTG cable. You do have to have a female to female adapter to hook up the extra goodies. The easy way would have been to just put an female adapter on the usb to micro usb adapter. I just took two usb female adapters and made an adapter cable (shown above). As a tech it always seems like you are making adapter cables such as the one in the last article to program microcontrollers. Now I can and do connect keyboard, mouse, and ethernet adapter to my Nexus 7. Though use of the battery is reduced by some amount when you do that.  Since I have made my own OTG cable, I will need to get a replacement for it. Off to the brick and mortar.....

Update:

OTG adapters are now being carried by more and more stores. Please get the professionally made cable.

Notice: do this at your own risk  Get a professional to help if you are the least bit unsure how to do it.  We are not responcible for and and all issues.  Do not do this on the cable that works with the charger!!!!!!!   Use a separate cable.



Tuesday, January 29, 2013

Atmel Avr microcontroller..

Arduinos are the hot item when comes to microcontrollers right now but there are others that will still do quite a bit and do it on less power. For example you can control your sprinkler system, have a burglar alarm system, and many other projects that will all run off of just a yard solar lamp.  A  burglar alarm system that does not run off the car's battery is a real plus. Virtually impossible to disarm unless you know where it is and can get to it before it goes off.




There are tons of projects for the Atmel 2313 (and related) chips in particular. You could make a toy for your child's holiday gift such as a homemade robot. That adds meaning to the gift given to give of yourself. Another thing I like about the micro-controller is you do not need some fancy setup to program it.  You can virtually use an old parallel cable and a computer with a parallel port that can run the free development package). The parallel cables are discarded by zillions. We made a special adapter that could be used for many things, but the principal is the same.


Once people hear about your projects, you may be asked to do one for someone else. Sideline business? If nothing else it will allow you to be more valuable to a potential emplyer. As they say "The more you know!"




Surprise your kids! (http://florin.myip.org/blog/how-make-halloween-creepy-blinking-eyes-atmel-avr-microcontroller)


Note: Some parallel port interfaces (especially newer ones) may require a few resistors to help protect the parallel port.

Friday, January 25, 2013

Cloud computing - IAAS.





Cloud computing what is it. It is a service of various types. Traditionally you have accessed a web server for your needs. There are actually many ways you can use "The Cloud" as a service (AAS). One that is becoming more prevalent is Infrastructure as a service (IAAS). Wikipedia defines it as:

"In the most basic cloud-service model, providers of IaaS offer computers - physical or (more often) virtual machines - and other resources. (A hypervisor, such as Xen or KVM, runs the virtual machines as guests.) Pools of hypervisors within the cloud operational support-system can support large numbers of virtual machines and the ability to scale services up and down according to customers' varying requirements. IaaS clouds often offer additional resources such as images in a virtual-machine image-library, raw (block) and file-based storage, firewalls, load balancers, IP addresses, virtual local area networks (VLANs), and software bundles. IaaS-cloud providers supply these resources on-demand from their large pools installed in data centers. For wide-area connectivity, customers can use either the Internet or carrier clouds (dedicated virtual private networks).
To deploy their applications, cloud users install operating-system images and their application software on the cloud infrastructure. In this model, the cloud user patches and maintains the operating systems and the application software. Cloud providers typically bill IaaS services on a utility computing basis: cost reflects the amount of resources allocated and consumed."

What a mouthful. That means anything you use on the computer comes from a other system(s) on the internet.  You do not have to put an operating system on your computer. You do not have to have a way of storing data locally. You have what is traditionally known as a dumb terminal. Does not mean you are dumb, but your computer system is controlled remotely. There has been a drive in this direction for a long time with the use of the thin client. Thin client is a low resource machine that uses servers on the network to do the heavy lifting so to speak.

Where I use to work, they used thin clients in the public access labs. Hopefully it would reduce support. The units they used were small desktops and you had to support them just like a regular desktop. You always were seeming to have to update the software on the units. Fortunately, I was not involved directly with all that. A better situation would have been to have a thin client without a tradtional operating system on the unit, but do have software that could be completely be loaded from the network. I made the suggestion to do that, but the ideas fell on deaf ears.

With IAAS, Sneaker support (having a technician to go out and correct problems) is reduced, All software issues can be remedied remotely from one central point. You also have the advantage that data is no longer stored on the local system. So someone could take the unit and and then not be able to exact sensitive information from the unit. All data is held in a central point, so making backups (duplicates of business data) easier to do. Only scraping the surface of what all can be done. Here is a url for a short very unprofessional video about what could happen when you bootup a system that has been set up for IAAS.


Ltsp boot example.

Actually do know what is going on and was just kidding of course. It has been a while, but I have talked about LTSP (Linux termial server project) before in an earlier article. Sort of an in house type of IAAS that companies can implement on their own.

More information at:
www.ltsp.org
http://www.instructables.com/id/Another-almost-free-computers-thin-client-set-up/

Alternative:
http://www.instructables.com/id/Using-Thin-Clients-a-quick-way-with-Debian-linux/

Update:
Did the same thing with an old Pentium 1 233 mhz and just 128 meg of ram. Remember the server will do all the heavy lifting.  Of course you will want to have the computer in a case!!  The P! did not support 1g nic card, which would have made the system really useful.



Video at: https://www.youtube.com/watch?v=D57e6_h8UXw

Thursday, January 24, 2013

Easy to make tablet stand.

Made some coat hanger tablet stands in another post using coat hangers, I wanted a stand that would be less likely to damage a touchpad and be easy to store while traveling. This what I dreamed of after seeing another idea.

Draw your pattern.
Trace it over two pieces of thick posterboard.
Cut out the pieces. (Just using one long piece is hard to fold.)
Double tape the backend of the two pieces together.
Bend and insert your tablet.




Update: yet another prototype stand. It did not work as expected, but worked well enough.



Wednesday, January 23, 2013

Where have all the i386 cpu's gone, long time ago...

Years ago there was a song called "Where have all the flowers gone". I sort of wanted to do an introduction based off of that.  In a way the Intel i386 based architecture is not gone, but there is certainly a new major player on the scene. The Arm architecture is the new kid on the block. Originally used for embedded systems, is now coming into the main IT stream. There are desktops, laptops, tablets (aka palmtops), servers and etc that the I386 based systems have done for so long. What is the advantage of the Arm cpu's?  They are cheaper, require less electrical power, and require less space just for starters.


The picture represents four different arm or arm derivative based devices that are all within a foot or so of each other. Almost like a whole network of devices.  None of them are the traditional Microsoft operating system based devices either. They are all using some kind of unix lookalike operating system. That is a good thing as it allows similar software to be used on many devices without a whole lot of additional development work to get software to run on the devices. Within the picture is a server, palmtop, network router, and a low end desktop. What are the devices in the picture?

First in the upper lefthand corner is an NSLU2 that was originally used as a networked address storage (aka nas) device front end. Linksys was kind enough to have built the unit so that you could bootstrap other operating systems onto the unit. Instead of running the original firmware, It is now running the Debian (squeeze) linux operating system. So instead of being a single purpose unit, it can now do all kinds of things. At this time I can still use it as a file server much like the nas. My main use for it is a music server (daap) and as a web server. At one time I even ran the famous wordpress blogging software using the apache web server. Even write my own programs for it to do special projects using the C language.

Next up is the Airlink101 network router. Originally the router had the company's firmware, but thanks to some enterprising souls, I use an alternative firmware known as DD-WRT.  DD-WRT enhances the capabilites to what many expensive commercial routers can do.  Many plastic box routers sold in the retail stores are now made so you can not use alternative firmware. To me that sure reduces the values of the units not to be able to upgrade them with third party software. There are exceptions though. Mainly I use the router for connecting to wifi devices such as a touchpad. I do not use wifi on the main router.  A bit of security there maybe. Then it is easy to just unplug the router when wifi is not used.

Down to the right, sitting on a table in a homemade white case is the infamous  Raspberry Pi. It is sort of a desktop, Using a Commodore 1702 monitor with it. Despite it's size, you can have a gui desktop, just like a traditional desktop. I sort of call it the NSLU2 with super powers. It also runs the Debian (wheezy) linux. One thing I like about it is I can swap the memory card, so one minute it is a desktop and the next, it is a network media streaming device. Sort of jack of all trades as it can also be a server. It also be used as a thin client for the Linux terminal server project.  Like the NSLU2, you can still program your own software on it. Both the NSLU2 have a great library of software you can download and install. No reason to reinvent the wheel for most things.

Lastly is the Android touchpad. Like the above unit there is a tremendous amount of free software you can install. My main needs were a portable remote desktop viewer, text based terminal for logging into servers to do management. running my own developed software, and lastly as a web client. There is so much software you have access to that is served from web based devices. We have our own local web server with many applications from business applications, educational, and recreational too. The Android tablet can also be used to bootstrap a network pc for software installation via Ipxe using a wireless connection. I could go on forever. But lastly sometimes I just like to use it for listening to music from the web.


Where have all the i386 cpu's gone, Long time ago. They are slowly being replaced with Arm based systems.

Wednesday, January 16, 2013

Update openwrt PC (x86).

More and more of the plastic routers you get from a retailer are limiting you from installling a third party firmware to make the unit more valuable. So it is nice you can put an old pc back to work and install the same kind of firmware you would put on the store bought routers. Also with the pc you can swap the nic cards for better nics without getting a whole new system.


Pulled out of the closet the pc I was using as a router and found that a few things have changed. I just went ahead and installed the latest openwrt kamikaze image on the system. What does the system have? Intel PII 266 mhz with 192 meg ram. The openwrt hard drive is only 2 gig. Thinking about using another case. The system actually has two drives. one with a minimal Debian linux to be able to get the latest image or dd (or install) to the openwrt drive. The Debian linux drive is usally left unconnected.






First thing I did was to change the dead motherboard battery.  Second  thing I did was change the password from the console.



There have been a few changes and a few quirks. When I cranked up the system it did not seem to see the wan (internet). so I had to do a couple of things. 

# Copyright (C) 2006 OpenWrt.org

config interface loopback
    option ifname    lo
    option proto    static
    option ipaddr    127.0.0.1
    option netmask    255.0.0.0

config interface lan
    option ifname    eth0
    option type     bridge
    option proto    static
    option ipaddr    192.168.6.1
    option netmask    255.255.255.0

config interface wan
    option ifname eth1
    option proto dhcp

First I had to add the wan interface to the /etc/config/network file. Those are the last three lines. then I had to bring up the interface with: (ifup wan)

# ifup eth1 


I also changed the default ipaddress of the lan from 192.168.1.1 to 192.168.6.1 so as to not interfere with my local network.

local network 192.168.1.x) > router > private network (192.168.6.x)

Then there were changes to some of the commands. You used to use ipkg, so now to update the system you would use (opkg replaced ipkg):

# opkg update

You can ssh root@openwrtbox and do everything remotely from the command line.


So far so good. Then I tried to access a web interface remotely. Did not work, So I had to install a web interface to the system. There are actually three to choose from. I chose Luci or the first on the list suggested in the install notes.  To do that you have to add the repository (where to get the files from). So you add that repository to the /etc/opkg.conf file. In this case it was just one line or the last line in the file:

src/gz snapshots http://downloads.openwrt.org/kamikaze/8.09.2/x86/packages
dest root /
dest ram /tmp
lists_dir ext /var/opkg-lists
option overlay_root /jffs
src luci http://downloads.openwrt.org/kamikaze/8.09.2/x86/packages

Now you let the system know the file has changed, so again you do:

# opkg update

The you need to install the web interface. There are quite a few modules you can install, but I just did the basic interface. You can add more later.

# opkg install luci-web

At this point it would not hurt to do a reboot. You should then be able to see the router's web page.

Cool!  Almost forgot. If you have more than one pc to connect to the router, you will need to get a switch.

Note: Some people say that using a pc for a router has much better throughput than the plastic store bought routers. Your mileage may vary. 
May replace the existing hard drive for a compact flash adapter. Required less energy and no moving parts.

Monday, January 14, 2013

One last step into assembly.

Lets play with assembly language programming one last time.  This time let’s use dos assembly language programming. A program is a set of instructions much like a recipe. With this recipe, we will have to use commands like you might use stir in a recipe.To make this recipe, we will use debug.com which is sort of a simple interactive assembler/disassembler. Our goal with the program is to print out the letter A. Now that seems a bit simple, but you have to start somewhere. So fire up debug from the command prompt. We are going to use dosbox (dos simulator) to make it easy to capture images. Thall shalt document. But first let us look at the letter A. If we went to an ascii  (american standard code for information interchange) table we can see the letter A is 65. So far so good.. But the computer does not recognize that nunber as the letter A. You remember base 10 arithmetic. where you have ten fingers to work with to do math. Well the computer in this case has 16 fingers or base 16,.so we have to translate that base 10 A to a base 16 A. Base 16 is also known as hexadecimal. Fortunately there is a chart to do that so we do not have to calculate it. So base 10 A is 65, therefor base 16 A is 41. So we will have to use 41 to let the computer know we want to print out the letter A. Seemed like a lot of work, but it is not really.
Screenshot from 2013-01-14 03:21:09
The chart confirms the 41 is the letter A. Your computer's brain has temporary storage locations known as regisiers. You could equate them as internal mail boxes.  We have two registers we will use dl and ah for the values we need to use.  We also want to use some commands not unlike stir for a recipe. In this case we will use a mov command to put data in the registers or mail boxes we just talked about. Lastly we will use the int command. That tells the computer to stop what you are doing and go do some special commands. What happens is Dos has some built in instructions that we can use to save a lot of programming.  We will let dos do all the hard work.so all we have to do is to let Dos know what we want done. Lets put those instructions together.
mov dl, 41  ; So we are moving the letter A into a register, so the computer knows what to print out.
mov ah, 02 ; We are letting the computer know we want the letter A to be printed to the screen. 02 stands for the screen
int 21 : there is that command that says hey dos, print out what is in register dl using the output location in register ah.
int 20 : Says stop this program and go back to where I was before I started the program.
That is all there is to the program. if you have started debug you should see a dash prompt. Type a100 to let the computer know you want to enter some instructions. So enter the instructions.and then hit enter on a blank line. you should get the dash again. Let’s see if our program works!. press g and then return. You should the the letter A on a separate line, and you should get the dash prompt again. Neat!! You entered and assembled your first program. Tada!!!
Screenshot from 2013-01-14 03:07:44
Now lets see what memory looks like where you entered your program.  Type d100 and return. What is there seems unreadable except  the 41, 02, 21 and 20 you typed in. b2 stands for mov into ah and b4 stands for move into dl. cd stand for int.  If that seems hard to remember you can always translate back what you keyed in. (aka unasemble. So type in u100, 107 and you should see your program again.
Screenshot from 2013-01-14 03:11:59
You can display memory again with the d100  use the g command to run the program. if everything was typed correctly, you should see the letter a.to see nothing has changed. If you turned off or reset the machine the program would be gone.
Screenshot from 2013-01-14 03:14:44
Now do not be afraid, but we are going to wipe out the program.press e100 and return. You are show the old numbers but you want to replace each one of them with 0. Once you are done, do the d100 and look at the memory. so your program is gone. No problem. We can do the e100 again and type in the numbers again b2 41 b4 02 cd 21 cd 20. when you get back to a prompt Type a g and return. you should see your program run again. Cool. What that means is you can enter the assembly code or the hexadecimal numbers for your computer to display the A.
Screenshot from 2013-01-14 03:15:17.
If you type the u100, 107 you can see the original code you typed in. Cool. If you wanted to have sentences print out you will use different code as doing thoie three lines over and over can be a challenge. Doing assembly on most machines is very much alike what you have just done, but the commands may be a dit different.
Some of the early computer cartoons dealt with programmers who were really thick glasses because of all the numbers they had to look at. Things have changed. Enough of assembly, so you do not have to get the thick programmer glasses.

Rabbit ears.

Finally testing some over the air foil based antennas
Also wanted to test the composite output of an old computer I have made.
tv4pic
Next antenna, I think is a gray-Hoverman antenna. I tried to follow the specs the best I could.
tv2pic

The last antenna I tested was a fractal based antenna. it was definitely directional.
P000-256-274-537-f1016

Wednesday, January 9, 2013

Right to disassemble.

In the last article, I talked about looking at programs and disassembling them. What is that really all about. Let us take the very simple program hw and run it.

$ ./hw
Hello world!
$

The program hw printed out the famous Hello world. We can understand that, but let's look at what the computer sees to do that program.

$ cat hw
� �̀Hello world! ( ���� �����
.shstrtab.text.data
� eddie@oedt01:~$ ��" ���

Obviously garbage. At this point we can not really use that output for our needs. Remember I talked about a disassembler?  It changed that gobbletygoop in to something that a programmer might use.  Let's try it.

$ objdump -D hw

hw:     file format elf32-i386


Disassembly of section .text:

08048080 <.text>:
 8048080:    b8 04 00 00 00           mov    $0x4,%eax
 8048085:    bb 01 00 00 00           mov    $0x1,%ebx
 804808a:    b9 a4 90 04 08           mov    $0x80490a4,%ecx
 804808f:    ba 0d 00 00 00           mov    $0xd,%edx
 8048094:    cd 80                    int    $0x80
 8048096:    b8 01 00 00 00           mov    $0x1,%eax
 804809b:    bb 00 00 00 00           mov    $0x0,%ebx
 80480a0:    cd 80                    int    $0x80

Disassembly of section .data:

080490a4 <.data>:
 80490a4:    48                       dec    %eax
 80490a5:    65                       gs
 80490a6:    6c                       insb   (%dx),%es:(%edi)
 80490a7:    6c                       insb   (%dx),%es:(%edi)
 80490a8:    6f                       outsl  %ds:(%esi),(%dx)
 80490a9:    20 77 6f                 and    %dh,0x6f(%edi)
 80490ac:    72 6c                    jb     0x804911a
 80490ae:    64 21 0a                 and    %ecx,%fs:(%edx)


It still seems kind of cryptic, but you can see some what might be computer instructions there. So the text is the program and the data is what we want to print out. Wait a minute do you say as you do not see hello world. No problem. Hello world! is translated into ascii in hexadecimal format. Talked about that before where the computer encodes the characters. How can we prove those are the right characters? We can use a bit of code to manually translate the characters into hexadecimal. With the data, you can ignore the commands on the right hand side for now.

$ echo -n "Hello world\!" | od -A n -t x1 |sed 's/ /\\x/g'
\x48\x65\x6c\x6c\x6f\x20\x77\x6f\x72\x6c\x64\x5c\x21

Notice the hexadecimal numbers are the same from the print out left hand side to the conversion we made. So the data is there. Maybe one of these days, I will go into more detail, but that is all for now.


Update: Windows RT limitations overcome with the knowledge of assembly language. Apparently Microsoft is a company that only wants you to use equipment they way they want you to, not the way you want to.
More details:
http://hackaday.com/2013/01/09/unsigned-code-running-on-windows-rt/. \
https://surfsec.wordpress.com/2013/01/06/circumventing-windows-rts-code-integrity-mechanism/.

Monday, January 7, 2013

Thanks, Jim!!

Like to thank the late great Jim Butterfield for getting me into assembly language programming for the 6502/6510 so many years ago. So lucky to be able to have taken a class in person with him and others who wanted to learn. Most of which I have forgotten, except for the techniques. That was a time when Commodore gave out information about their machines. They were open source before open source was ever coined as a term. You could get documentation about the c=64 by the truckload.  Think I had most of the Compute books and many of the magazines available at the time. My brother first had me interested in the Vic 20 and eventually the Commodore 64. To be able to use a monitor and a keyboard was awesome compared to the punch cards we had to use on an old IBM 360 model 40 to learn Fortran in college.

Anyway, some things have never changed. Companies want to prevent you from using your equipment to the fullest. A company that is no longer around made a third party modem that exceeded the abilities of the Commodore modem.  A modem allows your computer to send and receive electronic data over the phone line. With the internet, no one really uses them anymore. Like many people, we bought that third party modem for it's extra capabilities. Unfortunately, the software that came with the modem was less than useful. When you tried to use the modem software for the Commodore modem, the modem did not respond. Many many people were preturbed by this to say the least. My understanding was that the sales of the modem subsided when the general Commodore computing public found out.

You could not return the modem back to the store as their shrink wrap agreement virtually prevented you from doing that. Thank goodness the courts have since outlawed such agreements. What to do? What to do? Research. Now the tools used in using 6510 assembly language become extremely valuable. You needed to examine the software for the third party modem to see how it worked. You also needed to know how the existing Commodore modems worked so you could examine the differences.  The software for the third party modem was in ones and zeros that only the computer could understand. You needed a program called a disassembler to translate back the one's and zeros back to something that was human readable to an assembly language programmer. There were many available at the time. Tricky was the fact that the maker of the third party modem, did not want you to modify that is change their program. Today many companies do not even want you to examine their programs or code, so they make you agree to not look at the code. Some companies like a certain company from Japan gets a bit anal about it.  No problem. had no intentions of modifying their code.

Need a little back ground here. Every machine has what is known as internal memory or as it known as ram. You would think you can use all the ram for you own use. That is not exacly true. Some of the memory or mailboxes are for the computer to send and receive data from the many parts of hardware attached to it. That is exactly what the modem does to send and receive data. Generally everyone tries to use the same mailboxes to remain compatible with other hardware. What the third party modem maker did was to use different mailboxes or memory locations in the operation of their modem. Not cool. So now it was time to examine the software to see where the new mailboxes were located. With a little detective work we eventually found them. Now all we had to do to use software for the Commodore modem with that modem was to change the code so it looked at the correct mailboxes.

Back then there was not that much software, so you wrote most of the software you needed for your own special needs. Ironically, if the software for the third party modem had been better than that the software for the Commodore modem, no issues would have ever been raised. People want the best, not just what you allow them to have. Ironically the company that made the third party modem had been more open with their modem, they would have done much better in the marketplace.  Something that companies today should take heed of. Again Thanks Mr. Butterfield for allowing me to create better software from the third party software with what you taught us.

Note: you may never really program in assembly for most projects, but it is good to know for the special situations like in this article.

Update:
Online 6502 simulator: http://hackaday.com/2013/02/05/learn-a-little-assembly-language-for-the-6502-processor/
Actual code site: http://skilldrick.github.io/easy6502/

App store not always required.

Feel like App stores and epub sites have too much control over your commuting computing devices. Well you are not alone. That is the general feeling from all the people who have seen ebooks and or applications either locked down or mysteriously missing. You do not feel as if you own the touchpad or the like. Chances are the web browser on your touchpad, will never be tampered with except for being updated.  Too many local applications on your device can also clutter up storage space. 

Picture

 What can be another option. You can use your own web server, or lease on-line web space, or use a web hosting service to use your own web applications. In earlier articles, I have talked about how you can write your own progrems for web use. You can actually get quite a few web based applications that are open source from the likes of sourceforge.net and other sites if you do not want to reinvent the wheel. There are so many programs available, from cooking to advanced business application like enterprise resource planning.  I have done several instructables about web  that you might be itnerested in at: http://www.instructables.com/id/Web-related/


The nice thing about using as much web based software as you can is that you only have to update just a web server setup and not hundreds of desktop machines when updates come out for the software you use, Using the web also makes software compatible across platforms. Your need for a particular platform is lessened. It does not matter whether you have Android, Apple , Microsoft, Linux, BSD, Unix, or a host of other platforms as long as you can use a browser.


What is really interesting is that  you can take a device such as a Raspberry Pi (under fifty dollars) that only uses a few watts of power and let it be your web server, so the need for a hosting service is becoming less and less a necessity. If you wanted to run a blog from the Raspberry Pi you can easily do so with open source software such as Flatpress.



 You can get more information about setting up a blog on a Raspberry Pi based web server at:  http://www.instructables.com/id/Raspberry-Pi-simple-blog-server/. Much better than refrigerator magnets!  Not so long ago there was a device from HP that was pulled from the market for alleged lack of software. Nothing could be further from the truth. Just a real bad bit of marketing.  You do not have to go to the apps store always to get some really fine software. And if it is on your server, only you can restrict the use of it. Freedom!

Note: The Android development kit or SDK is now a closed source project. Android in no longer free. Alleged exerpt from the new license agreement

"3.3 You may not use the SDK for any purpose not expressly permitted by this License Agreement. Except to the extent required by applicable third party licenses, you may not: (a) copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the SDK or any part of the SDK; or (b) load any part of the SDK onto a mobile handset or any other hardware device except a personal computer, combine any part of the SDK with other software, or distribute any software or device incorporating a part of the SDK."

Wednesday, January 2, 2013

The mighty parallel port.

Nowadays people use the Arduino and the Raspverry Pi to control all sorts of motors and other things. but also older computers can do the same thing with the parallel port. In fact, you can add several parallel port cards to even make a cnc machine, http://www.machinegrid.com/2008/12/parallel-port-tutorial-part-1/  is a good article about using the l293d chip as what is known as a h bridge with the parallel port.


Note: In Qbasic you can control the parallel port with

out 888, 0

instead of

outportb(0×378,0×00);

as used by the C language.

Simple camera adapter.

Had a tripod, but the digital camera did not have a place for the screw from the tripod. No problem. a bit of pvc and a nut now allows the camera to have new uses.