home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Format CD 10
/
amigaformatcd10.iso
/
-in_the_mag-
/
emulation
/
beebinfo
/
beebemufaq-0.01.text
< prev
Wrap
Text File
|
1996-12-06
|
15KB
|
537 lines
BBC information v0.01
by Wouter Scholten
Some useless game info:
Killer Gorilla has a an interesting bug: On the first screen jump to the
left into the fire and you'll end up near the gorilla, unfortunately quit
dead.
Did you know that the machine code in Planetoid is approx. 6.6K, in Rocket
Raid 4.2 K (both excl. init code) and in Hopper a measly 2.4K?
---------------------------------------------------------------------------
Game versions
* Snapper: v1, v2
* Defender > Planetoid v1 > Planetoid v2 > super defender.
Planetoid v2 is supposed to have an easier to use scanner like the
original defender, showing when an alien gets on screen. Also texts
were non flashing
* Hopper: v1, v2, german version what's different in v1?
* Monsters v1,v2 what's different in v1?
* Arcadians: v?, german version
* Missile base: v?, german version
Aliases
* super defender: modified defender (slightly different basic loaders)
* Star Swarm (acornsoft): tetrapod, actually starswarm is a bit
different; the bullets don't bounce off the walls.
* R*thur: Bouncer (Q*Bert clone)
* Planetoid: Defender, actually this is an early, buggy, version of
Planetoid.
* Zany kong jr (1984): Killer Gorilla 2 (1988) (Superior soft.)
* Danger UXB = Blockman (Micro Power)
* Carnival = Carousel (Acornsoft)
* Centipede = Bug Blaster (Alligata)
* Deathstar (Superior) = Sinistar (Atari)
* Skirmish = Joust
---------------------------------------------------------------------------
1. Reading and writing 5 1/4 BBC disks on a PC:
You can use anadisk (simtel: msdos/diskutil/anad207.zip) to read disks and
FDC (an improved version of FDCDEMO) to read and write disks. 3 bugs were removed:
1) the drive was not reinitialized after eg. DD
2) FORMAT didn't work for any format with minsector<>1.
3) ASCII conversion in SHOW was wrong
and various commands added (single side reading/writing, CATalogue of files
on side 0/1, ignore errors).
Commands: DDINHD, CYL 80 (only for 1.2M drive) , DOUBLESTEP (for 40tr disk
in 1.2M drive), FD0 if the 5 1/4 drive is your first drive, and for double
density : DD, SECTORS 18. Now you can read thedisk with 'READ filename'
(both sides), READ0 reads side 0, READ1 reads side1 or write a file to it
with WRITE/WRITE0/WRITE1.
3. Emulator no go's:
emulator no go's
!6502em Boffin, Commando (works but _very_ slow), Firetrack, Super
(v1.21) Invaders, Killer Gorilla (works but is unplayably fast).
xbeeb v0.3 Elite, Meteors, Fortress.
BeebEm Zalaga, Meteors, Contraption, Castle quest, Nutcraka
Boffin, Firetrack, Fortress, Nutcraka, Manic Miner, Match
Horizon Day, Repton 2 (the author admits that the latter 3 don't work
because he hasn't yet implemented all the 'required' invalid
opcodes.)
Comment: Match day also doesn't work on my BBC, the screen is messed up
with parts of men etc. Is this because of different 6502's? I thought the
program was corrupted on disc but I got another copy from someone else with
the same problems. The same problem occurs with Stryker's run. I have two
copies neither of which run on my BBC.
---------------------------------------------------------------------------
4.1 Using diskimages:
1.BeebEm/Beebwin: you probably need to set an environment variable in
beebem to use single sided diskimages. Eg. for BeebWin: Set
BeebDiscLoad=S:80:\beebfile\beebim.1 before starting windoze to access a
single sided diskimage named beebim.1)
Windows '95 Beebem information
The Problem:
BeebWin uses an environment variable to define the disc image it uses.
Solution:
Write a DOS batch file that sets the environment variable then calls
BeebWin. Write two batch files (one for single sided discs, the other
for double sided discs, they look like this:
<SSD.BAT>
@echo off
SET BeebDiscLoad=S:80:%1
BeebWin
<DSD.BAT>
@echo off
SET BeebDiscLoad=D:80:%1
BeebWin
Then create shortcuts for both, the short cut must have the 'close after
execution' property set.
Now double click on both types of disc, assuming no file type mapping
exists already Windoze will ask whether you want to associate the file
type with an application. Use the browse button to locate the shortcut
for the appropriate batch file and click apply. You can now load Beebwin
with a particular disc image by double clicking on it!
2. For !6502em and !65host you need to split the files with BEEBARC.
3. For MacBeebEm/Horizon use bbcim.cc to extract files and the utility
included with MacBeebEm (to combine the bare files and the addresses in the
cat file). If you don't have a command line change the source code by
adding 'argc=1;' in main.
4. For xbeeb also use bbcim.cc and rename the catalogue file (remove the
first couple of lines)
4.2 Using archive files:
1. BeebEm: make a diskimage with 'bbcim -a new.bbc *' to put all files of
the current dir in a diskimage new.bbc. (in dos you will probably have to
give a list of files which is what the shell in unix does, if you don't
like this switch to linux. I will NOT put wildcard expansion in bbcim)
2. !6502em/!65Host: use Darren Salt's BEEBARC (contains UN/INF).
3. MacBeebEm/Horizon : use the utility included with MBE.
4. xbeeb: to get filenames right in one go do: bbcim -x *
4.3 Problems:
Programs may need to be loaded higher (PAGE=&1900 on a BBC with Acorn DFS,
1900 in beebem, E00 on a cassette system and also E00 in some emulators and
on BBC's with either a Opus CHALLENGER drive with RAM DISK or a Solidisk SWR DFS. If there are problems, see for example PLANETOID which loads PLANET2
high and then moves it down to E00).
NOTE: all emulators should have PAGE at &E00 (there's no good reason to emulate a DFS). Cracking the protection is better.
---------------------------------------------------------------------------
5. Cassette transfer & CRC checking on the BBC
If you want to transfer cassette software to disk the first thing you need
in many cases is to *LOAD a locked file.
type the following:
P%=&C00
[PHA: LDA &3CA:AND #&FE:STA &3CA:PLA:RTS]
?&220=0:?&221=&C
*FX14,4
Now you can *LOAD the program.
Here's a small BBC program to calculate CRC's (as in bbcim) bbc-crc. Type
it in on your beeb to check that files transferred correctly to the PC
(mac, whatever).
10 FOR N%=0 TO 2 STEP 2
20 P%=&2000
30 [OPT N%
40 .mloop
50 JSR &FFD7:BCS end
60 LDX #8
70 EOR &71:STA &71
80 .lp
90 LDA &71:BPL skip0
100 EOR #8:STA &71:LDA &70:EOR #&10:STA &70
110 .skip0
120 ASL &70:ROL &71:BCC skip1:INC &70
130 .skip1
140 DEX:BNE lp
150 JMP mloop
160 .end
170 RTS
180 ]
190 NEXT
200 INPUT"Which file";F$
210 Y%=OPENIN(F$)
220 IF EOF#Y% CLOSE #Y%:END
230 !&70=0:CALL &2000
240 CLOSE #Y%
250 PRINT" ";F$;": crc="~!&70
_____________
The following code is used in bbcim to calculate the same CRC's:
unsigned int crc=0;
while (1)
{
fread(&byte,1,1,fp);
if (feof(fp)) break;
length +=1;
crc ^=(byte << 8);
for(int k=0;k<8;k++)
{
if (crc & 32768) crc=(((crc ^ 0x0810) & 32767) << 1)+1;
else crc =crc << 1;
}
}
------------
BBC connections:
Looking at the back of the BBC:
Cassette connections:
1 2
3 4
5 6
7
1 and 2:cassette motor control
3 :input
4,6 :output
7 :0 v
Serial port:
E A
C
D B
A : data in
B : data out
C : 0v
D : CTS
E : RTS
___________________________________________________________________________
BBC disk formats:
DFS/DDOS:
40/80 track single density/double density
sd: 10 sectors per track, sector startno = 0
dd: 18 sectors per track, sector startno = 0
track startno =0.
256 bytes per sector
___________________________
File formats:
Diskimage.....
NEW ARCHIVE FORMAT:
$.ELITE : bare file
$.ELITE.inf : info text file containing
'$.ELITE FF0E00 FF8023 Locked CRC=XXXX NEXT $.ELITE2'
The $.ELITE is optional but if present the files may be renamed
to say a and a.inf. $.ELITE is then the real filename.
A CRC is included for various reasons (to check fileconversion
software, serial- or disk- file transfer to/from a bbc, etc.)
The CRC is calculated with the algorithm from the BBC user guide p. 399
(The same algorithm as used for the cassettte and rom filing system).
'Locked' may be abbreviated to 'L'.
NEXT may be used for CHAIN"" or *RUN as used on cassette systems.
file length may be included (after the execution address) but is
unnecessary.
---------------------------------------------------------------------------
7. Emulation:
The general emulation FAQ from the newsgroup comp.emulators.misc. contains lots of information on available emulators and where to get them.
---------------------------------------------------------------------------
8. The BBC emulators: speeds, file formats and screen size
Speed test programs:
1. To test decode speed:
10FOR X=1 TO 1000
20Y=SIN X
30NEXT
BBC B: 25.33 s, !6502em: 25.59 (arm 610),
xbeeb 0.3 on my 486-66, 8MB, S3 864 (256 colour mode): 16.5s
MacBeebEm Horizon Powermac 7200 (PPC601-90/256K cache): 11.5 s
2. To test graphics speed:
10MODE 2
20A=RND(-100)
30FOR N%=1 TO 200
40GCOL RND(255),RND(255)
50PLOT 85,RND(1280),RND(1024)
60NEXT
BBC B: 21.83 s, !6502em: 21.95 (arm610),
xbeeb 0.3 on my 486-66, 8MB, S3 864 (256 colour mode): 65 s
MacBeebEm Horizon PPC601-90: 12-19 s (15 to 25 frames/s)
3. To test the mode 7 speed:
10MODE 7
20FOR N%=1 TO 2000
30PRINT N%
40NEXT
BBC B: 21.36 s, !6502em: 21.41 (arm610),
xbeeb 0.3 on my 486-66, 8MB, S3 864 (256 colour mode): 33.5 s.
MacBeebEm Horizon PPC601-90: 12-18 s (15-25 frames/s)
, beebwin on 486-66: ca. 115 s
The emulator !6502em runs at precise BBC speed (not just on these
benchmarks) which means that it is decoding a lot faster that e.g.
beebem and probably also xbeeb.
Q: shouldn't parts of the emulators be programmed in assembler?
R: but that isn't portable. Just when you've got a X11 program that
works on all computers!
A: So what, a house isn't portable but do you prefer to live in a
tent?
8.1 File formats:
* Beebem: diskimage (SINGLE SIDED)/interleaved diskimage (DOUBLE SIDED)
* xbeeb: separate files with names as on the BBC. Catalogue file
contains LOAD/EXEC adresses.
* !6502em: separate files with LOAD/EXEC adresses in the file
attributes.
* !65host: separate files with LOAD/EXEC adresses in the file
attributes.
* MacBeebEm: separate files with a header of 10 bytes containing the
load/exec addresses.
From the documentation for MacBeebEm:
"The storage of BBC files is made more troublesome by the need to store the
load and execute addresses for each file somewhere. The 'directory'
approach was finally rejected in favour of keeping the information in a
small header at the start of each file. The header consists of 10 bytes in
the following format.
Offset Byte Comment
0 255 Must always
be 255
1 L-LO Load address
2 L-HI
3 E-LO Execute address
4 E-HI
5 * Checksum
6..9 0 Four spare bytes
10.. EOF data File data proper
The checksum * is computed as (L-LO + L-HI + E-LO + E-HI) & 255. If this
check fails or if the first byte is not 255, MacBeebEm will refuse to load
the file. The last 4 bytes are currently unused and may take any value."
MacBeebEm comes with a program which generates this header, so all
MacBeebEm users really need are the raw files and a list of the load/execute
addresses for each file.
8.2 Screen size:
* BeebEm 640*256: why ? Robert Schmidt has recompiled it (beebwin for
winsuck95) with the right aspact ratio for mode 1,2,4,5,6,7, not mode
0 and 3.
* xbeeb : 640*512 (2*2 pixels in 320*256 mode etc.)
* MacBeebEm: 320*256 (teletext 320*250), or 480*384 (interpolated), what
about MODE 0? It is not displayed in a higher resolution (but sets the
nearest pixels in the previous modes)
* Horizon: 320 x 256, 480 x 384, 640 x 448 and 640 x 480
Notes: 1) The reason for the second to last setting is that a standard
Apple 14" monitor has a resolution of 640x480, but needs room for the
menu bar and window title.
2) In 640x480, Horizon is just pixel doubling, so mode 0 is still
missing every second pixel.
* !6502em: full screen, 320*256 or 640*256
Note: these are the standard resolutions, but where the source is available
you can always change this.
---------------------------------------------------------------------------
BBC pages:
1. Robert Schmidt's BBC page excellent
http://www.idt.unit.no/~robert/bbc/bbc.html
2. James Fidell's xbeeb page.
3. BBC archives:
ftp://micros.hensa.ac.uk/micros/bbc
ftp://ftp.uni-stuttgart.de/pub/systems/acorn/6502
ftp://maekong.ohm.york.ac.uk/pub/BBC
ftp://ftp.dcs.ed.ac.uk/pub/ajcd/BBC
For a description of available BBC emulators see the comp.em.misc.FAQ and
Robert Schmidt's emulator information pages for up to date information.
Where to find BBC B emulators:
1. Beebem (X11 and windoze). v0.06 has sound! Runs at BBC speed on a P90
(at least, and only under linux).
See also Robert Schmidt's page for an enhanced version of beebwin.
ftp://ftp.compsoc.man.ac.uk/pub/beebem/
2. xbeeb page (X11, by James Fidell). v0.3 has sound (not as good as
beebem's I'm told).
http://www.OiT.co.uk/~james/BBCMicro/Xbeeb/
3. PC: Tom Seddon's bbc emulator
http://www.ncl.ac.uk/~n5013784/bbc-emu.htm
4. Mac: Horizon information and the demo program (limited version of the
commercial one).
http://www.cityscape.co.uk/users/jx91/horizon.html>Mac: Horizon
5. !6502em: commercial (15 pounds) Also emulates Masters (information).
http://www.comlab.ox.ac.uk:80/oucl/users/robin.watts/wss/products.html
6. !65host: Free, but needs to be patched on Risc PC's (see Acorn's ftp site)