• Please review our updated Terms and Rules here

Commodore 4032-12 dead screen

dave_m

Veteran Member
Joined
Feb 2, 2009
Messages
3,582
Location
Southern California, USA
You do realize that the screen is totally dead, there is nothing, like it doesn't have any power or anything. So, to me, any change would mean something on the screen materializes. That's why I can't understand how piggybacking can work with two or more bad chips, unless I start replacing them as well.

What KC says is correct. You may not get a full screen, maybe only one character, maybe a beep. It is too hard to piggyback more than one chip at a time unless you tack solder them on. Remember you need all 16 pins in contact at power up when the RAM is tested. And you need to power cycle each time. If you are OK with soldering, go ahead and replace all 8 chips of the LOWER bank. However if one of the new chips is bad, you may gain nothing and still need to troubleshot further.

You are now asking the right questions which shows you are learning. 2K bytes is an unusual way to describe these chips. They are organized as 16K by 1 bit. So you need eight to get a full byte wide 16K. Only worry about the lower bank ( 0 to 16K) as they cover the zero page which prevents boot. The upper bank (16K to 32K) just provide more RAM and are not needed for boot.

Remember as KC says the piggyback is a quick & dirty test that may not help, but will save a lot of extra soldering if it does work.
 

rschissler

Member
Joined
Nov 4, 2014
Messages
30
Location
San Diego, CA
Ok, I'll try to order 8 chips, as they don't seem that expensive.

When turning the power on, the computer makes the common PET chirping sound. When the computer was working properly, I don't remember any beeps or other sounds after the chirp.
 

KC9UDX

Space Commander
Joined
Jan 27, 2014
Messages
7,468
Location
Lutenblag
I wonder what the startup code looks like. That is, at what point in the sequence is the chirp supposed to happen?
 

dave_m

Veteran Member
Joined
Feb 2, 2009
Messages
3,582
Location
Southern California, USA
I wonder what the startup code looks like. That is, at what point in the sequence is the chirp supposed to happen?

Very early before the CRTC is initialized. See the cinit routine at $E60F (towards bottom of listing). This routine is called basically by in the first subroutine at the 5th instruction.

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 =>  Initialize I/O ;Init PIAs & VIA and do a Power-up BEEP in 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
 

KC9UDX

Space Commander
Joined
Jan 27, 2014
Messages
7,468
Location
Lutenblag
It's too early in the morning for me to say this, but I don't see anything that will fail due to RAM until E68C:JSR E202. And I don't find E202 but may just not see it in the tiny display of this phone.
 

dave_m

Veteran Member
Joined
Feb 2, 2009
Messages
3,582
Location
Southern California, USA
It seems to me there are several zero page instructions in that small part of the code which would screw up interrupt vectors, pointers, etc.

Anyway here is a chunk of code from E202 but I can't find the Subroutine Return:

Code:
; -    Output to Screen


 E202    iE202    PHA
 E203        STA $D9        ; Current Character to Print
 E205        TXA
 E206        PHA
 E207        TYA
 E208        PHA
 E209        JMP ($00EB)    ; 4.80: print to screen vector (from E009)


 E20C        LDA #$00
 E20E        STA $AC        ; Flag: INPUT or GET from Keyboard
 E210        LDY $C6        ; Cursor Column on Current Line
 E212        LDA $D9        ; Current Character to Print
 E214        AND #$7F
 E216        CMP #$1B
 E218        BNE $E21D
 E21A        JMP $E3BD
 E21D    iE21D    LDA $D9        ; Current Character to Print
 E21F        BPL $E224    ; -    -unshifted characters-
 E221        JMP $E2F4    ; -    -shifted characters-




