top of page
Search

Bootstrapping

  • Cristiana Dinculescu
  • Dec 2, 2020
  • 1 min read

For those of you native to the digital world, let me introduce the series of Coral 11 mini-computers, made in Romania by ITC. They were almost perfect "clones" of the PDP-11 series (of DEC), including the rather weird PDP-endian format (a 32-bit integer stored as two 16-bit words in big-endian, but the words themselves are little-endian). Oh, well!


The OS was pretty decent, multi-user real-time, just that... the machine was totally empty, there was no ROM. So, how was it started?

The front panel had lights and switches you had to press to enter a micro code, depositing the address of the peripherical device from where to read the "Bootstrap Loader". To keep it short, the bootstrap loader was a self-modifying piece of code, in assembly MACRO-11:

	LOAD = 0x7400				; Buffer address

0x7744	016701	BEGIN:	MOV	DEVICE, R1	; Get Device CSR
0x7746	000026
0x7750	012702	LOOP:	MOV	(PC)+, R2	; Get buffer offset
0x7752	000352	OFFSET:	0352
0x7754	005211		INC	@R1		; Turn on reader
0x7756	105711	READY:	TSTB	@R1		; Done?
0x7760	100376		BPL	READY
0x7762	116162		MOVB	2(R1), LOAD(R2)	; Transfer
0x7764	000002
0x7766	0x7400
0x7770	005267		INC	OFFSET		; Bump buffer offset
0x7772	177756
0x7774	000765		BR	LOOP
0x7776	yyyyyy	DEVICE:	yyyyyy			; Input device CSR address   

I got my own, on punch tape, the second day at work and I used it a couple years, until the computer's God said: "Let there be ROM!"

 
 
 

2 Comments


Cristiana Dinculescu
Dec 04, 2020

Thanks! Seems like another lifetime :)

Like

John Weir
John Weir
Dec 04, 2020

Love it. my first commercial job was writing macro32 assembler for Vax to support Data entry of swift messaging transactions (logical finance). Was reading the code above and filled with nostalgia

Like
bottom of page