SB BBC @ GBR Oldie hints/tips #160-162 Hints and tips from the archives of Wakefield BBC Micro User Group... 160. Killing ROMS ~~~~~~~~~~~~ I suppose that most Beeb users who have fitted extra ROMs have had problems with clashing "*" commands. When I first got my Beeb, I bought Computer Concepts Disc Doctor. I still have it fitted and it is arguably still the best standard utility ROM available for a Beeb that has an 8271 disc controller. One of its commands is *MENU, which presents a pleasant uncluttered menu screen, enabling both BASIC and Machine-Code programs to be run by pressing a single key. It will even automatically handle downloading of programs to a PAGE value of say, &E00. Since it was so easy to use, I built the *MENU command into the !BOOT file on many of my discs. You can imagine how annoyed I was when later having fitted another utility ROM, Enigma, I found that it clashed with the *MENU command in Disc Doctor. All my discs wouldn't boot up, despite the fact that Enigma didn't even have a *MENU command among its own list of routines! The time had come to temporarily immobilise the offending ROM. But how best? There is a command within Enigma that will turn off any ROM including itself, but when the key is pressed, as with to boot up a disc, the ROMs are reactivated. The switch-off command can be built into the !BOOT file on the disc, but you get a messy screen as the routine is implemented, and of course it only works if you happen to have Enigma. What is required is a simple method of switching off any offending ROM to allow the "*" Command to be acted upon by the required ROM. Now on start up, or , the OS copies the ROM type code for each of the ROMs that are fitted, down to page 2 for its own use. The table starts at &2A1; the 1st location corresponds to socket 0, the second to socket 1 etc.. If the value zero is placed in the table, then the OS will not recognise the ROM in the associated socket and will not offer it any "*" commands. Thus the solution is to 'poke' a zero into the correct address from the !BOOT file. The address in hex can be calculated by entering:- PRINT~&2A1+(n) , where (n) = the socket number. So to turn off any ROM, first find the socket number (n) of the ROM to be disabled, 2nd Calculate the address to be poked and then build up the !BOOT file. Since Enigma in my machine is in socket 7, the !BOOT file is built up as follows. *BUILD !BOOT 1 ?&2A8=0 2 *MENU 3 *OPT 4,3 Pressing should now boot up the disc with no problems. If you don't have a routine to find out which socket your ROMs are in, then the following program will show you what you have fitted and where. For a shortened printout which will fit across a Mode 7 screen, omit line 1020 and alter the MODE statement in line 100 from 3 to 7. Note that ROM images in SRAM will not be shown until initialised, ie . 10 REM ROM Identifier by R.Sterry 09.06.85 modified 14.09.87 20 : 100 MODE3:@%=&902:FORY%=0TO15:PRINTY%,~Y%" "FNrom:NEXT:@%=&90A:END 110 : 1000 DEFFNrom:LOCALstring$,off%,off1%,byte% 1010 off%=FNpeep(7):IFY%?&2A1=0ORoff%=&80THEN="EMPTY" 1020 REPEAT:off%=off%+1:byte%=FNpeep(off%):UNTILbyte%<32ORbyte%>126 1030 FORoff1%=9TOoff%-1:byte%=FNpeep(off1%):IFbyte%<32THENbyte%=32 1040 string$=string$+CHR$(byte%):NEXT 1050 =string$ 1060 : 2000 DEFFNpeep(mem%):!&F6=&8000+mem%:=USR(&FFB9)AND&FF 161. Instant migraine ~~~~~~~~~~~~~~~~ A rather sadistic Marcus Wilson from Harrogate sent in the following one-line program, which is guaranteed to make you feel queasy very quickly! Master & Compact users can substitute VDU19| for the last statement (ie the vertical bar symbol). 10 MODE2:?&360=255:VDU19,0,0,0;0;0; 162. High-quality audio output ~~~~~~~~~~~~~~~~~~~~~~~~~ If you want to feed audio from a BBC B into an external amplifier, you can use the loudspeaker output, but there is a better-quality output available. Locate the point where the purple -5v supply wire from the front right of the PSU connects to the circuit board, and then look slightly nearer the front, just underneath the rear edge of the keyboard. You should find two solder pads marked "PL16"; the rear (North) pad is Ground (0v), and the front (South) pad is the output. This output is connected to the input of the internal volume control "VR1", and is at a level suitable for feeding into a hi-fi amplifier. There is a similar output marked on the BBC B+ circuit diagram as "S21", and apart from surmising that it will be close to the internal volume control "VR2", I have no other details. 73 Rick G4BLT @ GB7WRG