; -    -unshifted characters-


 E224    iE224    CMP #$0D
 E226        BNE $E22B
 E228        JMP $E3B6    ; -    Output <CR>
 E22B    iE22B    CMP #$20
 E22D        BCC $E237
 E22F        AND #$3F
 E231        JSR $E16A    ; check For Quotes
 E234        JMP $E179
 E237    iE237    LDX $DC        ; Flag: Insert Mode, >0 = # INSTs
 E239        BEQ $E23E
 E23B        JMP $E17D
 E23E    iE23E    CMP #$14
 E240        BNE $E262
 E242        LDY $E2        ; 4.80: first column of window
 E244        CPY $C6        ; Cursor Column on Current Line
 E246        BCC $E24D
 E248        JSR $E1AA
 E24B        BNE $E25C
 E24D    iE24D    DEC $C6        ; Cursor Column on Current Line
 E24F        LDY $C6        ; Cursor Column on Current Line
 E251    iE251    INY
 E252        LDA ($C4),Y    ; Pointer: Current Screen Line Address
 E254        DEY
 E255        STA ($C4),Y    ; Pointer: Current Screen Line Address
 E257        INY
 E258        CPY $D5        ; Physical Screen Line Length
 E25A        BNE $E251
 E25C    iE25C    LDA #$20
 E25E        STA ($C4),Y    ; Pointer: Current Screen Line Address
 E260        BNE $E299
 E262    iE262    LDX $CD        ; Flag: Editor in Quote Mode, $00 = NO
 E264        BEQ $E269
 E266        JMP $E17D
 E269    iE269    CMP #$12
 E26B        BNE $E26F
 E26D        STA $9F        ; Flag: Print Reverse Chars. -1=Yes, 0=No Used
 E26F    iE26F    CMP #$13
 E271        BNE $E283
 E273        LDA $E8        ; 4.80: Home Count
 E275        BPL $E27B
 E277        JSR $E1D2    ; Exit Window
 E27A        CLC
 E27B    iE27B    ROR $E8        ; 4.80: Home Count
 E27D        JSR $E05F
 E280        JMP $E19D
 E283    iE283    CMP #$1D
 E285        BNE $E292
 E287        INY
 E288        STY $C6        ; Cursor Column on Current Line
 E28A        DEY
 E28B        CPY $D5        ; Physical Screen Line Length
 E28D        BCC $E299
 E28F        JMP $E192
 E292    iE292    CMP #$11
 E294        BNE $E29C
 E296        JSR $E3A3    ; -    Go to Next Line
 E299    iE299    JMP $E199
 E29C    iE29C    CMP #$09
 E29E        BNE $E2D0
 E2A0        JSR $E570    ; ?
 E2A3    iE2A3    LDY $033A    ; Tape I/O Buffer #2
 E2A6        INC $033A    ; Tape I/O Buffer #2
 E2A9        CPY $D5        ; Physical Screen Line Length
 E2AB        BCC $E2B6
 E2AD        LDA $D5        ; Physical Screen Line Length
 E2AF        STA $C6        ; Cursor Column on Current Line
 E2B1        DEC $033A    ; Tape I/O Buffer #2
 E2B4        BNE $E299
 E2B6    iE2B6    ASL $033E    ; 4: DOS 8-bit syntax checking flag
 E2B9        BNE $E2C5
 E2BB        INX
 E2BC        CPX #$0A
 E2BE        BEQ $E299
 E2C0        LDA #$01
 E2C2        STA $033E    ; 4: DOS 8-bit syntax checking flag
 E2C5    iE2C5    LDA $03EE,X    ; 4.80: Table of 80 bits to set TABs
 E2C8        AND $033E    ; 4: DOS 8-bit syntax checking flag
 E2CB        BEQ $E2A3
 E2CD        INY
 E2CE        STY $C6        ; Cursor Column on Current Line
 E2D0    iE2D0    CMP #$16
 E2D2        BNE $E2E0
 E2D4        LDA #$20
 E2D6        DEY
 E2D7    iE2D7    INY
 E2D8        STA ($C4),Y    ; Pointer: Current Screen Line Address
 E2DA        CPY $D5        ; Physical Screen Line Length
 E2DC        BCC $E2D7
 E2DE        BCS $E299
 E2E0    iE2E0    CMP #$15
 E2E2        BEQ $E2E7
 E2E4        JMP $E591    ; (?)
 E2E7    iE2E7    LDA $E0        ; 3+4.40: Screen Line Link Table / Editor Temps
 E2E9        PHA
 E2EA        LDA $D8        ; Current Cursor Physical Line Number
 E2EC        STA $E0        ; 3+4.40: Screen Line Link Table / Editor Temps
 E2EE        JSR $E3E8    ; -    Scroll Screen
 E2F1        JMP $E5CA




