In 1971 Peter (Jock) Smythe, my maths teacher, taught us [BASIC] which was processed using optical mark recognition (OMR) cards, sent to Angle park overnight, and the cards and printout returned the next day; not exactly interactive! From this early beginning I was bitten by the computer bug. In 1972 I was taught [APL] on the IBM 1130; again using OMR cards; and if really lucky we got to use the console of the IBM 1130 for an interactive session. APL was used to enhance the teaching of mathematics. For maths and statistics, APL (invented by [Ken Iverson]) and its [descendant J] (also: [J Language]), are really excellent tools.
IBM had significant involvement at Angle Park via Jim Clementi. During the 70's various computing summer schools were run. The schools had students and teachers from all over the state and even some overseas visitors.
I managed to learn a little [FORTRAN] during one of the summer schools. Later the two Angle Park IBM 1130's were replaced by an [IBM System/370] [model 115]. Through the computing summer schools and evenings at Angle Park Computing Centre (thanks Jock) I ended up with career in Information Technology.
The IBM 1130 is special, not because of any great technological break through, but because of the large number of users who gained access to computers because of its accessibility. There is a generation of IT professionals here in South Australia due to the IBM 1130 and the Angle Park Computing Centre.
Personally, I am incredibly grateful to all of the people involved with the Angle Park Computing Centre and the opportunities that it gave to Soth Australian high schools students in the 1970's.
IBM 1130 | |
IBM 1442 Card Read-Punch | IBM 1132 Line Printer |
This is a simple version of Conway's game of life
Main Registers: IAR = Instruction Address Register ACC = Accumulator EXT = Extension Register XRx = Index Registers x = 1,2,3 1130 Instruction Set Mnemonics: LD = Load ACC STO = Store ACC LDD = Load Double (ACC & EXT) STD = Store Double (ACC & EXT) LDX = Load Index STX = Store Index LDS = Load Status STS = Store Status A = Add ACC AD = Add Double S = Subtract ACC SD = Subtract Double M = Multiply D = Divide AND = Boolean And OR = Boolean Or XOR = Boolean Exclusive Or SLA = Shift Left ACC SLT = Shift Left ACC & EXT SLCA = Shift Left and Count ACC SLC = Shift Left and Count ACC & EXT SRA = Shift Right ACC SRT = Shift Right ACC & EXT RTE = Rotate Right ACC & EXT XCH = Exchange ACC and EXT MDM = Modify Memory B = Branch BSC = Branch or Skip on Condition (Modifier dependent) i.e. BP BNP BN BNN BZ BNZ BC BO BOD BSI = Branch and Store IAR MDX = Modify Index and Skip WAIT = Halt NOP = No Operation XIO = Execute I/O 1800 Additional Instruction Mnemonics: CMP = Compare ACC DCM = Double Compare ACC & EXT Short instruction format (one 16 bit word): 1 Bits 0...45678......5 OP---FTTDisp---- OP is Operation F is format 0 = Short TT is Tag Disp is Displacement Long instruction format (two 16 bit words): 1 1 Bits 0...456789.....50..............5 OP---FTTIMod----Address--------- OP is Operation F is format 1 = Long TT is Tag I is Indirect bit Mod is Modifier Effective Address Calculation (EA): F = 0 | F = 1, I = 0 | F = 1, I = 1 Direct Addressing| Direct Addressing| Indirect Addressing ------------------------------------------------------------------- TT = 00 | EA = Displ + IAR | EA = Add | EA = C/Add TT = 01 | EA = Displ + XR1 | EA = Add + XR1 | EA = C/Add + XR1 TT = 10 | EA = Displ + XR2 | EA = Add + XR2 | EA = C/Add + XR2 TT = 11 | EA = Displ + XR3 | EA = Add + XR2 | EA = C/Add + XR3 ------------------------------------------------------------------- Disp = Contents of displacement field Add = Contents of address field of instruction C = Contents of location specified by Add or Add + XR
PAGE 1 // JOB LOG DRIVE CART SPEC CART AVAIL PHY DRIVE 0000 1234 1234 0000 V2 M12 ACTUAL 32K CONFIG 32K // FOR *LIST SOURCE PROGRAM *ONE WORD INTEGERS C------------------------------------------------------- C COMPUTE THE CRITIAL VALUES FOR A QUADRAITIC EQN C 0=A*X**2+B*X+C C RETURNS DISCRIMINANT, ROOTS, VERTEX, FOCAL LENGTH, FOCAL POINT C X1 AND X2 ARE THE ROOTS C------------------------------------------------------- SUBROUTINE QUADR(A,B,C,DISCR,X1,X2,VX,VY,FL,FPY) REAL A,B,C,DISCR,X1,X2,VX,VY,FL,FPY C DISCRIMINANT, VERTEX, FOCAL LENGTH, FOCAL POINT Y DISCR = B**2.0 - 4.0*A*C VX = -B / (2.0*A) VY = A*VX**2.0 + B*VX + C FL = 1.0 / (A * 4.0) FPY = VY + FL FL = ABS(FL) C COMPUTE THE ROOTS BASED ON THE DISCRIMINANT IF(DISCR) 110,120,130 C -VE DISCRIMINANT, TWO COMPLEX ROOTS, REAL=X1, IMG=+/-X2 110 X1 = -B / (2.0*A) X2 = SQRT(-DISCR) / (2.0*A) RETURN C ZERO DISCRIMINANT, ONE REAL ROOT 120 X1 = -B / (2.0*A) X2 = X1 RETURN C +VE DISCRIMINANTE, TWO REAL ROOTS 130 X1 = (-B + SQRT(DISCR)) / (2.0*A) X2 = (-B - SQRT(DISCR)) / (2.0*A) RETURN C C NEXT STORE SUBROUTINE ON DISK USING DUP END FEATURES SUPPORTED ONE WORD INTEGERS CORE REQUIREMENTS FOR QUADR COMMON 0 VARIABLES 4 PROGRAM 228 RELATIVE ENTRY POINT ADDRESS IS 000A (HEX) END OF COMPILATION // DUP PAGE 2 *DELETE QUADR CART ID 1234 DB ADDR 209B DB CNT 0012 *STORE WS UA QUADR CART ID 1234 DB ADDR 209B DB CNT 0012 PAGE 1 // JOB LOG DRIVE CART SPEC CART AVAIL PHY DRIVE 0000 1234 1234 0000 V2 M12 ACTUAL 32K CONFIG 32K // FOR *LIST SOURCE PROGRAM *IOCS(CARD,1132 PRINTER) *ONE WORD INTEGERS C------------------------------------------------------- C PROCESS DATA CARDS WITH A,B,C C UNTIL A=0 C------------------------------------------------------- DATA ICARD,IPRT /2,3/ REAL A,B,C REAL DISCR,XR1,XR2,VX,VY,FL,FPY WRITE(IPRT,901) 901 FORMAT(' ------------------------------------------------------') C READ A B C, IF A=0 THEN EXIT 100 READ(ICARD,801)A,B,C 801 FORMAT(3F8.3) C EXIT WHEN A IS ZERO IF (A) 110,9000,110 C PRINT A B C 110 WRITE(IPRT,902)A,B,C 902 FORMAT(' QUADRATIC A=',F8.3,' B=',F8.3,' C=',F8.3) C COMPUTE AND PRINT THE CRITICAL VALUES CALL QUADR(A,B,C,DISCR,XR1,XR2,VX,VY,FL,FPY) WRITE(IPRT,903) DISCR 903 FORMAT(' DISCRIMINANT=',F9.4) WRITE(IPRT,904) VX,VY 904 FORMAT(' VERTEX X=',F9.4,' Y=',F9.4) WRITE(IPRT,905) FL 905 FORMAT(' FOCAL LENGTH=',F9.4) WRITE(IPRT,906) VX,FPY 906 FORMAT(' FOCAL POINT X=',F9.4,' Y='F9.4) IF (DISCR) 120,130,140 C -VE DISCRIMINAT, TWO COMPLEX ROOTS 120 WRITE(IPRT,913) XR1, XR2 913 FORMAT(' COMPLEX ROOTS =(',F9.4,' +/-',F9.4,'I)') GO TO 200 C ZERO DISCRIMINANT, ONE REAL ROOT 130 WRITE(IPRT,912) XR1 912 FORMAT(' ROOT X =',F9.4) GO TO 200 C +VE DISCRIMINANT, TWO REAL ROOTS 140 WRITE(IPRT,911) XR1, XR2 PAGE 2 911 FORMAT(' ROOTS X1=',F9.4,' X2=',F9.4) C --- GO TO 200 C END OF QUAD 200 WRITE(IPRT,901) GO TO 100 C END OF PROGRAM C DATA FOLLOWS XEQ CARD 9000 CALL EXIT END FEATURES SUPPORTED ONE WORD INTEGERS IOCS CORE REQUIREMENTS FOR COMMON 0 VARIABLES 22 PROGRAM 270 END OF COMPILATION // XEQ ------------------------------------------------------ QUADRATIC A= 1.000 B= 0.000 C= 0.000 DISCRIMINANT= 0.0000 VERTEX X= 0.0000 Y= 0.0000 FOCAL LENGTH= 0.2500 FOCAL POINT X= 0.0000 Y= 0.2500 ROOT X = 0.0000 ------------------------------------------------------ QUADRATIC A= 1.000 B= 2.000 C= 3.000 DISCRIMINANT= -8.0000 VERTEX X= -1.0000 Y= 2.0000 FOCAL LENGTH= 0.2500 FOCAL POINT X= -1.0000 Y= 2.2500 COMPLEX ROOTS =( -1.0000 +/- 1.4142I) ------------------------------------------------------ QUADRATIC A= 2.000 B= 2.000 C= 0.000 DISCRIMINANT= 3.9999 VERTEX X= -0.5000 Y= -0.5000 FOCAL LENGTH= 0.1250 FOCAL POINT X= -0.5000 Y= -0.3750 ROOTS X1= -0.0000 X2= -1.0000 ------------------------------------------------------ QUADRATIC A= 2.000 B= 0.000 C= -4.000 DISCRIMINANT= 32.0000 VERTEX X= 0.0000 Y= -4.0000 FOCAL LENGTH= 0.1250 FOCAL POINT X= 0.0000 Y= -3.8750 ROOTS X1= 1.4142 X2= -1.4142 ------------------------------------------------------ QUADRATIC A= 0.500 B= 0.000 C= -4.000 DISCRIMINANT= 8.0000 VERTEX X= 0.0000 Y= -4.0000 FOCAL LENGTH= 0.5000 FOCAL POINT X= 0.0000 Y= -3.5000 ROOTS X1= 2.8284 X2= -2.8284 ------------------------------------------------------ QUADRATIC A= 0.250 B= 2.000 C= -2.000 DISCRIMINANT= 5.9999 VERTEX X= -4.0000 Y= -6.0000 FOCAL LENGTH= 1.0000 FOCAL POINT X= -4.0000 Y= -5.0000 ROOTS X1= 0.8989 X2= -8.8989 ------------------------------------------------------ QUADRATIC A= -4.000 B= 0.000 C= -4.000 DISCRIMINANT= -64.0000 VERTEX X= 0.0000 Y= -4.0000 FOCAL LENGTH= 0.0625 FOCAL POINT X= 0.0000 Y= -4.0625 COMPLEX ROOTS =( 0.0000 +/- -1.0000I) ------------------------------------------------------ QUADRATIC A= 2.730 B= -7.200 C= -3.750 DISCRIMINANT= 92.7899 VERTEX X= 1.3186 Y= -8.4972 FOCAL LENGTH= 0.0915 FOCAL POINT X= 1.3186 Y= -8.4056 ROOTS X1= 3.0829 X2= -0.4455 ------------------------------------------------------