• Please review our updated Terms and Rules here

DOA PETs. (2001-8, 4032 and 8032)

(The ROM thing actually brings up a question... I read in another thread here that there was a problem with replacing the 2K E000 ROM with a 2532 because putting a 4k ROM in that socket will cause a clash with the I/O space in the E800 range. If that's the case could that be avoided by bending up the last address pin on the 2532 when socketing it to essentially render it a 2k ROM?

No, that will not work because independent of the address lines, the EPROM will still be chip selected for the entire 4K space (in early PETs). The proper solution is to use either a 2716 or a 2732. By a fluke of nature, these chips will work fine in the E socket as long as the code is programmed into the upper 2K in the 2732.
 
Probably not Lupus

Probably not Lupus

No, that will not work because independent of the address lines, the EPROM will still be chip selected for the entire 4K space (in early PETs). The proper solution is to use either a 2716 or a 2732. By a fluke of nature, these chips will work fine in the E socket as long as the code is programmed into the upper 2K in the 2732.

I spent a few minutes staring at the pinouts for the 2716 to understand how this works, and I *think* I get it. (A11 going high puts a signal on the PGM line, and that signal suppresses it from outputting a byte and... on the 2732, A11 on the chip is stuck high all the time because the way the socket is wired, so the ROM image has to be in the top half?)

Anyway, thanks to some semi-involuntary free time I've been playing with my new osziFOX probulator, and though I'm sure it by no means qualifies as a real oscilloscope it's a lot better than a voltmeter to see if "stuff" is happening.

Based on another PET repair thread I tried pulling all the "big chips" other than the CPU from my 4032 to see if the garbage on the screen changed at all. It doesn't. After that tried replacing the 6520s and the 6502 with the ones I purchased, likewise no change, and tried piggybacking new RAMs over the lower 16k. Again, no change.

One thing I'm fairly convinced of is that the original 6502 is probably okay. With the probescope I see (on both the original 6502 and the replacement):

Pin 39 (clock phase 2): a square wave with peaks approx. 1 microsecond apart, about equal times high and low.

Pin 7: (Sync): Pulses with high times of approx. 1us at irregular intervals. I have noticed if the machine is left alone long enough sometimes the pulses stop. (Perhaps the CPU is crashing?)

I've also poked the address bus pins and as long as Pin 7 is pulsing the address bus also keeps changing. (I was looking at the lowest ones, figuring they'd be changing the most often if the CPU were just marching through memory.)

One thing I did notice, I don't know if it's significant, about the garbage on the screen: If I power-cycle the machine quickly, so I don't have to wait for the monitor to warm up, I've noticed that the pattern of garbage on the screen changes... it'll be one set of garbage immediately after powerup, and then it morphs into another about 1 second later. It's still looks to be *random* garbage, however.

The last thing I did while poking with the "probescope" is snoop around the monitor pins and take note of the sort of waveforms I was seeing. I plan to hit the 8032 and see if there's any similar activity later.
 
...The last thing I did while poking with the "probescope" is snoop around the monitor pins and take note of the sort of waveforms I was seeing. I plan to hit the 8032 and see if there's any similar activity later.
Yeah, it'd be nice if that turned out to be a simple problem, since you could use it to check the ROMs. You did check the connector at the monitor end? I've had intermittent problems there with two of my PETs.

Fingers crossed...
 
Pin 7: (Sync): Pulses with high times of approx. 1us at irregular intervals. I have noticed if the machine is left alone long enough sometimes the pulses stop. (Perhaps the CPU is crashing?)

Not much can stop a 6502 from fetching instructions (Sync); it may be fetching an illegal KIL instruction which will hang it. It will not fetch or change the address lines. This is indicative of reading bad data from a ROM.
 
Yeah, it'd be nice if that turned out to be a simple problem, since you could use it to check the ROMs. You did check the connector at the monitor end? I've had intermittent problems there with two of my PETs.

Reseated all the monitor connections, no dice. Apparently I have a talent for picking PETs with non-trivial problems.

I spent a few minutes probulating the 8032. Bad news I think on the monitor connector on the motherboard... I'm not seeing anything like the activity I see on the 4032. I'm far from knowledgeable enough to say with any confidence, but it looks to me as if the 8032 is either dying before it initializes the CRTC (does anyone know if that or the "chirpchirpchirp" comes first in the power-on cycle?) or there's something wrong in the video section. I also did a quick check of the CPU pins... it looks like the 6502's heart is beating, at least. (Not surprising considering it chirps, I guess.)

