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 cctech
mailing list