Spin code help required for a hardware type (S-100 Computers)
monahanz
Posts: 3
Hi everybody, I am new to this forum. By way of background I am one of a small (but growing) group of people that work with S-100 Computers. These were the early hobby computers of late 70s early 80s. We utilize old boards but also design and utilize new S-100 boards for the S-100 Bus. If you want to find out more see my web site
www.S100Computers.com.
Anyway to the point. There has always been a frustration in the group with the lack of a good console IO video board to work with modern LCD displays. After reviewing various CRT controller chips etc. I decided to utilize the Propeller chip for keyboard input and its onboard VGA display for data output. A few of us designed and built and now supply such a board. See here for a description of this board.
http://s100computers.com/My%20System%20Pages/Console%20IO%20Board/Console%20IO%20Board.htm
The hardware worked out great and is very reliable.
Here is the problem. The software to interpret the IBM-PC style keyboard input was spliced together from some entries on this site. Its contained in a spin program called Keyboard.spin . I wrote a very basic program called ConsoleIO.spin to interact with this program to obtain the translated keyboard key and send it to the S100 bus. Again things work great and are very reliable.
Unfortunately however I cannot understand (nor can anybody else in the group) the ASM code in keyboard.spin that takes care of the CTRL and ALT keys. We cannot understand how to let the ConsleIO.spin module know if either of these keys are pressed.
Is there anybody in this knowledgeable group that could take a few moments to look at the code and help us out? The two modules are at the very bottom of this page.
http://s100computers.com/My%20System%20Pages/Console%20IO%20Board/Console%20IO%20Board.htm
Any help would be deeply appreciated as it will allow us to have a very functional board.
www.S100Computers.com.
Anyway to the point. There has always been a frustration in the group with the lack of a good console IO video board to work with modern LCD displays. After reviewing various CRT controller chips etc. I decided to utilize the Propeller chip for keyboard input and its onboard VGA display for data output. A few of us designed and built and now supply such a board. See here for a description of this board.
http://s100computers.com/My%20System%20Pages/Console%20IO%20Board/Console%20IO%20Board.htm
The hardware worked out great and is very reliable.
Here is the problem. The software to interpret the IBM-PC style keyboard input was spliced together from some entries on this site. Its contained in a spin program called Keyboard.spin . I wrote a very basic program called ConsoleIO.spin to interact with this program to obtain the translated keyboard key and send it to the S100 bus. Again things work great and are very reliable.
Unfortunately however I cannot understand (nor can anybody else in the group) the ASM code in keyboard.spin that takes care of the CTRL and ALT keys. We cannot understand how to let the ConsleIO.spin module know if either of these keys are pressed.
Is there anybody in this knowledgeable group that could take a few moments to look at the code and help us out? The two modules are at the very bottom of this page.
http://s100computers.com/My%20System%20Pages/Console%20IO%20Board/Console%20IO%20Board.htm
Any help would be deeply appreciated as it will allow us to have a very functional board.
Comments
So let's say the result is returned in keycode (being a word). Then the actual character is in keycode.byte[0] and the modifier in keycode.byte[1].
Are you aware that we have CPM running on the propeller under emulation? The program is called ZiCog and there are a number of pcbs that run this code usually with a 512KB SRAM. The N8VEM group have also been playing with the prop and interfacing it to the bus they use.
Very nice website! I see you already know Andrew Lynch (N8VEM).
As Kuroneko points out, you may need two bytes to specify all the keyboard codes. I don't think there are enough values in 1 byte to express all the keyboard combinations (eg ctrl, or alt, or ctrl and alt and a key). I wonder if you can alter things at the CP/M end so a keyboard input is two bytes rather than one?
As Cluso points out we have the Z80 emulated on the prop. One day I am going to build the perfect prop/Z80 combo board with a real Z80, ram, load up the ram from the prop so no eprom, prop does the I/O, keyboard, sd card, serial, display. I have got to use those Z80 chips in the shed somehow!
Thanks Kuroneko. makes complete sense, will try that
Currently we are doing 80286/386 and Cirrus Logic GP-5420 VGA S-100 boards so would be some distance off.