I have a problem problem with a Superboard and a 610 board that I modified for 6264 RAM chips. I've run hours of memory tests to verify
the memory works, and it boots with HEXDOS and OS65DV3, but fails to boot DOS/65 every time. I've made a piggyback memory card that
gets most of it's chip select signals from the 610 board, with some minor added logic for the 6264's. Obviously I have a flaw in the (addressing?)
logic but I am not making much progress figuring out what it could be, since I lack a multichannel digital analyser (I have a 2-channel analog
scope).
My theory is that DOS/65 attempts to boot to the the highest memory available, in this case just below 32K, and the 6264 addressing logic
allows data being read from the ACIA at address C0xx to collide with the RAM at 7Fxx, but I cannot seem to prove that or even figure out
how that can happen. The OSI logic produces a signal C0XX NOT that does not seem to be used to limit RAM addressing, so I'm not using
it for my 6264 chip selects.
Any ideas?
Upgrade 610 from 2114 RAM to 6264 8K x 8
-
- Posts: 217
- Joined: Tue Jul 08, 2014 4:03 pm
- Location: Canada
Re: Upgrade 610 from 2114 RAM to 6264 8K x 8
We'd need to see your address decoding for the RAM. Did you ensure that it is not being selected when the ACIA is? It should be disabled when A15 is high.
Box stock Superboard II Rev. B
KLyball replica 600D, replica 610 & KLyball Data Separator
OMS SBME and SBME+ memory cards
OMS Digi-Mule expansion bus
KLyball memory card
KLyball replica 600D, replica 610 & KLyball Data Separator
OMS SBME and SBME+ memory cards
OMS Digi-Mule expansion bus
KLyball memory card
-
- Posts: 333
- Joined: Tue Sep 16, 2008 6:04 am
- Location: Madison, WI
- Contact:
Re: Upgrade 610 from 2114 RAM to 6264 8K x 8
Which version of Dos/65 are you using? I think the only disk images I've seen require a 48K C2/C4/C8 video based system.
I realized I had never uploaded the DOS/65 disk images found back in 2013. I cleaned the disk files, fixed the OS track on DOS65-1.65d and tried them out under WinOSI. The version I have requires 48K RAM (thus no BASIC ROM), with an OSI540 video display. Most of the disks are intact with just a few errors detected by OSIHFE (unfortunately sysgen.com was one of them). The complete archive can be found here: Dos/65
If there are 8" versions or C1P compatible versions out there, please point me to them or post them! Thanks!
Also, I'm not sure if this will help, but it has been known to identify glitchy hardware memory errors: OSI TestMem program
Good Luck!
-Mark
I realized I had never uploaded the DOS/65 disk images found back in 2013. I cleaned the disk files, fixed the OS track on DOS65-1.65d and tried them out under WinOSI. The version I have requires 48K RAM (thus no BASIC ROM), with an OSI540 video display. Most of the disks are intact with just a few errors detected by OSIHFE (unfortunately sysgen.com was one of them). The complete archive can be found here: Dos/65
If there are 8" versions or C1P compatible versions out there, please point me to them or post them! Thanks!
Also, I'm not sure if this will help, but it has been known to identify glitchy hardware memory errors: OSI TestMem program
Good Luck!
-Mark
-
- Posts: 204
- Joined: Sat Aug 27, 2022 4:52 pm
Re: Upgrade 610 from 2114 RAM to 6264 8K x 8
Here is my chip select logic and the source pins of the 610 board select logic. Also pics of my board and connections, and the 6264 pinouts for reference.
I have attempted to verify that accesses of the ACIA do not select the memory selects but not the other way around, since both HEXDOS and OS65D boot and run as expected. Also location 0200 contains 6E 20 3F when DOS/65 boot is attemted. Also the 74ls138 in U18 should block RAM chip select when A15 is high. The 6264 I am designating as M1 is for 2000-3FFF, M2 is for 4000-5FFF, and M3 is for 6000-7FFF. Let me know if more detail is needed. Thanks.
I have attempted to verify that accesses of the ACIA do not select the memory selects but not the other way around, since both HEXDOS and OS65D boot and run as expected. Also location 0200 contains 6E 20 3F when DOS/65 boot is attemted. Also the 74ls138 in U18 should block RAM chip select when A15 is high. The 6264 I am designating as M1 is for 2000-3FFF, M2 is for 4000-5FFF, and M3 is for 6000-7FFF. Let me know if more detail is needed. Thanks.
-
- Posts: 204
- Joined: Sat Aug 27, 2022 4:52 pm
Re: Upgrade 610 from 2114 RAM to 6264 8K x 8
I also forgot to point out that my copy of DOS/65 was provided by the author for the C1P and boots and runs as expected on my other unmodified Superboard. However I have as yet only compared the hardware between the two systems...one difference being the working system has a monitor ROM with a separate menu entry to boot DOS/65, though I don't remember why.
-
- Posts: 204
- Joined: Sat Aug 27, 2022 4:52 pm
Re: Upgrade 610 from 2114 RAM to 6264 8K x 8
Here is the 6264 data sheet from Motorola.
- Attachments
-
- MCM6264.pdf
- (177.26 KiB) Downloaded 441 times
-
- Posts: 333
- Joined: Tue Sep 16, 2008 6:04 am
- Location: Madison, WI
- Contact:
Re: Upgrade 610 from 2114 RAM to 6264 8K x 8
Location 0200 is loaded with 6E 20 3F by the reset code in the monitor and BASIC ROM during initialization/RESET time and is normal.
Do you have a Dos/65 Loader disk or does your other superboard boot a DOS/65 image directly? What does your system actually do when you try to boot DOS/65? (What's on the screen? What are the steps involved?)
If you are able to capture the serial data from your working superboard, you can dump the ROM contents with this BASIC program. It would be interesting to see what changes have been made.
(Alternately use the attached assembler program/monitor load program to do the same)
With the OSI Test Mem program, you can have it continuously access any RAM section above $400, which would allow you to monitor inadvertent chip selection.
Do you have a Dos/65 Loader disk or does your other superboard boot a DOS/65 image directly? What does your system actually do when you try to boot DOS/65? (What's on the screen? What are the steps involved?)
If you are able to capture the serial data from your working superboard, you can dump the ROM contents with this BASIC program. It would be interesting to see what changes have been made.
Code: Select all
10 A$="0123456789ABCDEF":J=0:POKE517,1
20 FOR I=63488 TO 65535:D=PEEK(I)
30 PRINT MID$(A$,D/16+1,1);MID$(A$,(DAND15)+1,1);" ";
40 J=J+1:IF J < 8 GOTO 60
50 PRINTCHR$(13);:J=0
60 NEXT:POKE517,0
With the OSI Test Mem program, you can have it continuously access any RAM section above $400, which would allow you to monitor inadvertent chip selection.
-
- Posts: 217
- Joined: Tue Jul 08, 2014 4:03 pm
- Location: Canada
Re: Upgrade 610 from 2114 RAM to 6264 8K x 8
Lets make it a lot simpler.
Try this..
Connect BPhi2 (you can get this on pin 9 of U7 or pin 11 of U5 or pin 4 of U8) directly to pin 26 of all 3 memory chips.
Connect pin 22 of all memory chips directly to ground.
Connect BR/W (pin 10 of U59) directly to pin 27 of all memory chips.
Leave the chip selects as they are coming from U18
This will eliminate the 5 inverters, the two NAND gates and a whole lot of propagation delay.
Box stock Superboard II Rev. B
KLyball replica 600D, replica 610 & KLyball Data Separator
OMS SBME and SBME+ memory cards
OMS Digi-Mule expansion bus
KLyball memory card
KLyball replica 600D, replica 610 & KLyball Data Separator
OMS SBME and SBME+ memory cards
OMS Digi-Mule expansion bus
KLyball memory card
-
- Posts: 333
- Joined: Tue Sep 16, 2008 6:04 am
- Location: Madison, WI
- Contact:
Re: Upgrade 610 from 2114 RAM to 6264 8K x 8
I disassembled the loader track for the C4P version of DOS/65. It would fit in a 2K monitor ROM in a C1P (it's only 3 pages long)
So it's likely your modified C1P with the DOS/65 boot menu item has the DOS/65 loader in ROM since it's a menu item, and you are trying to boot a DOS/65 OS disk which starts with a $43, $57, $00 track 0 header. ( Sending the contents of your monitor ROM would confirm this. )
An unmodified OSI trying to boot a DOS/65 OS disk would try to read 256 pages of disk data to location $4357+
It would try to read 64K of data from track 0 to consecutive addresses, eventually writing over the disk controller ports @ $C000 and disk ACIA, most likely hanging at that time waiting on ACIA data that never arrives due to controller settings corruption.
So since HEXDOS and OS65D work correctly, your memory expansion is likely operating correctly!
If you are able to send the contents of the DOS/65 Disk you are using with OSI Dump, and/or the contents of the monitor ROM, we could create a bootable DOS/65 loader disk for your new system. Otherwise you'll need to clone your boot ROM for your new system.
Below is the DOS/65 C4P loader partial disassembly, which could be assembled to create a monitor loadable file for C4P, or relocated and stuck in ROM somewhere.
-Mark
So it's likely your modified C1P with the DOS/65 boot menu item has the DOS/65 loader in ROM since it's a menu item, and you are trying to boot a DOS/65 OS disk which starts with a $43, $57, $00 track 0 header. ( Sending the contents of your monitor ROM would confirm this. )
An unmodified OSI trying to boot a DOS/65 OS disk would try to read 256 pages of disk data to location $4357+
It would try to read 64K of data from track 0 to consecutive addresses, eventually writing over the disk controller ports @ $C000 and disk ACIA, most likely hanging at that time waiting on ACIA data that never arrives due to controller settings corruption.
So since HEXDOS and OS65D work correctly, your memory expansion is likely operating correctly!
If you are able to send the contents of the DOS/65 Disk you are using with OSI Dump, and/or the contents of the monitor ROM, we could create a bootable DOS/65 loader disk for your new system. Otherwise you'll need to clone your boot ROM for your new system.
Below is the DOS/65 C4P loader partial disassembly, which could be assembled to create a monitor loadable file for C4P, or relocated and stuck in ROM somewhere.
-Mark
Code: Select all
*=$2200
;DOS/65 loader for C2/C4/C8 disk systems & OSI540 video
;looks like $00-$7F read from 1st sector of disk track1
;rest of data loads at $2506+
.EXE * ;emit a65 loader address
L2200 LDA #$20
STA $8A
LDA #$40
STA $89
LDX #$FF
TXS
CLD
SEI
JMP L2217
.BYTE $02,$20,$00,$01,$88,$00,$10
L2217 LDA #<MSGBOOT ;#$E4
LDY #>MSGBOOT ;#$22
L221B JSR PRINTMSG
L221E JSR $FD00 ;get key from polled keyboard
CMP #$0D
BNE L221E ;loop until <CR>
JSR OUTSCRN
LDA #$0A
JSR OUTSCRN
LDA #$40
LDY #$00
LDX #$04
STY $C001 ;initialize disk PIA
STA $C000
STX $C001
STA $C000
STY $C003
DEY
STY $C002
STX $C003
STY $C002
LDA $C000 ;bit 0 = drive 1 ready
LSR A
BCC L2260
LDA #<MSGNOTRDY ;#$2B
LDY #>MSGNOTRDY ;#$23
JSR PRINTMSG
LDA #<MSGINSERT ;#$F3
LDY #>MSGINSERT ;#$22
JMP L221B
L2260 JSR S23E8
JSR RDHEADR
BNE L227D
L2268 JSR INDISK
CMP #$76 ;sector marker
BNE L2268
JSR INDISK
CMP #$01 ;sector#
BNE L227D
JSR INDISK
CMP #$08 ;sector size
BEQ L228A
L227D LDA #<MSGHEADER ;#$3D
LDY #>MSGHEADER; #$23
L2281 JSR PRINTMSG
JSR S244D
JMP L2217
L228A LDX #$00 ;read track data
L228C LDA #$01
L228E BIT $C010 ;wait for char, & check parity
BEQ L228E
LDA $C011
BVS L229F ;Parity error?
STA $00,X ;store data from track, @lower zero page
INX
BPL L228C ;for 128 bytes
BMI L22A6
L229F LDA #<MSGPARITY ;#$57
LDY #>MSGPARITY ;#$23
JMP L2281
L22A6 JSR S24B8
BCC L22B3
LDA $88
AND #$01
BNE L227D
BEQ L229F
L22B3 JSR S249B
LDY #$00
L22B8 LDA ($82),Y
STA ($00),Y
INY
BPL L22B8
CLC
TYA
ADC $00
STA $00
BCC L22C9
INC $01
L22C9 DEC $04
BEQ L22E1
INC $06
LDA $06
CMP $05
BEQ L22B3
BCC L22B3
LDA #$01
STA $06
JSR S2407
JMP L22A6
L22E1 JMP ($0002)
MSGBOOT
.BYTE $0D,$0A,'DOS/65 LOADER'
MSGINSERT
.BYTE $0D,$0A,'INSERT DOS/65 DISK IN DRIVE A'
.BYTE $0D,$0A,'TYPE RETURN WHEN READY',0
MSGNOTRDY
.BYTE $0D,$0A,'DRIVE NOT READY',0
MSGHEADER
.BYTE $0D,$0A,'BAD HEADER - RESTARTING',0
MSGPARITY
.BYTE $0D,$0A,'PARITY ERROR - RESTARTING',0
PRINTMSG ;$2373
STA $80 ;message printer
STY $81
LDY #$00
STY $84
L237B LDY $84
INC $84
LDA ($80),Y
BNE L2384
RTS
L2384 JSR OUTSCRN
JMP L237B
OUTSCRN
PHA ;Write character in A to screen
PHA
LDX $89 ;get current cursor pos
LDA $8A ;get character under cursor
STA $D700,X ;restore character
PLA
CMP #$0D ;<CR>?
BEQ L23B0
CMP #$0A ;<LF>?
BEQ L23B8
STA $D700,X ;write new character to screen
INX ;move cursor+1
BMI L23B4 ;when X=$80 (D080) perform <LF>
L23A2 LDA $D700,X ;get character at cursor position
STA $8A ;store character
LDA #$5F
STA $D700,X ;write underscore cursor to screen
STX $89 ;save current line position
PLA
RTS
L23B0 LDX #$40 ;do <CR>
BNE L23A2
L23B4 LDX #$40 ;restore X to start of line
STX $89
L23B8 LDA #$C0 ;do <LF>
LDY #$D0
STA $8D ;$D0C0
STY $8E
LDA #$80
LDY #$D0
STA $8B
STY $8C ;$D080
LDX #$07 ;#pages to copy
LDY #$00
L23CC LDA ($8D),Y ;copy screen lines up
STA ($8B),Y
INY
BNE L23CC
INC $8E
INC $8C
DEX
BNE L23CC ;loop until all pages copied
LDA #$20
L23DC STA $D740,X ;erase bottom line $d740+
INX
CPX #$40
BNE L23DC
LDX $89
BNE L23A2
S23E8 JSR S2407
JSR S2435
L23EE LDA #$02
BIT $C000 ;test @ trk 0? (0=trk0)
BNE L23FA
LDA #$00
STA $87 ;store current trk# (?)
RTS
L23FA JSR S2400
JMP L23EE
S2400 LDA $C002 ;set step direction down to 0
ORA #$04
BNE L240E
S2407 INC $87 ;increment current trk#
LDA $C002 ;set step direction up to 39
AND #$FB
L240E STA $C002
JSR S2430 ;(short delay)
AND #$F7
STA $C002 ;step on 1->0 transition
JSR S2431 ;(longer delay)
ORA #$08
STA $C002 ;un step
LDX #$08
JMP L2437 ;long delay *8
S2426 JSR S242E
DEY
BNE S2426
NOP
RTS
S242E BNE S2430
S2430 RTS
S2431 JSR S2430
RTS
S2435 LDX #$0C ;long delay *c
L2437 LDY #$FF
JSR S2426
DEX
BNE L2437
RTS
S2440 LDA #$7F ;load head
AND $C002
STA $C002
LDX #$28
JMP L2437 ;(long delay *$28)
S244D LDA #$80 ;unload head
ORA $C002
STA $C002
RTS
RDHEADR ;$2456
JSR S2440 ;load head
SEI
L245A LDA $C000 ;wait for index start
BMI L245A
L245F LDA $C000 ;wait for index end
BPL L245F
LDA #$03
STA $C010 ;reset disk ACIA
LDA #$58
STA $C010 ;8E1 /1 NO RTS NO txIRQ NO rxIRQ
L246E LDA $C000
BPL L248E ;drive 1 ready?
JSR INDISK ;read disk
L2476 CMP #$43
BNE L246E
JSR INDISK
CMP #$57 ;look for $43,$57,trk#
BNE L2476
JSR INDISK
CMP $87 ;target track# match?
BNE L248D
JSR INDISK
CMP #$58
L248D RTS
L248E LDA #$01
RTS
INDISK ;$2491
LDA $C010 ;read value from disk
LSR A
BCC INDISK
LDA $C011
RTS
S249B LDA $06
SEC
SBC #$01
LDY #$00
STY $83
LDY #$07
L24A6 ASL A
ROL $83
DEY
BNE L24A6
CLC
ADC #$06
STA $82
LDA $83
ADC #$25
STA $83
RTS
S24B8 LDA #$06 ;read data from disk
LDY #$25 ;to $2506+
STA $85
STY $86
LDA #$00
STA $88
JSR RDHEADR
BNE L24FA
L24C9 JSR INDISK
CMP #$76 ;sector marker
BNE L24C9
JSR INDISK
CMP #$01 ;sector #
BNE L24FA
JSR INDISK
CMP #$08 ;sector size
BNE L24FA
TAX ;# pages to read in X
LDY #$00
L24E1 LDA #$01
L24E3 BIT $C010 ;wait for ACIA ready & check PE
BEQ L24E3
LDA $C011 ;reading ACIA clears PE
BVS L24FE
STA ($85),Y
INY
BNE L24E1
INC $86
DEX
BNE L24E1 ;loop till all sector read
CLC
BCC L2503
L24FA LDA #$01 ;entry for seek trk 1 ?
BNE L2500
L24FE LDA #$02 ;entry for seek trk 2 ?
L2500 STA $88 ;$88 = target track
SEC ;flag not done yet
L2503 JMP S244D ;done, unload head & return
-
- Posts: 204
- Joined: Sat Aug 27, 2022 4:52 pm
Re: Upgrade 610 from 2114 RAM to 6264 8K x 8
Thanks to all for your questions, ideas, and suggestions. I had a long answer to each poster last night
but my session timed out before I posted it
So here are some bullets to what I planned to post as a list of what I plan to do.
But first some background. My VERY FIRST Superboard base system I expanded to an S100 motherboard with memory mapped cards for the 610 board, an EPROM board, an EPROM burner for 2716s, and a video card to display 80 char lines. I modified the monitor ROM for new menu items, including the Extended Monitor and EPROM burner. Attached is my memory mapping for the system hardware which allowed 100% compatibility to the OSI C1P. Also attached is a pic of how it looks today, with a 10 pound (5 kg) power supply I scrounged from a local surplus store.
My copy of DOS/65 is Version 2.0-S on 9 diskettes plus a Loader diskette. When I ordered it back in the ‘80s I specified that it was for a Superboard with 610 board expansion and 32 K of RAM. If anyone knows where in memory this version would load and what is loaded, that would be extremely helpful!!
When the failing system tries to boot DOS/65 all that happens is the floppy drives seeks to track 0, the display begins to flicker as though the refresh rate is reduced, then nothing else seems to be read from diskette any further tracks. One clue is that I have observed (once in MANY attempts) the screen is filled with random graphic characters, which to me implies that whatever is running is corrupted or has bad pointers.
The possibility of the cause being propagation delay suggests that perhaps the data to/from memory does not make it through the 610 board transceivers. But that does not seem to be the case when I run memory tests. However I think if I type a small program to RUN in upper memory I might see different result. I plan to try that before any more hardware mods. None of this explains why HEXDOS and OS65D boot and run as expected, including being able to duplicate diskettes. Also I tried running a BASIC memory test to $7Fxx and $C0xx to scope whether the chip selects are correctly accessing the correct addresses but it was not clear this is happening.
I will be away for the next 2 weeks and will not be able to do more debug until I return. Thanks again for your analysis and suggestions.
but my session timed out before I posted it

But first some background. My VERY FIRST Superboard base system I expanded to an S100 motherboard with memory mapped cards for the 610 board, an EPROM board, an EPROM burner for 2716s, and a video card to display 80 char lines. I modified the monitor ROM for new menu items, including the Extended Monitor and EPROM burner. Attached is my memory mapping for the system hardware which allowed 100% compatibility to the OSI C1P. Also attached is a pic of how it looks today, with a 10 pound (5 kg) power supply I scrounged from a local surplus store.
My copy of DOS/65 is Version 2.0-S on 9 diskettes plus a Loader diskette. When I ordered it back in the ‘80s I specified that it was for a Superboard with 610 board expansion and 32 K of RAM. If anyone knows where in memory this version would load and what is loaded, that would be extremely helpful!!
When the failing system tries to boot DOS/65 all that happens is the floppy drives seeks to track 0, the display begins to flicker as though the refresh rate is reduced, then nothing else seems to be read from diskette any further tracks. One clue is that I have observed (once in MANY attempts) the screen is filled with random graphic characters, which to me implies that whatever is running is corrupted or has bad pointers.
The possibility of the cause being propagation delay suggests that perhaps the data to/from memory does not make it through the 610 board transceivers. But that does not seem to be the case when I run memory tests. However I think if I type a small program to RUN in upper memory I might see different result. I plan to try that before any more hardware mods. None of this explains why HEXDOS and OS65D boot and run as expected, including being able to duplicate diskettes. Also I tried running a BASIC memory test to $7Fxx and $C0xx to scope whether the chip selects are correctly accessing the correct addresses but it was not clear this is happening.
I will be away for the next 2 weeks and will not be able to do more debug until I return. Thanks again for your analysis and suggestions.
- Attachments
-
- C1P_to_S100Buss.pdf
- (1.54 MiB) Downloaded 472 times