Acorn System 1
Yes! I built one for my school electronics lab in 1978. We used it for the computing part of the Electronic Systems 'A' level syllabus. That is, for the more advanced exams that 16-18 year olds take, if they don't choose to leave school at 16.
Anyway, we wired the Acorn up to various lights and switches. Some of the project work was based on it, too. We had a Commodore PET 2001 for the BASIC programming, as well.
I have an Acorn System Three at home, which is an expanded System One. There's a fairly poor photo of them on this page:
http://www.gifford.co.uk/~coredump/acorn.htm
Looks like the thumbnails don't link to the main pictures properly. I'd better fix that!
Anyway, we wired the Acorn up to various lights and switches. Some of the project work was based on it, too. We had a Commodore PET 2001 for the BASIC programming, as well.
I have an Acorn System Three at home, which is an expanded System One. There's a fairly poor photo of them on this page:
http://www.gifford.co.uk/~coredump/acorn.htm
Looks like the thumbnails don't link to the main pictures properly. I'd better fix that!
- BitWise
- In Memoriam
- Posts: 996
- Joined: 02 Mar 2004
- Location: Berkshire, UK
- Contact:
I found an emulation of a system one a while back when I was surfing around.
http://www.cary.demon.co.uk/acorn/acornEmulator.html
http://www.cary.demon.co.uk/acorn/acornEmulator.html
Andrew Jacobs
6502 & PIC Stuff - http://www.obelisk.me.uk/
Cross-Platform 6502/65C02/65816 Macro Assembler - http://www.obelisk.me.uk/dev65/
Open Source Projects - https://github.com/andrew-jacobs
6502 & PIC Stuff - http://www.obelisk.me.uk/
Cross-Platform 6502/65C02/65816 Macro Assembler - http://www.obelisk.me.uk/dev65/
Open Source Projects - https://github.com/andrew-jacobs
-
scratchmonkey
- Posts: 12
- Joined: 28 Apr 2004
coredump wrote:
Yes! I built one for my school electronics lab in 1978. We used it for the computing part of the Electronic Systems 'A' level syllabus. That is, for the more advanced exams that 16-18 year olds take, if they don't choose to leave school at 16.
coredump wrote:
I have an Acorn System Three at home, which is an expanded System One. There's a fairly poor photo of them on this page:
On the subject of Acorn machines, apart from this PC (used for internet stuffs), I still use a BBC Master Turbo that I've had since 1987 as my "main workstation". It has an inline assembler in the BASIC interpreter which is simply unmatchable on any other platform.
Well, I had a bit of a think about it, and I rekon I built it in 1979 actually. We got the PET first, then the Acorn came the year after. I think the idea was to allow the boys to use the Acorn in project work, and the teachers were worried that we might damage the (expensive) PET somehow.
Do take a look at my UK101 page, BTW:
http://www.gifford.co.uk/~coredump/uk101.htm
It's another 6502-based machine that I built from a kit. I still use it for odd little hacks, like connecting a Super Nintendo joypad to a 6522 chip.
Do take a look at my UK101 page, BTW:
http://www.gifford.co.uk/~coredump/uk101.htm
It's another 6502-based machine that I built from a kit. I still use it for odd little hacks, like connecting a Super Nintendo joypad to a 6522 chip.
scratchmonkey wrote:
On the subject of Acorn machines, apart from this PC (used for internet stuffs), I still use a BBC Master Turbo that I've had since 1987 as my "main workstation". It has an inline assembler in the BASIC interpreter which is simply unmatchable on any other platform.
One of the things I like about Forth is that it's easy to combine Forth and assembly. In BASIC, I've never seen (or been able to think up) a good way of combining it with assembly. Normally, you had to pre-assemble the code and put in it DATA statements, which was usually pretty slow and took a lot of extra space. Sometimes you could pull tricks by hiding the object code in string literals or REM statements, but LIST would usually barf when it got to the object code. Either way, it was a pretty inelegant solution.
I don't remember exactly how the BBC Micro did in-line assembler, because I never really did much programming on the BBC. However, IIRC, you had to use the BASIC to make two passes over the code, usually with a FOR..NEXT loop. Then, you could use BASIC variables as labels (somehow) and you used one special BASIC variable as the assembler's "current address".
Try doing a web search for "BBC Micro documentation project".
Try doing a web search for "BBC Micro documentation project".
- BitWise
- In Memoriam
- Posts: 996
- Joined: 02 Mar 2004
- Location: Berkshire, UK
- Contact:
You enter 6502 assembler by enclosing it between square brackets like this.
You have to set the BASIC variable P% to contain the origin for the generated code will be put. The OPT directive controls listing output (bit 0) and error reporting (bit 2). A fullstop defines a label which becomes a BASIC variable containing the current origin value. To resolve forward references you normally wrote your code in a FOR loop which assembled if OPT 0 on the first pass and OPT 3 on the second.
The second release of BBC BASIC added features to allow you to optionally use O% as the address for the generated code (so you can assemble code for one location but store the generated code somewhere else) as well as directives for output data (EQUB, etc.)
The OPT directive was also useful for generating macros by calling a function which assembled some code and returned the current OPT value
Code: Select all
10 OSWRCH=&FFEE
20 [OPT 3:LDA #ASC("*"):LDX #10:.loop JSR OSWRCH:DEX:BNE loop]
Code: Select all
10 FOR PASS=0 TO 3 STEP 3
20 P%=&2000:[OPT PASS
30 NOP:NOP:NOP
40 ]:NEXT
The OPT directive was also useful for generating macros by calling a function which assembled some code and returned the current OPT value
Code: Select all
10 FOR PASS=0 TO 3 STEP 3
20 P%=&2000:[OPT PASS
30 OPT FNLoadXY(&1234)
40 ]:NEXT:END
1000 DEF FNLoadXY(VAL)
1010 [LDX #VAL MOD 256:LDY #VAL DIV 256]
1020 =PASS
Andrew Jacobs
6502 & PIC Stuff - http://www.obelisk.me.uk/
Cross-Platform 6502/65C02/65816 Macro Assembler - http://www.obelisk.me.uk/dev65/
Open Source Projects - https://github.com/andrew-jacobs
6502 & PIC Stuff - http://www.obelisk.me.uk/
Cross-Platform 6502/65C02/65816 Macro Assembler - http://www.obelisk.me.uk/dev65/
Open Source Projects - https://github.com/andrew-jacobs
-
scratchmonkey
- Posts: 12
- Joined: 28 Apr 2004
Thanks everybody! I found a lot of interesting information on the web. It's certainly much more flexible than pre-assembling. Was it reasonably fast, or were there noticable delays if you assembled something that wasn't short? Anyone know if it tokenized the bracketed text (things like JSR, NOP, or whatever else) or if it just stored it like a string (as ASCII characters)?
-
scratchmonkey
- Posts: 12
- Joined: 28 Apr 2004
The start and end assembly brackets, OPT and USR keywords are all tokenised and the rest is stored in text format.
It was quite fast - if your program is only about 1-200 ops then you probably won't notice it assemble. I've not assembled huge blocks of code larger than that (i usually use it to speed up stuff in BASIC rather than solely ASM).
It was quite fast - if your program is only about 1-200 ops then you probably won't notice it assemble. I've not assembled huge blocks of code larger than that (i usually use it to speed up stuff in BASIC rather than solely ASM).
- BitWise
- In Memoriam
- Posts: 996
- Joined: 02 Mar 2004
- Location: Berkshire, UK
- Contact:
I used it for a few small routines but most of my 6502 coding was done with either SystemAde, a ROM based assembler that assembled files and later the Acorn Assembler (with its strange mnemonics LDAIM, STAZX).
Quite a few BBC games were writen using the BASIC assembler. You used MODE 7 (Teletext) to maximise the amount of RAM and moved the BASIC start address up to where the graphics screen would be when the game was running (PAGE=&3000). Then you assembled the game directly into its target location (somewhere between $E00 and $3000) depending on whether the disk operating system would be active.
If you track down the source code for Elite (probably one of the best ever BBC games) you can see how they used this technique.
PS. Do you have the acorn assembler for the second 6502? I've misplaced my copy.
Quite a few BBC games were writen using the BASIC assembler. You used MODE 7 (Teletext) to maximise the amount of RAM and moved the BASIC start address up to where the graphics screen would be when the game was running (PAGE=&3000). Then you assembled the game directly into its target location (somewhere between $E00 and $3000) depending on whether the disk operating system would be active.
If you track down the source code for Elite (probably one of the best ever BBC games) you can see how they used this technique.
PS. Do you have the acorn assembler for the second 6502? I've misplaced my copy.
Andrew Jacobs
6502 & PIC Stuff - http://www.obelisk.me.uk/
Cross-Platform 6502/65C02/65816 Macro Assembler - http://www.obelisk.me.uk/dev65/
Open Source Projects - https://github.com/andrew-jacobs
6502 & PIC Stuff - http://www.obelisk.me.uk/
Cross-Platform 6502/65C02/65816 Macro Assembler - http://www.obelisk.me.uk/dev65/
Open Source Projects - https://github.com/andrew-jacobs
-
scratchmonkey
- Posts: 12
- Joined: 28 Apr 2004
Unfortunately not. I have a 65C102 internal second processor in my machine which uses HiBasic via the tube for the assembler. You might be able to get a ROM image from http://bbc.nvg.org/ and blow it however if you have an EPROM programmer.
BitWise wrote:
If you track down the source code for Elite (probably one of the best ever BBC games) you can see how they used this technique.
http://www.iancgbell.clara.net/elite/index.htm
and the source code can be found by following the link (bottom right) to "Elite Archives". Ian Bell, one of the original authors, owns the site.