PDA

View Full Version : Wanted: simple IMSAI 8080 testprogramm



alker
September 20th, 2010, 03:31 AM
Hi, I have brought up my IMSAI to the blinking lights.. but how can I test it if it is working properly? I checked on the net some demo-proggies but the result was not what it should have been (like the program from billdeg which is not working - http://www.vintagecomputer.net/browse_thread_record.cfm?id=344&tid=1)

My IMSAI has the original MPU card; does it have to have also a working memory board so that it can perform? I have several s-100 mem boards.. but how can I check them if they work?

It would be highly appreciated when someone could post a simple test program.

glitch
September 20th, 2010, 08:15 AM
Yes, you do need to have at least one memory board installed, and it needs to be addressed to 0x0000. Once you've gotten one installed, you can check its functionality by depositing a known bit pattern into memory locations (I use 0xAA because it's binary equiv is 0b10101010 which is easy to pick out) and then examining those locations: if the output is not the same as the input, you've got a bad RAM board.

After you're certain your memory board is working, then you can input a test program and try it out.

alker
September 20th, 2010, 01:11 PM
thanks for the info! ok.. so I have to check all of my memory boards if one is working.. this site is a great help: http://s100computers.com/ for S-100 datasheets.
Would you be so kind and describe me the mem test a bit more in detail? I think this would also help others.. I'm still starting: it would be very helpful for me when you could explain it from turn "the machine on" and very very simple like billdeg here (http://www.vintagecomputer.net/browse_thread_record.cfm?id=344&tid=1).

thanks for your help! Maybe I can write a book afterwards "IMSAI for dummies" ;-)

glitch
September 20th, 2010, 05:59 PM
You really just need to find one working board, then you can use an actual program to test the others.

Now, I don't actually own an IMSAI, but I've used a front panel before -- some old PDP system, I believe (played with it at a display). I found a high-res pic of the IMSAI 8080 front panel, and that's what I'll be going off of. Just keep in mind I've never actually used an IMSAI! (but if anyone wants to send me one or the CP-A card, I'd be happy to write a guide to the front panel!)

A note: 0x is the prefix I use for hex data. 0b is the prefix I use for binary data.

First off, we're going to see if our RAM board is at all functional by depositing a single byte and then recalling it. Turn on the IMSAI with the CPU card, CP-A front panel and NO RAM BOARD INSTALLED. Push the RUN/STOP switch down to STOP. Push the RESET/EXT. CLR switch up to reset the machine. Set the address toggle switches to all off (all 16 down). Push the EXAMINE/EXAMINE NEXT up toward EXAMINE. The ADDRESS BUS LEDs should all go out to represent address 0x0000. The DATA BUS LEDs will display whatever exists at that address...the DATA BUS LEDs will be either all on or all off. Remember which they are, as this is the condition of the data bus without a RAM board.

Turn off the IMSAI, insert your RAM board jumpered for 0x0000, power on, and reset. Repeat the process of examining address 0x0000: there should be a bit pattern there that's different from what you saw without a RAM board installed. If it's not, you have a problem with your RAM board...either jumper settings or a fault. If you do see something there, or just to double-check even if you don't, set the ADDRESS-DATA switches to 0b10101010 and push the DEPOSIT/DEPOSIT NEXT switch up toward DEPOSIT. The DATA BUS LEDs should now display 0b10101010. If it does, RESET the IMSAI, and examine 0x0000 again: it should still contain 0b10101010. If it doesn't, there's a problem with your RAM board: if it contains the value originally observed when you first powered on and EXAMINEd 0x0000, it may be write-protected. If not, but the data is still different, you may have a stuck bit somewhere.

As long as that works, you know your first position in RAM is alright. You should then set the ADDRESS-DATA switches to 0x10101010 again, and press DEPOSIT. Now press DEPOSIT NEXT, and the ADDRESS BUS LEDs should increment by one (they should now display 0x0001). Do this a number of times, and then reset the IMSAI. EXAMINE 0x0000 again, and press EXAMINE NEXT to make sure 0b10101010 has been loaded. You can continue this for the entirety of the RAM board, but that's tedious! Verifying a few dozen bytes at the beginning of RAM will be enough to let you get started with further testing.

The next test is a simple HALT test. Reset the IMSAI, EXAMINE 0x0000, and then DEPOSIT 0x76 (0b01110110). 0x76 is the opcode to HALT the 8080. Press the RUN/STOP switch up to RUN, and the processor should HALT (does the HLTA/WAIT/etc LED light for this? Someone with experience might enlighten us). The RUN LED should stay off. If this works, your 8080 is reading from RAM and HALTing correctly.

The next test is a little more complex. We'll load some opcodes into RAM that will output something on the PROGRAMMED OUTPUT port, 0xFF. Reset, STOP, et c., and follow these:

EXAMINE 0x0000
DEPOSIT 0b00111110
DEPOSIT NEXT 0b10101010
DEPOSIT NEXT 0b11010011
DEPOSIT NEXT 0b11111111
DEPOSIT NEXT 0b01110110
EXAMINE 0x0000
RUN

