OSI 400 Board

Help preserve OSI history!! Please check here to see if you have wanted items, or post your wanted items here
falter
Posts: 31
Joined: Sun Dec 27, 2015 8:15 pm

OSI 400 Board

Post by falter »

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.
billdrom
Posts: 55
Joined: Sat Dec 26, 2009 4:08 pm
Location: Somerdale,New Jersey

Re: OSI 400 Board

Post by billdrom »

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
falter
Posts: 31
Joined: Sun Dec 27, 2015 8:15 pm

Re: OSI 400 Board

Post by falter »

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.
mcsele
Posts: 4
Joined: Sat Jul 11, 2015 1:30 pm
Location: Ontario, Canada
Contact:

Re: OSI 400 Board

Post by mcsele »

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.
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)
falter
Posts: 31
Joined: Sun Dec 27, 2015 8:15 pm

Re: OSI 400 Board

Post by falter »

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?
bxdanny
Posts: 336
Joined: Thu Apr 16, 2015 2:27 pm
Location: Bronx, NY USA

Re: OSI 400 Board

Post by bxdanny »

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. ;)
Attachments
65F.pdf
(150.32 KiB) Downloaded 519 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)
falter
Posts: 31
Joined: Sun Dec 27, 2015 8:15 pm

Re: OSI 400 Board

Post by falter »

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?
Mark
Posts: 297
Joined: Tue Sep 16, 2008 6:04 am
Location: Madison, WI
Contact:

Re: OSI 400 Board

Post by Mark »

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
Boot
Boot
osi400.gif (1.25 KiB) Viewed 11826 times
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
Attached is the ROM binary and the commented disassembly listing above.
-Mark
Attachments
65F.zip
OSI 65F reconstruction & assembly listing
(2.28 KiB) Downloaded 493 times
falter
Posts: 31
Joined: Sun Dec 27, 2015 8:15 pm

Re: OSI 400 Board

Post by falter »

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.
bxdanny
Posts: 336
Joined: Thu Apr 16, 2015 2:27 pm
Location: Bronx, NY USA

Re: OSI 400 Board

Post by bxdanny »

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).
Attachments
68a2.zip
(364 Bytes) Downloaded 483 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)
Post Reply