; -    -shifted characters-


 E2F4    iE2F4    AND #$7F
 E2F6        CMP #$7F
 E2F8        BNE $E2FC
 E2FA        LDA #$5E
 E2FC    iE2FC    CMP #$20
 E2FE        BCC $E303
 E300        JMP $E177    ; Ascii to Screen Code
 E303    iE303    CMP #$0D
 E305        BNE $E30A
 E307        JMP $E3B6    ; -    Output <CR>
 E30A    iE30A    LDX $CD        ; Flag: Editor in Quote Mode, $00 = NO
 E30C        BNE $E342
 E30E        CMP #$14
 E310        BNE $E33E
 E312        LDY $D5        ; Physical Screen Line Length
 E314        LDA ($C4),Y    ; Pointer: Current Screen Line Address
 E316        CMP #$20
 E318        BNE $E38C
 E31A        CPY $C6        ; Cursor Column on Current Line
 E31C        BCC $E38C
 E31E        BEQ $E38C
 E320        LDY $D5        ; Physical Screen Line Length
 E322    iE322    DEY
 E323        LDA ($C4),Y    ; Pointer: Current Screen Line Address
 E325        INY
 E326        STA ($C4),Y    ; Pointer: Current Screen Line Address
 E328        DEY
 E329        CPY $C6        ; Cursor Column on Current Line
 E32B        BNE $E322
 E32D        LDA #$20
 E32F        STA ($C4),Y    ; Pointer: Current Screen Line Address
 E331        LDA $D5        ; Physical Screen Line Length
 E333        SEC
 E334        SBC $C6        ; Cursor Column on Current Line
 E336        SBC $DC        ; Flag: Insert Mode, >0 = # INSTs
 E338        BMI $E38C
 E33A        INC $DC        ; Flag: Insert Mode, >0 = # INSTs
 E33C        BNE $E38C
 E33E    iE33E    LDX $DC        ; Flag: Insert Mode, >0 = # INSTs
 E340        BEQ $E347
 E342    iE342    ORA #$40
 E344        JMP $E17D
 E347    iE347    CMP #$11
 E349        BNE $E358
 E34B        LDX $E0        ; 3+4.40: Screen Line Link Table / Editor Temps
 E34D        CPX $D8        ; Current Cursor Physical Line Number
 E34F        BCS $E38C
 E351        DEC $D8        ; Current Cursor Physical Line Number
 E353        JSR $E067    ; -    Set Screen Pointers
 E356        BNE $E38C
 E358    iE358    CMP #$12
 E35A        BNE $E360
 E35C        LDA #$00
 E35E        STA $9F        ; Flag: Print Reverse Chars. -1=Yes, 0=No Used
 E360    iE360    CMP #$1D
 E362        BNE $E373
 E364        LDY $E2        ; 4.80: first column of window
 E366        CPY $C6        ; Cursor Column on Current Line
 E368        BCC $E36F
 E36A        JSR $E1AA
 E36D        BNE $E38C
 E36F    iE36F    DEC $C6        ; Cursor Column on Current Line
 E371        BPL $E38C
 E373    iE373    CMP #$13
 E375        BNE $E37C
 E377        JSR $E051    ; -    Clear Screen
 E37A        BNE $E38C
 E37C    iE37C    CMP #$09
 E37E        BNE $E38F
 E380        JSR $E570    ; ?
 E383        LDA $03EE,X    ; 4.80: Table of 80 bits to set TABs
 E386        EOR $033E    ; 4: DOS 8-bit syntax checking flag
 E389        STA $03EE,X    ; 4.80: Table of 80 bits to set TABs
 E38C    iE38C    JMP $E199
 E38F    iE38F    CMP #$16
 E391        BEQ $E396
 E393        JMP $E5BC
 E396    iE396    LDA #$20
 E398        LDY $E2        ; 4.80: first column of window
 E39A    iE39A    CPY $C6        ; Cursor Column on Current Line
 E39C        BCS $E38C
 E39E        STA ($C4),Y    ; Pointer: Current Screen Line Address
 E3A0        INY
 E3A1        BNE $E39A




; -    Go to Next Line


 E3A3    iE3A3    LSR $A3        ; Cursor Y-X Pos. at Start of INPUT
 E3A5        LDX $D8        ; Current Cursor Physical Line Number
 E3A7        CPX $E1        ; 4.80: last line of window
 E3A9        BCC $E3B1
 E3AB        JSR $E3E8    ; -    Scroll Screen
 E3AE        JMP $E067    ; -    Set Screen Pointers
 E3B1    iE3B1    INC $D8        ; Current Cursor Physical Line Number
 E3B3        JMP $E067    ; -    Set Screen Pointers




; -    Output <CR>


 E3B6    iE3B6    LDY $E2        ; 4.80: first column of window
 E3B8        STY $C6        ; Cursor Column on Current Line
 E3BA        JSR $E3A3    ; -    Go to Next Line
 E3BD    iE3BD    LDA #$00
 E3BF        STA $DC        ; Flag: Insert Mode, >0 = # INSTs
 E3C1        STA $9F        ; Flag: Print Reverse Chars. -1=Yes, 0=No Used
 E3C3        STA $CD        ; Flag: Editor in Quote Mode, $00 = NO
 E3C5        JMP $E199




