© 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 circuit shows the simple functionality of this enhancer.
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...
Archimedes A300 computers
meaning: 1 /cksys, 24MHz 2 ckVIDC 3 Sink, VIDC pin 20, TTL-input for external synchronisation. 4 gndWe only need pins 1 and 2 which are the more northern pins.
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
meaning: LK31 1 /SUP, VIDC pin 28, supremacy output for genlock. 2 gnd LK28 1 Ckvidc 2 /Clksys, 24MHz LK29 1 gnd 2 Sink, VIDC pin 20, TTL-input for external sync. LK30 1 /Vs 2 /Hs We only need LK28.
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.
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
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.
If you like to give me some comments, write to:
Tel. 0049 2261/27042
EMail: Andreas_Barth@ruba.rz.ruhr-uni-bochum.de / email@example.com
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