Unfortunately on the 8032, unlike the 4032, almost nothing is socketed. (I hadn't actually taken stock before now.) The 6502 is in a socket, and it looks like *one* of the ROMs are. Everything else is welded down. Sort of puts a kybosh on easy chip swapping. I could try piggybacking RAMs I guess, but somehow I don't like my chances much.
 
Last edited:
Hi Eudimorphodon

I had an 8032 and an 8296 with the same problem, you had the chirps but no screen, I tried another monitor from another pet to check the display but no display on that one either so it wasn't the monitor that was the problem.

On my 8296 one of the legs of the 6545 CRTC were not in the socket so once reseated it worked perfectly.
On my 8032 I decided to change the 6545 CRTC chip and BINGO working display. Worth a try?

I picked up the chip from Unicorn Electronics in the good old US of A for $3.99
 
What do you see on the video connector?

I'm coming to the realization I should take better notes as I work, but the short answer is on the 8032 I don't see "anything". Probing all the lines in the connector produced either nothing (other than possibly some very low-level noise), or in the case of one line, what looked like a solid 4v-ish "up" condition. (Again, I'm kicking myself for not noting which lines I saw what on.) On the 4032 I saw signals on several lines, in one case a rapid sawtooth punctuated by higher peaks, and on a couple of the other lines there was lower level irregular sawtooth.

(I can re-probe and try to get screenshots from the rather primitive Linux program I'm using to get bigger-screen visualization from the probescope, with the caveat that it's probably not going to be high-resolution enough to really tell you much more than "there's a signal here" at speeds much more than about 2mhz. One thing I'm really faceplanting on is finding documentation for things like the pinout of the video connector and where things are on the board. I have the schematics but, for instance, I don't know *which end* of the video connector is pin 1. Is it oriented the same way as the chip notches? I suck.)


Hi Eudimorphodon

I had an 8032 and an 8296 with the same problem, you had the chirps but no screen, I tried another monitor from another pet to check the display but no display on that one either so it wasn't the monitor that was the problem.

On my 8296 one of the legs of the 6545 CRTC were not in the socket so once reseated it worked perfectly.
On my 8032 I decided to change the 6545 CRTC chip and BINGO working display. Worth a try?

I picked up the chip from Unicorn Electronics in the good old US of A for $3.99

Would a 6845 be an acceptable replacement? The local place I bought the 6502 and 6520s from has them for $2.95. (I guess another thread says it'll work...)

It'd be nice if there were some way I could verify that was the problem before desoldering a 40 pin chip, but... I guess there's probably a metaphysical certitude that I'll have to be desoldering things before I'm done here anyway. Still building up the courage for it. I managed to not kill the last things I took soldering irons to (I replaced bad capacitors in some original Apple Airports), but the results weren't that pretty.

When you had the dead 6545 were you able to blind-type "?chr$(7)" and get a beep, or did it keep the machine from getting to BASIC?
 
One thing I'm really faceplanting on is finding documentation for things like the pinout of the video connector and where things are on the board. I have the schematics but, for instance, I don't know *which end* of the video connector is pin 1. Is it oriented the same way as the chip notches?

Never disconnect a PET connector without taking a photo of it to ensure correct reconnection. If you 8032 is a newer 'universal' type, here is the top assembly drawing:
http://www.zimmers.net/anonftp/pub/cbm/schematics/computers/pet/univ2/8032090-7.gif

Top assemblies of the other boards are also in Zimmers.
 
Hi again Eudimorphodon

Would a 6845 be an acceptable replacement? The local place I bought the 6502 and 6520s from has them for $2.95. (I guess another thread says it'll work...)

Yes I believe the 6845 to be compatable with the 6545 CRTC

When you had the dead 6545 were you able to blind-type "?chr$(7)" and get a beep, or did it keep the machine from getting to BASIC?

Sorry that is something I never tried to do!
 
One thing I'm really faceplanting on is finding documentation for things like the pinout of the video connector and where things are on the board. I have the schematics but, for instance, I don't know *which end* of the video connector is pin 1. Is it oriented the same way as the chip notches? I suck.)
If you look at the schematic you'll see that pin 6 is a 'key', i.e. it's missing; also the ground returns (2, 4, and 7) are probably all the same colour.

I'd check the video signals on both sides of the video buffers just in case they're bad.
 
If you look at the schematic you'll see that pin 6 is a 'key', i.e. it's missing; also the ground returns (2, 4, and 7) are probably all the same colour.

I'd check the video signals on both sides of the video buffers just in case they're bad.

Looking at the 8032 board from the front of the PET, the missing pin (6) of connector J7 video is toward the left side of the socket.
 
Yeah. My vague understanding is that the CRTC PETs have to get far enough to initialize the CRT controller before they'll even display garbage. You don't happen to know if that's before or after the "Chirpchirpchirp", do you?

For BASIC 4 ROMs, to me it looks like very early on in the power up sequence, that the PIAs and VIA are initialized, then the the chirp sound is issued via the CB2 line on the VIA.

At that point the CRTC is initialized and then the screen is cleared before going on to check for Diagnostic mode or BASIC mode.

Here is some of the power up code:
I'm thinking that the beeping is done during the I/O INIT starting around $E683. I show that code towards bottom of the listing. Can some programmer verify this? Some of the code is cryptic and over my head.

Code:
; -    Power-Up RESET Entry

 FD16        LDX #$FF    ; Load X $FF
 FD18        SEI        ; Disable Interrupts
 FD19        TXS        ; Transfer $FF to Stack Pointer
 FD1A        CLD        ; Clear Decimal Mode
 FD1B        JSR $E000    ; cint    Initialize Editor & Screen
 FD1E        LDA #$FF
 FD20        STA $94        ; Vector: Non-Maskable Interrupt [3:C389,4: B3FF]
 FD22        LDA #$B3
 FD24        STA $95
 FD26        LDA #$78
 FD28        STA $92        ; Vector: BRK Instr. Interrupt [3: FD17, 4: D478]
 FD2A        LDA #$D4
 FD2C        STA $93
 FD2E        LDA #$A4
 FD30        STA $03FA    ; Monitor extension vector [D7A4]
 FD33        LDA #$D7
 FD35        STA $03FB
 FD38        LDA #$00
 FD3A        STA $03FC    ; 4: Flag: Kernal Variable for IEEE Timeout
 FD3D        CLI        ; Enable Interrupts
;
 FD3E        LDA $E810    ; PIA 1 CHIP - Check for  Diagnostics line low
 FD41        BMI $FD46    ;If MSB Set, go to BASIC RAM INIT (normal)
 FD43        JMP $D472    ;If MSB of User Port Grounded go to Perform [ML monitor]
;
 FD46    iFD46    JMP $D3B6    ; initcz    Initialize BASIC RAM

; cint    Initialize Editor & Screen

 E000    iE000    JMP $E04B    ; Start of Editor ROM
;
;cint1

 E04B    iE04B    JSR $E60F    ; cint1 - Init PIAs & VIA and do a Power-up BEEP (BASIC4) 

 E04E        JSR $E07A    ; Initialize CRTC --


; -    After the CRTC is initialized, Clear the Screen

 E051    iE051    LDX $E0        ; 3+4.40: Screen Line Link Table / Editor Temps
 E053        DEX
 E054    iE054    INX
 E055        JSR $E06C
 E058        JSR $E1C1    ; -    Clear Screen Line
 E05B        CPX $E1        ; 4.80: last line of window
 E05D        BCC $E054
 E05F    iE05F    LDX $E0        ; 3+4.40: Screen Line Link Table / Editor Temps
 E061        STX $D8        ; Current Cursor Physical Line Number
 E063    iE063    LDY $E2        ; 4.80: first column of window
 E065        STY $C6        ; Cursor Column on Current Line


; -    Set Screen Pointers

 E067    iE067    LDX $D8        ; Current Cursor Physical Line Number
 E069        JMP $E06F

 E06C    iE06C    LDY $E2        ; 4.80: first column of window
 E06E        DEY
 E06F    iE06F    LDA $E755,X    ; -    Screen Line Addresses LO        DATA
 E072        STA $C4        ; Pointer: Current Screen Line Address
 E074        LDA $E76E,X    ; -    Screen Line Addresses HI        DATA
 E077        STA $C5
 E079        RTS


; Initialize CRTC --

 E07A    iE07A    LDA #$2A
 E07C        LDX #$E7
 E07E        LDY #$0E
 E080        BNE $E088


; Initialize CRTC --

 E082    iE082    LDA #$3C    ;E73C has video setup data constants
 E084        LDX #$E7
 E086        LDY #$0C
 E088    iE088    STA $C7        ; Pointer: Tape Buffer/ Screen Scrolling
 E08A        STX $C8
 E08C        LDA $E84C
 E08F        AND #$F0
 E091        STA $D1        ; Length of Current File Name
 E093        TYA
 E094        ORA $D1        ; Length of Current File Name
 E096        STA $E84C
 E099        LDY #$11
 E09B    iE09B    LDA ($C7),Y    ; Pointer: Tape Buffer/ Screen Scrolling
 E09D        STY $E880    ; 6545/6845 CRT                    CHIP
 E0A0        STA $E881
 E0A3        DEY
 E0A4        BPL $E09B
 E0A6        RTS
;
; initcz    Initialize BASIC RAM - MAIN INIT
;
 D3B6    iD3B6    LDX #$FB
 D3B8        TXS        ;transfer X to Stack Pointer to init
 D3B9        LDA #$4C
 D3BB        STA $51
 D3BD        STA $00        ; USR Function Jump Instr (4C)
 D3BF        LDA #$73
 D3C1        LDY #$C3
 D3C3        STA $01        ; USR Address [4: C373]
 D3C5        STY $02
 D3C7        LDX #$1C
 D3C9    iD3C9    LDA $D398,X    ; load constants in 6F
 D3CC        STA $6F,X
 D3CE        DEX
 D3CF        BNE $D3C9
 D3D1        LDA #$03
 D3D3        STA $50
 D3D5        TXA        ; Transfer X register to ACC should have zero
 D3D6        STA $65        ; Floating -accum. #1: Overflow Digit
 D3D8        STA $10        ; 3: width of source (unused - from TTY)
 D3DA        STA $15
 D3DC        STA $0D        ; 3: Flag to suppress PRINT or PRINT# when -ve
 D3DE        PHA        ; push ACC to stack s/b zero
 D3DF        INX        ; increment x register
 D3E0        STX $01FD    ; store X to 01FD
 D3E3        STX $01FC    ; store X to 01FC
 D3E6        LDX #$16        ; load X with 16
 D3E8        STX $13        ; Pointer Temporary String
 D3EA        LDY #$04        ; Initialize Y register to 04 as hi byte address
 D3EC        STA $28        ; Pointer: Start of BASIC Text [0401]
 D3EE        STY $29
 D3F0        STA $11        ; Temp: Integer Value start at 00
 D3F2        STY $12        ;starts at 04
 D3F4        TAY        ;transfer acc to Y register (clear)
 D3F5        LDA #$80
 D3F7        BNE $D400    ;always go to Memory Test at $D400
 D3F9        LDA #$00
 D3FB        LDY #$B0
 D3FD        JMP $D41B
;
;Memory Test
;
 D400    iD400    INC $11    ; Start Memory test loop by increment of low byte address from init address $0400
 D402        BNE $D408    ; If not zero, continue to D408
 D404        INC $12    ; If zero, bump high byte address which was initialized to 04
 D406        BMI $D417    ; Branch when hi byte hits $80 (32K) to initms Output Power-Up Message
 D408    iD408    LDA #$55    ; Load $55 test pattern into ACC
 D40A        STA ($11),Y    ; Store test pattern into memory indirectly addressed by location 11 & 12
                ; Y register will always stay at zero in this loop  
 D40C        CMP ($11),Y    ; Compare Memory contents with ACC
 D40E        BNE $D417    ; If not equal, branch to 'Output Power-Up Message' with current RAM address in 11 & 12
 D410        ASL        ; Shift ACC left to get $AA test pattern
 D411        STA ($11),Y    ; Store test pattern into memory indirectly addressed by location 11 & 12 
 D413        CMP ($11),Y    ; Compare Memory contents with ACC
 D415        BEQ $D400    ; If Pass, go back to start of memory test loop to increment address
                ; If Fail, drop to initms with current RAM address in memory location 11 & 12
;
; initms    Output Power-Up Message
;
 D417    iD417    LDA $11        ; Load Low Byte Memory Count
 D419        LDY $12        ; Load High Byte Memory Count
 D41B    iD41B    STA $34        ; Pointer: Highest Address Used by BASIC
 D41D        STY $35
 D41F        STA $30        ; Pointer: Bottom of String Storage
 D421        STY $31
 D423        LDY #$00
 D425        TYA        ; Clear ACC
 D426        STA ($28),Y    ; Pointer: Start of BASIC Text [0401]
 D428        INC $28        ; Pointer: Start of BASIC Text [0401]
 D42A        LDA #$A4
 D42C        LDY #$DE
 D42E        JSR $BB1D    ; strout    Output String ###COMMODORE BASIC 4###
 D431        LDA $34        ; Pointer: Highest Address Used by BASIC
 D433        SEC
 D434        SBC $28        ; Pointer: Start of BASIC Text [0401]
 D436        TAX
 D437        LDA $35
 D439        SBC $29
 D43B        JSR $CF83    ;calc free memory and print on screen???
 D43E        LDA #$4B
 D440        LDY #$D4
 D442        JSR $BB1D    ; strout    Output String "bytes free"
 D445        JSR $B5D4
 D448        JMP $B3FF    ; ready    Restart BASIC


; words    Power-Up Message for old PET not used        DATA

 D44B        .byte 20 42 59 54 45 53 20 46  ; bytes f
 D453        .byte 52 45 45 0D 00 23 23 23  ;ree..###
 D45B        .byte 20 43 4F 4D 4D 4F 44 4F  ; commodo
 D463        .byte 52 45 20 42 41 53 49 43  ;re basic
 D46B        .byte 20 23 23 23 0D 0D 00     ; ###...

;
; Perform [monitor]
;


 D472    iD472    LDA #$43
 D474        STA $B5
 D476        BNE $D491


; Break Entry

 D478        JSR $F2A6    ; clrchn    Restore Default I/O
 D47B        LDA #$42
 D47D        STA $B5
 D47F        CLD
 D480        LSR
 D481        PLA
 D482        STA $0205
 D485        PLA
 D486        STA $0204
 D489        PLA
 D48A        STA $0203
 D48D        PLA
 D48E        STA $0202
 D491    iD491    PLA
 D492        ADC #$FF
 D494        STA $0201
 D497        PLA
 D498        ADC #$FF
 D49A        STA $0200    ; System INPUT Buffer
 D49D        LDA $90        ; Vector: Hardware Interrupt [3: E62E, 4: E455]
 D49F        STA $0208
 D4A2        LDA $91
 D4A4        STA $0207
 D4A7        TSX
 D4A8        STX $0206
 D4AB        CLI
 D4AC        JSR $D534    ; New Line
 D4AF        LDX $B5
 D4B1        LDA #$2A
 D4B3        JSR $D731    ; Output 2 Ascii Chars
 D4B6        LDA #$52
 D4B8        BNE $D4D4


; *Get Command

 D4BA    iD4BA    LDA #$02
 D4BC        STA $77        ; Pointer: Current Byte of BASIC Text
 D4BE        LDA #$00
 D4C0        STA $DE        ; Cassette Read / Write Block Count
 D4C2        LDX #$0D
 D4C4        LDA #$2E
 D4C6        JSR $D731    ; Output 2 Ascii Chars
 D4C9    iD4C9    JSR $D798    ; ?
 D4CC        CMP #$2E
 D4CE        BEQ $D4C9
 D4D0        CMP #$20
 D4D2        BEQ $D4C9
 D4D4    iD4D4    LDX #$07
 D4D6    iD4D6    CMP $D544,X    ; Commands                    DATA
 D4D9        BNE $D4E6
 D4DB        STX $B4
 D4DD        LDA $D54C,X    ; Command Vectors                    DATA
 D4E0        PHA
 D4E1        LDA $D554,X
 D4E4        PHA
 D4E5        RTS
 D4E6    iD4E6    DEX
 D4E7        BPL $D4D6
 D4E9        JMP ($03FA)    ; Monitor extension vector [D7A4]

 D4EC    iD4EC    LDA $FB        ; I/O Start Address
 D4EE        STA $0201
 D4F1        LDA $FC
 D4F3        STA $0200    ; System INPUT Buffer
 D4F6        RTS


; Display Memory 

 D4F7    iD4F7    STA $B5
 D4F9        LDY #$00
 D4FB    iD4FB    JSR $D531    ; Print Space
 D4FE        LDA ($FB),Y    ; I/O Start Address
 D500        JSR $D722    ; Output 2-digit Byte
 D503        JSR $D539    ; Increment Pointer
 D506        DEC $B5
 D508        BNE $D4FB
 D50A        RTS


; ?

 D50B    iD50B    JSR $D763    ; Input Hex Byte
 D50E        BCC $D51D
 D510        LDX #$00
 D512        STA ($FB,X)    ; I/O Start Address
 D514        CMP ($FB,X)    ; I/O Start Address
 D516        BEQ $D51D
 D518        PLA
 D519        PLA
 D51A        JMP $D7A4    ; Print '?'
 D51D    iD51D    JSR $D539    ; Increment Pointer
 D520        DEC $B5
 D522        RTS


; ?

 D523    iD523    LDA #$02
 D525        STA $FB        ; I/O Start Address
 D527        LDA #$02
 D529        STA $FC
 D52B        LDA #$05
 D52D        RTS

 D52E    iD52E    JSR $D531    ; Print Space


; Print Space

 D531    iD531    LDA #$20
 D533        BIT $0DA9

; *** Resyncing ***

; New Line

 D534    iD534    LDA #$0D
 D536        JMP $F266    ; chrout    Output One Character


; Increment Pointer

 D539    iD539    INC $FB        ; I/O Start Address
 D53B        BNE $D543
 D53D        INC $FC
 D53F        BNE $D543
 D541        INC $DE        ; Cassette Read / Write Block Count
 D543    iD543    RTS


; Commands                    DATA

 D544    sD544    .byte 3A 3B 52 4D 47 58 4C 53  ;:;rmgxls


; Command Vectors                    DATA

 D54C    sD54C    .byte D6 D5 D5 D5 D6 D6 D6 D6  ;VUUUVVVV
 D554    sD554    .byte 1C FA 86 BB 32 6A 74 74  ;....2JTT


; '<cr>     pc  irq  sr ac xr yr sp'        DATA

 D55C    sD55C    .byte 0D 20 20 20 20 20 50 43  ;.     pc
 D564        .byte 20 20 49 52 51 20 20 53  ;  irq  s
 D56C        .byte 52 20 41 43 20 58 52 20  ;r ac xr 
 D574        .byte 59 52 20 53 50           ;yr sp


; Do New Line

 D579    iD579    TYA
 D57A        PHA
 D57B        JSR $D534    ; New Line
 D57E        PLA
 D57F        LDX #$2E
 D581        JSR $D731    ; Output 2 Ascii Chars
 D584        JMP $D52E


; Perform [r]

 D587        LDX #$00
 D589    iD589    LDA $D55C,X    ; '<cr>     pc  irq  sr ac xr yr sp'        DATA
 D58C        JSR $F266    ; chrout    Output One Character
 D58F        INX
 D590        CPX #$1D
 D592        BNE $D589
 D594        LDY #$3B
 D596        JSR $D579    ; Do New Line
 D599        LDA $0200    ; System INPUT Buffer
 D59C        JSR $D722    ; Output 2-digit Byte
 D59F        LDA $0201
 D5A2        JSR $D722    ; Output 2-digit Byte
 D5A5        JSR $D531    ; Print Space
 D5A8        LDA $0207
 D5AB        JSR $D722    ; Output 2-digit Byte
 D5AE        LDA $0208
 D5B1        JSR $D722    ; Output 2-digit Byte
 D5B4        JSR $D523    ; ?
 D5B7        JSR $D4F7    ; Display Memory 
 D5BA        BEQ $D5F5


; Perform [m]

 D5BC        JSR $D798    ; ?
 D5BF        JSR $D754    ; ?
 D5C2        BCC $D5F8
 D5C4        JSR $D744    ; Swap Add_ with Add_
 D5C7        JSR $D798    ; ?
 D5CA        JSR $D754    ; ?
 D5CD        BCC $D5F8
 D5CF        JSR $D744    ; Swap Add_ with Add_
 D5D2    iD5D2    JSR $F335    ; -    -stop-
 D5D5        BEQ $D5F5
 D5D7        LDX $DE        ; Cassette Read / Write Block Count
 D5D9        BNE $D5F5
 D5DB        SEC
 D5DC        LDA $FD        ; Tape Load Temps
 D5DE        SBC $FB        ; I/O Start Address
 D5E0        LDA $FE
 D5E2        SBC $FC
 D5E4        BCC $D5F5
 D5E6        LDY #$3A
 D5E8        JSR $D579    ; Do New Line
 D5EB        JSR $D717    ; Output 4-digit Address
 D5EE        LDA #$08
 D5F0        JSR $D4F7    ; Display Memory 
 D5F3        BEQ $D5D2
 D5F5    iD5F5    JMP $D4BA    ; *Get Command
 D5F8    iD5F8    JMP $D7A4    ; Print '?'


; Perform [;]

 D5FB        JSR $D763    ; Input Hex Byte
 D5FE        JSR $D754    ; ?
 D601        BCC $D606
 D603        JSR $D4EC
 D606    iD606    JSR $F215    ; chrin    Input a byte
 D609        JSR $D754    ; ?
 D60C        BCC $D618
 D60E        LDA $FB        ; I/O Start Address
 D610        STA $0208
 D613        LDA $FC
 D615        STA $0207
 D618    iD618    JSR $D523    ; ?
 D61B        BNE $D627


; Perform [:]

 D61D        JSR $D763    ; Input Hex Byte
 D620        JSR $D754    ; ?
 D623        BCC $D5F8
 D625        LDA #$08
 D627    iD627    STA $B5
 D629    iD629    JSR $D798    ; ?
 D62C        JSR $D50B    ; ?
 D62F        BNE $D629
 D631        BEQ $D5F5


; Perform [g]

 D633        JSR $F215    ; chrin    Input a byte
 D636        CMP #$0D
 D638        BEQ $D646
 D63A        CMP #$20
 D63C        BNE $D5F8
 D63E        JSR $D754    ; ?
 D641        BCC $D646
 D643        JSR $D4EC
 D646    iD646    LDX $0206
 D649        TXS
 D64A        SEI
 D64B        LDA $0207
 D64E        STA $91
 D650        LDA $0208
 D653        STA $90        ; Vector: Hardware Interrupt [3: E62E, 4: E455]
 D655        LDA $0200    ; System INPUT Buffer
 D658        PHA
 D659        LDA $0201
 D65C        PHA
 D65D        LDA $0202
 D660        PHA
 D661        LDA $0203
 D664        LDX $0204
 D667        LDY $0205
 D66A        RTI


; Perform [x]

 D66B        LDX $0206
 D66E        TXS
 D66F        JMP $B3FF    ; ready    Restart BASIC
========================================================
========================================================


;Initialize I/O

; cint1    Initialize I/O

 E60F    iE60F    LDA #$7F
 E611        STA $E84E
 E614        LDX #$6D
 E616        LDA #$00
 E618        STA $E8        ; 4.80: Home Count
 E61A        STA $E4        ; 4.80: Flag: REPEAT Key Used, $80 = Repeat, $40 = disable
 E61C    iE61C    STA $8D,X    ; Real-Time Jiffy Clock (approx) 1/60 Sec
 E61E        DEX
 E61F        BPL $E61C
 E621        LDA #$55
 E623        STA $90        ; Vector: Hardware Interrupt [3: E62E, 4: E455]
 E625        LDA #$E4
 E627        STA $91
 E629        LDA #$09
 E62B        STA $E3        ; 4.80: Size of Keyboard Buffer
 E62D        LDA #$03
 E62F        STA $B0        ; Default Output (CMD) Device (3)
 E631        LDA #$0F
 E633        STA $E810    ; PIA 1                        CHIP
 E636        ASL
 E637        STA $E840    ; VIA                        CHIP
 E63A        STA $E842
 E63D        STX $E822
 E640        STX $E845
 E643        LDA #$3D
 E645        STA $E813
 E648        BIT $E812
 E64B        LDA #$3C
 E64D        STA $E821
 E650        STA $E823
 E653        STA $E811
 E656        STX $E822
 E659        LDA #$0E
 E65B        STA $A8        ; Timer: Countdown to Toggle Cursor
 E65D        STA $A7        ; Cursor Blink enable: 0 = Flash Cursor
 E65F        STA $E6        ; 4.80: Repeat Delay Counter
 E661        STA $E5        ; 4.80: Repeat Speed Counter
 E663        STA $E84E
 E666        JSR $E1D2    ; Exit Window
 E669        LDX #$0C
 E66B        LDA #$00
 E66D    iE66D    STA $03EE,X    ; 4.80: Table of 80 bits to set TABs
 E670        DEX
 E671        BPL $E66D
 E673        LDA #$1D
 E675        LDX #$E1
 E677        STA $E9        ; 4.80: input from screen vector (from E006)
 E679        STX $EA
 E67B        LDA #$0C
 E67D        LDX #$E2
 E67F        STA $EB        ; 4.80: print to screen vector (from E009)
 E681        STX $EC
 E683        LDA #$10
 E685        STA $E7        ; 4.80: Chime Time; Power up BEEP for 8032??

 E687        JSR $E6A4
 E68A        BEQ $E6A4
 E68C    iE68C    JSR $E202    ; -    Output to Screen
 E68F        TAX
 E690        LDA $D5        ; Physical Screen Line Length
 E692        SEC
 E693        SBC $C6        ; Cursor Column on Current Line
 E695        CMP #$05
 E697        BNE $E6D0
 E699        TXA
 E69A        CMP #$1D
 E69C        BEQ $E6A4
 E69E        AND #$7F
 E6A0        CMP #$20
 E6A2        BCC $E6D0
 E6A4    iE6A4    JSR $E6A7    ; ?


; ?

 E6A7    iE6A7    LDY $E7        ; 4.80: Chime Time;    Power up BEEP for 8032??
 E6A9        BEQ $E6D0
 E6AB        LDA #$10
 E6AD        STA $E84B
 E6B0        LDA #$0F
 E6B2        STA $E84A
 E6B5        LDX #$07
 E6B7    iE6B7    LDA $E74D,X    ; Timer 2 LO Values            DATA
 E6BA        STA $E848
 E6BD        LDA $E7        ; 4.80: Chime Time; Power up BEEP for 8032??

 E6BF    iE6BF    DEY
 E6C0        BNE $E6BF
 E6C2        SEC
 E6C3        SBC #$01
 E6C5        BNE $E6BF
 E6C7        DEX
 E6C8        BNE $E6B7
 E6CA        STX $E84A
 E6CD        STX $E84B
 E6D0    sE6D0    RTS
 
Hey, we're dealing with a newbie that did not take note of connector polarities :)
Just kiddin' ya, Dave; I figure once you know that the blank is pin 6 (out of 7) the rest fall into place no matter which way the connector is oriented (which is different on other board versions).
 
Just kiddin' ya, Dave; I figure once you know that the blank is pin 6 (out of 7) the rest fall into place no matter which way the connector is oriented (which is different on other board versions).

I was pretty much poking around like an ape trying to see "signals", with is pretty dumb. As is way too clear, well... newbie. *sigh*

I'll print out the 8032 schematics today and make a genuine effort to match them up with a board diagram to see if I can trace signals upstream of the video buffers. A completely uneducated guess here as an avenue to chase from the other end: if the CRTC *isn't* initialized would I expect to see any activity on its memory/character row address pins?

At this point I think I've resolved to leave the 4032 alone until I can get replacement EPROMs burned and/or some expert help. I don't want to make things any worse there. I also still need to gather the bits to do some desoldering. I used to have a semi-decent pencil iron but it's gone missing and my Weller "it's time to fix the dryer again"-model gun is the wrong tool to be poking thirty year old PCBs with.
 
This is a good plan of action. I am not familiar with your logic probe, but it seems capable of detecting signals properly from the PET.

You are doing well; just remember to keep a good detailed log (with photos) of all your work so you can backtrack if necessary.
-Dave
 
On the 8032, I'll parrot what someone else said... on mine I had a dead display, but the chirpchirpchirp and it turned out to be the 6545. Replaced and all was well! I think I may still have some 6545s in my parts box too.

Also, for components I highly recommend The Real Bob Roberts. He has a lot of these older components and his prices are very reasonable. He even sent me a Mardi Gras present when I ordered during Mardi Gras last time! :)

http://www.therealbobroberts.net/
 
I'll see if I can get my hands on a replacement CRTC. I think I've found a local source.

I'm still worried about the results, or lack thereof, of the experiment to try to drive the 8032's monitor with a 4032 motherboard that *is* producing video. (Garbage though it may be.) I suppose it's perfectly possible that machine might have both a dead CRTC and a dead monitor. (Perhaps I need to gather the parts for a composite video adapter.)
 
Back
Top