In the 1980s, the popular BBC science fiction series Doctor Who used some real computer system(s) to display impressive (for the time, OK, maybe not!) graphics. They actually ran the software real-time and simply filmed the output on the screen.
Most of the time they filmed the screen while the program was already running, but on a couple of occasions they showed the source code briefly before the program was run, presumably because it made the story look more science-fictiony!
Source code
TA&7A
360.AP:LDX&78:LDY#0:.AD:LDAM%,X:STA(&7
6),Y:CLC:TYA:ADC#8:TAY:DEX:BNEAD
370CLC:LDA&76:ADC#1:STA&76:LDA&77;ADC#
0:STA&77
380DEC&7B:BNEAQ:CLC:LDA&74:ADC&82::STA
&74:STA&76:LDA&75:ADC&83:STA&75:STA&77:L
DA#8:STA&7B:.AQ:DEC&7A:BNEAP
390CLC:LDA&72:ADC#1:STA&72:LDA&73:ADC#
0:STA&73
400DEC&7F:BEQAZ:JMPAA:.AZ:RTS:]:NEXT:E
NDPROC
410DEF PROCtitle
420REPEATUNTILINKEY(0)=32
455Xsize=4:Ysize=4:YOUR$="_______":PRI
NTTAB(6,7);:PROCdisplay
460Xsize=4:Ysize=4:YOUR$="X.V.773":PRI
NTTAB(6,6);:PROCdisplay
461REPEATUNTILINKEY(0)=32
465Xsize=2:Yzise=2:YOUR$="LAST LOCATIO
N: 27|43":PRINTTAB(0,14);"PROCdisplay
466REPEATUNTILINKEY(0)=32
467Xsize=2:Ysize=2:YOUR$="LAST CONTACT
: 12-99":PRINTTAB(0,20);:PROCdisplay
470REPEATUNTILINKEY(0)=32
475Xsize=2:Ysize=2:YOUR$="____________
______":PRINTTAB(2,29);:PROCdisplay
480Xsize=2:Ysize=2:YOUR$="BELIEVED DES
TROYED":PRINTTAB(2,28);:PROCdisplay
520FORW=0TO 4E3:NEXT:
610ENDPROC
>RUN
Output
Amusingly, the command prompt is visible at the end of the final underline!
Stories that feature running software on '80s computers (probably an incomplete list):
- 1982 - Castrovalva (filmed late 1981)
- 1983 - The Five Doctors
- 1984 - The Twin Dilemma (pictured above)
- 1985 - Attack of the Cybermen (filmed late 1984)
Although the computers used were not necessarily the same, I would be interested in knowing what system is pictured below. It's using some combination of BASIC and assembly language that I don't recognise.
Things I have been able to work out:
- The screen is 40 characters by 32 characters.
- Lines 350-400 (and probably earlier) contain assembly language
- It appears that the assembly is embedded into the BASIC program and wrapped in
[
and]
characters, but it's hard to tell from a single screenshot
- It appears that the assembly is embedded into the BASIC program and wrapped in
- Lines 410-610 contain a full procedure, which is the "controller" of the code (in MVC terminology)
- The underline is printed before and one line below the actual text, presumably to prevent the text from being deleted by the blank space above the underline characters!
Xsize
andYsize
are how much to stretch the text in in each direction andYOUR$
(pronounced "your string") contains the text to displayPROCdisplay
is a procedure that displays your string at the current location with x size and y size
PRINTTAB
(probably justPRINT TAB
with an optional space removed and not a separate command) places the text cursor at the position specified on the screen- The coordinate system starts at the bottom left, and works upwards and to the right
- This means you can
PRINT
"Hello " normally, then immediatelyPROCdisplay
"Fred" at twice the size without having to reposition the text cursor
- This means you can
REPEATUNTILINKEY(0)=32
(REPEAT UNTIL INKEY(0) = 32
) polls the keyboard until the [Space] is pressed, at which point the return value ofINKEY(0)
is ASCII 32 for space- The way
INKEY(0)
works is exactly the same as Locomotive BASIC on the Amstrad CPC series but the rest of the grammar is incompatible
- The way
- Integers, and possibly floating point numbers, may be typed in scientific notation. On line 520
4E3
is4000
for a saving of one character!
What is this computer, and what BASIC and assembly language is it? All transcription errors are my own!