IBM 5100 Restoration in progress

Christian Corti cc at informatik.uni-stuttgart.de
Fri Mar 20 04:37:11 CDT 2015


On Thu, 19 Mar 2015, Santo Nucifora wrote:
> Screenshot is here:
> http://vintagecomputer.ca/wp-content/uploads/2015/01/exeros-5100.jpg

Ok, here we go:

0000	0004		DW	0004		; R0L0
0002	0000		DW	0000		; R1L0

; ----------------------------------------------------------------------

 			; Clear memory from $0008 to $01FF

0004	1FFF		CTRL $F, #$FF		; Reset all devices
0006	8200		LBI R2, #$00
0008	022D		MLH R2, R2		; R2 <- $0000
000A	0324		MOVE R3, R2
000C	8308		LBI R3, #$08		; R3 <- $0008
000E	5231		MOVE (R3)+, R2
0010	8402		LBI R4, #$02
0012	C347		SBSH R3, R4
0014	F007		BRA $000E		; Loop

 			; R3 contains now $0200

 			; Size installed memory in increments of 16 kbytes
 			; The last usable memory location will be in R8

 			; Check if memory at $4000 is present

0016	8840		LBI R8, #$40
0018	088D		MLH R8, R8
001A	8800		LBI R8, #$00		; R8 <- $4000
001C	7888		MOVB (R8), R8		; ($4000) <- $00
001E	6184		MOVB R1, (R8)-
0020	C10C		SNS R1			;
0022	A01B		BRA $0040		; no memory here, jump

 			; Check if memory at $8000 is present

0024	8880		LBI R8, #$80
0026	088D		MLH R8, R8
0028	8800		LBI R8, #$00
002A	7888		MOVB (R8), R8
002C	6184		MOVB R1, (R8)-
002E	C10C		SNS R1
0030	A00D		BRA $0040		; no memory here, jump

 			; Check if memory at $C000 is present

0032	88C0		LBI R8, #$C0
0034	088D		MLH R8, R8
0036	8800		LBI R8, #$00
0038	7888		MOVB (R8), R8
003A	6184		MOVB R1, (R8)-
003C	C104		SS R1			; no memory here, skip
003E	088D		MLH R8, R8		; last location is $FFFF

0040	C804		SS R8
0042	0000		HALT			; error, low byte not $FF

0044	10F0		CTRL $0, #$F0
0046	1FFF		CTRL $F, #$FF		; Reset all devices

0048	0532		INC R5, R3		; R5 <- $0201

004A	83AA		LBI R3, #$AA
004C	033D		MLH R3, R3		; R3 <- $AAAA

004E	8420		LBI R4, #$20

0050	8705		LBI R7, #$05
0052	077D		MLH R7, R7
0054	87FF		LBI R7, #$FF		; R7 <- $05FF

0056	8104		LBI R1, #$04
0058	011D		MLH R1, R1
005A	8136		LBI R1, #$36		; R1 <- $0436
005C	0203		INC2 R2, R0
005E	0014		RET R1			; call $0436

 			; Clear memory from R9L0 to end of display

0060	8200		LBI R2, #$00
0062	022D		MLH R2, R2		; R2 <- $0000
0064	0324		MOVE R3, R2
0066	8312		LBI R3, #$12		; R3 <- $0012
0068	8406		LBI R4, #$06
006A	5231		MOVE (R3)+, R2
006C	C347		SBSH R3, R4
006E	F005		BRA $006A		; loop

0070	381D		MOVE $3A, R8		; last memory location to 
R13L1

 			; Put 0000, 1111, 2222, ... into locations $0080-00BF
 			; This is an aid to locate the registers in display
 			; register mode
0072	87C0		LBI R7, #$C0
0074	0894		MOVE R8, R9
0076	8880		LBI R8, #$80		; R8 <- $0080
0078	5981		MOVE (R8)+, R9
007A	C90C		SNS R9
007C	89EF		LBI R9, #$EF
007E	A910		ADD R9, #$11
0080	099D		MLH R9, R9
0082	C872		SE R8, R7
0084	F00D		BRA $0078		; -> -$0E(R0)

 			; --- Test A ---
 			; Bus In bit test

0086	7550		MOVB (R5)+, R5		; write 'A' to $0201
0088	8FFF		LBI R15, #$FF
008A	00FE		GETB R15, $0
008C	CF04		SS R15
008E	0000		HALT

 			; --- Test B ---
 			; Op Code test

0090	7550		MOVB (R5)+, R5		; write 'B' to $0202
0092	351C		MOVE $38, R5		; save R5 to R12L1
0094	A003		BRA $009A

0096	81FF		LBI R1, #$FF
0098	311F		MOVE $3E, R1

009A	8101		LBI R1, #$01
[...]


So everything looks perfect, except that test 'A' fails. R15 should 
contain $00FF after the 'GETB R15, $0', but instead it contains $0005. 
Now, that's many bits stuck at zero... (the Bus In lines are active high).
Is there any difference in the value if you run the machine with 
terminator (directly attached to the computer) and without terminator?
Are all power cables correctly seated? Somehow I have the impression that 
the internal terminator or pullups on the Bus In lines don't work as they 
should. Or the input receivers (whatever they are) are toast for 6 out of 
8 lines.
According to the 5100 MIM page C-9, a GETB with address 0 is not used, so 
should read $FF. Hmm, another thought: Maybe there's an addressing error, 
and instead of addressing device 0, it addresses e.g. device 1. You should 
definitely also check the DA (device address) lines.

Christian


More information about the cctalk mailing list