Previous Thread
Next Thread
Print Thread
Page 64 of 68 1 2 62 63 64 65 66 67 68
Joined: Jan 2012
Posts: 1,119
Likes: 1
rfka01 Offline OP
Very Senior Member
OP Offline
Very Senior Member
Joined: Jan 2012
Posts: 1,119
Likes: 1
Here's the file for the 4k ROM of the Basis 108 Diagnostic Disk Card ...https://www.magentacloud.de/lnk/NHyzL7Qi

Robert


NCR DMV- DEC Rainbow- Siemens PCD- ITT 3030-Oly People- Acorn A5000- Olivetti M20
Joined: Feb 2014
Posts: 570
Likes: 5
G
Senior Member
Offline
Senior Member
G
Joined: Feb 2014
Posts: 570
Likes: 5
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

Code
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:

Code
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: 16,699
Likes: 9
R
Very Senior Member
Online Content
Very Senior Member
R
Joined: Mar 2001
Posts: 16,699
Likes: 9
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: 570
Likes: 5
G
Senior Member
Offline
Senior Member
G
Joined: Feb 2014
Posts: 570
Likes: 5
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.

Code
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|
,,,

Code
> 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: 570
Likes: 5
G
Senior Member
Offline
Senior Member
G
Joined: Feb 2014
Posts: 570
Likes: 5
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

Code
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:

[Linked Image from i.imgur.com]

[Linked Image from i.imgur.com]

[Linked Image from i.imgur.com]

[Linked Image from i.imgur.com]

Only the video test, keyboard test, character test, speaker test will run properly.

Joined: Feb 2014
Posts: 570
Likes: 5
G
Senior Member
Offline
Senior Member
G
Joined: Feb 2014
Posts: 570
Likes: 5
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.

[Linked Image from i.imgur.com]
[Linked Image from i.imgur.com]
[Linked Image from i.imgur.com]
[Linked Image from i.imgur.com]

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

Code
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: 576
Senior Member
Offline
Senior Member
Joined: Apr 2005
Posts: 576
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 smile

I had totally forgotten that this was a thing.

Joined: Feb 2014
Posts: 570
Likes: 5
G
Senior Member
Offline
Senior Member
G
Joined: Feb 2014
Posts: 570
Likes: 5
Hi Darkstar,

you got me interested in magazine printer buffer projects, and I was able to find a couple:

one in https://archive.org/details/radio_electronics_1985-09/page/n67/mode/2up

but unfortunately doesn't include any rom listings.

I did find one in Byte Magazine that did have a z80 rom code listing (it's really short, only about 100 bytes)

https://archive.org/details/byte-magazine-1984-06-rescan/page/n143/mode/2up

(part 2 of the article)
https://archive.org/details/byte-magazine-1984-06-rescan/page/n455/mode/2up

[Linked Image from i.imgur.com]

[Linked Image from i.imgur.com]

Joined: Feb 2014
Posts: 570
Likes: 5
G
Senior Member
Offline
Senior Member
G
Joined: Feb 2014
Posts: 570
Likes: 5
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:

Code
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: 570
Likes: 5
G
Senior Member
Offline
Senior Member
G
Joined: Feb 2014
Posts: 570
Likes: 5
https://www.dontronics.com/Is-This-Australias-First-PC.html

I was able to find a magazine article about PBUFF:

[Linked Image from i.imgur.com]
[Linked Image from i.imgur.com]

Page 64 of 68 1 2 62 63 64 65 66 67 68

Link Copied to Clipboard
Who's Online Now
5 members (MAMEBase, mixmaster, Pernod, R. Belmont, 1 invisible), 26 guests, and 3 robots.
Key: Admin, Global Mod, Mod
ShoutChat
Comment Guidelines: Do post respectful and insightful comments. Don't flame, hate, spam.
Forum Statistics
Forums9
Topics8,913
Posts117,078
Members4,989
Most Online890
Jan 17th, 2020
Forum Host
These forums are hosted by www.retrogamesformac.com
Forum hosted by www.retrogamesformac.com