OSI 400 Board
-
- Posts: 31
- Joined: Sun Dec 27, 2015 8:15 pm
OSI 400 Board
I don't know why but the OSI 400 board is the one board I haven't seen come up yet in many years of watching ebay and such. I don't know if production wise it had a much shorter life or what. But I'm definitely looking for one if anyone comes across one someone is willing to part with.
-
- Posts: 55
- Joined: Sat Dec 26, 2009 4:08 pm
- Location: Somerdale,New Jersey
Re: OSI 400 Board
I don't know if a replica is OK for you but Glitch sells them on Tindie.
https://www.tindie.com/products/glitchw ... cpu-board/
Also look here on this site.
https://osiweb.org/osiforum/viewtopic.php?f=3&t=702
Bill
https://www.tindie.com/products/glitchw ... cpu-board/
Also look here on this site.
https://osiweb.org/osiforum/viewtopic.php?f=3&t=702
Bill
-
- Posts: 31
- Joined: Sun Dec 27, 2015 8:15 pm
Re: OSI 400 Board
Many thanks. I may go that route but am hoping to come across an original. I've been filling in the blanks in my collection. But an original 400 board is one thing I've not seen appear, ever.
-
- Posts: 4
- Joined: Sat Jul 11, 2015 1:30 pm
- Location: Ontario, Canada
- Contact:
Re: OSI 400 Board
You might be looking for this:
https://www.ebay.ca/itm/144479929614
Looks a bit hacked but as you said, these are hard to come by.
https://www.ebay.ca/itm/144479929614
Looks a bit hacked but as you said, these are hard to come by.
http://technology.niagarac.on.ca/staff/ ... tific.html
Superboard-II (610, SA-400, HEXDOS)
C3 OEM w/ dual 8" (OS65D & CP/M)
C2-8P DF video (needs work)
C2-4P (tape only, 502)
Superboard-II (610, SA-400, HEXDOS)
C3 OEM w/ dual 8" (OS65D & CP/M)
C2-8P DF video (needs work)
C2-4P (tape only, 502)
-
- Posts: 31
- Joined: Sun Dec 27, 2015 8:15 pm
Re: OSI 400 Board
I finally got one! Came up on ebay this morning with a reasonable buy it now. It's an unbuilt board with original documentation!
I'm not sure if I'll build it or not, but I did do a cursory search for the Superbug monitor it uses.. can't seem to find it anywhere. Does anyone have a dump of that?
I'm not sure if I'll build it or not, but I did do a cursory search for the Superbug monitor it uses.. can't seem to find it anywhere. Does anyone have a dump of that?
-
- Posts: 353
- Joined: Thu Apr 16, 2015 2:27 pm
- Location: Bronx, NY USA
Re: OSI 400 Board
According to the document at http://marks-lab.com/osi/boards/schematics/OSI400.pdf (listed as simply "schematics", but actually containing a bit more), the 400 board used the 65A or 65V monitor ROMs (or PROMs), the same as the later 500 board, containing the same code later incorporated into the SYNMON1 ROM. (The 65V was of course the version for encoded ASCII keyboards, as the OSI polled keyboards didn't exist yet.) That document doesn't mention the term "Superbug" at all. The longer manual at http://marks-lab.com/osi/boards/schemat ... MANUAL.pdf refers to Superbug 65 and Superbug 68 monitors for use with serial terminals, so I have to assume that these are identical to the 65A and 68A (or 68A2) monitors. (Whether there was ever a 68A monitor released that was different from the later 68A2, I don't know.)
The 400 could also optionally support the 65F floppy bootstrap ROM, which differed from the 65F3 (H/D/M?) ROM we are familiar with in that the prompt was simply D/M?, without the H/, since the hard drive interface had not been developed yet. That was also used on the 500 board as well. If the bootstrap ROM wasn't installed on the 400 or 500, the monitor ROM occupied both $FF and $FE pages, which is why the OSI monitor ROMs had reset (or rather monitor entry) and interrupt vectors in the $FEFA-$FEFF range. The "RE M" command in 65D, as well as the code to enter the monitor from the D/M? or H/D/M? prompt, also took advantage of this pseudo-reset vector (which was the real reset vector on a minimal system with only 256 bytes of ROM).
What I wasn't expecting is that the 400 board had a parallel port at $FDxx, rather than support for a third page of (P)ROM. Seeing that, it becomes logical that the ACIA would be at $FCxx, where it remained on all the later 500-series boards.
I'm attaching a scan of a printout I once made showing most (but not all) of the code from the original 65F (D/M?) boot ROM. It was printed from a system that used a 500 board, the only such system I ever saw. I apparently never printed out the section from $FF70 to $FFA7, but clearly $FFA4-$FFA7 contains "D/M?" (44 2F 4D 3F hex), while I expect that $FF74 is a delay loop, $FF89 is likely just an RTS instruction, and $FF7F is clearly a routine to read a byte from the floppy disk ACIA into the accumulator.
BTW, searching Google for "Superbug ROM" brought up a manual for an arcade game called "Super Bug", which can be found at https://www.arcade-museum.com/manuals-v ... perBug.pdf, and some other info about that game. Also some info about a monitor ROM for the 6809 that was known as Superbug, but not one for the 6800 or 6502. (The xxbug nomenclature for ROMs was mainly associated with the 6800 series of microprocessors, starting with the well-known Mikbug.) Searching for just Superbug instead brought up information about antibiotic-resistant bacteria.
The 400 could also optionally support the 65F floppy bootstrap ROM, which differed from the 65F3 (H/D/M?) ROM we are familiar with in that the prompt was simply D/M?, without the H/, since the hard drive interface had not been developed yet. That was also used on the 500 board as well. If the bootstrap ROM wasn't installed on the 400 or 500, the monitor ROM occupied both $FF and $FE pages, which is why the OSI monitor ROMs had reset (or rather monitor entry) and interrupt vectors in the $FEFA-$FEFF range. The "RE M" command in 65D, as well as the code to enter the monitor from the D/M? or H/D/M? prompt, also took advantage of this pseudo-reset vector (which was the real reset vector on a minimal system with only 256 bytes of ROM).
What I wasn't expecting is that the 400 board had a parallel port at $FDxx, rather than support for a third page of (P)ROM. Seeing that, it becomes logical that the ACIA would be at $FCxx, where it remained on all the later 500-series boards.
I'm attaching a scan of a printout I once made showing most (but not all) of the code from the original 65F (D/M?) boot ROM. It was printed from a system that used a 500 board, the only such system I ever saw. I apparently never printed out the section from $FF70 to $FFA7, but clearly $FFA4-$FFA7 contains "D/M?" (44 2F 4D 3F hex), while I expect that $FF74 is a delay loop, $FF89 is likely just an RTS instruction, and $FF7F is clearly a routine to read a byte from the floppy disk ACIA into the accumulator.
BTW, searching Google for "Superbug ROM" brought up a manual for an arcade game called "Super Bug", which can be found at https://www.arcade-museum.com/manuals-v ... perBug.pdf, and some other info about that game. Also some info about a monitor ROM for the 6809 that was known as Superbug, but not one for the 6800 or 6502. (The xxbug nomenclature for ROMs was mainly associated with the 6800 series of microprocessors, starting with the well-known Mikbug.) Searching for just Superbug instead brought up information about antibiotic-resistant bacteria.
- Attachments
-
- 65F.pdf
- (150.32 KiB) Downloaded 588 times
No current OSI hardware
Former programmer for Dwo Quong Fok Lok Sow and Orion Software Associates
Former owner of C1P MF (original version) and C2-8P DF (502-based)
Former programmer for Dwo Quong Fok Lok Sow and Orion Software Associates
Former owner of C1P MF (original version) and C2-8P DF (502-based)
-
- Posts: 31
- Joined: Sun Dec 27, 2015 8:15 pm
Re: OSI 400 Board
Thanks so much for this! This is most helpful. I have a 500 board -- I think it has the 65v ROM, so I could dump that. I'm not sure exactly how the 400 board was most commonly used -- ie just as a single board to a terminal or as part of a system?
-
- Posts: 307
- Joined: Tue Sep 16, 2008 6:04 am
- Location: Madison, WI
- Contact:
Re: OSI 400 Board
With Danny's partial ROM listing I was able to fill in the rest of the pieces to make a working 65F ROM based on the code used in other OSI ROMs.
I'm not 100% certain it matches the original, but it does work correctly, at least with WinOSI.
As mentioned, it supports either 65A (serial) or 65V (video) based monitors. I used it with page 0 from SYNMON @ $FE00 which supports OSI 400 ASCII keyboard attached at $DF00
I was able to boot OS65DV3.3 as an experiment. It loaded and showed the disk menu, but the OS is not configured for ASCII keyboard, and my virtual OSI440 only supports uppercase, so it was unusable.
Attached is the ROM binary and the commented disassembly listing above.
-Mark
I'm not 100% certain it matches the original, but it does work correctly, at least with WinOSI.
As mentioned, it supports either 65A (serial) or 65V (video) based monitors. I used it with page 0 from SYNMON @ $FE00 which supports OSI 400 ASCII keyboard attached at $DF00
I was able to boot OS65DV3.3 as an experiment. It loaded and showed the disk menu, but the OS is not configured for ASCII keyboard, and my virtual OSI440 only supports uppercase, so it was unusable.
Code: Select all
;OSI 65F ROM assembly listing with comments
;reconstructed from partial ROM listing
;
FF00 A0 00 LDY #$00 ;init disk controller
FF02 8C 01 C0 STY $C001 ;select DDRA.
FF05 8C 00 C0 STY $C000 ;0's in DDRA indicate input.
FF08 A2 04 LDX #$04
FF0A 8E 01 C0 STX $C001 ;select PORTA
FF0D 8C 03 C0 STY $C003 ;select DDRB
FF10 88 DEY
FF11 8C 02 C0 STY $C002 ;1's in DDRB indicate output.
FF14 8E 03 C0 STX $C003 ;select PORT B
FF17 8C 02 C0 STY $C002 ;make all outputs high
FF1A A9 FB LDA #$FB
FF1C 20 89 FF JSR $FF89 ;step to track +1
FF1F A2 18 LDX #$18
FF21 20 74 FF JSR $FF74 ;delay
FF24 A9 02 LDA #$02
FF26 2C 00 C0 BIT $C000
FF29 F0 08 BEQ $FF33 ;track 0 enabled?
FF2B A9 FF LDA #$FF ;step down to 0
FF2D 20 89 FF JSR $FF89
FF30 4C 24 FF JMP $FF24
FF33 A2 7F LDX #$7F
FF35 8E 02 C0 STX $C002 ;load head
FF38 20 74 FF JSR $FF74 ;delay
FF3B AD 00 C0 LDA $C000
FF3E 30 FB BMI $FF3B ;wait for index start
FF40 AD 00 C0 LDA $C000
FF43 10 FB BPL $FF40 ;wait for index end
FF45 A9 03 LDA #$03
FF47 8D 10 C0 STA $C010 ;reset disk ACIA
FF4A A9 58 LDA #$58
FF4C 8D 10 C0 STA $C010 ;/1 RTS hi, no irq
FF4F 20 7F FF JSR $FF7F
FF52 85 01 STA $01 ;read start addr hi
FF54 20 7F FF JSR $FF7F
FF57 85 00 STA $00 ;read start addr lo
FF59 20 7F FF JSR $FF7F
FF5C 85 02 STA $02 ;read num pages
FF5E A0 00 LDY #$00
FF60 20 7F FF JSR $FF7F
FF63 91 00 STA ($00),Y ;read the specified num pages
FF65 C8 INY
FF66 D0 F8 BNE $FF60
FF68 E6 01 INC $01
FF6A C6 02 DEC $02
FF6C D0 F2 BNE $FF60
FF6E A9 FF LDA #$FF
FF70 8D 02 C0 STA $C002 ;disable drive
FF73 60 RTS
FF74 A0 F8 LDY #$F8 ;loop for delay
FF76 88 DEY
FF77 D0 FD BNE $FF76
FF79 55 FF EOR $FF,X
FF7B CA DEX
FF7C D0 F6 BNE $FF74
FF7E 60 RTS
FF7F AD 10 C0 LDA $C010 ;read byte from disk
FF82 4A LSR A
FF83 90 FA BCC $FF7F
FF85 AD 11 C0 LDA $C011
FF88 60 RTS
FF89 8D 02 C0 STA $C002 ;($FB=step direction up )
FF8C 20 88 FF JSR $FF88
FF8F 29 F7 AND #$F7 ;step on
FF91 8D 02 C0 STA $C002
FF94 20 88 FF JSR $FF88
FF97 09 08 ORA #$08 ;step off
FF99 8D 02 C0 STA $C002
FF9C A2 18 LDX #$18
FF9E 20 74 FF JSR $FF74 ;delay
FFA1 F0 E5 BEQ $FF88 ;???
FFA3 00 BRK ;??? (not sure if this is correct; perhaps a JMP $FF88 instead)
FFA4 44 2F .BYTE $44,$2F ; 'D/
FFA6 4D 3F .BYTE $4D,$3F ; 'M?
FFA8 D8 CLD
FFA9 A2 D4 LDX #$D4 ;max vid page address (hi)
FFAB A9 D0 LDA #$D0 ;start vid address (hi)
FFAD 85 01 STA $01
FFAF A0 00 LDY #$00
FFB1 84 00 STY $00
FFB3 A9 20 LDA #$20
FFB5 91 00 STA ($00),Y ;erase video memory (1K)
FFB7 C8 INY
FFB8 D0 FB BNE $FFB5
FFBA E6 01 INC $01
FFBC E4 01 CPX $01
FFBE D0 F5 BNE $FFB5
FFC0 A9 03 LDA #$03
FFC2 8D 00 FC STA $FC00 ;reset ACIA
FFC5 A9 B1 LDA #$B1
FFC7 8D 00 FC STA $FC00 ;8N2 /16 RTSIRQ
FFCA B9 A4 FF LDA $FFA4,Y ;"D/M?" prompt
FFCD 30 0E BMI $FFDD ;end of prompt?
FFCF 99 C6 D0 STA $D0C6,Y ;write to video memory
FFD2 AE 01 FE LDX $FE01 ;test 65A (0) vs 65V ($28) monitor
FFD5 D0 03 BNE $FFDA
FFD7 20 0B FE JSR $FE0B ;65A send char out via ACIA
FFDA C8 INY
FFDB D0 ED BNE $FFCA
FFDD AD 01 FE LDA $FE01 ;test 65A (0) vs 65V ($28) monitor
FFE0 D0 05 BNE $FFE7
FFE2 20 00 FE JSR $FE00 ;65A GetChar with echo
FFE5 B0 03 BCS $FFEA
FFE7 20 ED FE JSR $FEED ;65V GetChar from ASCII KB/etc.
FFEA C9 44 CMP #$44 ;'D
FFEC D0 09 BNE $FFF7
FFEE 20 00 FF JSR $FF00 ;call disk load routine subroutine
FFF1 4C 00 22 JMP $2200 ;execute loaded disk track (hopefully $2200)
FFF4 20 00 FF JSR $FF00
FFF7 6C FC FE JMP ($FEFC) ;(storage for entry point to monitor)
FFFA 30 01 .BYTE $03,$01 ;NMI vector
FFFC A8 FF .BYTE $A8,$FF ;reset vector
FFFD C0 01 .BYTE $C0,$01 ;IRQ vector
-Mark
- Attachments
-
- 65F.zip
- OSI 65F reconstruction & assembly listing
- (2.28 KiB) Downloaded 548 times
-
- Posts: 31
- Joined: Sun Dec 27, 2015 8:15 pm
Re: OSI 400 Board
Thanks muchly for all this info! I confess, I did not realize the 400 could run any CPU other than a 6502. I wonder if the '68' ROM code is available somewhere? Might be interesting to do something different.
My board is here along with a really complete manual.. I was trying to find the 400 manual on the site here but unless I'm going blind, I don't think I saw it? Should I scan this?
I now have a 500 card, an original 540 video card, a 400 card, a 440 card and a backplane (I forget what model number it was). I was originally going to set up the 500 with the 440 as sort of a 'Superkit', but now that I have the 540 card and an empty Challenger case w/backplane and PSU, I think I might put them in there. Sadly I don't have the correct keyboard for it, and to get one you have to fight with the keyboard crazies on the rare occasion someone auctions one.
What would have been the most likely setup for a 400 back in the day? Just the board itself with serial i/o? Or the backplane, 440 and keyboard? I'm assuming OSI users didn't always opt for OSI keyboards.
My board is here along with a really complete manual.. I was trying to find the 400 manual on the site here but unless I'm going blind, I don't think I saw it? Should I scan this?
I now have a 500 card, an original 540 video card, a 400 card, a 440 card and a backplane (I forget what model number it was). I was originally going to set up the 500 with the 440 as sort of a 'Superkit', but now that I have the 540 card and an empty Challenger case w/backplane and PSU, I think I might put them in there. Sadly I don't have the correct keyboard for it, and to get one you have to fight with the keyboard crazies on the rare occasion someone auctions one.
What would have been the most likely setup for a 400 back in the day? Just the board itself with serial i/o? Or the backplane, 440 and keyboard? I'm assuming OSI users didn't always opt for OSI keyboards.
-
- Posts: 353
- Joined: Thu Apr 16, 2015 2:27 pm
- Location: Bronx, NY USA
Re: OSI 400 Board
Falter,
Here is the 6800 ROM code (256 bytes at $FF00), as extracted from the WinOSI package. (I had to ZIP it to get the forum software to accept the upload.)
Is your manual for the 400 board different from either of the ones I linked to in my previous message? It sounds like it is, if it mentions the term "Superbug" but not the possibility of building the board with a 6800 chip. If so, can you scan it and upload it?
If you have a working 500 board, does it use the original "D/M" ROM? If so, can you dump it and upload that? Comparing it to Mark's reconstruction could be interesting (although I'd bet he got it very close to being exactly right).
Here is the 6800 ROM code (256 bytes at $FF00), as extracted from the WinOSI package. (I had to ZIP it to get the forum software to accept the upload.)
Is your manual for the 400 board different from either of the ones I linked to in my previous message? It sounds like it is, if it mentions the term "Superbug" but not the possibility of building the board with a 6800 chip. If so, can you scan it and upload it?
If you have a working 500 board, does it use the original "D/M" ROM? If so, can you dump it and upload that? Comparing it to Mark's reconstruction could be interesting (although I'd bet he got it very close to being exactly right).
- Attachments
-
- 68a2.zip
- (364 Bytes) Downloaded 546 times
No current OSI hardware
Former programmer for Dwo Quong Fok Lok Sow and Orion Software Associates
Former owner of C1P MF (original version) and C2-8P DF (502-based)
Former programmer for Dwo Quong Fok Lok Sow and Orion Software Associates
Former owner of C1P MF (original version) and C2-8P DF (502-based)