|
Joined: Jan 2012
Posts: 1,179 Likes: 17
Very Senior Member
|
OP
Very Senior Member
Joined: Jan 2012
Posts: 1,179 Likes: 17 |
Here's the file for the 4k ROM of the Basis 108 Diagnostic Disk Card ... https://www.magentacloud.de/lnk/NHyzL7QiRobert
NCR DMV- DEC Rainbow- Siemens PCD- ITT 3030-Oly People- Acorn A5000- Olivetti M20
|
|
|
|
Joined: Feb 2014
Posts: 1,102 Likes: 173
Very Senior Member
|
Very Senior Member
Joined: Feb 2014
Posts: 1,102 Likes: 173 |
As far as I can tell, it looks ok. ./unidasm -arch m6502 basis108_2732A_DIP24.BIN -basepc c800 | less This looks like code to figure out the slot number and stick it in 05f8 d000: a2 20 ldx #$20
d002: a0 00 ldy #$00
d004: a2 03 ldx #$03
d006: 86 3c stx $3c
d008: ad f8 05 lda $05f8
d00b: 48 pha
d00c: 8d ff cf sta $cfff
d00f: 20 8a cb jsr $cb8a
d012: ba tsx
d013: bd 00 01 lda $0100, x
d016: 8d f8 07 sta $07f8
d019: 0a asl a
d01a: 0a asl a
d01b: 0a asl a
d01c: 0a asl a
d01d: 8d f8 05 sta $05f8
d020: 85 f5 sta $f5
d022: 68 pla
and there's lots of text strings:
f= io.open("basis108_2732A_DIP24.BIN") a=f:read("*a") print(a:len()) for i=0,a:len()-1 do c = a:byte(i+1) if (i%64 == 0) then print() io.write(string.format("%4x",i)..": ") end c = c % 128 if c>=32 and c<=126 then io.write(string.char(c)) else io.write(".") end if c==0x1b then io.write("ESC") end end print()
4096
6c0: ,K`()O..1.p. p}HPv`P.).H).P.h.~.~`hF% ]{L3N()O..1.p. p}HPv`.....
700: .CHAR? ..F/I/N? .. ROM TEST...KEYBOARD TEST - 3 ESC'S TO END..SE
740: T ERR ..CLR ERR ...PROC TEST DONE... SPECIFY TEST(S) .. DRIVE ON
780: ?...DATA WILL BE DESTROYED!..BLANK DISK IN DRIVE?..SLOT? 6..DRIV
7c0: E? 1..LOCN CHKSM ID...IVE? 1..LOCN CHKSM ID...................
800: " ."..<-x.H..O .K:=...x......x..uhp.).p--.@).I.p$)... .~ .~-.O
840: iO..O OJ ,K-.O .I0......OL.H..OL=H HJ .I.l,.@IMPe-.O .I %II.ESCpXHF
880: $P...OLcH p}hI*P.LSMIBP.L.`jjjj8i1.M0...OL.HHI.0. .JhI.0. .I03I.
8c0: ..Op.0* FJ0% ^NP p.....OL5H-.O%up. .I..O-.@0O 0N0J.g)...O 3N).0<
900: ).P.`).p. EJ%u).p. ;J,.@`-.@..I`..)_` .I.{,.@` X| iO oN..1-QUICK
940: .2-LONG.3-ROM.4-PROC.5-KEYBD.6-COLOR.7-SCREEN.8-DISK SPEED.9-CON
980: T.ESC-TO BOOT.. ? `.)....u`* X|.P. EJ PIF..v .}P. ;J PIF..v oN.
9c0: TEST DONE...L%I,.@..)...` oN...TEST ALT 64K BANK.."..c@hh`..w`"
a00: ..b@hh`..w` oN.REPETITIONS? . o} . '.%>)...%>)p.*****.>..e>.e...
a40: p.F.` iO.x.=.@=.@=.@%u).P.=.@ oN. QUICK TEST..)..w .K%~).p. ZI).
a80: .w .K .I)..x...@` oN.. ADDRESS TEST..hh` ..w .K-.@fw%wI..r` oN.
ac0: LONG TEST....y (J%~).p. PI0. ZI (J .I oN. REFRESH TEST COMPLETE.
b00: .` oN. 0800-BFFF .". @). [K%~.8..@ oN. D000-FFFF ."P .). [K-.@ o
b40: N. D000-FFFF ."P .). [K-.@`.......|I.P.%wI.P.).Pp Hy%w Z} .%w.*=
b80: .K...=.K... ^Ml..mM.J/K6K?KlKuK.LEK.LbL.L.LBLaL"..tLGL...HPzhh`%
bc0: .I.P...1.E. .LHPtf.)...1.E. .L%.HPrf.&.d.Pj`ft%tI.pB`%.I.pDft%tI
c00: .pBPNft%tI.p)`ft%...f.%.E.Pv`HP.h`..H-.@ oN.ERROR AT LOCATION $.
c40: .*%. Ay Hyh Z} 1OL=M..1.E. .LHPtp.ESC%...1.E. .LE.plHp.1. .Lpv.tf.%
c80: .E.p.P[Hps1. .Lpv`"ZLGL oN..REFRESH TEST..)..t-.@0.). (|FtPrhh..
cc0: @`)ZLUK ^M...HP{f.%.E.Pr`01234567 ^M ..yH.f.)U....j1.E.p. %N)*..
d00: ..j1.E.p. %N.... )M,.@....@`HPJf.%.E.PBpo-.@.H X| oN MEMORY ERR
d40: OR AT $.h(*%. Ay Hy%. Z} .} oN. DATA BIT CONDI
d80: TION...".)..$=YL p})..$5.0. !OL*M oNBAD...J.\ -OH$y0.H X| UNhI.P
dc0: .F.$.@.P.F. bM$.h.`.x.=.@Le..|)@.}.H .1|1|h(`-.@ UN bM)..$.f..*-
e00: .@%. Ay bM)...P. %N.&.0.%...j1.E.Pmpn)~..P. %N8&...%...j1.E.Pmpn
e40: %... )MHP,-.@.J..@,.@I.P.8%.i...E.....0.I.P.%..i.0sE.0....c*%.Pf
e80: .I@.Y..0]hhhhhh)....uF.0.f.%.E.P=-.@`....%...%.0.8f.".)...J.{".%
ec0: .E..0.J.z`H5.)....h.q oN.TESTING LOCATION - $.` J.%$HF% .}h.$h.p
f00: .h.qfpP.fq1pI.p. p}L.O%qH%pH ?.` oNGOOD ...`)..%)..$ oN.ESC-ABO
f40: RT RETURN-RETRY ANY KEY-CONT.. %II.ESCp.`LSM oN..Basis 108 Diagnost
f80: ic Controller...%~).P. oN 64.p. oN 128. oNK MEMORY...).`........
fc0: ................................................................
|
|
|
|
Joined: Mar 2001
Posts: 17,217 Likes: 234
Very Senior Member
|
Very Senior Member
Joined: Mar 2001
Posts: 17,217 Likes: 234 |
The Basis 108 disk controller ROM looks great. Disassembly is what I'd expect for an Apple II FDC, will just need to figure out the banking.
|
|
|
|
Joined: Feb 2014
Posts: 1,102 Likes: 173
Very Senior Member
|
Very Senior Member
Joined: Feb 2014
Posts: 1,102 Likes: 173 |
Looking at the strings in this card reminds me a little bit of looking at the IIe diagnostics card dump: I reckon the IIe diagnostics card must inhibit the onboard rom and replaces the rom from D000-FFFF. The two rom chips are 8k in size, but one of the chips has FFs in 4k of them.
hexdump -C EPROM18B.BIN
...
00000fd0 06 51 05 52 07 52 05 53 06 53 07 53 05 54 07 54 |.Q.R.R.S.S.S.T.T|
00000fe0 05 55 07 55 09 51 0a 51 09 52 09 53 09 54 09 55 |.U.U.Q.Q.R.S.T.U|
00000ff0 0a 53 0b 52 0d 51 0e 51 0d 52 0d 53 0e 53 0e 54 |.S.R.Q.Q.R.S.S.T|
00001000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
*
00002000
4k of FF chars
then it looks like it continues from S.S.T to U.U.W
hexdump -C EPROM19B.BIN
00000000 0e 55 0d 55 02 57 02 58 02 59 02 5a 02 5b 03 5b |.U.U.W.X.Y.Z.[.[|
00000010 06 57 05 58 07 58 05 59 07 59 05 5a 07 5a 06 5b |.W.X.X.Y.Y.Z.Z.[|
00000020 09 57 0a 57 09 58 09 59 09 5a 09 5b 0a 5b 0c 57 |.W.W.X.Y.Z.[.[.W|
00000030 0c 58 0c 59 0c 5a 0c 5b 0e 58 0d 59 0e 5a 0e 5b |.X.Y.Z.[.X.Y.Z.[|
00000040 09 15 53 16 52 17 51 18 51 19 52 1a 53 1b 53 1c |..S.R.Q.Q.R.S.S.|
00000050 52 1d 51 1e 51 0d bb 56 bc 56 bd 56 be 56 bf 56 |R.Q.Q..V.V.V.V.V|
,,,
> f = io.open("EPROM19B.BIN") a=f:read("*a") print(a:len()) for i=0,a:len()-1 do c = a:byte(i+1) if (i%64 == 0) then print() io.write(string.format("%4x",i)..": ") end c = c % 128 if c>=32 and c<=126 then io.write(string.char(c)) else io.write(".") end if c==0x1b then io.write("ESC") end end print()
8192
...
a00: E...** APPLE ][e KEYBOARD TEST PROGRAM **. ALARM WILL SOUND AND
a40: CORRESPONDING.CHARACTER WILL FLICKER IF KEY BOUNCES. CONTROL '
a80: C' WILL EXIT THIS TEST.. MATCH LOW RESOLUTION CHARACTERS. WITH
ac0: THOSE ON LORES SYMBOL TABLES. PRESS SPACE BAR TO CONTINUE..
b00: CURRENTLY TESTING MEMORY AT $D000-$FFFF... LOOP #..SUSPECTED FAI
b40: LURE AT LOCATION F. APPLE ][e DIAGNOSTICS. 1983 APPLE COMPUT
b80: ER INC.. Enter the Letter of. the Desired Test..<P> PROCES
bc0: SOR TEST.<R> READ ONLY MEMORY TEST.<M> RANDOM ACCESS MEMORY TE
c00: ST.<C> CHARACTER SET TEST.<K> KEYBOARD TEST.<V> VIDEO TESTS..
c40: <L> LOOP ROM RAM AND PROCESSOR TESTS.<S> SPEAKER TEST..SPACE B
c80: AR TO RETURN TO MENU... SPEAKER TEST PLAYS 5 TONES.
cc0: INCREMENTING FROM. LOW TO HIGH PITCH.. MICROPROCESSOR
d00: IS OK... >MICROPROCESSOR IS BAD<.. >INPUT/OUTPUT UNIT ERROR
|
|
|
|
Joined: Feb 2014
Posts: 1,102 Likes: 173
Very Senior Member
|
Very Senior Member
Joined: Feb 2014
Posts: 1,102 Likes: 173 |
Some silly fun trying to get the diagnostics to work, I know this isn't correct, I just wanted to see if I could get it to do something: If I replace the main roms with EPROM18B.BIN and EPROM19B.BIN ROM_START(apple2e)
ROM_REGION(0x2000,"gfx1",0)
ROM_LOAD ( "342-0133-a.chr", 0x0000, 0x1000,CRC(b081df66) SHA1(7060de104046736529c1e8a687a0dd7b84f8c51b))
ROM_LOAD ( "342-0133-a.chr", 0x1000, 0x1000,CRC(b081df66) SHA1(7060de104046736529c1e8a687a0dd7b84f8c51b))
ROM_REGION(0x10000,"maincpu",0)
ROM_LOAD ( "EPROM18B.BIN", 0x1000, 0x2000, CRC(b46d79fa) SHA1(56c0c581b75d4016365f5cc9223816b2dc413cea))
ROM_LOAD ( "EPROM19B.BIN", 0x2000, 0x2000, CRC(dcd0b28e) SHA1(925064e82df165e1901c00e918a6afffedb11f3e))
// ROM_REGION(0x10000,"maincpu",0)
// ROM_LOAD ( "342-0135-b.64", 0x0000, 0x2000, CRC(e248835e) SHA1(523838c19c79f481fa02df56856da1ec3816d16e))
// ROM_LOAD ( "342-0134-a.64", 0x2000, 0x2000, CRC(fc3d59d8) SHA1(8895a4b703f2184b673078f411f4089889b61c54))
ROM_REGION( 0x800, "keyboard", ROMREGION_ERASE00 )
ROM_LOAD( "342-0132-c.e12", 0x000, 0x800, CRC(e47045f4) SHA1(12a2e718f5f4acd69b6c33a45a4a940b1440a481) ) // 1983 US-Dvorak
ROM_END
and then in the debugger set a breakpoint on d098 : bp d098 g then once it breaks on d098 b@c082=1; pc=d09b; g then I can get this: Only the video test, keyboard test, character test, speaker test will run properly.
|
|
|
|
Joined: Feb 2014
Posts: 1,102 Likes: 173
Very Senior Member
|
Very Senior Member
Joined: Feb 2014
Posts: 1,102 Likes: 173 |
One thing that's really awesome is great documentation in manuals, one example is the Perisoft Bufferlink. It has an excellent technical description of how it works, along with a complete schematic. Super cool. This is a buffer only card, which takes parallel data and stores it in a 8/16/32/64k buffer and sends it on to the printer. One neat feature is that it has a little extension board that has two switches so you can reset the buffer or issue a form feed. Sending the characters BEEP to the printer, writes to 800 to latch the data then reads from 803 to strobe then reads from 801 to check the status all these map nicely to the 74LS155 in the schematic write 800 hits DATOUT read 803 hits STROUTRD read 801 hits STATIN 0a1: ca 9c 00 jp z,$009C
0a4: 3e 42 ld a,$42 B
0a6: 32 00 08 ld ($0800),a
0a9: 3a 03 08 ld a,($0803)
0ac: 3a 01 08 ld a,($0801)
0af: e6 01 and $01
0b1: ca ac 00 jp z,$00AC
0b4: 3e 45 ld a,$45 E
0b6: 32 00 08 ld ($0800),a
0b9: 3a 03 08 ld a,($0803)
0bc: 3a 01 08 ld a,($0801)
0bf: e6 01 and $01
0c1: ca bc 00 jp z,$00BC
0c4: 3e 45 ld a,$45 E
0c6: 32 00 08 ld ($0800),a
0c9: 3a 03 08 ld a,($0803)
0cc: 3a 01 08 ld a,($0801)
0cf: e6 01 and $01
0d1: ca cc 00 jp z,$00CC
0d4: 3e 50 ld a,$50 P
0d6: 32 00 08 ld ($0800),a
0d9: 3a 03 08 ld a,($0803)
0dc: 3a 01 08 ld a,($0801)
0df: e6 01 and $01 The code has a lot of similarities to the code in the buffered grappler. (not surprising since they both do generally the same thing)
|
|
|
|
Joined: Apr 2005
Posts: 616 Likes: 6
Senior Member
|
Senior Member
Joined: Apr 2005
Posts: 616 Likes: 6 |
Oh wow! I remember these bufffer cards. They were all over the place, a friend of mine built one from schematics in a German C64 magazine. The idea was that these cards accept the data faster than your printer can, so that you can continue to work on your computer while the card finishes the printing job in the background. Hard to imagine nowadays, where everything is multi-tasked, but it was a pretty big deal back then. Hardware-assisted multitasking I had totally forgotten that this was a thing.
|
|
|
|
Joined: Feb 2014
Posts: 1,102 Likes: 173
Very Senior Member
|
Very Senior Member
Joined: Feb 2014
Posts: 1,102 Likes: 173 |
And one more printer buffer based on the z80 that I found info on is PBUFF by Don McKenzie. The code and schematics are no longer on the website at http://dontronics.com/z80.html but can be found on wayback. from a forum post: I designed a Z80 product for operation with 4Meg of Dram which used only
a 74LS00 and 74LS04 for interfacing to the Drams.
Without additional hardware support, it was possible to go to 64Meg, but
I never tried it.
This was in a commercial product called PBUFF, which was a centronics
port driven printer buffer.
The Z80 was getting a bit long in the tooth, and the need for large
buffers, was overcome by manufacturers building more memory into their
printers, so the product was dropped eventually.
Sold 1000's of units world wide, well before the internet days.
Also featured in Australian Electronics magazines, such as Silicon Chip.
Around 1989 I think it was.
schematics and source code at:
http://www.dontronics.com/z80.html
Please don't contact me for additional support. I am somewhere between
old age and death these days, so I have trouble remembering it all, but
you are very welcome to make use of the information on the pages and
files. :-)
Cheers Don...
--
Don McKenzie
|
|
|
|
Joined: Feb 2014
Posts: 1,102 Likes: 173
Very Senior Member
|
Very Senior Member
Joined: Feb 2014
Posts: 1,102 Likes: 173 |
|
|
|
Forums9
Topics9,320
Posts121,944
Members5,074
|
Most Online1,283 Dec 21st, 2022
|
|
These forums are sponsored by Superior Solitaire, an ad-free card game collection for macOS and iOS. Download it today!
|
|
|
|