HP 1650B Logic Analyzer on the Intel 86/30, Jan 2012

See the discussion on the Web page for Bill Beech's work with the HP 1650 and this card.

Here is the code snippet that is running on the Intel Multibus 86/30 . Note that the 8086 fetches words, so instructions can be pulled over multiple T0 cycles. T0 is the address write cycle for the next instruction fetch.

Here are the definitions (left to right on the STATE binary column):

RESET
READY
/INTA
ALE
/BHE
/RD
HOLD
HLDA
/WR
/S2
/S1
/S0

I connected all those other pins, but since the 8086 is in maximum mode, the CPU does not generate those signals. They are generated from S0-S2 in a 8288. /INTA, /BHE, HOLD and HLDA are valid, but are not occuring in the current situation. A16-A19 represent S3-S6 when not at T0. Clock is 5 MHz cpu clock (CLK). I sample on the falling edge of the clock.

			;*******************************************************
			;	START UP PROGRAM

 0000			START	PROC
 0000  B8 ---- R	MOV     AX,DATA             ;SETUP SS SEG REG
 0003  8E D0		MOV     SS,AX
 0005  B8 0100 R	MOV     AX,OFFSET STACKP    ;SETUP SP REG
 0008  8B E0		MOV     SP,AX
 000A  8C C8		MOV     AX,CS               ;SETUP DS REG
 000C  8E D8		MOV     DS,AX
 000E  E8 07B1		CALL	INIT		    ;INITIALIZE SBC
			ORG     03FF0H
 3FF0  EA		DB      0EAH
 3FF1  0000 R FC00	DW      START, 0FC00H

   MACHINE 1    -   STATE LISTING

  Label   >  ADDR     DATA       STATE       Time

  Base    >   Hex      Hex        Bin        Rel

                              RR       SSS
                              SD       210
                              TY

   -0016      00000    0000   100000110111    200 ns
   -0015      00000    0000   100000110111    200 ns
   -0014      00000    0000   100000110111    200 ns
   -0013      00000    0000   100000110111    200 ns
   -0012      00000    0000   100000110111    200 ns
   -0011      00000    0000   100000110111    200 ns
   -0010      00000    0000   100000110111    200 ns
   -0009      00000    0000   000000110111    200 ns		Reset goes low
   -0008      00000    0000   000000110111    200 ns
   -0007      00000    0000   000000110111    200 ns
   -0006      00000    0000   000000110111    200 ns
   -0005      00000    0000   000000110111    200 ns
   -0004      00000    0000   001000110111    200 ns
   -0003      00000    0000   000000110111    200 ns
   -0002      FFFF0    FFF0   000001111100    200 ns		T0 - address fo fetch instruction from		
   -0001      2FFF0    FFF0   000000111100    200 ns		2 indicates a fetch from CS
										high nibble is S6-S3 when NOT T0
   +0000      200EA    00EA   010000111111    200 ns		Trigger event RST low, RDY high
										data on the bus is EA 00, first 2 bytes from ROM
   +0001      200EA    00EA   010001111111    200 ns
   +0002      FFFF2    FFF2   010001111100    200 ns		T0
   +0003      2FFF2    FFF2   000100111100    200 ns
   +0004      20000    0000   010000111111    200 ns
   +0005      20000    0000   011101111111    200 ns
   +0006      FFFF4    FFF4   010001111100    200 ns		T0
   +0007      2FFF4    FFF4   001100111100    200 ns
   +0008      200FC    00FC   011100111111    200 ns
   +0009      200FC    00FC   010001111111    200 ns
   +0010      FFFF6    FFF6   010001111100    200 ns		T0 prefetch next instruction in sequence
   +0011      2FFF6    FFF6   001100111100    200 ns
   +0012      20000    0000   010000111111    200 ns		S2-S0 = 7, internal operation - 
										CPU processing jump far
   +0013      20000    0000   010001111111    200 ns
   +0014      20000    0000   010001111111    200 ns
   +0015      20000    0000   010001111111    200 ns
   +0016      20000    0000   011001111111    200 ns
   +0017      20000    0000   010001111111    200 ns
   +0018      FC000    C000   010001111100    200 ns		T0 Low memory FC00:0
   +0019      2C000    C000   000000111100    200 ns
   +0020      200B8    00B8   010000111111    200 ns
   +0021      200B8    00B8   010001111111    200 ns
   +0022      FC002    C002   010001111100    200 ns		T0
   +0023      2C002    C002   000100111100    200 ns
   +0024      28E40    8E40   010000111111    200 ns
   +0025      28E40    8E40   011101111111    200 ns
   +0026      FC004    C004   010001111100    200 ns		T0
   +0027      2C004    C004   001100111100    200 ns
   +0028      2B8D0    B8D0   010100111111    200 ns
   +0029      2B8D0    B8D0   010001111111    200 ns
   +0030      FC006    C006   010001111100    200 ns		T0
   +0031      2C006    C006   001100111100    200 ns
   +0032      20100    0100   010100111111    200 ns
   +0033      20100    0100   010001111111    200 ns


   MACHINE 1    -   STATE LISTING                            Page02

  Label   >  ADDR     DATA       STATE       Time

  Base    >   Hex      Hex        Bin        Rel


   +0034      FC008    C008   010001111100    200 ns		T0
   +0035      2C008    C008   001100111100    200 ns
   +0036      2E08B    E08B   011100111111    200 ns
   +0037      2E08B    E08B   010001111111    200 ns
   +0038      FC00A    C00A   010001111100    200 ns		T0
   +0039      2C00A    C00A   000100111100    200 ns
   +0040      2C88C    C88C   011100111111    200 ns
   +0041      2C88C    C88C   010001111111    200 ns
   +0042      FC00C    C00C   010001111100    200 ns		T0
   +0043      2C00C    C00C   000100111100    200 ns
   +0044      2D88E    D88E   011100111111    200 ns
   +0045      2D88E    D88E   010001111111    200 ns
   +0046      FC00E    C00E   010001111100    200 ns		T0 - call relative instruction
   +0047      2C00E    C00E   000100111100    200 ns
   +0048      2B1E8    B1E8   011100111111    200 ns
   +0049      2B1E8    B1E8   010001111111    200 ns
   +0050      FC010    C010   010001111100    200 ns		T0 - rest of relative offset + next instr
   +0051      2C010    C010   000100111100    200 ns
   +0052      2BB07    BB07   010000111111    200 ns
   +0053      2BB07    BB07   011101111111    200 ns
   +0054      FC012    C012   010001111100    200 ns		T0 - fetch next just in case
   +0055      2C012    C012   001100111100    200 ns
   +0056      20436    0436   010000111111    200 ns		internal processing of call
   +0057      20436    0436   010001111111    200 ns
   +0058      20436    0436   010001111111    200 ns
   +0059      20436    0436   010001111111    240 ns
   +0060      0011F    011F   010001111111    200 ns
   +0061      0011F    011F   010001111111    160 ns
   +0062      0011F    011F   011001111111    200 ns
   +0063      0011F    011F   010001111111    240 ns
   +0064      FC7C2    C7C2   010001111100    160 ns		T0 - address of call
   +0065      2C7C2    C7C2   000000111100    240 ns
   +0066      232FA    32FA   010000111111    200 ns		read next instruction
   +0067      232FA    32FA   010001111111    160 ns
   +0068      400FE    00FE   010001111110    240 ns		Write to SP:00FE S6-S3 = 4 is SP
   +0069      10011    0011   000001111110    160 ns		Loose RDY and die
   +0070      10011    0011   000001111110    240 ns
   +0071      10011    0011   000001111110    200 ns
   +0072      10011    0011   000001111110    200 ns
   +0073      10011    0011   000001111110    200 ns
   +0074      10011    0011   000001111110    200 ns
   +0075      10011    0011   000001111110    200 ns
   +0076      10011    0011   000001111110    200 ns
   +0077      10011    0011   000001111110    200 ns
   +0078      10011    0011   000001111110    200 ns
   +0079      10011    0011   000001111110    200 ns
   +0080      10011    0011   000001111110    200 ns
   +0081      10011    0011   000001111110    200 ns
   +0082      10011    0011   000001111110    200 ns
   +0083      10011    0011   000001111110    200 ns