Computing history and an original reading study

1982

BBC BASIC: Assembling Code Is Not Running It

Read the BBC Micro manual through an original event sequence that separates BASIC execution, assembly into memory and a later call to machine code.

Original explanatory diagram: stage a; stage c.

The short answer

A program can execute a translator without yet executing the code that translator produces. The distinction is easy to miss when both activities happen in one interactive session.

Compare the representations

When a BASIC program contains assembly language, what runs at each stage?

Keep the stated evidence separate from the conclusions it permits.

Historical claims are sourced in the article. Invented examples are labelled and do not reproduce historical measurements or software.
DistinctionRepresentation or actionWhat follows โ€” and what does not
BASIC sessionThe interpreter reaches the assembly stage.It can run a translator without yet calling its output.
AssemblySource statements are translated into machine code.Successful translation does not prove the intended computation ran.
ExecutionThe generated routine is called.Its output and control behaviour require their own checks.

Chronology

A timeline of the turning points

  1. Selected historical record

    The cited record supplies the historical starting point; the labelled examples below are original.

The manualโ€™s hybrid environment

Chapter 44 of the BBC Microcomputer User Guide explains assembly statements inside square brackets, machine-code output placed from the address in P%, and a later CALL into the resulting code. The manual also discusses labels and two-pass assembly.

Sources for this section: [1]

An original sequence of events

Imagine an educational program with three labelled stages. Stage A reserves a block for generated code. Stage B runs the assembler over a short source fragment and writes its output there. Stage C calls the resulting machine-code routine. These are descriptive stages, not a copied program listing or an instruction to modify arbitrary addresses on a real machine.

If the user stops after B, the fragment may have been translated successfully without its intended calculation having run. If C jumps to the wrong place, the source may be well formed while execution is wrong. If B fails on an unresolved label, there may be no complete routine ready for C. Each failure belongs to a different stage.

Why a forward label needs another pass

The manualโ€™s two-pass discussion explains the problem of referring to a label before its address has been assigned. A first pass determines labels; a subsequent pass can use them when generating the completed instructions.

For an invented reading trace, write โ€œbranch to finishโ€ before the line labelled finish. On the first pass, the later lineโ€™s position becomes known. On the next pass, that known position can resolve the earlier reference. This is not a claim that the first pass executes the branch or that two passes prove the routineโ€™s behaviour correct. Translation and testing remain separate.

Sources for this section: [1]

Three records to inspect

Keep the source text, the assembly result and the execution result distinct. The source shows what was requested. The generated bytes or an assembly listing show what was produced. An execution trace or output shows what happened when the result was called. Agreement among them needs checking rather than assumption.

The same distinction helps interpret Wilsonโ€™s biography. Designing a BASIC interpreter, supplying an assembly facility and designing a processor instruction set are related but different achievements. The historical manual demonstrates capabilities of a particular environment. This article supplies a reading framework without claiming emulator tests, current compatibility advice or personal authorship by Wilson of every manual example.

Continue the chronology

Biography context

Explore United Kingdom through connected lives

Connected biographies

A working life behind the record

Quick answers

Common questions

Does the first assembly pass execute each branch in the new routine?
No. In this reading model, the pass establishes information needed for translation. Running the resulting routine is a separate event.

Primary and institutional sources

How this history was checked

The account identifies the selected portions actually consulted. Original scenarios and reference answers explain the distinction without reproducing the sourceโ€™s diagrams or implying that historical software was run. This article was reviewed on 5 November 2026.

  1. John Coll, edited by David Allen, BBC, 1982; original manual transcriptionBBC Microcomputer User Guide