Jitze Couperus, CC BY 2.0, via Wikimedia Commons
Schoonschip was originally developed by Prof. Veltman for the IBM 7090 in 1963, but was rewritten for the CDC 6600 in 1965. Since that time, there are been many updates and improvements to the code. Most notably, from 1972 to 1978, Hugo Strubbe was responsible for maintaining CDC Schoonschip at CERN. His contributions include restructuring the original code into overlays in order to make more efficient use of limited memory, adding extensions and fixing errors. He was also responsible for distribution of the code and international promotional seminars.
After Prof. Veltman arrived at the Physics Department of the University of Michigan in 1981, he continued to run Schoonschip on the Michigan State University CDC Cybers. This source code to CDC Schoonschip is for the version dated March 1, 1983, and is presumably the last available CDC code, as soon thereafter Prof. Veltman began the conversion to the M680x0 platform.
The CDC Schoonschip code was obtained from Prof. Veltman's computer files and is being made available with permision of the Veltman family. CDC Schoonschip is primarily written in CDC COMPASS CP, with the program entry and some support routines in Fortran. The source file was presumably obtained as a dump from the MSU computing facilities on April 21, 1983 and is presented here in raw form, with the exception that the original CR line endings have been translated to LF.
S83C.txt | CDC Schoonschip source – March 1, 1983 version. |
1 0 OVERLAY (SCHIP,0,0)This is a Fortran card, but with "routine 1" and "card 0" prepended to it.
DOMOR also acts as a preprocessor and provides a set of convenience functions. Of particular note are the following three:
1 220 SX3 X3 $ BX0 -X0*X4 $ NO $ IX6 X0-X3Here the $ separates COMPASS commands, and DOMOR expands the above to
X (SX3 X3),(BX0 -X0*X4),(NO),(IX6 X0-X3)where X needs to be defined as a macro that takes four arguments and writes them out on four separate lines. This allows for more compact assembler source, and is a recurring theme in Prof. Veltman's software, as can be seen from a similar multiple instruction per line format for the Ann Arbor Macro Assembler.
SB0 B0in a few places. Technically, COMPASS expands this to SB0 B0+B0 (octal 66000) which sets register B0 to the sum B0+B0. However, register B0 is hardwired to the number zero, so this instruction functions as a nop (although it is not the official NO pass instruction). While this is fine on the CDC 6600 and most Cyber machines, the 800 series of Cyber 170 and 180 reuse the SB0 Bj+Bk and SB0 Bj-Bk instructions as CR Xj,Xk and CW Xj,Xk. To avoid this conflict, it is recommended to replace SB0 B0 in the Schoonschip code with NO. Presumably SB0 B0 may have been preferred, as lore has it that early machines actually processed the NO instruction (octal 46000) through the divide unit, which could have taken additional time and resources. Here it should be mentioned that Prof. Veltman took great pride in writing tight assembly code and getting as much performance as possible with optimal use of the instruction stack.
schip-new.deck | Expanded CDC Schoonschip source deck |
Schoonschip was originally developed in 1963 to run on an IBM 7094,
and subsequently ported to the CDC 6600 in 1965. CDC Schoonschip is
written in a combination of assembly and Fortran. The present source
code is for the version dated March 1, 1983, and is:
Copyright © 1963, 1965 by Martinus J. G. Veltman
Copyright © 1983 by Martinus J. G. Veltman and Hugo Strubbe
This code is dual-licensed under the GNU Lesser General Public License
and the 3-clause BSD License. The aim is to allow the software to be
used, published, developed, and modified in the unrestrictive style of
public scientific research, while ensuring that there is always a
branch of the software which protects free access to the original
source and to modifications within that branch.
Schoonschip is free software. You can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either Version 3 of the license, or (at your option) any later version. See the Free Software Foundation site.
You can also redistribute and/or modify Schoonschip under the terms of the 3-clause BSD License. See the Open Source Initiative site.
Users who distribute the software with or without modification are encouraged to maintain the dual-licensing system.