Friday 31 Oct, 2014
Welcome to RISCOS.org
Jump to 
Search Articles 
Search for Software 
 

How to build a VIDC-enhancer for older Archimedes computers A3xx, A4xx and A3000

© Andreas Barth, 24. Feb 1995

This is an instruction on how to build a VIDC-enhancer for older Archimedes computers A3xx, A4xx and A3000. All newer models already include the functionality of this enhancement. The enhancement is switched via Aux1 and/or an external switch.

This set of instruction, hardware and software is public domain, the copyright remains with me.
Unlimited distribution and use is allowed for non-profit use, and as long as every part is included in the copy WITHOUT CHANGES. Changes in the source and module are for your personal use only.
The author cannot be made responsible for any damage or loss of data in connection with this manual, software or hardware.

The package (available to download from downloads.orpheusweb.co.uk/pub/RISCOS/StuttgartFTP/riscos/hardware/autovidc.spk includes the following files:

	ReadMe		This text.
	Circuit		Drawfile with the circuit and pcb-drawings.
	AutoVIDC	Module with driver-software.
	Source100	Basicfile with source of module.

The Hardware

The circuit shows the simple functionality of this enhancer.

Circuit diagram

It simply switches between two clock frequencies, the original 24MHz-signal, coming from the internal source, and the on-board 36MHz oscillator-signal. The result is fed into the normal connection driving the VIDC-chip. The logic has an active-high input, i.e. a high-signal on the Switch-input changes the output-signal to 36MHz.

Fortunately the VIDC-chip doesn't mind if a couple of distorted clock cycles come in, and this makes the design very easy. The logic fits in one IC, then we only need the oscillator, a resistor and a capacitor for buffering. Use a straight socket (plug female, 2 pins) for the clock IN/OUT connector and a 90° plug (male) for the rest (and be sure you have enough connectors for them). In addition, the computer has got a couple of free I/O-lines, so we can switch the enhancer by some software. In case we have no software at hand, the circuit supports a switch as well. The external switch should be a "three-position-switch" which has a middle position. So you leave it to the middle for 24MHz-mode, switch it to + for 36MHz-mode or to Aux for automatic switching. If you don't need the switch at all, you can shorten the switch-input with the Aux-output.

The circuit is placed top-down inside the computer, meaning the parts are laying on the mainboard. In this way the pcb only needs very little space and doesn't get into conflicts with other parts.

READ EVERYTHING ABOUT CONNECTIONS BEFORE ASSEMBLING THE CIRCUIT

Mount everything on a small circuit board, protect the top of your circuit with some tape (otherwise the metallic cap of the oscillator may cause some short-circuits on the mainboard), be sure to have some connectors and cables left and...

Connect the enhancer to the system

Archimedes A300 computers

If you don't use your econet port it's practical to make a plug for that. Look for the SK5 connector on the west of the board. It has 17 pins with pin 17 being +5V and pin 16 carrying ground.

Or you can use another IC, normal TTL-chips have a standard layout that uses pin 8(7) for ground and pin 16(14) for +5V. Do not use IC1 which is not fitted in A300 computers. This is a strange exception to normal rules because its power pins are vice versa to normal chips.

This signal can be found on the Auxiliary I/O connector PL10, totally west, mid-front(south) on the board. It is normally not fitted, although it's worth fitting it; it's very useful. It has got 5 pins:

	1 Gnd
	2 Aux2    coming from Latch B, IC30 pin 13 (Register bit 6)
	3 Aux1    coming from Latch B, IC30 pin 14 (Register bit 5)
	4 C4      coming from IOC, pin 48, FIQ-input or I/O
	5 /Alarm  coming from clock-chip, IC16 pin 7
  You should somehow manage to solder a cable to pin 3 of that connector or to the pin on the Latch B itself.
  IC30 is the Latch B. Useful pins are:
  12 Bit0 CD0, n.c.
  13 Bit1 CD1, discdrive-enable
  14 Bit2 CD2, n.c.
  15 Bit3 /FDreset, Floppy disc reset
  16 Bit4 Pstb, Printer strobe (output inverted to pin 1 of printer connector)
  17 Bit5 Aux 1
  18 Bit6 Aux 2
  19 Bit7 HS3, Harddisc control line, n.c. on A300, maybe used on A400.
  Note the slight differences to the A3000. You should not use Bit 7, since it is used for some function (write protection ?) of the ST506-harddisc controller.

Archimedes A400 computers

I have no further information about this main-board, but it will be almost the same like the A300-ones.

DO NOT USE the power connection from IC1 here, because I don't expect this to be the same as in A300-models !

Archimedes A3000 computers

If you don't use your econet port it's practical to make a plug for that. Look for the SK4 connector somewhere on the board. It has 17 pins with pin 17 being +5V and pin 16 carrying ground.

  Or use the Internal Expansion port:
  SK9:   5 pins, pin  1 is Gnd, pin  5 is +5V
  SK11: 17 pins, pin  1 is Gnd, pin  2 is +5V
  SK3:  17 pins, pin 16 is Gnd, pin 17 is +5V
  Or use the Alternative Keyboard Socket (which is not fitted)
  LK3:   6 pins, pin  3 is Gnd, pin  4 is +5V (buffered)

This signal can be found on the latch chip only. So you have to solder a wire directly to a pin there. Look for IC18, pin 17. This is the Latch B. Useful pins are:

  12 Bit0 n.c.
  13 Bit1 CD1, discdrive-enable
  14 Bit2 n.c.
  15 Bit3 /FDreset, Floppy disc reset
  16 Bit4 Pstb, Printer strobe (output inverted to pin 1 of printer connector)
  17 Bit5 n.c. (Aux 1)
  18 Bit6 n.c. (Aux 2)
  19 Bit7 n.c.

Note the slight differences to the A300. You should not use Bit 7, since it is used for some function (write protection ?) of the ST506-harddisc controller.

The software

As simple as can be, the small program installs itself as a module after a brief test for the correct hardware and hooks into the service-call vektor, waiting for mode-changes to occur. On a mode-change, it looks for the mode-number and checks its internal list whether to switch the Aux1-pin on or off.

Two *commands allow to check and change the list.

By default only mode 29,30,31,32 are set as 'enhanced'.

The module should work on RiscOs 2 and 3, although I wasn't able to test it under RO2.

The module AutoVIDC was brought to light by Jens H. Ovesen, and I like to thank him for the address of the shadow-register of Latch B, that I was unable to find before. I developed it further because I want to include it on my Podule-ROM and load it automatically when my computer starts. Hence, it must be able to decide upon the hardware, whether to run or not. I like to thank the maker(s) of !ArmSI who made me aware of how to test the hardware. (I don't look into the PRMs at the first place ;-)

Here are the relevant addresses that might interest you:

.LatBShadow% EQUD &00000105      ; contains Value of LatchB
.LatchB%     EQUD &03350018      ; Hardware address of LatchB

Address &105 is of internal use by ADFS and cannot be looked up anywhere, as far as I know.
Any changes to Latch B are done to its shadow as well. And the shadow-register can be read, while the hardware-register cannot be read -- DON'T TRY IT. This will change to contents of the latch to &ff or something else that you might not like.

Modify it as follows:

    LDR     R0,LatBShadow%       ; Load address of Aux1-contents
    LDR     R1,LatchB%           ; Load address of Aux1-Hardware

    LDRB    R2,[R0,#0]           ; Load Aux1-Shadow

    ORRCS   R2,R2,#&20           ; set Aux1-Bit.
    BICCC   R2,R2,#&20           ; reset Aux1-Bit.

    STRB    R2,[R0,#0]           ; set Aux1-Shadow
    STRB    R2,[R1,#0]           ; set Aux1-Hardware

Problems with other hardware

iicAlarm 1.00

Quite some while ago, I released a small hardware called "iicAlarm" which switches the computer on and off automatically. It uses the Alarm-line of the clock-chip for the "switch-on" effect (at a given time) and the Aux1/2 line for switching off. In release 1.00, the circuit has a jumper for selecting either Aux1 or Aux2. Ok, set it to Aux2. But the software always used both bits to signal the switch-off-operation.

Have a look at the application directory of !iicAlarm.

  Edit the Basic-Program "SwitchOff"
  Edit the following line:
     REM Set both Aux1/2-lines
     A% = 3                       ; change to 2 for Aux2
     CALL AuxSet

Have a look at the subdirectory !iicAlarm.Tools.!AlarmShut

  Edit the Basic-Program "!Runimage"
  Edit the following line:
     DEF PROCNULLevent
        ...
           CASE status% OF
           ...
           WHEN 3 : tm% = TIME + 2000
                    REM Shutflag gesetzt. Also alle Tasks weg und alle Files
                    REM geschlossen.Jetzt koenen wir die Aux-Leitungen setzen.
                    A% = 3: CALL AuxSet
        ...              ^-- change to 2 for Aux2
     ENDPROC

Well, if someone is interested, I will develop a new version....it's possible for new models as well...

That's it as far as I know.

The end

If you like to give me some comments, write to:

Andreas Barth
Karl-Eberhardstr. 9
W-51643 Gummersbach
Germany

Tel. 0049 2261/27042
EMail: Andreas_Barth@ruba.rz.ruhr-uni-bochum.de / barthabx@rubc.rz.ruhr-uni-bochum.de

ToDo

I think there's nothing more to develop, so I do not intend to do anything more about it, unless there is a serious fault somewhere in it.

This data was previously in the Comp.Sys.Acorn.* FAQ Q2.5

Add a comment to this article

If you wish to add a comment to this article, please use the form below. Please note that by submitting comments using this form you are allowing all of the information submitted to be visible on this website. Your comment will be published immediately, so please proof-read before you add. Any comments deemed to be abusive or irrelevant to the topic of the article may be removed without warning.

Posted by: (optional)

Email or web site: (optional, emails will be mangled to avoid spambots)

Comments: (maximum length 2000 characters)

If you would like to add a URL to another site, please enter the address (without http://) inside square brackets. Use an optional closing curly bracket to add a description. eg. to link to http://www.vigay.com enter [www.vigay.com}Vigay.com]

To prevent spambots, please re-enter the following code:
*****


Email Email this page to a friend

 Last edit: 13th Feb 2012 at 8:24pm (991 days ago)

Bookmark with:What are these?
delicious Deliciousdigg Diggreddit redditfacebook Facebookstumbleupon StumbleUpon

RSS Feed 

^
 
Valid HTML 4.01!
Valid CSS!
Best viewed with a cup of tea Crafted by RISC OS