0b10101010 should show up on the PROGRAMMED OUTPUT LEDs. If it does, your IMSAI is probably in working condition!

Lawrence Woodman
September 20th, 2010, 10:29 PM
Alker,

Once you have got the memory board working, I have a little program which I wrote that may be of interest to you. I don't have a real IMSAI, but have played with an emulator that allows you to control the front panel. I covered how the program works and how to enter it in an article: Writing My First Program To Toggle In To The IMSAI 8080 (http://techtinkering.com/articles/?id=11). After writing the article someone who had read the article tested it on their real IMSAI and there is a video of it running on that machine in the article.

Hope this helps


Lorry

alker
September 21st, 2010, 10:47 AM
Hi Lorry, thanks for the info - I already know your website very well ;-) if you search for IMSAI programms your site is on the top sites... I really wonder why there are not more programmes on the net. I had to read your site several times until I understood that with 0000 1110 are meant the switches from 7 to 0 ;-) [I'm no native speaker too]
I did not try it until now because my wife did not give me the time needed to enter the proggy ;-|

Ok, so I will struggle 1st with my wife to allow me some time and find a working mem board - I'll keep you upated!

mloewen
September 21st, 2010, 04:37 PM
Alker:

The short demo program on Bill Degnan's site runs too fast for you to see the lights changing - we talked about this on the MARCH list. Here's a version that incorporates a user-settable delay from the left switches (with a tip of the hat to Lorry):

; Rotating bit, variable delay read from panel
0000 3E FE MVI A,0xFE ; Load initial display value (inverted)
0002 D3 FF OUT 0xFF ; Display it
0004 07 RLC ; Rotate the bit left 1 position
0005 47 MOV B,A ; Save it
0006 DB FF IN 0xFF ; Read the switches for the delay
0008 3C INR A ; Make sure it's greater than zero
0009 57 MOV D,A ; Load it into outer loop counter
000A 1E FF MVI E,0xFF ; Load the inner loop counter
000C 1D DCR E ; Decrement the inner loop counter
000D C2 0C 00 JNZ 0x000C ; Loop until zero
0010 15 DCR D ; Decrement the outer loop counter
0011 C2 0A 00 JNZ 0x000A ; Loop until zero
0014 78 MOV A,B ; Restore the display value
0015 C3 02 00 JMP 0x0002 ; Loop forever

The more switches set to 1, the slower the bit will march.

Lawrence Woodman
September 21st, 2010, 10:47 PM
Hi Lorry, thanks for the info - I already know your website very well ;-) if you search for IMSAI programms your site is on the top sites... I really wonder why there are not more programmes on the net. I had to read your site several times until I understood that with 0000 1110 are meant the switches from 7 to 0 ;-) [I'm no native speaker too]
Glad you found it of interest, I didn't realize that article had ranked so high on google.



I did not try it until now because my wife did not give me the time needed to enter the proggy ;-|

Ok, so I will struggle 1st with my wife to allow me some time and find a working mem board - I'll keep you upated!
I know how you feel, I'm sure we're not the only ones struggling with this one!

litterbox99
September 22nd, 2010, 03:21 PM
Alker,

Once you have got the memory board working, I have a little program which I wrote that may be of interest to you. I don't have a real IMSAI, but have played with an emulator that allows you to control the front panel. I covered how the program works and how to enter it in an article: Writing My First Program To Toggle In To The IMSAI 8080 (http://techtinkering.com/articles/?id=11). After writing the article someone who had read the article tested it on their real IMSAI and there is a video of it running on that machine in the article.

Hope this helps


Lorry

I toggled in this very program and it does work on my Imsai.
Here's the "one's & zero's" so you can try it yourself;

1 0000 1110
2 1111 1111
3 0001 0110
4 0000 0001
5 0111 1010
6 1111 1110
7 1000 0000
8 1100 1010
9 0000 1111
10 0000 0000
11 1111 1110
12 0000 0001
13 1100 0010
14 0001 0010
15 0000 0000
16 0111 1001
17 0010 1111
18 0100 1111
19 0111 1001
20 1111 1110
21 0000 0000
22 1100 0010
23 0001 1110
24 0000 0000
25 0111 1010
26 0001 0111
27 0101 0111
28 1100 0011
29 0010 0001
30 0000 0000
31 0111 1010
32 0001 1111
33 0101 0111
34 0111 1010
35 0010 1111
36 1101 0011
37 1111 1111
38 1101 1011
39 1111 1111
40 0011 1100
41 0000 0110
42 0000 0010
43 0001 1110
44 1111 1111
45 0001 1101
46 1100 0010
47 0010 1100
48 0000 0000
49 0000 0101
50 1100 0010
51 0010 1010
52 0000 0000
53 0011 1101
54 1100 0010
55 0010 1000
56 0000 0000
57 1100 0011
58 0000 0100
59 0000 0000

When your done and it's running, use the left most
bank of switches to change the speed. This was
my first program I got to run :-)

Todd