; ?


 E3C8    iE3C8    LDX $E1        ; 4.80: last line of window
 E3CA        INX
 E3CB    iE3CB    DEX
 E3CC        JSR $E06C
 E3CF        CPX $E0        ; 3+4.40: Screen Line Link Table / Editor Temps
 E3D1        BEQ $E408
 E3D3        LDA $E754,X
 E3D6        STA $C7        ; Pointer: Tape Buffer/ Screen Scrolling
 E3D8        LDA $E76D,X
 E3DB        STA $C8
 E3DD    iE3DD    INY
 E3DE        LDA ($C7),Y    ; Pointer: Tape Buffer/ Screen Scrolling
 E3E0        STA ($C4),Y    ; Pointer: Current Screen Line Address
 E3E2        CPY $D5        ; Physical Screen Line Length
 E3E4        BCC $E3DD
 E3E6        BCS $E3CB




; -    Scroll Screen


 E3E8    iE3E8    LDX $E0        ; 3+4.40: Screen Line Link Table / Editor Temps
 E3EA        DEX
 E3EB    iE3EB    INX
 E3EC        JSR $E06C
 E3EF        CPX $E1        ; 4.80: last line of window
 E3F1        BCS $E408
 E3F3        LDA $E756,X
 E3F6        STA $C7        ; Pointer: Tape Buffer/ Screen Scrolling
 E3F8        LDA $E76F,X
 E3FB        STA $C8
 E3FD    iE3FD    INY
 E3FE        LDA ($C7),Y    ; Pointer: Tape Buffer/ Screen Scrolling
 E400        STA ($C4),Y    ; Pointer: Current Screen Line Address
 E402        CPY $D5        ; Physical Screen Line Length
 E404        BCC $E3FD
 E406        BCS $E3EB
 E408    iE408    JSR $E1C1    ; -    Clear Screen Line
 E40B        LDA $E812
 E40E        CMP #$FE
 E410        BNE $E420
 E412        LDY #$00
 E414    iE414    NOP
 E415        DEX
 E416        BNE $E414
 E418        DEY
 E419        BNE $E414
 E41B    iE41B    LDY #$00
 E41D        STY $9E        ; No. of Chars. in Keyboard Buffer (Queue)
 E41F    iE41F    RTS
 E420    iE420    CMP #$DF
 E422        BNE $E41F
 E424    iE424    LDA $E812
 E427        CMP #$DF
 E429        BEQ $E424
 E42B        CMP #$FF
 E42D        BEQ $E424
 E42F        BNE $E41B
 E431    iE431    JSR $FFEA    ; jmp $f768    udtim    Update System Jiffy Clock
 E434        INC $F8        ; 4.80: Counter to speed TI by 6/5
 E436        LDA $F8        ; 4.80: Counter to speed TI by 6/5
 E438        CMP #$06
 E43A        BNE $E458
 E43C        LDA #$00
 E43E        STA $F8        ; 4.80: Counter to speed TI by 6/5
 E440        BEQ $E431
 

rschissler

Member
Joined
Nov 4, 2014
Messages
30
Location
San Diego, CA
I piggybacked all 8 RAM chips I got, all 8 at once to UA5,7,9,11,13,15,17,19, but there is still nothing on the screen. They all seemed to stack pretty well, without falling off. All I do is just turn the power on, right?
 

dave_m

Veteran Member
Joined
Feb 2, 2009
Messages
3,582
Location
Southern California, USA
I piggybacked all 8 RAM chips I got, all 8 at once to UA5,7,9,11,13,15,17,19, but there is still nothing on the screen. They all seemed to stack pretty well, without falling off. All I do is just turn the power on, right?

I suppose that's OK, letting gravity make the connection rather than firmly holding one chip on.

Well, so much for the easy stuff. The next thing to try is the ROMs. We tried the socketed chip UD7. Are you prepared to replace the 24 pin ROMs? Or you can buy a PetVet board and replace all ROM and RAM at once. This mini board goes into the CPU socket with the CPU going on the mini board. They go for around $70. See PETVet
-Dave
 

rschissler

Member
Joined
Nov 4, 2014
Messages
30
Location
San Diego, CA
Except it didn't feel like gravity was holding them on. It seemed like a pretty tight fit for them. I ordered sockets so I could install them, but the desoldering process is pretty time consuming. I'll have to think about the PetVet.
 
Top