1
0
mirror of https://github.com/retro-software/B5500-software.git synced 2026-03-02 17:44:40 +00:00
Files
Paul Kimpel 2c72f7fd1d Commit CUBE Library version 13 of February 1972.
1. Commit library tape images, directories, and extracted text files.
2. Commit additional utilities under Unisys-Emode-Tools.
2018-05-27 11:24:23 -07:00

748 lines
59 KiB
Plaintext

LABEL 0000000000XXXXXX0010000001
$ CARD
BEGIN
FILE OUT HAMMERS 1(2,15) ;
REAL TTT ; FORMAT TTTT (/"TIME = ",F14.3," MILLI-SECONDS"/) ;
ALPHA FILE OUT PLOTTER (1,3061) ; MAIN0310
INTEGER ARRAY SYMBOLA[0:112],SYMBOLB[-15:63] ; MAIN0320
INTEGER ARRAY A[0:1022],A1,A2[0:8] ; MAIN0330
MAIN0340
PROCEDURE PLOT(X,Y,IC) ; PLOT0010
PLOT0020
REAL X,Y ; PLOT0030
INTEGER IC ; PLOT0040
PLOT0050
BEGIN PLOT0060
PLOT0070
OWN INTEGER M,MM ; PLOT0080
IF IC > 5 THEN PLOT0090
BEGIN PLOT0100
IF IC > 1020 THEN M ~ 1019 ELSE M ~ IC - 1 ; PLOT0110
MM ~ X ; PLOT0120
END ; PLOT0130
PLOT0140
BEGIN PLOT0150
PLOT0160
STREAM PROCEDURE STRT(FNT,FNTS) ; PLOT0170
BEGIN PLOT0180
PLOT0190
LOCAL ST ; PLOT0200
DI ~ LOC ST ; SI ~ FNT ; DS ~ WDS ; PLOT0210
SI ~ ST ; ST ~ SI ; PLOT0220
SI ~ LOC ST ; DI ~ FNTS ; DS ~ WDS ; PLOT0230
END ; PLOT0240
PLOT0250
STREAM PROCEDURE TRANS(FNT,AN,MT,MT1) ; PLOT0260
PLOT0270
VALUE MT,MT1 ; PLOT0280
BEGIN PLOT0290
SI ~ AN ; DI ~ FNT ; PLOT0300
DI ~ DI + 5 ; DI ~ DC ; PLOT0310
60(MT(SI ~ SI + 2 ; DS ~ 6 CHR)) ; PLOT0320
MT1(SI ~ SI + 2 ; DS ~ 6 CHR ; ) ; PLOT0330
MT ~ DI ; DI ~ FNT ; PLOT0340
SI ~ LOC MT ; DS ~ WDS ; PLOT0350
END ; PLOT0360
PLOT0370
STREAM PROCEDURE SYNC(FNT) ; PLOT0380
PLOT0390
BEGIN PLOT0400
DI ~ FNT ; PLOT0410
DI ~ DI + 5 ; DI ~ DC ; PLOT0420
DS ~ 5 LIT "4634~" ; PLOT0430
END ; PLOT0440
PLOT0450
STREAM PROCEDURE INITIALIZE(FNT,BL) ; PLOT0460
PLOT0470
BEGIN PLOT0480
LOCAL ST ; PLOT0490
DI ~ LOC ST ; SI ~ FNT ; DS ~ WDS ; PLOT0500
SI ~ BL ; DI ~ ST ; SI ~ SI + 2 ; PLOT0510
DS ~ 8 LIT "44444444" ; PLOT0520
DS ~ 8 LIT "44333333" ; PLOT0530
DS ~ 2 LIT "31" ; PLOT0540
DS ~ 6 CHR ; PLOT0550
DS ~ 8 LIT "13333333" ; PLOT0560
40(DS ~ 8 LIT "44444444") ; PLOT0570
DS ~ 5 LIT "4634~" ; PLOT0580
END ; PLOT0590
PLOT0600
OWN INTEGER I,NPX,NPY,BA,T,BC,BUFS ; PLOT0610
OWN BOOLEAN BOOL,PEN,FIXED,NEWF ; PLOT0620
OWN REAL LNGTH,LENGTH,SF,RECORD ; PLOT0640
INTEGER J,K,JJ,NX,NY,DX,DY,IX,IY,NR,NT,NC,II1,II2,NA,JJ1 ; PLOT0650
INTEGER NODEL ; PLOT0660
LABEL FINSH,ON,L1,L2,FIN ; PLOT0670
PLOT0680
DEFINE STARTPLOT = PLOT0690
A[0] ~ A[1] ~ 4363141380 ; PLOT0700
A[2] ~ 4363141315 ; A[3] ~ 3272356034 ; PLOT0710
STRT(PLOTTER,BUFS) ; PLOT0720
BC ~ 1 ; I ~ 4 # ; PLOT0730
DEFINE TESTAPE = PLOT0740
LENGTH ~ LENGTH + RECORD ; PLOT0750
IF LENGTH } LNGTH THEN PLOT0760
BEGIN PLOT0770
CLOSE(PLOTTER,SAVE) ; PLOT0780
BA ~ 0 ; LENGTH ~ 0 ; PLOT0790
GO TO FINSH ; PLOT0800
END ; # ; PLOT0810
PLOT0820
IF ABS(IC) > 3 THEN PLOT0830
BEGIN PLOT0840
IF ABS(IC) = 5 THEN PLOT0850
BEGIN PLOT0860
NEWF ~ NOT NEWF ; GO TO FIN PLOT0870
END ; PLOT0890
IF ABS(IC) = 4 THEN PLOT0900
BEGIN PLOT0910
IF IC > 0 THEN PLOT0920
BEGIN PLOT0930
X ~ NPX/(100.0 | SF) ; Y ~ NPY/(100.0 | SF) ; PLOT0940
END PLOT0950
ELSE PLOT0960
SF ~ X ; PLOT0970
GO TO FIN ; PLOT0980
END ; PLOT0990
IF NOT FIXED THEN PLOT1000
BEGIN PLOT1010
FILL A1[*] WITH OCT50500000000,OCT50600000000,OCT50700000000 , PLOT1020
OCT60500000000,OCT60600000000,OCT60700000000 , PLOT1030
OCT70500000000,OCT70600000000,OCT70700000000 ; PLOT1040
FILL A2[*] WITH OCT50500,OCT50600,OCT50700,OCT60500,OCT60600, PLOT1050
OCT60700,OCT70500,OCT70600,OCT70700 ; PLOT1060
FIXED ~ TRUE ; PLOT1070
END ; PLOT1080
IF Y ! 0 THEN LNGTH ~ Y ELSE LNGTH ~ 2000.0 ; PLOT1090
SF ~ 1.0 ; PLOT1100
RECORD ~ (6 | MM | (M + 1)/200+0.75)/12 ; LENGTH~0 ; PLOT1110
NPX ~ NPY ~ 0 ; BA ~ 1 ; PLOT1120
BOOL ~ PEN ~ TRUE ; PLOT1130
GO TO FINSH ; PLOT1140
END ; PLOT1150
IF BOOL THEN T ~ 1572870 ; PLOT1160
IF ABS(IC) = 2 THEN PLOT1170
BEGIN PLOT1180
IF NOT PEN THEN GO TO ON ; PLOT1190
IF BOOL THEN T ~ 1835014 ELSE T ~ T+1 ; PLOT1200
END PLOT1210
ELSE IF ABS(IC) = 3 THEN PLOT1220
BEGIN PLOT1230
IF PEN THEN GO TO ON ; PLOT1240
IF BOOL THEN T ~ 1310726 ELSE T ~ T- 1 ; PLOT1250
END PLOT1260
ELSE GO TO ON ; PLOT1270
PEN ~ NOT PEN ; PLOT1280
A[I] ~ IF BOOL THEN T+6543139200 ELSE T + 24960 ; PLOT1290
BOOL ~ TRUE ; PLOT1300
I ~ I + 1 ; PLOT1310
IF NOT NEWF THEN PLOT1320
NODEL ~ IF PEN THEN 1 ELSE 7 ; PLOT1330
FOR K ~ 1 STEP 1 UNTIL NODEL DO PLOT1340
BEGIN PLOT1350
IF I > M THEN PLOT1360
BEGIN PLOT1370
JJ ~ (M + 1) MOD 60 ; PLOT1380
TRANS(BUFS,A,ENTIER((M + 1)/60),JJ) ; PLOT1390
IF BC = MM THEN PLOT1400
BEGIN PLOT1410
SYNC(BUFS) ; PLOT1420
RELEASE(PLOTTER) ; TESTAPE ; STARTPLOT ; PLOT1430
END PLOT1440
ELSE PLOT1450
BEGIN PLOT1460
I ~ 0 ; BC ~ BC + 1 ; PLOT1470
END ; PLOT1480
END ; PLOT1490
A[I] ~ 6544712070 ; I ~ I + 1 ; PLOT1500
END ; PLOT1510
T ~ 1572870 ; PLOT1520
I ~ I - 1 ; PLOT1530
ON: NX ~ 100.0 | X | SF ; NY ~ 100.0 | Y | SF ; PLOT1540
DX ~ NX - NPX ; DY ~ NY - NPY ; PLOT1550
NPX ~ NX ; NPY ~ NY ; PLOT1560
IF DX } 0 THEN PLOT1570
IF DX = 0 THEN IX ~ 3 ELSE IX ~ 6 ELSE IX ~ 0 ; PLOT1580
IF DY } 0 THEN PLOT1590
IF DY = 0 THEN IY ~ IX + 1 ELSE IY ~ IX + 2 ELSE IY ~ IX ;PLOT1600
IF ABS(DX) } ABS(DY) THEN PLOT1610
BEGIN PLOT1620
NR ~ ABS(DY) ; NC ~ NT ~ ABS(DX) ; PLOT1630
IX ~ IX + 1 ; PLOT1640
END PLOT1650
ELSE PLOT1660
BEGIN PLOT1670
NR ~ ABS(DX) ; NC ~ NT ~ ABS(DY) ; PLOT1680
IX ~ IY - IX + 3 ; PLOT1690
END ; PLOT1700
NA ~ NT DIV 2 ; PLOT1710
L1: IF NC ! 0 THEN PLOT1720
BEGIN PLOT1730
NA ~ NA + NR ; PLOT1740
IF NA } NT THEN PLOT1750
BEGIN PLOT1760
IF BOOL THEN T ~ T + A1[IY] PLOT1770
ELSE T ~ T + A2[IY] ; PLOT1780
NA ~ NA - NT ; PLOT1790
END PLOT1800
ELSE PLOT1810
BEGIN PLOT1820
IF BOOL THEN T ~ T + A1[IX] PLOT1830
ELSE T ~ T + A2[IX] ; PLOT1840
END ; PLOT1850
BOOL ~ NOT BOOL ; PLOT1860
IF BOOL THEN PLOT1870
BEGIN PLOT1880
A[I] ~ T ; I ~ I +1 ; PLOT1890
T ~ 1572870 ; PLOT1900
IF I > M THEN PLOT1910
BEGIN PLOT1920
JJ ~ (M + 1) MOD 60 ; PLOT1930
TRANS(BUFS,A,ENTIER((M + 1)/60),JJ) ; PLOT1940
IF BC = MM THEN PLOT1950
BEGIN PLOT1960
SYNC(BUFS) ; PLOT1970
RELEASE(PLOTTER) ; TESTAPE ; STARTPLOT ; PLOT1980
END PLOT1990
ELSE PLOT2000
BEGIN PLOT2010
I ~ 0 ; BC ~ BC + 1 ; PLOT2020
END ; PLOT2030
END ; PLOT2040
END ; PLOT2050
NC ~ NC - 1 ; GO TO L1 ; PLOT2060
END ; PLOT2070
IF IC < 0 THEN PLOT2080
BEGIN PLOT2090
IF NOT BOOL THEN A[I] ~ T + 24960 ELSE I ~ I - 1 ; PLOT2100
L2: IF I MOD 4 ! 3 THEN PLOT2110
BEGIN PLOT2120
A[I ~ I + 1] ~ 6544712070 ; GO TO L2 ; PLOT2130
END ; PLOT2140
I ~ I + 1 ; PLOT2150
JJ ~ I MOD 60 ; PLOT2160
TRANS(BUFS,A,ENTIER(I/60),JJ) ; PLOT2170
SYNC(BUFS) ; PLOT2180
RELEASE(PLOTTER) ; PLOT2190
BOOL ~ TRUE ; PLOT2200
NPX ~ NPY ~ 0 ; PLOT2210
FINSH: JJ ~ BA ; NA ~ 0 ; PLOT2220
FOR K ~ 0,2,4 DO PLOT2230
BEGIN PLOT2240
J ~ JJ MOD 10 ; JJ ~ JJ DIV 10 ; PLOT2250
NA ~ NA + ((4 + J MOD 4) + (4 + J DIV 4) | 64) | 64 * K ;PLOT2260
END ; PLOT2270
BA ~ BA + 1 ; PLOT2280
INITIALIZE (PLOTTER,NA) ; PLOT2290
RELEASE(PLOTTER) ; PLOT2300
STARTPLOT ; PLOT2310
END ; PLOT2320
FIN: END ; PLOT2330
END PLOT PROCEDURE ; PLOT2340
MAIN0350
PROCEDURE SYMBOL(X0, Y0, HGT, BCD, THETA, N) ; SYMB0010
SYMB0020
VALUE X0, Y0, HGT, THETA, N ; SYMB0030
INTEGER N ; SYMB0040
REAL X0, Y0, HGT, THETA ; SYMB0050
ALPHA ARRAY BCD[0] ; SYMB0060
SYMB0070
BEGIN SYMB0080
SYMB0090
INTEGER BINX, AC, W, OSC, AINX, I, OSTS, OSTS1, MOVE,INT ; SYMB0100
REAL XA,YA,X,Y,XN,YN ; SYMB0110
BOOLEAN LP ; SYMB0120
OWN BOOLEAN FIXED ; SYMB0130
DEFINE A = SYMBOLA #, B = SYMBOLB # ; SYMB0140
LABEL L1,L2,L3,L4,L5,LOADB,S1,S2,S3,S4,S5,S6,S7,S8,S9,S10,S11, SYMB0150
S12,S13,S14,S15,T1, M1,Y1,EL,EXIT, SKIP ; SYMB0160
SWITCH SW ~ L1, L2, L3, L4, L5 ; SYMB0170
SWITCH SW1 ~ S1,S2,S3,S4,S5,S6,S7,S8,S9,S10,S11,S12,S13,S14,S15 ;SYMB0180
DEFINE D1 = GO TO LOADB#, D2 = GO TO M1# ; SYMB0190
SYMB0200
IF NOT FIXED THEN SYMB0210
FILL A[*] WITH OCT103041463717060, OCT110000000000000, SYMB0220
OCT103020271600000,OCT400001444637170,OCT605000000000000, SYMB0230
OCT011030414334143,OCT445463717060000,OCT070343333730204, SYMB0240
OCT000000000000000,OCT011030414334040,OCT747000000000000, SYMB0250
OCT031434434130100,OCT106173746000000,OCT060747212000000, SYMB0260
OCT344341301001031,OCT434454637170605,OCT140000000000000, SYMB0270
OCT011030414637170,OCT604133344000000,OCT111514041412024, SYMB0280
OCT232313534440400,OCT313313114144040,OCT040000000000000, SYMB0290
OCT000000000000000,OCT101121201070222,OCT345463717060000, SYMB0300
OCT111222211170141,OCT525241400000000,OCT024406000000000, SYMB0310
OCT014170064402000,OCT212523034300000,OCT000343463717060, SYMB0320
OCT343400000000000,OCT040737464534040,OCT030414334000000, SYMB0330
OCT424130100106173,OCT746450000000000,OCT000737464130000, SYMB0340
OCT470704340400400,OCT470704340400000,OCT334341301001061, SYMB0350
OCT737464500000000,OCT000704444740000,OCT103020271737000, SYMB0360
OCT102021111000000,OCT301017370000000,OCT362717060540314, SYMB0370
OCT220100103140000,OCT301215370000000,OCT460442000000000, SYMB0380
OCT440415130400000,OCT014523054100000,OCT011030414700000, SYMB0390
OCT000703472540000,OCT070040000000000,OCT000723474000000, SYMB0400
OCT000740470000000,OCT103041463770364,OCT770371706011000, SYMB0410
OCT000737464534040,OCT100106173746413,OCT010702240000000, SYMB0420
OCT000737464534043,OCT443400000000000,OCT023243341405164, SYMB0430
OCT626272000000000,OCT014523054123034,OCT323252100000000, SYMB0440
OCT034300000000000,OCT103235170000000,OCT102122121121702, SYMB0450
OCT425151424000000,OCT014170420446000,OCT000000000000000, SYMB0460
OCT004700000000000,OCT011030414334140,OCT506173746000000, SYMB0470
OCT202707470000000,OCT070110304147000,OCT072047000000000, SYMB0480
OCT070024404700000,OCT004770074000000,OCT072547252000000, SYMB0490
OCT074724143424004,OCT000000000000000,OCT102122121121000, SYMB0500
OCT004770160607171,OCT670413130404100,OCT024635450535130, SYMB0510
OCT343000000000000,OCT024270044400000,OCT103037170000000, SYMB0520
OCT141670363400000,OCT004044040004242,OCT200000000000000, SYMB0530
OCT004422044022000,OCT004000440444220,OCT004004440022000, SYMB0540
OCT202244220422000,OCT222422000000000,OCT240141242200000, SYMB0560
OCT243443413010010,OCT314242200000000,OCT244220022422000, SYMB0550
OCT240242242022000,OCT443313041311001,OCT131403133220000, SYMB0570
OCT103650046410702,OCT222000000000000,OCT024222202422000, SYMB0580
OCT004404402200000,OCT004422242022044,OCT022024222000000 ;SYMB0590
T1: IF NOT FIXED THEN SYMB0600
FILL B[*] WITH OCT30157,OCT12156,OCT14155,OCT22153, SYMB0610
OCT32151,OCT14150,OCT12147,OCT06146,OCT14145,OCT14144, SYMB0620
OCT26142,OCT14141,OCT16140,OCT14137,OCT20135,OCT22000, SYMB0630
OCT12002,OCT22003,OCT32005,OCT20007,OCT22011,OCT30013, SYMB0640
OCT12015,OCT40016,OCT30021,OCT34023,OCT22025,OCT32030, SYMB0650
OCT26032,OCT06034,OCT14035,OCT12036,OCT24037,OCT30041, SYMB0660
OCT24043,OCT16045,OCT16046,OCT14047,OCT26050,OCT14052, SYMB0670
OCT14053,OCT12054,OCT10055,OCT32056,OCT10060,OCT06061, SYMB0680
OCT12062,OCT12063,OCT12064,OCT14065,OCT06066,OCT12067, SYMB0690
OCT10070,OCT34071,OCT16073,OCT30074,OCT24076,OCT26100, SYMB0700
OCT26102,OCT04104,OCT10105, OCT30106,OCT14110,OCT00111, SYMB0710
OCT04112,OCT30113,OCT10115,OCT14116,OCT06117,OCT12120, SYMB0720
OCT12121,OCT12122,OCT20123,OCT14125,OCT34126,OCT22130, SYMB0730
OCT12132,OCT10133,OCT12134 ; SYMB0740
FIXED ~ TRUE ; SYMB0750
XA ~ (HGT/7) | COS(0.01745330754 | THETA) ; SYMB0760
YA ~ (HGT/7) | SIN(0.01745330754 | THETA) ; SYMB0770
PLOT(X0,Y0,3) ; SYMB0780
IF N}0 THEN SYMB0790
BEGIN SYMB0800
X ~ X0 ; Y ~ Y0 SYMB0810
END ELSE SYMB0820
BEGIN SYMB0830
XA ~ .5714285714286|XA ; YA ~ .5714285714286|YA ; SYMB0840
X ~ X0 - 2|XA + 2|YA ; SYMB0850
Y ~ Y0 - 2|XA - 2|YA ; SYMB0860
BINX ~ N ; D1 SYMB0870
END ; SYMB0880
FOR AC ~ 1 STEP 1 UNTIL N DO SYMB0890
BEGIN SYMB0900
W~BCD[(AC-1) DIV 6] ; GO TO SW[INT~AC MOD 6] ; SYMB0910
BINX ~ W.[42:6] ; D1 ; SYMB0920
L1: BINX ~ W.[12:6] ; D1 ; SYMB0930
L2: BINX ~ W.[18:6] ; D1 ; SYMB0940
L3: BINX ~ W.[24:6] ; D1 ; SYMB0950
L4: BINX ~ W.[30:6] ; D1 ; SYMB0960
L5: BINX ~ W.[36:6] ; SYMB0970
LOADB: OSC ~ B[BINX].[33:6] ; AINX ~ B[BINX].[39:9] ; SYMB0980
LP ~ TRUE ; SYMB0990
FOR I ~ 1 STEP 1 UNTIL OSC DO SYMB1000
BEGIN SYMB1010
IF I{15 THEN SYMB1020
BEGIN SYMB1030
IF I ! 1 THEN GO TO SKIP ; SYMB1040
OSTS ~ A[AINX].[9:39] ; OSTS1 ~ A[AINX].[3:6] SYMB1050
END SYMB1060
ELSE IF I{30 THEN SYMB1070
BEGIN SYMB1080
IF I ! 16 THEN GO TO SKIP ; SYMB1090
OSTS ~ A[AINX+1].[9:39] ; OSTS1 ~ A[AINX+1].[3:6] SYMB1100
END SYMB1110
ELSE SYMB1120
BEGIN SYMB1130
IF I ! 31 THEN GO TO SKIP ; SYMB1140
OSTS ~ A[AINX+2].[9:39] ; OSTS1 ~ A[AINX+2].[3:6] SYMB1150
END ; SYMB1160
SKIP: GO TO SW1[IF I{15 THEN I ELSE IF I{30 THEN I-15 SYMB1170
ELSE I-30] ; SYMB1180
S1: MOVE ~ OSTS1.[42:3] ; D2; SYMB1190
S2: MOVE ~ OSTS1.[45:3] ; D2; SYMB1200
S3: MOVE ~ OSTS.[9:3] ; D2 ; SYMB1210
S4: MOVE ~ OSTS.[12:3] ; D2 ; SYMB1220
S5: MOVE ~ OSTS.[15:3] ; D2 ; SYMB1230
S6: MOVE ~ OSTS.[18:3] ; D2 ; SYMB1240
S7: MOVE ~ OSTS.[21:3] ; D2 ; SYMB1250
S8: MOVE ~ OSTS.[24:3] ; D2 ; SYMB1260
S9: MOVE ~ OSTS.[27:3] ; D2 ; SYMB1270
S10: MOVE ~ OSTS.[30:3] ; D2 ; SYMB1280
S11: MOVE ~ OSTS.[33:3] ; D2 ; SYMB1290
S12: MOVE ~ OSTS.[36:3] ; D2 ; SYMB1300
S13: MOVE ~ OSTS.[39:3] ; D2 ; SYMB1310
S14: MOVE ~ OSTS.[42:3] ; D2 ; SYMB1320
S15: MOVE ~ OSTS.[45:3] ; D2 ; SYMB1330
M1: IF NOT BOOLEAN(I) THEN GO TO Y1 ; SYMB1340
XN ~ X ; YN ~ Y ; SYMB1350
IF MOVE = 7 THEN SYMB1360
BEGIN SYMB1370
LP ~ TRUE ; I ~ I+1 ; GO TO EL SYMB1380
END ; SYMB1390
XN ~ XN + MOVE|XA ; YN ~ YN + MOVE|YA ; GO TO EL ; SYMB1400
Y1: XN ~ XN - YA|MOVE ; YN ~ YN + XA|MOVE ; SYMB1410
PLOT(XN, YN, IF NOT LP THEN 2 ELSE 3) ; LP ~ FALSE ; SYMB1420
EL: END ; SYMB1430
IF N < 0 THEN SYMB1440
BEGIN SYMB1450
PLOT(X0,Y0,3) ; GO TO EXIT ; SYMB1460
END ; SYMB1470
X ~ X +6|XA ; Y ~ Y + 6|YA SYMB1480
END ; SYMB1490
EXIT: END SYMBOL PROCEDURE ; SYMB1500
MAIN0360
PROCEDURE NUMBER(X, Y, HGT, FLT, THETA, N) ; NUMB0010
NUMB0020
VALUE X, Y, HGT, FLT, THETA, N ; NUMB0030
INTEGER N ; NUMB0040
REAL X, Y, HGT, FLT, THETA ; NUMB0050
NUMB0060
BEGIN NUMB0070
NUMB0080
INTEGER INT, A1, FRAC, DF, A2 ; NUMB0090
BOOLEAN B ; NUMB0100
LABEL SIGN1,SIGN2,SIGN3,SIGN4,SIGN5,FR,FR1,ERROR,EXIT ; NUMB0110
LABEL JF1, JF2, JF3, JF4, JF5 ; NUMB0120
SWITCH JF ~ JF1, JF2, JF3, JF4, JF5 ; NUMB0130
DEFINE D1=GO TO FR#,D2=GO TO FR1#,D3=GO TO ERROR#,D4=GO TO EXIT#;NUMB0140
ALPHA ARRAY BCD[0:2] ; NUMB0150
NUMB0160
STREAM PROCEDURE CONVERT(XO, XA) ; NUMB0170
BEGIN NUMB0180
SI ~ XO ; DI ~ XA ; DI ~ DI+2 ; DS ~ 6DEC NUMB0190
END ; NUMB0200
NUMB0210
FLT ~ (SIGN(FLT) | 0.5 | 10*(-N)) + FLT ; NUMB0220
IF ABS(INT ~ ENTIER(IF B ~ FLT } 0 THEN FLT NUMB0230
ELSE IF FLT MOD 1 ! 0 THEN FLT+1 ELSE FLT)) > 99999 NUMB0240
THEN D3 ; NUMB0250
FRAC ~ ABS(INT) ; CONVERT(FRAC,A1) ; NUMB0260
IF A1.[18:6] ! 0 THEN GO TO SIGN1 ; NUMB0270
IF A1.[24:6] ! 0 THEN GO TO SIGN2 ; NUMB0280
IF A1.[30:6] ! 0 THEN GO TO SIGN3 ; NUMB0290
IF A1.[36:6] ! 0 THEN GO TO SIGN4 ; NUMB0300
IF A1.[42:6] ! 0 THEN GO TO SIGN5 ; NUMB0310
A1 ~ IF B THEN A1+52357696512 ELSE A1+52357696256 ; D1 ; NUMB0320
SIGN1: A1 ~ IF B THEN A1+51539607552 ELSE A1+47244640256 ; D1 ; NUMB0330
SIGN2: A1 ~ IF B THEN A1+52344913920 ELSE A1+52277805056 ; D1 ; NUMB0340
SIGN3: A1 ~ IF B THEN A1+52357496832 ELSE A1+52356448256 ; D1 ; NUMB0350
SIGN4: A1 ~ IF B THEN A1+52357693440 ELSE A1+52357677056 ; D1 ; NUMB0360
SIGN5: A1 ~ IF B THEN A1+52357696512 ELSE A1+52357696256 ; NUMB0370
FR: BCD[0] ~ A1 ; NUMB0380
IF N {0 THEN NUMB0390
BEGIN NUMB0400
SYMBOL(X, Y, HGT, BCD, THETA, 6) ; D4 NUMB0410
END ; NUMB0420
IF N > 5 THEN D3 ; NUMB0430
FRAC ~ ENTIER((ABS(FLT) - ABS(INT)) | 10*N) ; NUMB0440
CONVERT(FRAC, DF) ; A2 ~ 27917287424 ; NUMB0450
GO TO JF[N] ; NUMB0460
JF1: A2.[18:6] ~ DF.[42:6] ; D2 ; NUMB0470
JF2: A2.[18:12] ~ DF.[36:12] ; D2 ; NUMB0480
JF3: A2.[18:18] ~ DF.[30:18] ; D2 ; NUMB0490
JF4: A2.[18:24] ~ DF.[24:24] ; D2 ; NUMB0500
JF5: A2.[18:30] ~ DF.[18:30] ; NUMB0510
FR1: BCD[1] ~ A2 ; NUMB0520
SYMBOL(X, Y, HGT, BCD, THETA, N+7) ; D4 ; NUMB0530
ERROR: BCD[0] ~ "ILLEGA" ; BCD[1]~"L NUMB" ; BCD[2]~ "ER " ;NUMB0540
SYMBOL(X, Y, HGT, BCD, THETA, 14) ; NUMB0550
EXIT: END NUMBER PROCEDURE ; NUMB0560
MAIN0370
PROCEDURE AXIS(X,Y,BCD,NC,SIZE,THETA,YMIN,DY) ; AXIS0010
AXIS0015
VALUE X,Y,NC,SIZE,THETA,YMIN,DY ; AXIS0020
REAL X, Y, SIZE, THETA, YMIN, DY ; AXIS0030
INTEGER NC ; AXIS0040
ALPHA ARRAY BCD[0] ; AXIS0050
AXIS0060
BEGIN AXIS0070
AXIS0080
REAL SGN,TH,CTH,STH,XB,YB,XA,YA,XC,YC,CHAR,ABSV,EXPP,ADY,TNC ;AXIS0090
INTEGER N, I, NT, NAC ; ALPHA ARRAY ABCD[0:1] ; AXIS0100
LABEL L89,L90,L50 ; AXIS0110
AXIS0120
SGN ~ IF NC = 0 THEN 1 ELSE SIGN(NC) ; AXIS0130
NAC ~ ABS(NC) ; AXIS0140
TH ~ THETA | 0.017455 ; N ~ SIZE ; CTH ~ COS(TH) ; AXIS0150
STH ~ SIN(TH) ; XB ~ X ; YB ~ Y ; AXIS0160
XA ~ X - 0.1 | SGN | STH ; YA ~ Y + 0.1 | SGN | CTH ; AXIS0170
PLOT(XA, YA, 3) ; AXIS0180
FOR I ~ 1 STEP 1 UNTIL N DO AXIS0190
BEGIN AXIS0200
PLOT(XB, YB, 2) ; XC ~ XB + CTH ; YC ~ YB + STH ; AXIS0210
PLOT(XC, YC, 2) ; XA ~ XA + CTH ; YA ~ YA + STH ; AXIS0220
PLOT(XA, YA, 2) ; XB ~ XC ; YB ~ YC AXIS0230
END ; AXIS0240
IF NC = 0 THEN GO TO L50 ; AXIS0250
CHAR ~ ABS(YMIN) ; ABSV ~ ABS(N|DY + YMIN) ; AXIS0260
IF ABSV < CHAR THEN ABSV ~ CHAR ; EXPP ~ 0 ; AXIS0270
ADY ~ DY ; AXIS0280
L89: IF ABS(ADY) < 0.001 THEN AXIS0290
BEGIN AXIS0300
IF ABSV > 999.9 THEN GO TO L90 ; AXIS0310
ADY ~ ADY | 10.0 ; ABSV ~ ABSV | 10.0 ; AXIS0320
EXPP ~ EXPP - 1 ; GO TO L89 ; AXIS0330
END ; AXIS0340
IF ABSV } 9999.0 THEN AXIS0350
BEGIN AXIS0360
ADY ~ ADY | 0.1 ; ABSV ~ ABSV | 0.1 ; AXIS0370
EXPP ~ EXPP + 1 ; GO TO L89 ; AXIS0380
END ; AXIS0390
L90: ABSV ~ YMIN | 10*(-EXPP) + N | ADY ; AXIS0400
XC ~ 0.2 | SGN - 0.05 ; AXIS0410
XA ~ XB - XC | STH - 0.53 | CTH ; AXIS0420
YA ~ YB + XC | CTH - 0.53 | STH ; N ~ N + 1 ; AXIS0430
FOR I ~ 1 STEP 1 UNTIL N DO AXIS0440
BEGIN AXIS0450
IF ABS(ABSV) { 0.0009 THEN ABSV ~ 0 ; AXIS0460
NUMBER(XA, YA, .1, ABSV, THETA, 3) ; ABSV ~ ABSV - ADY ; AXIS0470
XA ~ XA - CTH ; YA ~ YA - STH AXIS0480
END ; AXIS0490
TNC ~ NAC + 7 ; AXIS0500
XC ~ SIZE | 0.5 - 0.06 | TNC ; AXIS0510
YC ~ 0.07 - SGN | 0.4 ; AXIS0520
XA ~ X + XC | CTH + YC | STH ; AXIS0530
YA ~ Y + XC | STH - YC | CTH ; AXIS0540
SYMBOL(XA, YA, .14, BCD, THETA, NAC) ; AXIS0550
IF EXPP = 0 THEN GO TO L50 ; AXIS0560
XC ~ (TNC - 6) | 0.12 ; AXIS0570
XA ~ XA + XC | CTH ; AXIS0580
YA ~ YA + XC | STH ; AXIS0590
ABCD[0] ~ "(10 )" ; AXIS0600
SYMBOL(XA, YA, .14, ABCD, THETA, 6) ; AXIS0610
XA ~ XA + 0.18 | CTH - 0.07 | STH ; AXIS0620
YA ~ YA + 0.18 | STH + 0.07 | CTH ; AXIS0630
NUMBER(XA, YA,.07, EXPP, THETA, 0 ) ; AXIS0640
L50: END AXIS PROCEDURE ; AXIS0650
MAIN0380
PROCEDURE DXDY(YMAX,YMIN,TDY) ; DXDY0010
DXDY0015
VALUE YMAX ; DXDY0020
REAL YMAX,YMIN,TDY ; DXDY0030
DXDY0040
BEGIN DXDY0050
DXDY0060
REAL ADY,K1,V ; DXDY0070
INTEGER K ; DXDY0080
LABEL L1,L2,L3,L4,FIN ; DXDY0090
DXDY0100
ADY ~ YMAX - YMIN ; DXDY0110
IF YMIN ! 0 THEN DXDY0120
BEGIN DXDY0130
K ~ -ENTIER(LN(ADY)|.4342944819) ; DXDY0140
K1 ~ 10*K ; DXDY0150
K ~ ENTIER (YMIN|K1) ; DXDY0160
YMIN ~ K/K1 DXDY0170
END ; DXDY0180
ADY ~ YMAX - YMIN ; K1 ~ 0 ; DXDY0190
L1: IF ADY { 10.5 THEN GO TO L3 ELSE GO TO L4 ; DXDY0200
L2: ADY ~ ADY | 10.0 ; DXDY0210
K1 ~ K1 - 1 ; GO TO L1 ; DXDY0220
L3: IF ADY { 8.4 THEN GO TO L2 ; DXDY0230
TDY ~ 10.0 ; GO TO FIN ; DXDY0240
L4: IF ADY { 21.0 THEN DXDY0250
BEGIN DXDY0260
TDY ~ 20.0 ; GO TO FIN ; DXDY0270
END ; DXDY0280
IF ADY { 42.0 THEN DXDY0290
BEGIN DXDY0300
TDY ~ 40.0 ; GO TO FIN ; DXDY0310
END ; DXDY0320
IF ADY { 52.5 THEN DXDY0330
BEGIN DXDY0340
TDY ~ 50.0 ; GO TO FIN ; DXDY0350
END ; DXDY0360
IF ADY > 84.0 THEN DXDY0370
BEGIN DXDY0380
ADY ~ ADY/10.0 ; DXDY0390
K1 ~ K1 + 1 ; GO TO L1 ; DXDY0400
END ; DXDY0410
TDY ~ 80.0 ; DXDY0420
FIN: TDY ~ TDY | 10.0*(K1) ; DXDY0430
END DXDY PROCEDURE ; DXDY0440
MAIN0390
PROCEDURE SCALES (X,N,XMIN,DX,K) ; SCLS0010
SCLS0020
VALUE N,XMIN,DX,K ; SCLS0030
REAL XMIN,DX ; SCLS0040
INTEGER N,K ; SCLS0050
REAL ARRAY X[0] ; SCLS0060
SCLS0070
BEGIN SCLS0080
SCLS0090
INTEGER I,NP ; SCLS0100
SCLS0110
NP ~ N|K - (K - 1) ; SCLS0120
FOR I ~ 1 STEP K UNTIL NP DO SCLS0130
X[I] ~ (X[I] -XMIN)/DX ; SCLS0140
END SCALES PROCEDURE ; SCLS0150
MAIN0400
PROCEDURE SCALE(X,N,S,YMIN,DY,K) ; SCLE0010
SCLE0015
VALUE N,S,K ; SCLE0020
INTEGER N,K ; SCLE0030
REAL S,YMIN,DY ; SCLE0040
REAL ARRAY X[0] ; SCLE0050
SCLE0060
BEGIN SCLE0070
SCLE0080
REAL YMAX ; SCLE0090
INTEGER I,NP ; SCLE0100
SCLE0110
NP ~ N | K - (K - 1) ; SCLE0120
YMAX ~ YMIN ~ X[1] ; SCLE0130
FOR I ~ K+1 STEP K UNTIL NP DO SCLE0140
BEGIN SCLE0150
IF YMAX < X[I] THEN YMAX ~ X[I] ELSE SCLE0160
IF X[I] < YMIN THEN YMIN ~ X[I] ; SCLE0170
END ; SCLE0180
YMAX ~ (YMAX - YMIN)/S + YMIN ; SCLE0190
DXDY(YMAX,YMIN,DY) ; SCLE0200
FOR I ~ 1 STEP K UNTIL NP DO SCLE0210
X[I] ~ (X[I] - YMIN)/DY ; SCLE0220
END SCALE PROCEDURE ; SCLE0230
MAIN0410
PROCEDURE LINE(X, Y, N, K) ; LINE0010
LINE0020
VALUE N, K ; LINE0030
INTEGER N,K ; LINE0040
ARRAY X,Y[0] ; LINE0050
LINE0060
BEGIN LINE0070
LINE0080
REAL XX,YY,DF,DL ; LINE0090
INTEGER I, I3, NP ; LINE0100
LINE0110
I3 ~ 3 ; NP ~ N|K - (K- 1) ; LINE0120
PLOT(XX,YY,4) ; LINE0130
DF ~ SQRT((X[1] - XX)*2 + (Y[1] - YY)*2) ; LINE0140
DL ~ SQRT((X[NP] - XX)*2 + (Y[NP] - YY)*2) ; LINE0150
IF DF < DL THEN LINE0160
BEGIN LINE0170
FOR I ~ 1 STEP K UNTIL NP DO LINE0180
BEGIN LINE0190
PLOT(X[I], Y[I], I3) ; I3 ~ 2 LINE0200
END LINE0210
END LINE0220
ELSE LINE0230
BEGIN LINE0240
FOR I ~ NP STEP -K UNTIL 1 DO LINE0250
BEGIN LINE0260
PLOT(X[I],Y[I],I3) ; I3 ~ 2 ; LINE0270
END ; LINE0280
END ; LINE0290
END LINE PROCEDURE ; LINE0300
MAIN0420
PROCEDURE DASHLINE(X,Y,N1,K) ; DHLN0010
DHLN0020
VALUE N1,K ; DHLN0030
INTEGER N1,K ; DHLN0040
REAL ARRAY X,Y[0] ; DHLN0050
DHLN0060
BEGIN DHLN0070
DHLN0080
INTEGER I,NP,M,N ; DHLN0090
REAL PEN,XN,YN,ADX,ADY,DX,DY,DLTX,DLTY ; DHLN0100
LABEL L1 ; DHLN0110
DHLN0120
PEN ~ 2 ; M ~ 10 ; NP ~ N1 | K - (K - 1) ; DHLN0130
XN ~ X[1] ; YN ~ Y[1] ; DHLN0140
PLOT(XN,YN,3) ; DHLN0150
FOR I ~ K+1 STEP K UNTIL NP DO DHLN0160
BEGIN DHLN0170
DX ~ X[I] - XN ; DHLN0180
DY ~ Y[I] - YN ; DHLN0190
ADX ~ ABS(DX) ; ADY ~ ABS(DY) ; DHLN0200
IF ADX > ADY THEN DHLN0210
BEGIN DHLN0220
DLTX ~ SIGN(DX) | 0.01 ; DHLN0230
DLTY ~ 0.01 | DY/ADX ; DHLN0240
N ~ ADX | 100.0 ; DHLN0250
END DHLN0260
ELSE DHLN0270
BEGIN DHLN0280
DLTY ~ SIGN(DY) | 0.01 ; DHLN0290
DLTX ~ 0.01 | DX / ADY ; DHLN0300
N ~ ADY | 100.0 DHLN0310
END ; DHLN0320
L1: IF M { N THEN DHLN0330
BEGIN DHLN0340
PLOT(XN ~ XN + M | DLTX,YN ~ YN + M | DLTY,PEN) ; DHLN0350
N ~ N - M ; DHLN0360
IF PEN = 3 THEN DHLN0370
BEGIN DHLN0380
M ~ 10 ; PEN ~ 2 ; DHLN0390
END DHLN0400
ELSE DHLN0410
BEGIN DHLN0420
M ~ 5 ; PEN ~ 3 ; DHLN0430
END ; DHLN0440
GO TO L1 ; DHLN0450
END DHLN0460
ELSE DHLN0470
BEGIN DHLN0480
PLOT(XN ~ XN + N | DLTX,YN ~ YN + N | DLTY,PEN) ; DHLN0490
M ~ M - N ; DHLN0500
END ; DHLN0510
END ; DHLN0520
PLOT(XN,YN,2) ; DHLN0530
END DASHLINE PROCEDURE ; DHLN0540
MAIN0430
PROCEDURE NAMELINE(X,Y,N,K,A,T,DASH) ; NMLN0010
NMLN0020
VALUE N,K,T ; INTEGER N,K,T ; NMLN0030
REAL ARRAY X,Y[0] ; NMLN0040
ALPHA ARRAY A[0] ; NMLN0050
BOOLEAN DASH ; NMLN0060
NMLN0070
BEGIN NMLN0080
NMLN0090
INTEGER T1,N1,I,J,NP ; NMLN0100
REAL TH,XM,YM,MX,DX,DY,S,YL ; NMLN0110
REAL ARRAY X1,Y1[0:N DIV 2 + 2] ; NMLN0120
NMLN0130
N1 ~ N DIV 2 ; NMLN0140
NP ~ N | K - (K - 1) ; NMLN0150
I ~ (N1 - 1) | K + 1 ; NMLN0160
IF DASH THEN NMLN0170
DASHLINE(X,Y,I,K) NMLN0180
ELSE NMLN0190
LINE(X,Y,I,K) ; NMLN0200
DX ~ X[I + K] - X[I - K] ; NMLN0210
DY ~ Y[I + K] - Y[I - K] ; NMLN0220
IF DX = 0 THEN NMLN0230
TH ~ 1.5707963 NMLN0240
ELSE NMLN0250
TH ~ ARCTAN(DY/DX) ; NMLN0260
IF T } 0 THEN NMLN0270
BEGIN NMLN0280
T1 ~ T DIV 2 ; NMLN0290
YL ~ (X[I] | (Y[I - K] - Y[I + K]) + X[I - K] | Y[I + K] NMLN0300
- X[I + K] | Y[I - K])/(X[I - K] - X[I + K]) ; NMLN0310
IF YL < Y[I] THEN NMLN0320
S ~ -1 NMLN0330
ELSE NMLN0340
S ~ 1 ; NMLN0350
S ~ 0.05 + S | 0.09 ; NMLN0360
XM ~ S | SIN(TH) - 0.0857 | T1 | COS(TH) + X[I] ; NMLN0370
YM ~ -S | COS(TH)-0.0857 | T1 | SIN(TH) + Y[I] ; NMLN0380
TH ~ 57.2959125 | TH ; NMLN0390
SYMBOL(XM,YM,0.10,A,TH,T) ; NMLN0400
END NMLN0410
ELSE NMLN0420
SYMBOL(X[I],Y[I],0.30,A,TH,T) ; NMLN0430
J ~ 0 ; NMLN0440
FOR I ~ I STEP K UNTIL NP DO NMLN0450
BEGIN NMLN0460
J ~ J + 1 ; NMLN0470
X1[J] ~ X[I] ; Y1[J] ~ Y[I] ; NMLN0480
END ; NMLN0490
IF DASH THEN NMLN0500
DASHLINE(X1,Y1,J,K) NMLN0510
ELSE NMLN0520
LINE(X1,Y1,J,K) ; NMLN0530
END NAMELINE PROCEDURE ; NMLN0540
L140: END.
$ CARD LIST