X-Git-Url: http://gitweb.hachti.de/?a=blobdiff_plain;f=sw%2Fos8%2Fv3d%2Fsources%2Ffortran%2Fall%2Fplot.ra;fp=sw%2Fos8%2Fv3d%2Fsources%2Ffortran%2Fall%2Fplot.ra;h=bbd91a54cb1c8c87cc69e9e2775d1275ae04d6d6;hb=81e70d488b71bf995c459ca3a02c025993460ffa;hp=0000000000000000000000000000000000000000;hpb=07ec0278333ed187ac242dedcff13c56cf1b0b91;p=pdp8.git diff --git a/sw/os8/v3d/sources/fortran/all/plot.ra b/sw/os8/v3d/sources/fortran/all/plot.ra new file mode 100644 index 0000000..bbd91a5 --- /dev/null +++ b/sw/os8/v3d/sources/fortran/all/plot.ra @@ -0,0 +1,268 @@ +/ +/ VERSION 5A 4-27-77 PT +/ + LINC=6141 + PDP=2 + DIS=140 + COMMZ #PAGE0 /STANDARD PAGE 0 + ORG 17 + 0 /ALPHA REG FOR PDP-12 + ENTRY #DISP /THIS IS SO #PAGE0 CAN BE LOADED +#DISP, +DISPLY, 0 + TAD BUFADR+2 /GET BUFFER ADDRESS + DCA BUFADR + TAD DBFLD /SET UP CHANGABLE CDF + DCA FLDDB +DBFLD, HLT /GO TO FIRST FIELD OF BUFFER + TAD PLTXR+4 /NUMBER OF POINTS + CMA + DCA NPTS /NEGATED + JMP ENDDL /BEGIN DISPLAY +DSPLUP, /START OF DISPLAY LOOP + IFSW 8 < + TAD% BUFADR /GET X VALUE + 6053 /LOAD X DISPLACEMENT + CLA + ISZ BUFADR /BUMP ADDRESS + SKP CLA + JMS BUMPF /BUMP FIELD + TAD% BUFADR + 6054 /LOAD Y DISPLACEMENT + CLA + ISZ BUFADR /INCR ADDRESS + SKP CLA + JMS BUMPF /INCR FIELD + 6052 /SKIP ON BEAM POSITIONED + JMP .-1 + 6055 /INTENSIFY POINT + > + IFNSW 8 < + TAD% BUFADR /GET X DISPLACEMENT + DCAZ 17 /INTO ALPHA REG + ISZ BUFADR /INCREMENT ADDRESS + SKP CLA + JMS BUMPF /INCREMENT DATA FIELD + TAD% BUFADR /GET Y DISPLACEMENT + CIF 10 + LINC + DIS 17 + PDP + CLA + ISZ BUFADR /INCR BUFFER POINTER + SKP CLA + JMS BUMPF + > +ENDDL, ISZ NPTS /INCREMENT COUNTER + JMP DSPLUP /LOOP + CDF 10 + JMP% DISPLY /RETURN TO IDLE Q +BUMPF, 0 /FIELD CHANGER + TAD FLDDB /BUMP FIELD + TAD L10 + DCA FLDDB +FLDDB, HLT /CHANGE IT NOW + JMP% BUMPF +PUTONQ, 0 /PUT DISPLY ONTO BACKROUND Q + TAD BUFADR+1 /CREATE CDF FOR DISPLAY LOOP + AND L7 + CLL RAL + RTL + TAD FLD0 + DCA DBFLD + IFSW 8 < + 6050 /CLEAR DISPLAY LOGIC + > + CDF CIF + SKP + JMP% PUTONQ + DCA .-2 /ONCE ONLY + CIF CDF 10 + JMS% ONQBX+1 + ADDR DISPLY + CIF CDF + JMP% PUTONQ /CALLED VIA TRAP4 + EXTERN ONQB +ONQBX, ADDR ONQB +BUFADR, 0 + 0 +PLTXR, 0;0;0;-1;0;0 +FLD0, CDF +L7, 7 +L10, 10 +NPTS, 0 + SECT PLOT + JA #PLOT +NAME, TEXT +PLOT + +PLTBAS, 0;0;0 +XLO, +X, 0;0;0 +YLO, +Y, 0;0;0 +XHI, +N, 0;0;0 +YHI, 0;0;0 +ADRBUF, 0;0;0 + IFSW 8 < +YSCALE, F 1022. +YZERO, F 511. + ORG 10*3+PLTBAS + FNOP + JA NAME+3 + 0 +PLTRET, JA . +XSCALE, F 786. +XZERO, F 511. +RANGE, F 1022. +BASE, F 511.> + IFNSW 8 < +YSCALE, F 510. +YZERO, F 255. + ORG 10*3+PLTBAS + FNOP + JA NAME+3 + 0 +PLTRET, JA . +XSCALE, F 392. +XZERO, F 0. +RANGE, F 510. +BASE, F 255.> +L1P5, F 1.5 +XYPAIR, 0;0;0 +#PLOT, BASE PLTBAS + JSA SETUP + LDX 1,1 + FLDA% PLTBAS,1 /GET ARG ADDRESSES + FSTA N + FLDA% PLTBAS,1+ + FSTA X + FLDA% PLTBAS,1+ + FSTA Y + STARTF + FLDA% N /NUMBER OF POINTS TO PLOT + FNEG + ATX 1 /INTO XR 1 + LDX -1,2 /XR 2 IS THE INDEXER +PLTLUP, JXN PLOOP,3+ /ANY MORE ROOM IN PLOT BUFFER ? + LDX -1,3 /NO, FIX COUNT + JA PLTRET +PLOOP, FLDA% Y,2+ /GET Y VALUE + FMUL YSCALE /SCALE IT + FSUB YZERO /SUBTRACT LOWER LIMIT + ALN 0 + FSTA XYPAIR + FLDA% X,2 /GET X VALUE OF PAIR + FMUL XSCALE /SCALE IT + FSUB XZERO /SUBTRACT LOWER LIMIT + ALN 0 + STARTD + FSTA XYPAIR,0 /XYPAIR+1,+2 CONTAINS THE POINT + FLDA XYPAIR /STORE THIS DOUBLE WORD INTO PLOT BUFFER + FSTA% ADRBUF,4 + ADDX 1,4 /TROUBLE IS, WE WANT POST INCREMENT + STARTF + JXN PLTLUP,1+ /LOOP IF MORE POINTS + JA PLTRET + BASE 0 +SETUP, JA . + STARTD + FLDA 30 /GET RETURN ADDRESS + FSTA PLTRET + FLDA 0 /GET ARG POINTER + BASE PLTBAS + SETB PLTBAS + SETX PLTXR + FSTA PLTBAS + JA SETUP + SECT PLOTR + BASE PLTBAS + JSA SETUP + LDX 1,1 + FLDA% PLTBAS,1 /GET ARG ADDRESSES + FSTA N + FLDA% PLTBAS,1+ + FSTA X + FLDA% PLTBAS,1+ + FSTA Y + FLDA% PLTBAS,1+ + FSTA YHI + STARTF + FLDA% YHI + ATX 5 + FLDA% N /NUMBER OF POINTS TO PLOT + FNEG + ATX 1 /INTO XR 1 + LDX -1,2 /XR 2 IS THE INDEXER +PLOTRL, FLDA% Y,2+ /GET Y VALUE + FMUL YSCALE /SCALE IT + FSUB YZERO /SUBTRACT LOWER LIMIT + ALN 0 + FSTA XYPAIR + FLDA% X,2 /GET X VALUE OF PAIR + FMUL XSCALE /SCALE IT + FSUB XZERO /SUBTRACT LOWER LIMIT + ALN 0 + STARTD + FSTA XYPAIR,0 /XYPAIR+1,+2 CONTAINS THE POINT + FLDA XYPAIR /STORE THIS DOUBLE WORD INTO PLOT BUFFER + FSTA% ADRBUF,5 + ADDX 1,5 /TROUBLE IS, WE WANT POST INCREMENT + STARTF + JXN PLOTRL,1+ /LOOP IF MORE POINTS + JA PLTRET + SECT CLRPLT + BASE PLTBAS + JSA SETUP + LDX 0,4 /DISABLE DISPLAY LOOP + LDX 1,1 + FLDA% PLTBAS,1 /GET ARG POINTERS + FSTA N + FLDA% PLTBAS,1+ + FSTA ADRBUF + FSTA BUFADR+1 + STARTF + FLDA% N /SIZE OF BUFFER + FMUL L1P5 /NUMBER OF 2 WORD PAIRS + FNEG + ATX 3 /INTO SOME CHOICE XRS + TRAP4 PUTONQ /PUTISPLY ONTO IDLE Q +CLRRET, JA PLTRET + SECT SCALE /SET SCALING FACTORS + BASE PLTBAS + JSA SETUP + LDX 1,1 + FLDA% PLTBAS,1 /GET ARGS + FSTA XLO + FLDA% PLTBAS,1+ + FSTA YLO + FLDA% PLTBAS,1+ + FSTA XHI + FLDA% PLTBAS,1+ + FSTA YHI + STARTF + FLDA% XHI /COMPUTE X RANGE + FSUB% XLO + FSTA XHI + FLDA% YHI /NOW Y RANGE + FSUB% YLO + FSTA YHI + FLDA RANGE /COMPUTE XSCALE + FDIV XHI + FSTA XSCALE + FLDA RANGE /NOW Y SCALE + FDIV YHI + FSTA YSCALE + FLDA% XLO /COMPUTE XZERO + FMUL RANGE + FDIV XHI + IFSW 8 < + FADD BASE> + FSTA XZERO + FLDA% YLO /NOW YZERO + FMUL RANGE + FDIV YHI + FADD BASE + FSTA YZERO +SCLRET, JA PLTRET + END +