1
0
mirror of https://github.com/PDP-10/stacken.git synced 2026-03-01 01:19:17 +00:00
Files
Lars Brinkhoff 6e18f5ebef Extract files from tape images.
Some tapes could not be extracted.
2021-01-29 10:47:33 +01:00

1457 lines
44 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
;BLISS-10 5(110) 7/11/74 10:34:38 PLTDCL.BLI Page 1
; 1 MODULE PLTOVL(DREGS=6,SREG=#17,VREG=#15,FREG=#13,RESERVE(#16),START)=
; 2 BEGIN
; 3
; 4 !*** DECLARATIONS ***
; 5
; 6 !*** IMPLEMENTATION DEPENDENT BINDS ***
; 7
;COPYRIGHT (c) DIGITAL EQUIPMENT CORPORATION 1973,1986,1988.
; ALL RIGHTS RESERVED.
;
;THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
;ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE
;INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER
;COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY
;OTHER PERSON. NO TITLE TO AND OWNERSHIP OF THE SOFTWARE IS HEREBY
;TRANSFERRED.
;
;
;THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE
;AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
;CORPORATION.
;
;DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
;SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL.
TITLE PLTO..
TWOSEG
RELOC 400000
; 8 BIND NOCHECK = 0.60, %SEE PHASE 2 OF BRKAPART%
; 9 TRPCHECK = 0.30, %SEE PHASE 3%
; 10 ITOP = 0.75, %AMT OF X-AX IN LEAF POLYGON%
; 11 ISIDE = 0.70, %DITTO FOR Y-AX%
; 12 IXINCR = 1.50, %VERT DIST BETWEEN NODES%
; 13
; 14 % SET PLTDIAG TO SHAPE YOU WANT PLOTTED TREES TO BE %
; 15
; 16 DIAG=0, SQAR=-1,
; 17 PLTDIAG=DIAG
; 18 ;
; 19
; 20 BIND AMTNODE=7,
; 21 MAXST=32, %NUMBER OF SUBTREES ACCEPTED%
; 22 DIAMOND=100000,
; 23 TRAPZOID=100001;
; 24
; 25 !*** MODULE WIDE REGISTERS ***
; 26
; 27 REGISTER TMP1,TMP2;
; 28
; 29 MACHOP ILDB=#134,
; 30 IDPB=#136,
; 31 MOVEI=#201,
; 32 MOVEM=#202,
; 33 BLT=#251,
; 34 JRST=#254,
; 35 PUSH=#261,
; 36 POP=#262,
; 37 POPJ=#263,
; 38 HRLM=#506;
; 39
; 40 MACRO HALT=JRST(4)$;
; 41
; 42 !*** PLOTTER PACKAGE ENTRY POINTS ***
; 43
; 44 EXTERNAL ?.BREG;
; 45
; 46 EXTERNAL LINE, %GIVEN X,Y ARRAYS, IT PLOTS (N) STRAIGHT LINES%
; 47 WHERE, %THE CO-ORDS OF THE PEN%
; 48 PLOT, %MOVE PEN FROM CUR.LOC. TO (X,Y)%
; 49 PLOTS, %INIT THE PACKAGE%
; 50 SYMBOL, %PLOTS AN ASCII STRING FROM AN ARRAY%
; 51 NUMBER, %DITTO FOR FL.PT. NUM%
; 52 LPTOUT; %SPECIALLY FOR LINK--SIMS PLT ON LPT%
;BLISS-10 5(110) 7/11/74 10:34:41 PLTDCL.BLI Page 1-1
; 53
; 54 %THE FORTRAN INTERFACE%
; 55
; 56 EXTERNAL PLTORIG,
; 57 PLTINIT,
; 58 PLTPOLY,
; 59 PLTLINE;
; 60
; 61 %THE LINK-10 CORE ALLOCATION INTERFACE%
; 62
; 63 EXTERNAL ?DY.GET,
; 64 ?DY.RET,
; 65 GETSON,
; 66 % <FILE>/PLOT:(LEAVES:VAL,INCHES:VAL,STPSIZ:VAL) -- RESPECTIVELY
; 67 1) MAX LEAVES ALLOWED IN SUBTREE
; 68 2) WIDTH OF PLOTTER IN INCHES
; 69 3) PHYS. PLT CHARACTERISTIC IN TERMS OF STEPS/INCH
; 70 COMBINED THEY ACT AS A SCALING MECHANISM
; 71 %
; 72 LEAVES,
; 73 STEPS,
; 74 LPBUF, %IF <FILE> IS LPT: THIS WILL PT. AT 2K BUFFER%
; 75 ERRFND,
; 76 INCHES;
; 77
; 78 BIND MAXWT=LEAVES; %THE FORMER WILL BE THE FL. REPR. OF THE LATTER%
; 79
; 80 !*** ROUTINE DECLARATIONS ***
; 81
; 82 FORWARD OVLPLT,
; 83 SUBTREE,
; 84 BRKAPART,
; 85 PLTTREE,
; 86 TRAPBRK,
; 87 MAKTREE,
; 88 SELTREE2P,
; 89 FNDLEAVES,
; 90 CLEANUP,
; 91 TASCII;
; 92
; 93 !*** PRIMITIVE MACROS ***
; 94
; 95
; 96 MACRO PLUS=FADR$,
; 97 SUB=FSBR$,
; 98 MUL=FMPR$,
; 99 DVIDE=FDVR$;
; 100
; 101
; 102 !*** MACROS FOR ACCESS MNEMONICS ***
; 103
; 104 MACRO WHOLE=0,36$,
; 105 LEFT=18,18$,
; 106 RIGHT=0,18$,
; 107 ZZ=0,0$;
; 108
; 109 !*** BLT MACROS ***
;BLISS-10 5(110) 7/11/74 10:34:44 PLTDCL.BLI Page 1-2
; 110
; 111 MACRO ZERO(FIRST,LAST)
; 112 = BEGIN
; 113 REGISTER AC;
; 114 AC<LEFT>_FIRST<ZZ>;
; 115 AC<RIGHT>_(FIRST+1)<ZZ>;
; 116 FIRST_0;
; 117 BLT(AC,LAST);
; 118 END;$;
; 119
; 120 MACRO SAVREGS
; 121 = BEGIN
; 122 REGSAV[15]_.(#17)<WHOLE>;
; 123 #17<WHOLE>_REGSAV<0,0>;
; 124 BLT(#17,REGSAV[14]);
; 125 #17<WHOLE>_.REGSAV[15];
; 126 END;$;
; 127
; 128 MACRO RESREGS
; 129 = BEGIN
; 130 HRLZI(SREG,REGSAV<0,0>);
; 131 BLT(#17,#17)
; 132 END;$;
; 133
; 134 !*** STRUCTURE DECLARATIONS ***
; 135
; 136 MACRO SIZE=0,LEFT$, %SIZE OF STRUCT IN WORDS%
; 137 RSERV1=0,RIGHT$,
; 138 UNUSED=1,LEFT$,
; 139 ASON=1,RIGHT$,
; 140 LNKNODE=2,LEFT$, %PTS. AT NODE IN LINK'S INTERNAL TREE%
; 141 BROTHER=2,RIGHT$,
; 142 NAMLEN=3,LEFT$,
; 143 LNUM=3,RIGHT$, %LINK NUMBER--FOR PSEUDO-NODES IS NODE TYPE, 100000 FOR DIAMOND,100001 FOR TRAPZOID%
; 144 LNAME=4,WHOLE$, %LINK NAME--IN ASCII AND AT MOST 10 CHAR%
; 145 MYWT=6,WHOLE$, % # (FLOATING) OF LEAVES BENEATH NODE%
; 146 REST=7,WHOLE$;
; 147
; 148 MACRO NEXT=0,RIGHT$; %FOR PATCHING--USES NXOFPRV%
; 149
; 150 !*** PSEUDO-ROUTINES ***
; 151
; 152 %AMOUNT MUST BE A CONSTANT%
; 153
; 154 MACRO ALLOC(WHERE,AMOUNT)=
; 155 BEGIN
; 156 PUSH(SREG,1);
; 157 PUSH(SREG,2);
; 158 MOVEI(2,AMOUNT);
; 159 ?DY.GET();
; 160 MOVEM(1,WHERE);
; 161 HRLM(2,0,1);
; 162 POP(SREG,2);
; 163 POP(SREG,1);
; 164 END;
; 165 $;
; 166
;BLISS-10 5(110) 7/11/74 10:34:47 PLTDCL.BLI Page 1-3
; 167 MACRO DEALLOC(WHERE,AMOUNT)=
; 168 BEGIN
; 169 PUSH(SREG,1);
; 170 PUSH(SREG,2);
; 171 MOVEI(2,AMOUNT);
; 172 MOVE(1,WHERE);
; 173 ?DY.RET();
; 174 POP(SREG,2);
; 175 POP(SREG,1);
; 176 END;
; 177 $;
; 178
; 179 MACRO DOABORT=HALT$;
; 180
; 181 MACRO SELFDATA(WHO)=
; 182 TASCII(WHO[LNAME]<ZZ>,.WHO[NAMLEN]);
; 183 $;
; 184
; 185
; 186
; 187 !*** SCALAR DECLARATIONS ***
; 188
; 189 %THESE ARE LOCAL RATHER THAN OWNED BECAUSE OF THE
; 190 REQUIREMENT IMPOSED BY LINK-10 OF MINIMIZING STATIC LOW SEG SP%
; 191
; 192 LOCAL BRKQAD, %SEE PHASE 2 OF BRKAPART%
; 193 LETR, %2ND PART OF TRAP. NODE'S NAME%
; 194 ! MADE A REG MAXSON, %SON WITH LARGEST WT. IN PH3 OF BRKAPART%
; 195 NAME[2],%INDEX PART OF SUBTREE NAMES%
; 196 ROOT[AMTNODE], %NODE FOR ROOT OF TREE%
; 197 SIDE, %IN INCHES, HEIGHT OF NODE%
; 198 TOP, %WIDTH OF SAME%
; 199 TRAPSON[AMTNODE], %DUMMY NODE%
; 200 XINCR, %VERT DIST BETWEEN NODES%
; 201 XMAX; %FURTHEST Y PT. PLOTTED%
; 202
; 203 !*** STRUCTURES ***
; 204
; 205 STRUCTURE BASE[J,K,L]=
; 206 (@.BASE+.J)<.K,.L>; %STANDARD BASED STRUCUTURE%
; 207
; 208 STRUCTURE FIXED[J,K,L]=
; 209 (.FIXED+.J)<.K,.L>;
; 210
; 211 STRUCTURE ARRN2[I]=
; 212 (.ARRN2+.I-DIAMOND)<WHOLE>;
; 213
; 214 !*** MODULE-WIDE STRUCTURE MAPPINGS ***
; 215
; 216 MAP ARRN2 NAME;
; 217 MAP FIXED ROOT:TRAPSON;
; 218 ! FORWARD GETSON;
; 219 ! REQUIRE PLTDEB.BLI;
; 220 REQUIRE PLTOVL.BLI;
; 221
; 222
; 223 %ACTUAL TOP LEVEL FUNCTION...THE MODULE CODE WHICH CALLS IT IS AT
;BLISS-10 5(110) 7/11/74 10:34:52 PLTDCL.BLI Page 1-4
; 224 THE END OF THE FILE%
; 225
; 226 FUNCTION OVLPLT=
; 227 BEGIN
; 228 TMP1_GETSON(ROOT<ZZ>,0,0);
; 229 IF .TMP1 EQL 0 THEN (DOABORT);
; 230 SELFDATA(ROOT)
; 231 SUBTREE(ROOT<ZZ>);
; 232 BRKAPART(ROOT<ZZ>);
; 233 SELTREE2P(ROOT<ZZ>);
; 234 RETURN;
; 235 END;
; 236
OVLPLT:
PUSH $S,13 ;00000
PUSH $S,1($F) ;00001 Formal
HRRZ $F,17 ;00002
SUBI $F,1 ;00003
PUSH $S,13 ;00004
ADD $S,PLTO.L+0 ;00005
MOVE 01,1($F) ;00006 228 Formal
HRRZI 01,14(01) ;00007 Local
PUSH $S,1 ;00010
PUSH $S,PLTO.L+1 ;00011
PUSH $S,PLTO.L+1 ;00012
PUSHJ $S,GETSON ;00013 External
SUB $S,PLTO.L+2 ;00014
MOVE 14,15 ;00015 229
JUMPN 14,L.1 ;00016
JRST 04,0 ;00017
L.1: MOVE 03,1($F) ;00020 230 Formal
HRRZI 03,20(03) ;00021 Local
PUSH $S,3 ;00022
MOVE 04,1($F) ;00023 Formal
HLRZ 05,17(04) ;00024 Local
PUSH $S,5 ;00025
PUSHJ $S,TASCII ;00026
SUB $S,PLTO.L+3 ;00027
MOVE 01,1($F) ;00030 231 Formal
HRRZI 01,14(01) ;00031 Local
PUSH $S,1 ;00032
PUSHJ $S,SUBTREE ;00033
SUB $S,PLTO.L+4 ;00034
MOVE 02,1($F) ;00035 232 Formal
HRRZI 02,14(02) ;00036 Local
PUSH $S,2 ;00037
PUSHJ $S,BRKAPART ;00040
SUB $S,PLTO.L+4 ;00041
MOVE 03,1($F) ;00042 233 Formal
HRRZI 03,14(03) ;00043 Local
PUSH $S,3 ;00044
PUSHJ $S,SELTREE2P ;00045
SUB $S,PLTO.L+4 ;00046
SETZ $V,0 ;00047 234
SUB $S,PLTO.L+5 ;00050 236
;BLISS-10 5(110) 7/11/74 10:34:55 PLTDCL.BLI Page 1-5
POP $S,13 ;00051
POPJ $S,0 ;00052
; 237 FUNCTION SUBTREE(SELF)=
; 238 BEGIN
; 239 MACRO NEWSON=TMP2$;
; 240 REGISTER SON;
; 241 MAP BASE SELF:SON:NEWSON;
; 242 LOCAL IDX;
; 243
; 244 IDX_0;
; 245 WHILE 1 DO
; 246 BEGIN
; 247 ALLOC(TMP1,AMTNODE)
; 248 NEWSON_GETSON(.TMP1,.SELF[LNKNODE],.IDX);
; 249 IF .NEWSON NEQ 0
; 250 THEN BEGIN
; 251 IF .IDX EQL 0
; 252 THEN SELF[ASON]_.TMP1
; 253 ELSE SON[BROTHER]_.TMP1;
; 254 SON_.TMP1;
; 255 SELFDATA(SON)
; 256 SUBTREE(.SON);
; 257 END
; 258 ELSE BEGIN
; 259 IF .IDX EQL 0
; 260 THEN SELF[MYWT]_1.0;
; 261 RETURN;
; 262 END;
; 263
; 264 SELF[MYWT]_.SON[MYWT] PLUS .SELF[MYWT];
; 265 IDX_.IDX+1;
; 266 END;
; 267 RETURN; %CANNOT BE REACHED%
; 268 END;
; 269
SUBTREE:
PUSH $S,13 ;00000
PUSH $S,1($F) ;00001 Formal
HRRZ $F,17 ;00002
SUBI $F,1 ;00003
PUSH $S,13 ;00004
MOVEM 07,3($F) ;00005 Formal
MOVEM 11,4($F) ;00006 Formal
ADD $S,PLTO.L+6 ;00007
SETZM 00,11($F) ;00010 239 Local
L.2: PUSH $S,1 ;00011 247
PUSH $S,2 ;00012
MOVEI 02,7 ;00013
PUSHJ $S,DY.GET ;00014 External
MOVEM 01,14 ;00015
HRLM 02,0(01) ;00016
POP $S,2 ;00017
POP $S,1 ;00020
;BLISS-10 5(110) 7/11/74 10:35:01 PLTDCL.BLI Page 1-6
PUSH $S,14 ;00021 248
MOVE $V,-2($F) ;00022 Formal
HLRZ 03,2($V) ;00023
PUSH $S,3 ;00024
PUSH $S,11($F) ;00025 Local
PUSHJ $S,GETSON ;00026 External
SUB $S,PLTO.L+2 ;00027
MOVE 12,15 ;00030 249
JUMPE 12,L.3 ;00031
SKIPE 05,11($F) ;00032 251 Local
JRST 00,L.4 ;00033
MOVE $V,-2($F) ;00034 253 Formal
HRRM 14,1($V) ;00035
JRST 00,L.5 ;00036
L.4: HRRM 14,2(11) ;00037 254
L.5: MOVE 11,14 ;00040 255
HRRZI $V,4(11) ;00041
PUSH $S,15 ;00042
HLRZ 01,3(11) ;00043
PUSH $S,1 ;00044
PUSHJ $S,TASCII ;00045
SUB $S,PLTO.L+3 ;00046
PUSH $S,11 ;00047 256
PUSHJ $S,SUBTREE ;00050
SUB $S,PLTO.L+4 ;00051
JRST 00,L.6 ;00052 257
L.3: SKIPE 05,11($F) ;00053 259 Local
JRST 00,L.7 ;00054
MOVE 01,-2($F) ;00055 261 Formal
HRLZI 03,201400 ;00056
MOVEM 03,6(01) ;00057
JRST 00,L.7 ;00060
L.6: MOVE 05,-2($F) ;00061 263 Formal
MOVE 02,6(11) ;00062
FADR 02,6(05) ;00063
MOVEM 02,6(05) ;00064
AOS 01,11($F) ;00065 266 Local
JRST 00,L.2 ;00066 267 ^^^
L.7: SETZ $V,0 ;00067
SUB $S,PLTO.L+4 ;00070
MOVE 07,3($F) ;00071 269 Formal
MOVE 11,4($F) ;00072 Formal
SUB $S,PLTO.L+5 ;00073
POP $S,13 ;00074
POPJ $S,0 ;00075
;BLISS-10 5(110) 7/11/74 10:35:03 PLTDCL.BLI Page 2
; 270 FUNCTION BRKAPART(MEMSELF)=
; 271 BEGIN
; 272
; 273 % FUNCTION CONSISTS OF 3 PHASES:
; 274 1) RECURSIVELY BRKAPART ANY SON WHOSE WEIGHT IS GTR THAN MAX
; 275 2) CREATE SUB-TREES FOR ALL SONS SUCH THAT BRKQAD>SONWT>MAXWT
; 276 3) IF PREV. 2 STEPS NOT SUFFICIENT, TAKE LARGEST & SUCCESSIVELY SMALLER
; 277 SONS LEFT AND MAKE SUB-TREES OUT OF THEM.
; 278 IF SELF WEIGHT STILL TOO LARGE, BREAK UP TRAPEZOIDALLY
; 279 %
; 280
; 281 REGISTER SON,SELF,SELFWT,NXOFPRV;
; 282 MAP BASE SELF:SON;
; 283 MACRO RESTRETWT=(SELF[MYWT]_.SELFWT; RETURN(.SELFWT))$;
; 284
; 285 SELF_.MEMSELF;
; 286 SELFWT_.SELF[MYWT];
; 287
; 288 %PHASE 1%
; 289 SON_.SELF[ASON];
; 290 WHILE .SON NEQ 0 DO
; 291 BEGIN
; 292 IF .SON[MYWT] GTR .MAXWT
; 293 THEN BEGIN
; 294 SELFWT_.SELFWT SUB .SON[MYWT];
; 295 SELFWT_.SELFWT PLUS BRKAPART(.SON);
; 296 END;
; 297 SON_.SON[BROTHER];
; 298 END;
; 299
; 300 IF .SELFWT LEQ .MAXWT
; 301 THEN RESTRETWT;
; 302
; 303 %PHASE 2%
; 304 NXOFPRV_SELF[ASON]<ZZ>;
; 305 SON_.SELF[ASON];
; 306
; 307 WHILE .SON NEQ 0 DO
; 308 BEGIN
; 309 IF .SON[MYWT] GTR .BRKQAD
; 310 THEN BEGIN
; 311 SELFWT_.SELFWT SUB .SON[MYWT] PLUS 1.0;
; 312 SON_MAKTREE(DIAMOND,.SON,.NXOFPRV,.SON[MYWT]);
; 313 IF .SELFWT LEQ .MAXWT
; 314 THEN RESTRETWT;
; 315 END;
; 316 NXOFPRV_SON[BROTHER]<ZZ>;
; 317 SON_.SON[BROTHER]; %NOTE THAT THIS WORKS WHEN IF SATISFIED BECAUSE MAKTREE
; 318 RESETS ALL POINTERS%
; 319 END;
; 320
; 321 %PHASE 3%
; 322 WHILE 1 DO
; 323 BEGIN
; 324 MACRO MAXNOP=TMP1$,MAXSON=TMP2$; %NOTE THAT THESE TWO ARE
; 325 GARBAGE AFTER THE 2 FUNCTION REFS%
; 326 MAP BASE MAXSON;
;BLISS-10 5(110) 7/11/74 10:35:09 PLTDCL.BLI Page 2-1
; 327 MAXSON_TRAPSON<ZZ>;
; 328 NXOFPRV_SELF[ASON]<ZZ>;
; 329 SON_.SELF[ASON];
; 330 WHILE .SON NEQ 0 DO
; 331 BEGIN
; 332 IF .SON[MYWT] GTR .MAXSON[MYWT]
; 333 THEN (MAXSON_.SON; MAXNOP_.NXOFPRV);
; 334 NXOFPRV_SON[BROTHER]<ZZ>;
; 335 SON_.SON[BROTHER];
; 336 END;
; 337
; 338 IF .MAXSON EQL TRAPSON<ZZ>
; 339 THEN BEGIN
; 340 SELF[MYWT]_.SELFWT; %TRAPBRK WILL ADJUST SELF[MYWT]--GET IT UP TO DATE%
; 341 DO TRAPBRK(.SELF) UNTIL .SELF[MYWT] LEQ .MAXWT;
; 342 RETURN(.SELF[MYWT]);
; 343 END;
; 344
; 345 SELFWT_.SELFWT SUB .MAXSON[MYWT] PLUS 1.0;
; 346 %TAKES ADVAN OF VAL PASSING--MAXSON AND MAXNOP%
; 347 SON_MAKTREE(DIAMOND,.MAXSON,.MAXNOP,.MAXSON[MYWT]);
; 348 IF .SELFWT LEQ .MAXWT
; 349 THEN RESTRETWT;
; 350 END;
; 351 RETURN;
; 352 END;
; 353
BRKAPART:
PUSH $S,13 ;00000
PUSH $S,1($F) ;00001 Formal
HRRZ $F,17 ;00002
SUBI $F,1 ;00003
PUSH $S,13 ;00004
MOVEM 06,3($F) ;00005 Formal
MOVEM 07,4($F) ;00006 Formal
MOVEM 10,5($F) ;00007 Formal
MOVEM 11,6($F) ;00010 Formal
ADD $S,PLTO.L+0 ;00011
MOVE 10,-2($F) ;00012 272 Formal
MOVE 07,6(10) ;00013 287
HRRZ 11,1(10) ;00014 290
L.10: JUMPE 11,L.11 ;00015
MOVE 02,LEAVES ;00016 292 External
CAML 02,6(11) ;00017
JRST 00,L.12 ;00020
FSBR 07,6(11) ;00021 295
PUSH $S,11 ;00022
PUSHJ $S,BRKAPART ;00023
SUB $S,PLTO.L+4 ;00024
FADR 07,15 ;00025 296
L.12: HRRZ 11,2(11) ;00026 297
JRST 00,L.10 ;00027 299 ^^^
L.11: CAMG 07,LEAVES ;00030 External
JRST 00,L.13 ;00031
HRRZI 05,1(10) ;00032 305
;BLISS-10 5(110) 7/11/74 10:35:16 PLTDCL.BLI Page 2-2
MOVE 06,5 ;00033
HRRZ 11,1(10) ;00034 306
L.14: JUMPE 11,L.15 ;00035
MOVE 02,1($F) ;00036 309 Formal
MOVE 03,10(02) ;00037 Local
CAML 03,6(11) ;00040
JRST 00,L.16 ;00041
MOVE 05,7 ;00042 312
FSBR 05,6(11) ;00043
FADRI 05,201400 ;00044
MOVE 07,5 ;00045
PUSH $S,PLTO.L+7 ;00046
PUSH $S,11 ;00047
PUSH $S,6 ;00050
PUSH $S,6(11) ;00051
PUSHJ $S,MAKTREE ;00052
SUB $S,PLTO.L+10 ;00053
MOVE 11,15 ;00054 313
CAMLE 07,LEAVES ;00055 External
JRST 00,L.16 ;00056
L.13: MOVEM 07,6(10) ;00057
MOVE $V,7 ;00060
JRST 00,L.17 ;00061
L.16: HRRZI 05,2(11) ;00062 315
MOVE 06,5 ;00063
HRRZ 11,2(11) ;00064 318
JRST 00,L.14 ;00065 320 ^^^
L.15: MOVE 12,1($F) ;00066 324 Formal
MOVEI 12,25(12) ;00067 Local
HRRZI 01,1(10) ;00070 329
MOVE 06,1 ;00071
HRRZ 11,1(10) ;00072 330
L.20: JUMPE 11,L.21 ;00073
MOVE 03,6(12) ;00074 332
CAML 03,6(11) ;00075
JRST 00,L.22 ;00076
MOVE 12,11 ;00077
MOVE 14,6 ;00100
L.22: HRRZI 05,2(11) ;00101 334
MOVE 06,5 ;00102
HRRZ 11,2(11) ;00103 336
JRST 00,L.20 ;00104 337 ^^^
L.21: MOVE 01,1($F) ;00105 339 Formal
CAIE 12,25(01) ;00106 Local
JRST 00,L.23 ;00107
MOVEM 07,6(10) ;00110 341
L.24: PUSH $S,10 ;00111
PUSHJ $S,TRAPBRK ;00112
SUB $S,PLTO.L+4 ;00113
MOVE 03,LEAVES ;00114 342 External
CAMGE 03,6(10) ;00115
JRST 00,L.24 ;00116 ^^^
MOVE $V,6(10) ;00117
JRST 00,L.17 ;00120
L.23: MOVE 03,7 ;00121 344
FSBR 03,6(12) ;00122
FADRI 03,201400 ;00123
;BLISS-10 5(110) 7/11/74 10:35:16 PLTDCL.BLI Page 2-3
MOVE 07,3 ;00124
PUSH $S,PLTO.L+7 ;00125
PUSH $S,12 ;00126
PUSH $S,14 ;00127
PUSH $S,6(12) ;00130
PUSHJ $S,MAKTREE ;00131
SUB $S,PLTO.L+10 ;00132
MOVE 11,15 ;00133 348
CAMLE 07,LEAVES ;00134 External
JRST 00,L.15 ;00135 ^^^
MOVEM 07,6(10) ;00136
SKIPA $V,7 ;00137
SETZ $V,0 ;00140 351
L.17: MOVE 06,3($F) ;00141 353 Formal
MOVE 07,4($F) ;00142 Formal
MOVE 10,5($F) ;00143 Formal
MOVE 11,6($F) ;00144 Formal
SUB $S,PLTO.L+5 ;00145
POP $S,13 ;00146
POPJ $S,0 ;00147
;BLISS-10 5(110) 7/11/74 10:35:19 PLTDCL.BLI Page 3
; 354 FUNCTION PLTTREE(SELF,WIDTH,OFFST,XSON,YSELF)=
; 355 BEGIN
; 356 REGISTER SON;
; 357 LOCAL SONWIDTH,XCOM,YSON;
; 358 MAP BASE SELF:SON;
; 359
; 360 IF .XSON GTR .XMAX THEN XMAX_.XSON;
; 361 SON_.SELF[ASON];
; 362 XCOM_.XSON SUB ((.XINCR SUB .SIDE) MUL 0.667);
; 363 SONWIDTH_(.SON[MYWT] DVIDE .SELF[MYWT]) MUL .WIDTH;
; 364 YSON_.OFFST PLUS .SONWIDTH DVIDE 2.0;
; 365 IF .LPBUF NEQ PLTDIAG
; 366 THEN PLTLINE(.XSON SUB .XINCR PLUS .SIDE, .YSELF, .XCOM, .YSELF);
; 367
; 368 WHILE .SON NEQ 0 DO
; 369 BEGIN
; 370 SONWIDTH_(.SON[MYWT] DVIDE .SELF[MYWT]) MUL .WIDTH;
; 371 TMP2_.OFFST PLUS .SONWIDTH DVIDE 2.0;
; 372 IF .LPBUF EQL PLTDIAG
; 373 THEN PLTLINE(.XSON SUB .XINCR PLUS .SIDE, .YSELF, .XSON, .TMP2)
; 374 ELSE BEGIN
; 375 PLTLINE(.XCOM, .YSON, .XCOM, .TMP2);
; 376 PLTLINE(.XCOM, .TMP2, .XSON, .TMP2);
; 377 END;
; 378 YSON_.TMP2;
; 379 PLTPOLY(.XSON, .YSON, .SON[NAMLEN], .SON[LNUM], .SON[LNAME], .SON[1+LNAME]);
; 380
; 381 IF .SON[ASON] NEQ 0
; 382 THEN PLTTREE(.SON,.SONWIDTH,.OFFST,.XSON PLUS .XINCR,.YSON);
; 383 OFFST_.OFFST PLUS .SONWIDTH;
; 384 SON_.SON[BROTHER];
; 385 END;
; 386 RETURN; %THE FORM OF THE WHILE AND THIS, ENDS THE RECURSION%
; 387 END;
; 388
PLTTREE:
PUSH $S,13 ;00000
PUSH $S,1($F) ;00001 Formal
HRRZ $F,17 ;00002
SUBI $F,1 ;00003
PUSH $S,13 ;00004
MOVEM 11,3($F) ;00005 Formal
ADD $S,PLTO.L+11 ;00006
MOVE 01,1($F) ;00007 356 Formal
MOVE 02,35(01) ;00010 Local
CAML 02,-3($F) ;00011 Formal
JRST 00,L.25 ;00012
MOVE 04,1($F) ;00013 361 Formal
MOVE 05,-3($F) ;00014 Formal
MOVEM 05,35(04) ;00015 Local
L.25: MOVE 04,-6($F) ;00016 362 Formal
HRRZ 11,1(04) ;00017
MOVE 05,1($F) ;00020 363 Formal
MOVE 01,34(05) ;00021 Local
MOVE 02,1($F) ;00022 Formal
;BLISS-10 5(110) 7/11/74 10:35:34 PLTDCL.BLI Page 3-1
FSBR 01,23(02) ;00023 Local
FMPR 01,PLTO.L+12 ;00024
MOVE 03,-3($F) ;00025 Formal
FSBR 03,1 ;00026
MOVEM 03,12($F) ;00027 Local
MOVE 05,6(11) ;00030 364
FDVR 05,6(04) ;00031
FMPR 05,-5($F) ;00032 Formal
MOVEM 05,11($F) ;00033 Local
FDVRI 05,202400 ;00034 365
FADR 05,-4($F) ;00035 Formal
MOVEM 05,13($F) ;00036 Local
SKIPN 02,LPBUF ;00037 External
JRST 00,L.26 ;00040
MOVE $V,-3($F) ;00041 Formal
MOVE 03,1($F) ;00042 Formal
FSBR $V,34(03) ;00043 Local
MOVE 04,1($F) ;00044 Formal
FADR $V,23(04) ;00045 Local
PUSH $S,15 ;00046
PUSH $S,-2($F) ;00047 Formal
PUSH $S,12($F) ;00050 Local
PUSH $S,-2($F) ;00051 Formal
PUSHJ $S,PLTLINE ;00052 External
SUB $S,PLTO.L+10 ;00053
L.26: JUMPE 11,L.27 ;00054 367
MOVE 04,-6($F) ;00055 370 Formal
MOVE 05,6(11) ;00056
FDVR 05,6(04) ;00057
FMPR 05,-5($F) ;00060 Formal
MOVEM 05,11($F) ;00061 Local
FDVRI 05,202400 ;00062 372
FADR 05,-4($F) ;00063 Formal
MOVE 12,5 ;00064
SKIPE 02,LPBUF ;00065 External
JRST 00,L.30 ;00066
MOVE $V,-3($F) ;00067 Formal
MOVE 03,1($F) ;00070 Formal
FSBR $V,34(03) ;00071 Local
MOVE 04,1($F) ;00072 Formal
FADR $V,23(04) ;00073 Local
PUSH $S,15 ;00074
PUSH $S,-2($F) ;00075 Formal
JRST 00,L.31 ;00076
L.30: PUSH $S,12($F) ;00077 374 Local
PUSH $S,13($F) ;00100 Local
PUSH $S,12($F) ;00101 Local
PUSH $S,12 ;00102
PUSHJ $S,PLTLINE ;00103 External
SUB $S,PLTO.L+10 ;00104
PUSH $S,12($F) ;00105 376 Local
PUSH $S,12 ;00106
L.31: PUSH $S,-3($F) ;00107 Formal
PUSH $S,12 ;00110
PUSHJ $S,PLTLINE ;00111 External
SUB $S,PLTO.L+10 ;00112
MOVEM 12,13($F) ;00113 377 Local
;BLISS-10 5(110) 7/11/74 10:35:34 PLTDCL.BLI Page 3-2
PUSH $S,-3($F) ;00114 Formal
PUSH $S,13($F) ;00115 Local
HLRZ 03,3(11) ;00116
PUSH $S,3 ;00117
HRRZ 04,3(11) ;00120
PUSH $S,4 ;00121
PUSH $S,4(11) ;00122
PUSH $S,5(11) ;00123
PUSHJ $S,PLTPOLY ;00124 External
SUB $S,PLTO.L+0 ;00125
HRRZ 05,1(11) ;00126 380
JUMPE 05,L.32 ;00127
PUSH $S,11 ;00130
PUSH $S,11($F) ;00131 Local
PUSH $S,-4($F) ;00132 Formal
MOVE $V,-3($F) ;00133 Formal
MOVE 01,1($F) ;00134 Formal
FADR $V,34(01) ;00135 Local
PUSH $S,15 ;00136
PUSH $S,13($F) ;00137 Local
PUSHJ $S,PLTTREE ;00140
SUB $S,PLTO.L+13 ;00141
L.32: MOVE 01,11($F) ;00142 383 Local
FADRB 01,-4($F) ;00143 Formal
HRRZ 11,2(11) ;00144 385
JRST 00,L.26 ;00145 386 ^^^
L.27: SETZ $V,0 ;00146
SUB $S,PLTO.L+2 ;00147
MOVE 11,3($F) ;00150 388 Formal
SUB $S,PLTO.L+5 ;00151
POP $S,13 ;00152
POPJ $S,0 ;00153
;BLISS-10 5(110) 7/11/74 10:35:35 PLTDCL.BLI Page 4
; 389 FUNCTION TRAPBRK(SELF)=
; 390 BEGIN
; 391 MACRO TRAPWT=TMP2$;
; 392 REGISTER SON,NXOFPRV;
; 393 LOCAL MAXTRP,RMSON;
; 394 MAP BASE SELF:SON:NXOFPRV;
; 395
; 396 TMP1_2.0;
; 397 DO BEGIN
; 398 MAXTRP_.SELF[MYWT] DVIDE .TMP1;
; 399 TMP1_.TMP1 PLUS 1.0;
; 400 END WHILE .MAXTRP GTR .MAXWT;
; 401
; 402 % THIS IF-STAT CONSTITUTES A SIMPLE HEURISTIC FOR HELPING TREES LOOK PRETTY%
; 403
; 404 IF .MAXTRP PLUS 2.0 GTR .MAXWT
; 405 THEN MAXTRP_.MAXWT
; 406 ELSE MAXTRP_.MAXTRP PLUS 1.0;
; 407
; 408 SON_.SELF[ASON];
; 409 NXOFPRV_SELF[ASON]<ZZ>;
; 410 TRAPWT_0;
; 411 % RMSON NO INIT SINCE AT LEAST 1 SON%
; 412
; 413 LETR_'A'; %TRAP NODES ARE PUT OUT AS 1A,1B,1C,...%
; 414 WHILE .SON NEQ 0 DO
; 415 BEGIN
; 416 IF .TRAPWT PLUS .SON[MYWT] GTR .MAXTRP
; 417 THEN BEGIN
; 418 SELF[MYWT]_.SELF[MYWT] SUB .TRAPWT PLUS 1.0;
; 419 NXOFPRV_MAKTREE(TRAPZOID,.RMSON,.NXOFPRV,.TRAPWT); %MAKTR RETURNS THE NEW LEAF%
; 420
; 421 NXOFPRV_NXOFPRV[BROTHER]<ZZ>;
; 422 TRAPWT_.SON[MYWT];
; 423 END
; 424 ELSE TRAPWT_.TRAPWT PLUS .SON[MYWT];
; 425 RMSON_.SON;
; 426 SON_.SON[BROTHER];
; 427 END;
; 428 IF .TRAPWT GTR .TRAPSON[MYWT]
; 429 THEN BEGIN
; 430 SELF[MYWT]_.SELF[MYWT] SUB .TRAPWT PLUS 1.0;
; 431 NXOFPRV_MAKTREE(TRAPZOID,.RMSON,.NXOFPRV,.TRAPWT);
; 432 END;
; 433 NAME[TRAPZOID]_.NAME[TRAPZOID] PLUS 1.0;
; 434
; 435 RETURN;
; 436 END;
; 437
TRAPBRK:
PUSH $S,13 ;00000
PUSH $S,1($F) ;00001 Formal
HRRZ $F,17 ;00002
SUBI $F,1 ;00003
PUSH $S,13 ;00004
;BLISS-10 5(110) 7/11/74 10:35:46 PLTDCL.BLI Page 4-1
MOVEM 10,3($F) ;00005 Formal
MOVEM 11,4($F) ;00006 Formal
ADD $S,PLTO.L+5 ;00007
HRLZI 14,202400 ;00010 391
L.33: MOVE 01,-2($F) ;00011 398 Formal
MOVE 02,6(01) ;00012
FDVR 02,14 ;00013
MOVEM 02,11($F) ;00014 Local
FADRI 14,201400 ;00015 400
CAMLE 02,LEAVES ;00016 External
JRST 00,L.33 ;00017 ^^^
MOVE 04,11($F) ;00020 405 Local
FADRI 04,202400 ;00021
CAMG 04,LEAVES ;00022 External
JRST 00,L.34 ;00023
MOVE $V,LEAVES ;00024 406 External
MOVEM $V,11($F) ;00025 Local
JRST 00,L.35 ;00026
L.34: HRLZI 01,201400 ;00027 407
FADRB 01,11($F) ;00030 Local
L.35: MOVE 01,-2($F) ;00031 409 Formal
HRRZ 11,1(01) ;00032
HRRZI 02,1(01) ;00033 410
MOVE 10,2 ;00034
SETZ 12,0 ;00035 411
MOVE 03,1($F) ;00036 414 Formal
HRLZI 04,404000 ;00037
MOVEM 04,11(03) ;00040 Local
L.36: JUMPE 11,L.37 ;00041
MOVE 01,12 ;00042 416
FADR 01,6(11) ;00043
CAMG 01,11($F) ;00044 Local
JRST 00,L.40 ;00045
MOVE 03,-2($F) ;00046 419 Formal
MOVE 04,6(03) ;00047
FSBR 04,12 ;00050
FADRI 04,201400 ;00051
MOVEM 04,6(03) ;00052
PUSH $S,PLTO.L+14 ;00053
PUSH $S,12($F) ;00054 Local
PUSH $S,10 ;00055
PUSH $S,12 ;00056
PUSHJ $S,MAKTREE ;00057
SUB $S,PLTO.L+10 ;00060
MOVE 10,15 ;00061 420
HRRZI 05,2(10) ;00062 422
MOVE 10,5 ;00063
SKIPA 12,6(11) ;00064 423
L.40: MOVE 12,1 ;00065 425
MOVEM 11,12($F) ;00066 426 Local
HRRZ 11,2(11) ;00067 427
JRST 00,L.36 ;00070 428 ^^^
L.37: MOVE 03,1($F) ;00071 429 Formal
CAMG 12,33(03) ;00072 Local
JRST 00,L.41 ;00073
MOVE 05,-2($F) ;00074 431 Formal
MOVE 01,6(05) ;00075
;BLISS-10 5(110) 7/11/74 10:35:46 PLTDCL.BLI Page 4-2
FSBR 01,12 ;00076
FADRI 01,201400 ;00077
MOVEM 01,6(05) ;00100
PUSH $S,PLTO.L+14 ;00101
PUSH $S,12($F) ;00102 Local
PUSH $S,10 ;00103
PUSH $S,12 ;00104
PUSHJ $S,MAKTREE ;00105
SUB $S,PLTO.L+10 ;00106
MOVE 10,15 ;00107 432
L.41: HRLZI 05,201400 ;00110 433
MOVE 01,1($F) ;00111 Formal
FADRB 05,13(01) ;00112 Local
SETZ $V,0 ;00113
SUB $S,PLTO.L+3 ;00114
MOVE 10,3($F) ;00115 437 Formal
MOVE 11,4($F) ;00116 Formal
SUB $S,PLTO.L+5 ;00117
POP $S,13 ;00120
POPJ $S,0 ;00121
; 438 FUNCTION MAKTREE(TYPE,FWDSELF,PREV,WEIT)=
; 439 BEGIN
; 440 MAP BASE FWDSELF:PREV:TMP1:TMP2;
; 441
; 442 %NEW "ROOT"%
; 443 ALLOC(TMP1,AMTNODE)
; 444 TMP1[MYWT]_.WEIT;
; 445 TMP1[LNUM]_.TYPE;
; 446 TMP1[ASON]_@.PREV;
; 447 TMP2_.TMP1; %WILL BE NEEDED FOR LNKNODE%
; 448
; 449 %NEW LEAF%
; 450 ALLOC(TMP1,AMTNODE)
; 451 TMP1[LNUM]_.TYPE;
; 452 TMP1[MYWT]_1.0;
; 453 TMP1[BROTHER]_.FWDSELF[BROTHER];
; 454 TMP1[LNKNODE]_.TMP2; %THE TREE SPAWNED BY PSEUDO LEAF IS
; 455 CHAINED THRU THIS MECH RATHER THAN SON MECH%
; 456 PREV[NEXT]_.TMP1;
; 457
; 458 %SUPPLANTED SON%
; 459 FWDSELF[BROTHER]_0;
; 460
; 461 %NAME PROCESSING--COMMON TO BOTH%
; 462
; 463 TMP2[LNAME]_TMP1[LNAME]_.NAME[.TYPE];
; 464 IF .TYPE EQL DIAMOND
; 465 THEN BEGIN
; 466 NAME[DIAMOND]_.NAME[DIAMOND] PLUS 1.0;
; 467 END
; 468 ELSE BEGIN
; 469 TMP2[1+LNAME]_TMP1[1+LNAME]_.LETR;
; 470 LETR_.LETR + 1^29;
; 471 END;
; 472
;BLISS-10 5(110) 7/11/74 10:35:54 PLTDCL.BLI Page 4-3
; 473 RETURN(.TMP1);
; 474 END;
; 475
MAKTREE:
PUSH $S,13 ;00000
PUSH $S,1($F) ;00001 Formal
HRRZ $F,17 ;00002
SUBI $F,1 ;00003
PUSH $S,13 ;00004
MOVEM 07,3($F) ;00005 Formal
ADD $S,PLTO.L+0 ;00006
PUSH $S,1 ;00007 440
PUSH $S,2 ;00010
MOVEI 02,7 ;00011
PUSHJ $S,DY.GET ;00012 External
MOVEM 01,14 ;00013
HRLM 02,0(01) ;00014
POP $S,2 ;00015
POP $S,1 ;00016
MOVE 03,-2($F) ;00017 445 Formal
MOVEM 03,6(14) ;00020
MOVE 04,-5($F) ;00021 446 Formal
HRRM 04,3(14) ;00022
MOVE 05,-3($F) ;00023 447 Formal
MOVE 02,0(05) ;00024
HRRM 02,1(14) ;00025
MOVE 12,14 ;00026 448
PUSH $S,1 ;00027
PUSH $S,2 ;00030
MOVEI 02,7 ;00031
PUSHJ $S,DY.GET ;00032 External
MOVEM 01,14 ;00033
HRLM 02,0(01) ;00034
POP $S,2 ;00035
POP $S,1 ;00036
MOVE 03,-5($F) ;00037 452 Formal
HRRM 03,3(14) ;00040
HRLZI 04,201400 ;00041 453
MOVEM 04,6(14) ;00042
MOVE 05,-4($F) ;00043 454 Formal
HRRZ 02,2(05) ;00044
HRRM 02,2(14) ;00045
HRLM 12,2(14) ;00046 455
MOVE 01,-3($F) ;00047 457 Formal
HRRM 14,0(01) ;00050
HLLZS 00,2(05) ;00051 460
SUBI 03,303240 ;00052 464
ADD 03,1($F) ;00053 Formal
MOVE 04,12(03) ;00054 Local
MOVEM 04,4(14) ;00055
MOVEM 04,4(12) ;00056
MOVE 02,-5($F) ;00057 465 Formal
CAIE 02,303240 ;00060
JRST 00,L.42 ;00061
HRLZI 05,201400 ;00062 467
;BLISS-10 5(110) 7/11/74 10:35:56 PLTDCL.BLI Page 4-4
MOVE 03,1($F) ;00063 Formal
FADRB 05,12(03) ;00064 Local
JRST 00,L.43 ;00065
L.42: MOVE 05,1($F) ;00066 469 Formal
MOVE 03,11(05) ;00067 Local
MOVEM 03,5(14) ;00070
MOVEM 03,5(12) ;00071
HRLZI 04,4000 ;00072 471
MOVE 02,1($F) ;00073 Formal
ADDB 04,11(02) ;00074 Local
L.43: MOVE $V,14 ;00075 472
MOVE 07,3($F) ;00076 475 Formal
SUB $S,PLTO.L+5 ;00077
POP $S,13 ;00100
POPJ $S,0 ;00101
;BLISS-10 5(110) 7/11/74 10:35:56 PLTDCL.BLI Page 5
; 476 FUNCTION SELTREE2P(CUROOT)=
; 477 BEGIN
; 478
; 479 %THIS FUNCTION AND FNDLEAVES HAVE A FUNNY RECURSIVE INTERACTION--
; 480 THE RECURSION IS CAUSED BY THE LOWER LEVEL FUNCTION FNDLEAVES.
; 481 THIS 2-LEVEL APPROACH IS NECESSARY BECAUSE (SUBTREE) ROOTS MUST BE
; 482 DISTINGUISHED FROM ALL OTHER NODES SO THAT THE SUBTREES CAN BE
; 483 PLOTTED IN THE MOST INTUITIVE ORDER%
; 484 %AFTER PLOTTING A TREE-- THIS PROG CALLS FNDLEAVES TO SEE IF THE CURRENT
; 485 TREE IS CHAINED TO ANY OTHER TREES%
; 486
; 487 REGISTER BASE TRI;
; 488
; 489 MACRO INCHO2=TMP2$;
; 490
; 491 INCHO2_.INCHES DVIDE 2.0;
; 492 XMAX_.XMAX PLUS 3.0;
; 493 IF .LPBUF NEQ 0 THEN PLTINIT(.XMAX, 0);
; 494 TRI_.CUROOT;
; 495 PLTPOLY(.XMAX, .INCHO2, .TRI[NAMLEN], .TRI[LNUM], .TRI[LNAME], .TRI[1+LNAME]);
; 496 PLTTREE(.TRI,.INCHES,0,.XMAX PLUS .XINCR, .INCHO2);
; 497 CLEANUP(.TRI);
; 498 IF .LPBUF NEQ 0 THEN LPTOUT(); %WITHIN PLOTTER PACK%
; 499
; 500 FNDLEAVES(.CUROOT);
; 501 RETURN;
; 502 END;
; 503
SELTREE2P:
PUSH $S,13 ;00000
PUSH $S,1($F) ;00001 Formal
HRRZ $F,17 ;00002
SUBI $F,1 ;00003
PUSH $S,13 ;00004
MOVEM 11,3($F) ;00005 Formal
ADD $S,PLTO.L+0 ;00006
MOVE 01,INCHES ;00007 478 External
FDVRI 01,202400 ;00010
MOVE 12,1 ;00011
HRLZI 02,202600 ;00012 493
MOVE 03,1($F) ;00013 Formal
FADRB 02,35(03) ;00014 Local
SKIPN 04,LPBUF ;00015 External
JRST 00,L.44 ;00016
PUSH $S,2 ;00017
PUSH $S,PLTO.L+1 ;00020
PUSHJ $S,PLTINIT ;00021 External
SUB $S,PLTO.L+3 ;00022
L.44: MOVE 11,-2($F) ;00023 494 Formal
MOVE 01,1($F) ;00024 Formal
PUSH $S,35(01) ;00025 Local
PUSH $S,12 ;00026
HLRZ 03,3(11) ;00027
PUSH $S,3 ;00030
HRRZ 02,3(11) ;00031
;BLISS-10 5(110) 7/11/74 10:35:59 PLTDCL.BLI Page 5-1
PUSH $S,2 ;00032
PUSH $S,4(11) ;00033
PUSH $S,5(11) ;00034
PUSHJ $S,PLTPOLY ;00035 External
SUB $S,PLTO.L+0 ;00036
PUSH $S,11 ;00037 496
PUSH $S,INCHES ;00040 External
PUSH $S,PLTO.L+1 ;00041
MOVE $V,1($F) ;00042 Formal
MOVE 04,35($V) ;00043 Local
MOVE $V,1($F) ;00044 Formal
FADR 04,34($V) ;00045 Local
PUSH $S,4 ;00046
PUSH $S,12 ;00047
PUSHJ $S,PLTTREE ;00050
SUB $S,PLTO.L+13 ;00051
PUSH $S,11 ;00052 497
PUSHJ $S,CLEANUP ;00053
SUB $S,PLTO.L+4 ;00054
SKIPE 05,LPBUF ;00055 498 External
PUSHJ $S,LPTOUT ;00056 External
PUSH $S,-2($F) ;00057 499 Formal
PUSHJ $S,FNDLEAVES ;00060
SUB $S,PLTO.L+4 ;00061
SETZ $V,0 ;00062 501
MOVE 11,3($F) ;00063 503 Formal
SUB $S,PLTO.L+5 ;00064
POP $S,13 ;00065
POPJ $S,0 ;00066
; 504 FUNCTION FNDLEAVES(SELF)=
; 505 BEGIN
; 506 REGISTER SON;
; 507 MAP BASE SELF:SON;
; 508
; 509 SON_.SELF[ASON];
; 510 WHILE .SON NEQ 0 DO
; 511 BEGIN
; 512 IF .SON[ASON] EQL 0
; 513 THEN IF .SON[LNUM] GEQ DIAMOND
; 514 THEN SELTREE2P(.SON[LNKNODE])
; 515 ELSE
; 516 ELSE FNDLEAVES(.SON);
; 517 SON_.SON[BROTHER];
; 518 END;
; 519 RETURN;
; 520 END;
; 521
; 522
FNDLEAVES:
PUSH $S,13 ;00000
PUSH $S,1($F) ;00001 Formal
HRRZ $F,17 ;00002
SUBI $F,1 ;00003
;BLISS-10 5(110) 7/11/74 10:36:04 PLTDCL.BLI Page 5-2
PUSH $S,13 ;00004
MOVEM 11,3($F) ;00005 Formal
ADD $S,PLTO.L+0 ;00006
MOVE 01,-2($F) ;00007 506 Formal
HRRZ 11,1(01) ;00010
L.45: JUMPE 11,L.46 ;00011
HRRZ 03,1(11) ;00012 512
JUMPN 03,L.47 ;00013
HRRZ 05,3(11) ;00014 514
CAIGE 05,303240 ;00015
JRST 00,L.50 ;00016
HLRZ 02,2(11) ;00017 515
PUSH $S,2 ;00020
PUSHJ $S,SELTREE2P ;00021
JRST 00,L.51 ;00022
L.47: PUSH $S,11 ;00023 516
PUSHJ $S,FNDLEAVES ;00024
L.51: SUB $S,PLTO.L+4 ;00025
L.50: HRRZ 11,2(11) ;00026 517
JRST 00,L.45 ;00027 519 ^^^
L.46: SETZ $V,0 ;00030
MOVE 11,3($F) ;00031 521 Formal
SUB $S,PLTO.L+5 ;00032
POP $S,13 ;00033
POPJ $S,0 ;00034
; 523 FUNCTION CLEANUP(SELF)=
; 524 BEGIN
; 525 REGISTER SON;
; 526 MAP BASE SELF:SON;
; 527
; 528 SON_.SELF[ASON];
; 529 WHILE .SON NEQ 0 DO
; 530 BEGIN
; 531 CLEANUP(.SON);
; 532 SON_.SON[BROTHER];
; 533 END;
; 534
; 535 DEALLOC(SELF,AMTNODE)
; 536 RETURN;
; 537 END;
; 538
CLEANUP:
PUSH $S,13 ;00000
PUSH $S,1($F) ;00001 Formal
HRRZ $F,17 ;00002
SUBI $F,1 ;00003
PUSH $S,13 ;00004
MOVEM 07,3($F) ;00005 Formal
MOVEM 11,4($F) ;00006 Formal
ADD $S,PLTO.L+0 ;00007
MOVE 01,-2($F) ;00010 525 Formal
HRRZ 11,1(01) ;00011
L.52: JUMPE 11,L.53 ;00012
;BLISS-10 5(110) 7/11/74 10:36:08 PLTDCL.BLI Page 5-3
PUSH $S,11 ;00013 531
PUSHJ $S,CLEANUP ;00014
SUB $S,PLTO.L+4 ;00015
HRRZ 11,2(11) ;00016 532
JRST 00,L.52 ;00017 534 ^^^
L.53: PUSH $S,1 ;00020
PUSH $S,2 ;00021
MOVEI 02,7 ;00022
MOVE 01,-2($F) ;00023 Formal
PUSHJ $S,DY.RET ;00024 External
POP $S,2 ;00025
POP $S,1 ;00026
SETZ $V,0 ;00027 536
MOVE 07,3($F) ;00030 538 Formal
MOVE 11,4($F) ;00031 Formal
SUB $S,PLTO.L+5 ;00032
POP $S,13 ;00033
POPJ $S,0 ;00034
; 539 FUNCTION TASCII(WHERE,BYTES)=
; 540 BEGIN
; 541 REGISTER C,WORDS[2];
; 542 LOCAL INBYTES,OUTBYTES;
; 543 MAP BASE WHERE;
; 544
; 545 INBYTES_WORDS<36,6>;
; 546 WORDS[0]_.WHERE[0,WHOLE];
; 547 WORDS[1]_.WHERE[1,WHOLE];
; 548 OUTBYTES_(.WHERE)<36,7>;
; 549 DECR LEN FROM .BYTES-1 TO 0 DO
; 550 BEGIN
; 551 ILDB(C,INBYTES);
; 552 C_.C+#40;
; 553 IDPB(C,OUTBYTES);
; 554 END;
; 555 RETURN;
; 556 END;
; 557
; 558 !***********************************************************
; 559
; 560 % THE TOP-LEVEL CODE %
; 561
TASCII:
PUSH $S,13 ;00000
PUSH $S,1($F) ;00001 Formal
HRRZ $F,17 ;00002
SUBI $F,1 ;00003
PUSH $S,13 ;00004
MOVEM 06,3($F) ;00005 Formal
MOVEM 07,4($F) ;00006 Formal
MOVEM 10,5($F) ;00007 Formal
MOVEM 11,6($F) ;00010 Formal
ADD $S,PLTO.L+5 ;00011
MOVE 01,PLTO.L+15 ;00012 541
;BLISS-10 5(110) 7/11/74 10:36:11 PLTDCL.BLI Page 5-4
MOVEM 01,11($F) ;00013 Local
MOVE 02,-3($F) ;00014 547 Formal
MOVE 07,0(02) ;00015
MOVE 10,1(02) ;00016 548
HRLI 02,440700 ;00017 549
MOVEM 02,12($F) ;00020 Local
MOVE 03,-2($F) ;00021 Formal
SOJ 03,0 ;00022
MOVE 06,3 ;00023
JUMPL 06,L.54 ;00024 550
L.55: ILDB 11,11($F) ;00025 551 Local
ADDI 11,40 ;00026 553
IDPB 11,12($F) ;00027 Local
SOJGE 06,L.55 ;00030 554 ^^^
L.54: SETZ $V,0 ;00031
SUB $S,PLTO.L+3 ;00032
MOVE 06,3($F) ;00033 557 Formal
MOVE 07,4($F) ;00034 Formal
MOVE 10,5($F) ;00035 Formal
MOVE 11,6($F) ;00036 Formal
SUB $S,PLTO.L+5 ;00037
POP $S,13 ;00040
POPJ $S,0 ;00041
; 562 MACRO RATIO=TMP2$;
; 563
; 564 INCHES_FLOAT(.INCHES);
; 565 MAXWT_FLOAT(.LEAVES);
; 566 BRKQAD_.MAXWT MUL NOCHECK;
; 567 TRAPSON[MYWT]_.MAXWT MUL TRPCHECK;
; 568 IF .TRAPSON[MYWT] LSS 2.0 THEN TRAPSON[MYWT]_2.0;
; 569 RATIO _ .INCHES DVIDE .MAXWT;
; 570 TOP_ITOP MUL .RATIO;
; 571 SIDE_ISIDE MUL .RATIO;
; 572 XINCR_IXINCR MUL .RATIO;
; 573 STEPS _ FLOAT(.STEPS);
; 574 PLTORIG(.TOP, .SIDE, .INCHES);
; 575 IF .ERRFND EQL -1 THEN (DOABORT);
; 576
; 577 NAME[DIAMOND]_NAME[TRAPZOID]_1.0;
; 578 XMAX_0;
; 579 OVLPLT();
; 580 SREG<RIGHT>_.FREG<RIGHT>; %A KLUDGE TO GET STACK RIGHT%
; 581 POPJ(#17,0) !RETURN TO LINK
PLTO.F::
PUSH $S,13 ;00000 1
ADD $S,PLTO.L+16 ;00001
MOVE 01,INCHES ;00002 9 External
IDIVI 01,400000 ;00003
SKIPE 00,1 ;00004
TLC 01,254000 ;00005
TLC 02,233000 ;00006
FAD 01,2 ;00007
MOVEM 01,INCHES ;00010 External
;BLISS-10 5(110) 7/11/74 10:36:16 PLTDCL.BLI Page 5-5
MOVE 03,LEAVES ;00011 566 External
IDIVI 03,400000 ;00012
SKIPE 00,3 ;00013
TLC 03,254000 ;00014
TLC 04,233000 ;00015
FAD 03,4 ;00016
MOVEM 03,LEAVES ;00017 External
FMPR 03,PLTO.L+17 ;00020 567
MOVEM 03,10($F) ;00021 Local
MOVE 05,LEAVES ;00022 568 External
FMPR 05,PLTO.L+20 ;00023
MOVEM 05,33($F) ;00024 Local
MOVE 02,33($F) ;00025 Local
CAML 02,PLTO.L+21 ;00026
JRST 00,L.56 ;00027
HRLZI 04,202400 ;00030 569
MOVEM 04,33($F) ;00031 Local
L.56: MOVE 04,INCHES ;00032 570 External
FDVR 04,LEAVES ;00033 External
MOVE 12,4 ;00034
MOVE 03,12 ;00035 571
FMPR 03,PLTO.L+22 ;00036
MOVEM 03,24($F) ;00037 Local
MOVE 05,12 ;00040 572
FMPR 05,PLTO.L+23 ;00041
MOVEM 05,23($F) ;00042 Local
MOVE 02,12 ;00043 573
FMPRI 02,201600 ;00044
MOVEM 02,34($F) ;00045 Local
MOVE 01,STEPS ;00046 574 External
IDIVI 01,400000 ;00047
SKIPE 00,1 ;00050
TLC 01,254000 ;00051
TLC 02,233000 ;00052
FAD 01,2 ;00053
MOVEM 01,STEPS ;00054 External
PUSH $S,3 ;00055
PUSH $S,5 ;00056
PUSH $S,INCHES ;00057 External
PUSHJ $S,PLTORIG ;00060 External
SUB $S,PLTO.L+2 ;00061
MOVE 04,ERRFND ;00062 575 External
CAMN 04,PLTO.L+24 ;00063
JRST 04,0 ;00064
HRLZI 01,201400 ;00065 578
MOVEM 01,13($F) ;00066 Local
MOVEM 01,12($F) ;00067 Local
SETZM 00,35($F) ;00070 579 Local
PUSHJ $S,OVLPLT ;00071
HRR $S,13 ;00072 581
POPJ $S,0 ;00073 582
MOVE $V,17 ;00074
SUB $S,PLTO.L+25 ;00075
CALLI 00,12 ;00076
;BLISS-10 5(110) 7/11/74 10:36:19 PLTDCL.BLI Page 5-6
;Special register declarations
$S=: 17
$F=: 13
$V=: 15
;PLIT area
PLTO.P::
;Constant pointers
PLTO.C::
;Literals
PLTO.L::
XWD 000006,000006 ;00000
XWD 000000,000000 ;00001
XWD 000003,000003 ;00002
XWD 000002,000002 ;00003
XWD 000001,000001 ;00004
XWD 000010,000010 ;00005
XWD 000007,000007 ;00006
XWD 000000,303240 ;00007
XWD 000004,000004 ;00010
XWD 000011,000011 ;00011
XWD 200525,402031 ;00012
XWD 000005,000005 ;00013
XWD 000000,303241 ;00014
XWD 440600,000007 ;00015
XWD 000035,000035 ;00016
XWD 200463,146315 ;00017
XWD 177463,146315 ;00020
XWD 202400,000000 ;00021
XWD 200577,777777 ;00022
XWD 200546,314631 ;00023
XWD 777777,777777 ;00024
XWD 000026,000026 ;00025
RELOC ;To low segment
;GLOBAL area
PLTO.G::
;OWN area
PLTO.O::
;EXTERNAL requests
EXTERN ERRFND,PLTORIG,STEPS,DY.RET,LPTOUT,PLTINIT
;BLISS-10 5(110) 7/11/74 10:36:19 PLTDCL.BLI Page 5-7
EXTERN INCHES,PLTPOLY,PLTLINE,LPBUF,LEAVES,DY.GET
EXTERN GETSON
END PLTO.F ;Pseudo-op for MACRO-10
Module length: 675+22
[BLSNED No errors detected]