Trailing-Edge
-
PDP-10 Archives
-
bb-d868a-bm
-
3-sources/pltio.mac
There are 38 other files named pltio.mac in the archive. Click here to see a list.
;THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED
; OR COPIED IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE.
;
;COPYRIGHT (C) 1973, 1978 BY DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
TITLE LINE
SUBTTL D.TODD /DRT 22-MAR-1973
SEARCH PLTPRM
IFE HILOW,< TWOSEG
RELOC 400000>
HELLO (LINE)
SAVALL
MOVEI X,@0(16)
MOVEI Y,@1(16)
MOVE N,@2(16)
MOVE K,@3(16)
JRST 0,%4M
%3M:
POPALL
POPJ 17,0
%4M:
MOVEI 15,3
MOVEM 15,I3
MOVE 15,N
IMUL 15,K
MOVEM 15,NP
MOVEI 13,1
SUB 13,NP
IDIV 13,K
SUBI 13,1
MOVEI 15,1
MOVEM 13,.S0000
%5M:
MOVEM 15,I
%6M:
MOVE 14,I
ADD 14,X
MOVEI 14,777777(14)
MOVE 15,I
ADD 15,Y
MOVEI 15,777777(15)
FUNCT2 PLOT##,<$1,14,$1,15,$2,I3>
%10P:
MOVEI 14,2
MOVEM 14,I3
MOVE 15,K
ADDM 15,I
AOSGE 0,.S0000
JRST 0,%6M
%1M:
JRST 0,%3M
;ARGUMENT BLOCKS:
0,,0
%2M: 0,,0
;REGISTER ASSIGNMENTS
I=2
I3=3
K=4
N=5
NP=6
X=7
Y=10
.S0000=11
PRGEND
TITLE PLOT %2.(221) PLOT SUBROUTINES
SUBTTL D. TODD /DRT/HPW/ 24-OCT-73
SEARCH PLTPRM
IFE HILOW,< TWOSEG
RELOC 400000>
;***COPYRIGHT 1972,1973 DIGITAL EQUIPMENT CORP., MAYNARD, MASS.***
;THIS PACKAGE CONTAINS THE PLOT ROUTINES FOR THE XY10 PLOTTER.
;THE CALLING SEQUENCE IS THAT USED BY FORTRAN IV
;THE CALLS ARE:
; CALL PLOTS (I)
; CALL PLOT (X,Y,PEN)
; CALL SYMBOL (X,Y,SIZE,BCD,THETA,NBCD
; CALL SETABL (TABLE,ANSWER)
; CALL MKTBL (TABLENUMBER,ADDRESS)
; CALL WHERE (X,Y)
; CALL NUMBER (X,Y,SIZE,FPNUM,THETA,FRACTDIGITS)
;
; X,Y ARE INCHES FROM ORIGIN, FLT PT
; SIZE IS CHARACTER HEIGHT, FLT PT, SHOULD BE
; A MULTIPLE OF .08" IF SMALL
;
; THETA IS IN DEGREES, FLT PT.
; PEN IS
; 3 PEN UP
; 2 PEN DOWN
; 1 PEN UNCHANGED
; -N = N AND THEN CLEAR X,Y AND OUTPUT
;PLOTTER COMMANDS (USING CALCOMP'S AXIS CONVENTIONS)
PENUP=40
PENDWN=20
MVLFT=10 ;-X DRUM UP
MVRT=4 ;+X DRUM DOWN
MVDWN=1 ;-Y CARRIAGE RIGHT
MVUP=2 ;+Y CARRIAGE LEFT
;THE PLOTTER IS ON CHANNEL 17 TO AVOID CONFLICT WITH F4
PCHN=17
PDPSIZ==20 ;PUSHDOWN STACK SIZE
;IMPLEM DEPEND CONSTANTS
IFE LPSYM,<
LPBUFSZ=^D2160
LPWIDTH=^D120
ILINES=^D90
>
;ACCUMULATOR DEFINITIONS
Q=16 ;JSA AC
IFE LPSYM,<
;ADDITIONAL USES
;VALUES SET UP BY LINK-10
EXTERNAL LEAVES,INCHES,STEPS
EXTERN LPBUF,POB,PLTCHAR,IX,IY,RX,RY,CURX,CURY,SPC.X,SPC.Y,PENPOS
X=RX
Y=RY
>
ENTRY PLOTS
HELLO (PLOTS)
PUSH P,PT
IFE ALONE,<
IFN LPSYM,<
INIT PCHN,13 ;IMAGE BINARY
SIXBIT /PLT/
XWD POB,0
JRST FOOP ;ERROR RETURN>
IFE LPSYM,<
MOVEI PT,'PLT'
SKIPE LPBUF ;NOSKIP MEANS SIMULATION
MOVEI PT,'LPT'
HRLM PT,PFNAM+1 ; IN CASE DSK
HRLZM PT,OBLOCK+1 ;DEVICE WORD OF OPEN BLK
OPEN PCHN,OBLOCK
JRST FOOP>
HLLZS PFNAM+1
SETZM PFNAM+2
SETZM PFNAM+3
ENTER PCHN,PFNAM ;IN CASE ASSIGNED DSK
JRST FOOP ;CANT ENTER FILE
SETOM PENPOS ;MARK PEN DOWN TO FORCE RAISE
OUTBUF PCHN,2> ;SETUP THE BUFFER RING
IFE HILOW,<
MOVE PT,@1(Q)
MOVEM PT,STEPS> ;STEPS IS POSIT./INCH
IFE LPSYM,<
SKIPN LPBUF ;SKIP MEANS SET UP MAP2CH PARAMS
JRST PLS1
PUSH P,PT+1
MOVE PT,INCHES
FMPR PT,STEPS ;TOTAL WIDTH OF PLOTTER
FUNCT IFIX.,<PT>
HRLZM 0,PT ;A TRICK TO ADD PRECISION BY MULTIP BY 2**18
LSH 0,-^D17 ;FOR THE TRICK TO WORK THE ORIG. MUST BE LT 2**17
JUMPG 0,FOOP ;ERROR EXIT
IDIVI PT,LPWIDTH
MOVEM PT,SPC.Y ;NUM OF STEPS PER CHAR
IMULI PT,5 ;5/3 IS RATIO OF SIDE/BOTTOM OF LPT CHAR
IDIVI PT,3
MOVEM PT,SPC.X
POP P,PT+1
MOVSI PT,700 ;IMPROVE PACKING (LPT)
SKIPA 0,0
PLS1:>
MOVSI PT,600 ;IMPROVE PACKING
HLLM PT,POB+1 ;BY CHANGING BYTE SIZE
POP P,PT
SETZM @0(Q) ;MARK SUCCESS
FUNCT PLOT,<X,Y,[-3]> ;LIFT PEN
GOODBY (1)
FOOP: SETOM @0(Q) ;ERROR INDICATION
POP P,PT
GOODBY (1) ;RETURN
ENTRY PLOT
;REGISTERS
PL.X=15
PL.Y=14
STEP=13
DAT=12
TDY=11
TDX=10
LP.BUFP=7
TYY=7
TY=6
TX=5
SC=4
ISX=3
ISY=2
HELLO (PLOT) ;ENTRY TO PLOT
SAVALL
MOVE PL.X,@0(Q)
MOVE PL.Y,@1(Q)
PUSHJ P,PLOT. ;DO WORK
POPALL
GOODBY (3) ;RETURN TO CALLER
PLT1:
IFE LPSYM,<
SKIPE LPBUF ;NO LPT BUFFER, DON'T INTERCEPT
JRST PLT2>
SOSG POB+2
OUTPUT PCHN,0
IDPB DAT,POB+1
POPJ P,0
IFE LPSYM,<
PLT2: TRNE DAT,40 ;NOSKIP MEANS PEN UP
SETZM PENPOS
TRNE DAT,20 ;NOSKIP MEANS PEN DOWN
SETOM PENPOS
TRNE DAT,10 ;NS MEANS -(X)
SOS CURX
TRNE DAT,4 ;NS MEANS +(X)
AOS CURX
TRNE DAT,2 ;NS MEANS +(Y)
AOS CURY
TRNE DAT,1 ;NS MEANS -(Y)
SOS CURY
SKIPN PENPOS ;SKIP IF PEN DOWN, OTHER WISE FINIS
POPJ P,0
LOCSUB XY2CHR
MOVEM 0,LP.BUFP
MOVE DAT,PLTCHAR ;SET BY PLTUTL--CHAR TO USE FOR LINES
ROT DAT,7 ;RIGHT JUSTIFY
IDPB DAT,LP.BUFP ;LP.BUFP RETURNED BY XY2CHR
POPJ P,0>
ENTRY PLOT.
PLOT.:
PENCK: MOVM TX,@2(Q)
CAIG TX,1
JRST PENOK
SUBI TX,3
CAMN TX,PENPOS
JRST PENOK
MOVEI DAT,PENUP
SKIPGE TX
MOVEI DAT,PENDWN
PUSHJ P,PLT1
MOVEM TX,PENPOS
PENOK: MOVE TX,PL.X
FMPR TX,STEPS
FADR TX,[DEC 0.5]
SKIPGE PL.X
FSBR TX,[DEC 1.0]
FUNCT INT,<TX>
MOVEM 0,ISX
MOVE TX,0
MOVE TY,PL.Y
FMPR TY,STEPS
FADR TY,[DEC 0.5]
SKIPGE PL.Y
FSBR TY,[DEC 1.0]
FUNCT INT,<TY>
MOVEM 0,ISY
MOVE TY,0
SUB TX,IX
MOVEI TDX,MVLFT
SKIPL TX
MOVEI TDX,MVRT
SUB TY,IY
MOVEI TDY,MVDWN
SKIPL TY
MOVEI TDY,MVUP
MOVMS TX
MOVMS TY
CAMG TY,TX
JRST NOSWAP
EXCH TX,TY
EXCH TDX,TDY
NOSWAP: JUMPE TX,ENDOU1 ;NO MOTION
JUMPE TY,NORM
MOVEI SC,0
NY: TLNE TY,200000
JRST NX
LSH TY,1
TRO TY,1
AOJA SC,NY
NX: SUBI SC,^D34
MKSC: IDIV TY,TX
MOVNS SC
LSH TY,0(SC)
NORM: MOVEM TY,STEP
MOVEI TY,0
IOR TDY,TDX
INLOOP: ADD TY,STEP
MOVE DAT,TDX
TLZE TY,200000
MOVE DAT,TDY
PUSHJ P,PLT1
SOJG TX,INLOOP
MOVEM ISX,IX
MOVEM PL.X,X
MOVEM ISY,IY
MOVEM PL.Y,Y
ENDOU1: SKIPL @2(Q)
JRST ENDOUT
IFE LPSYM,<
SKIPN LPBUF ;NO NEED TO DO I/O WHEN SIMUL
>
OUTPUT PCHN,0
SETZM X
SETZM Y
SETZM IX
SETZM IY
ENDOUT:
POPJ P,0
ENTRY SYMBOL
;REGISTERS
SINOR=15
COSOR=14
SVSZ=13
SVTXT=12
BYTE=11
SVNTXT=10
STROKE=7
TY=6
TK=5
LPT.BYT=5
STROCNT=4
XO=3
YO=2
HELLO (SYMBOL)
; MOVE SVX,@0(Q) JUST TO SHOW WHICH ARG
; MOVE SVY,@1(Q) DITTO
SAVALL
MOVE SVSZ,@2(Q)
MOVEI SVTXT,@3(Q)
; MOVE SVOR,@4(Q) TO SHOW WHICH ARG
MOVE SVNTXT,@5(Q)
FUNCT2 COSD,<$1,4(Q)>
MOVEM R0,COSOR
FUNCT2 SIND,<$1,4(Q)>
MOVEM R0,SINOR
FUNCT2 PLOT,<$1,0(Q) ,$1,1(Q) ,$2,[3]>
SKIPG SVSZ
JRST ENDTXT ;SIZE MUST BE >0
HRLI SVTXT,440700 ;POINTER TO ASCII
IFE LPSYM,<
SKIPN LPBUF ;SKIP MEANS LPT SIMULATION
JRST LP1 ;NON-SIM PATH
LOCSUB XY2CHR ;SETUP BP ON BASIS OF CURX,CURY
MOVEM R0,LPT.BYT
SIM1: SOJL SVNTXT,ENDTXT
ILDB BYTE,SVTXT ;FROM ARG-LIST IN EFFECT
IDPB BYTE,LPT.BYT ;INTO LPT BUFFER
JRST SIM1
>
LP1: SOSGE SVNTXT
JRST ENDTXT
ILDB BYTE,SVTXT ;GET TEXT BYTE
MOVSI STROKE,440500 ;SET UP FOR SYM STROKES
;FOLLOWING TWO LOCATIONS ARE MODIFIED TO GET DIFFERENT
;CHARACTER SETS.
T1M: HRR STROKE,TBL1(BYTE)
T2M: HLRZ STROCNT,TBL1(BYTE) ;NUMBER OF STROKES
JUMPE STROCNT,LP1 ;UNDEFINED BYTE
MOVE XO,X
MOVE YO,Y ;ORIGIN OF THE CHARACTER
OUT1: ILDB TX,STROKE ;1 FOR MARK, 0 FOR BLANK
MOVNS TX
ADDI TX,3
PUSH P,TX
ILDB TX,STROKE
ILDB TY,STROKE
SUBI TY,6 ;OFFSET FOR VERTICAL
FSC TX,230 ;FLOAT AND DIVIDE BY 8
FSC TY,230 ;"
FMPR TX,SVSZ
FMPR TY,SVSZ
MOVE BYTE,TX
FMPR BYTE,COSOR
MOVN R0,TY
FMPR R0,SINOR
FADR R0,BYTE
FADR R0,XO
PUSH P,0
MOVE BYTE,TY
FMPR BYTE,COSOR
MOVE R0,TX
FMPR R0,SINOR
FADR R0,BYTE
FADR R0,YO
PUSH P,0
MOVEI TX,-1(P)
MOVEI TY,(P)
MOVEI BYTE,-2(P)
FUNCT2 PLOT,<$1,TX ,$1,TY ,$1,BYTE>
SUB P,[3,,3]
SOJG STROCNT,OUT1
JRST LP1
ENDTXT: POPALL
GOODBY (6) ;RETURN TO CALLER
;FORMAT OF CHARACTER TABLE IS: LEFT HALF, NUMBER OF LINE
;SEGMENTS IN CHARACTER. RIGHT HALF, ADDRESS OF BYTE TABLE
;DESCRIBING SEGMENTS
TBL1: ;THIS IS VERY LONG, SO XLIST
XLIST
XWD 0,0 ;CHARACTER TABLE
XWD 6,T11
XWD 11,T12
XWD 17,T13
XWD 4,T14
XWD 4,T15
XWD 13,T16
XWD 7,T17
XWD 5,T110
XWD 13,T111
XWD 15,T112
XWD 11,T113
XWD 7,T114
XWD 16,T115
XWD 14,T116
XWD 14,T117
XWD 7,T120
XWD 7,T121
XWD 7,T122
XWD 7,T123
XWD 6,T124
XWD 6,T125
XWD 15,T126
XWD 11,T127
XWD 3,T130
XWD 6,T131
XWD 4,T132
XWD 6,T133
XWD 5,T134
XWD 5,T135
XWD 7,T136
XWD 4,T137
XWD 1,T140
XWD 5,T141
XWD 5,T142
XWD 11,T143
XWD 17,T144
XWD 23,T145
XWD 14,T146
XWD 3,T147
XWD 5,T150
XWD 4,T151
XWD 11,T152
XWD 5,T153
XWD 7,T154
XWD 3,T155
XWD 6,T156
XWD 2,T157
XWD 14,T160
XWD 4,T161
XWD 12,T162
XWD 14,T163
XWD 5,T164
XWD 13,T165
XWD 13,T166
XWD 4,T167
XWD 21,T170
XWD 13,T171
XWD 13,T172
XWD 14,T173
XWD 4,T174
XWD 5,T175
XWD 4,T176
XWD 12,T177
XWD 23,T1100
XWD 5,T1101
XWD 14,T1102
XWD 11,T1103
XWD 7,T1104
XWD 7,T1105
XWD 5,T1106
XWD 13,T1107
XWD 6,T1110
XWD 7,T1111
XWD 10,T1112
XWD 7,T1113
XWD 4,T1114
XWD 5,T1115
XWD 4,T1116
XWD 12,T1117
XWD 7,T1120
XWD 14,T1121
XWD 11,T1122
XWD 13,T1123
XWD 5,T1124
XWD 7,T1125
XWD 4,T1126
XWD 6,T1127
XWD 4,T1130
XWD 6,T1131
XWD 5,T1132
XWD 5,T1133
XWD 3,T1134
XWD 5,T1135
XWD 6,T1136
XWD 6,T1137
XWD 3,T1140
XWD 16,T1141
XWD 12,T1142
XWD 11,T1143
XWD 14,T1144
XWD 13,T1145
XWD 10,T1146
XWD 16,T1147
XWD 7,T1150
XWD 7,T1151
XWD 7,T1152
XWD 6,T1153
XWD 3,T1154
XWD 14,T1155
XWD 7,T1156
XWD 12,T1157
XWD 13,T1160
XWD 13,T1161
XWD 6,T1162
XWD 13,T1163
XWD 10,T1164
XWD 10,T1165
XWD 4,T1166
XWD 6,T1167
XWD 4,T1170
XWD 6,T1171
XWD 5,T1172
XWD 10,T1173
XWD 3,T1174
XWD 10,T1175
XWD 5,T1176
XWD 4,T1177
RADIX 10
;FORMAT OF BYTE TABLE: BYTE COME IN TRIPLES. FIRST IS
;0 FOR PEN UP, 1 PEN DOWN. SECOND IS X COORDINATE OF OTHER
;END OF SEGMENT. THIRD IS SAME FOR Y. CHARACTER ASSUMED
;TO START AT (0,6)
T11: BYTE (5) 0,0,9,1,3,6,1,3,14,0,3,6,1,6,9,0,8,6
T12: BYTE (5) 0,6,6,1,3,9,1,1,9,1,0,8,1,0,7,1,1,6,1,3,6
BYTE (5) 1,6,9,0,8,6
T13: BYTE (5) 1,2,8,1,2,13,1,3,14,1,5,14,1,6,13,1,6,12,1,5,11
BYTE (5) 1,2,11,0,5,11,1,6,10,1,6,9,1,5,8,1,3,8,1,2,9
BYTE (5) 0,8,6
T14: BYTE (5) 0,0,8,1,3,11,1,6,8,0,8,6
T15: BYTE (5) 0,1,10,1,5,10,1,5,8,0,8,6
T16: BYTE (5) 0,3,9,1,2,10,1,1,10,1,0,9,1,0,7,1,1,6,1,2,6
BYTE (5) 1,3,7,0,2,8,1,0,8,0,8,6
T17: BYTE (5) 0,0,10,1,6,10,0,4,10,1,4,6,0,2,6,1,2,10,0,8,6
T110: BYTE (5) 1,3,9,0,0,11,1,1,11,1,6,6,0,8,6
T111: BYTE (5) 0,0,11,1,1,12,1,2,12,1,5,9,1,5,7,1,4,6,1,3,6
BYTE (5) 1,2,7,1,2,8,1,6,12,0,8,6
T112: BYTE (5) 0,2,10,1,1,10,1,0,9,1,0,7,1,1,6,1,3,6,1,4,7
BYTE (5) 1,4,9,1,3,10,1,2,10,1,2,12,1,4,12,0,8,6
T113: BYTE (5) 0,0,7,1,1,6,1,2,6,1,3,7,1,3,12,1,4,13,1,5,13
BYTE (5) 1,6,12,0,8,6
T114: BYTE (5) 0,0,9,1,4,9,0,2,11,1,2,7,0,0,7,1,4,7,0,8,6
T115: BYTE (5) 0,0,8,1,0,7,1,1,6,1,3,6,1,4,7,1,4,9,1,3,10
BYTE (5) 1,1,10,1,0,9,1,0,8,1,4,8,0,2,10,1,2,6,0,8,6
T116: BYTE (5) 0,0,10,1,1,9,1,2,9,1,4,11,1,5,11,1,6,10,1,5,9
BYTE (5) 1,4,9,1,2,11,1,1,11,1,0,10,0,8,6
T117: BYTE (5) 0,4,8,1,3,9,1,1,9,1,0,8,1,0,7,1,1,6,1,3,6
BYTE (5) 1,4,7,1,4,10,1,2,12,1,1,12,0,8,6
T120: BYTE (5) 0,3,11,1,1,11,1,0,10,1,0,8,1,1,7,1,3,7,0,8,6
T121: BYTE (5) 0,0,11,1,2,11,1,3,10,1,3,8,1,2,7,1,0,7,0,8,6
T122: BYTE (5) 0,0,10,1,0,8,1,1,7,1,3,7,1,4,8,1,4,10,0,8,6
T123: BYTE (5) 0,0,7,1,0,9,1,1,10,1,3,10,1,4,9,1,4,7,0,8,6
T124: BYTE (5) 0,0,14,1,3,6,1,6,14,0,1,11,1,5,11,0,8,6
T125: BYTE (5) 1,6,6,1,6,14,1,0,14,0,2,10,1,6,10,0,8,6
T126: BYTE (5) 1,4,10,0,0,10,1,4,6,0,3,6,1,1,6,1,0,7,1,0,9
BYTE (5) 1,1,10,1,3,10,1,4,9,1,4,7,1,3,6,0,8,6
T127: BYTE (5) 0,2,8,1,0,10,1,2,12,0,0,10,1,6,10,0,4,12,1,6,10
BYTE (5) 1,4,8,0,8,6
T130: BYTE (5) 0,0,5,1,4,5,0,0,6
T131: BYTE (5) 0,0,10,1,6,10,0,3,13,1,6,10,1,3,7,0,8,6
T132: BYTE (5) 0,2,16,1,3,17,1,4,16,0,0,6
T133: BYTE (5) 1,6,12,0,0,10,1,6,10,0,0,8,1,6,8,0,8,6
T134: BYTE (5) 1,3,6,0,3,7,1,0,10,1,3,13,0,8,6
T135: BYTE (5) 1,3,6,0,0,7,1,3,10,1,0,13,0,8,6
T136: BYTE (5) 0,0,7,1,6,7,0,6,9,1,0,9,0,0,11,1,6,11,0,8,6
T137: BYTE (5) 0,0,11,1,3,8,1,6,11,0,8,6
T140: BYTE (5) 0,8,6
T141: BYTE (5) 0,2,6,1,2,7,0,2,8,1,2,13,0,8,6
T142: BYTE (5) 0,2,12,1,2,14,0,4,14,1,4,12,0,8,6
T143: BYTE (5) 0,2,7,1,2,13,0,4,13,1,4,7,0,6,9,1,0,9,0,0,11
BYTE (5) 1,6,11,0,8,6
T144: BYTE (5) 0,0,8,1,2,6,1,4,6,1,6,8,1,4,10,1,2,10,1,0,12
BYTE (5) 1,2,14,1,4,14,1,6,12,0,4,14,1,4,6,0,2,6,1,2,14
BYTE (5) 0,8,6
T145: BYTE (5) 1,6,12,1,1,12,1,0,11,1,0,10,1,1,9,1,2,9,1,3,10
BYTE (5) 1,3,11,1,2,12,0,4,9,1,3,8,1,3,7,1,4,6,1,5,6
BYTE (5) 1,6,7,1,6,8,1,5,9,1,4,9,0,8,6
T146: BYTE (5) 0,6,6,1,1,11,1,1,13,1,2,14,1,3,14,1,4,13,1,0,9
BYTE (5) 1,0,7,1,1,6,1,3,6,1,5,8,0,8,6
T147: BYTE (5) 0,2,12,1,4,14,0,8,6
T150: BYTE (5) 0,2,6,1,0,8,1,0,12,1,2,14,0,8,6
T151: BYTE (5) 1,2,8,1,2,12,1,0,14,0,8,6
T152: BYTE (5) 0,0,8,1,4,12,0,2,12,1,2,8,0,4,8,1,0,12,0,0,10
BYTE (5) 1,4,10,0,8,6
T153: BYTE (5) 0,2,7,1,2,11,0,0,9,1,4,9,0,8,6
T154: BYTE (5) 0,3,6,1,3,7,1,2,7,1,2,6,1,3,6,1,2,5,0,8,6
T155: BYTE (5) 0,0,9,1,4,9,0,8,6
T156: BYTE (5) 0,2,6,1,3,6,1,3,7,1,2,7,1,2,6,0,8,6
T157: BYTE (5) 1,6,12,0,8,6
T160: BYTE (5) 0,0,7,1,6,13,0,6,12,1,4,14,1,2,14,1,0,12,1,0,8
BYTE (5) 1,2,6,1,4,6,1,6,8,1,6,12,0,8,6
T161: BYTE (5) 0,1,12,1,3,14,1,3,6,0,8,6
T162: BYTE (5) 0,0,12,1,0,13,1,1,14,1,5,14,1,6,13,1,6,11,1,0,7
BYTE (5) 1,0,6,1,6,6,0,8,6
T163: BYTE (5) 0,0,13,1,1,14,1,5,14,1,6,13,1,6,12,1,4,10,1,6,8
BYTE (5) 1,6,7,1,5,6,1,1,6,1,0,7,0,8,6
T164: BYTE (5) 0,5,6,1,5,14,1,0,9,1,6,9,0,8,6
T165: BYTE (5) 0,0,7,1,1,6,1,4,6,1,6,8,1,6,9,1,5,10,1,1,10
BYTE (5) 1,0,9,1,0,14,1,6,14,0,8,6
T166: BYTE (5) 0,0,9,1,1,10,1,5,10,1,6,9,1,6,7,1,5,6,1,1,6
BYTE (5) 1,0,7,1,0,10,1,4,14,0,8,6
T167: BYTE (5) 0,0,14,1,6,14,1,1,6,0,8,6
T170: BYTE (5) 0,1,10,1,0,9,1,0,7,1,1,6,1,5,6,1,6,7,1,6,9
BYTE (5) 1,5,10,1,6,11,1,6,13,1,5,14,1,1,14,1,0,13,1,0,11
BYTE (5) 1,1,10,1,5,10,0,8,6
T171: BYTE (5) 0,2,6,1,6,10,1,6,13,1,5,14,1,1,14,1,0,13,1,0,11
BYTE (5) 1,1,10,1,5,10,1,6,11,0,8,6
T172: BYTE (5) 0,2,6,1,3,6,1,3,7,1,2,7,1,2,6,0,2,10,1,3,10
BYTE (5) 1,3,11,1,2,11,1,2,10,0,8,6
T173: BYTE (5) 0,3,6,1,3,7,1,2,7,1,2,6,1,3,6,1,2,5,0,2,10
BYTE (5) 1,3,10,1,3,11,1,2,11,1,2,10,0,8,6
T174: BYTE (5) 0,3,7,1,0,10,1,3,13,0,8,6
T175: BYTE (5) 0,0,8,1,6,8,0,6,10,1,0,10,0,8,6
T176: BYTE (5) 0,0,7,1,3,10,1,0,13,0,8,6
T177: BYTE (5) 0,1,13,1,2,14,1,4,14,1,5,13,1,5,12,1,3,10,1,3,8
BYTE (5) 0,3,7,1,3,6,0,8,6
T1100: BYTE (5) 0,1,6,1,0,7,1,0,11,1,1,12,1,5,12,1,6,11,1,6,8
BYTE (5) 1,5,7,1,4,8,1,4,11,0,4,10,1,3,11,1,2,11,1,1,10
BYTE (5) 1,1,9,1,2,8,1,3,8,1,4,9,0,8,6
T1101: BYTE (5) 1,3,14,1,6,6,0,1,9,1,5,9,0,8,6
T1102: BYTE (5) 1,0,14,1,5,14,1,6,13,1,6,11,1,5,10,1,0,10,0,5,10
BYTE (5) 1,6,9,1,6,7,1,5,6,1,0,6,0,8,6
T1103: BYTE (5) 0,6,13,1,5,14,1,2,14,1,0,12,1,0,8,1,2,6,1,5,6
BYTE (5) 1,6,7,0,8,6
T1104: BYTE (5) 1,0,14,1,4,14,1,6,12,1,6,8,1,4,6,1,0,6,0,8,6
T1105: BYTE (5) 1,0,14,1,6,14,0,4,10,1,0,10,0,0,6,1,6,6,0,8,6
T1106: BYTE (5) 1,0,14,1,6,14,0,4,10,1,0,10,0,8,6
T1107: BYTE (5) 0,6,13,1,5,14,1,2,14,1,0,12,1,0,8,1,2,6,1,4,6
BYTE (5) 1,6,8,1,6,10,1,4,10,0,8,6
T1110: BYTE (5) 1,0,14,0,6,14,1,6,6,0,0,10,1,6,10,0,8,6
T1111: BYTE (5) 0,1,6,1,5,6,0,3,6,1,3,14,0,1,14,1,5,14,0,8,6
T1112: BYTE (5) 0,1,7,1,2,6,1,3,6,1,4,7,1,4,14,0,2,14,1,6,14
BYTE (5) 0,8,6
T1113: BYTE (5) 0,1,6,1,1,14,0,1,10,1,5,14,0,1,10,1,5,6,0,8,6
T1114: BYTE (5) 1,0,14,0,0,6,1,6,6,0,8,6
T1115: BYTE (5) 1,0,14,1,3,11,1,6,14,1,6,6,0,8,6
T1116: BYTE (5) 1,0,14,1,6,6,1,6,14,0,8,6
T1117: BYTE (5) 0,0,8,1,0,12,1,2,14,1,4,14,1,6,12,1,6,8,1,4,6
BYTE (5) 1,2,6,1,0,8,0,8,6
T1120: BYTE (5) 1,0,14,1,5,14,1,6,13,1,6,11,1,5,10,1,0,10,0,8,6
T1121: BYTE (5) 0,0,8,1,0,12,1,2,14,1,4,14,1,6,12,1,6,8,1,4,6
BYTE (5) 1,2,6,1,0,8,0,4,8,1,6,6,0,8,6
T1122: BYTE (5) 1,0,14,1,5,14,1,6,13,1,6,11,1,5,10,1,0,10,0,2,10
BYTE (5) 1,6,6,0,8,6
T1123: BYTE (5) 0,0,8,1,2,6,1,4,6,1,6,8,1,4,10,1,2,10,1,0,12
BYTE (5) 1,2,14,1,4,14,1,6,12,0,8,6
T1124: BYTE (5) 0,3,6,1,3,14,0,0,14,1,6,14,0,8,6
T1125: BYTE (5) 0,0,14,1,0,7,1,1,6,1,5,6,1,6,7,1,6,14,0,8,6
T1126: BYTE (5) 0,0,14,1,3,6,1,6,14,0,8,6
T1127: BYTE (5) 0,0,14,1,0,6,1,3,9,1,6,6,1,6,14,0,8,6
T1130: BYTE (5) 1,6,14,0,0,14,1,6,6,0,8,6
T1131: BYTE (5) 0,0,14,1,3,11,1,6,14,0,3,11,1,3,6,0,8,6
T1132: BYTE (5) 0,0,14,1,6,14,1,0,6,1,6,6,0,8,6
T1133: BYTE (5) 0,3,4,1,0,4,1,0,14,1,3,14,0,8,6
T1134: BYTE (5) 0,0,12,1,6,6,0,8,6
T1135: BYTE (5) 0,0,4,1,3,4,1,3,14,1,0,14,0,8,6
T1136: BYTE (5) 0,0,11,1,3,14,1,6,11,0,3,14,1,3,6,0,8,6
T1137: BYTE (5) 0,3,7,1,0,10,1,3,13,0,0,10,1,6,10,0,8,6
T1140: BYTE (5) 0,2,14,1,4,12,0,8,6
T1141: BYTE (5) 0,0,9,1,1,10,1,3,10,1,4,9,1,4,6,0,4,8,1,3,9
BYTE (5) 1,1,9,1,0,8,1,0,7,1,1,6,1,3,6,1,4,7,0,8,6
T1142: BYTE (5) 1,0,13,0,0,9,1,1,10,1,3,10,1,4,9,1,4,7,1,3,6
BYTE (5) 1,1,6,1,0,7,0,8,6
T1143: BYTE (5) 0,4,9,1,3,10,1,1,10,1,0,9,1,0,7,1,1,6,1,3,6
BYTE (5) 1,4,7,0,8,6
T1144: BYTE (5) 0,0,7,1,0,9,1,1,10,1,3,10,1,4,9,1,4,7,1,3,6
BYTE (5) 1,1,6,1,0,7,0,4,6,1,4,13,0,8,6
T1145: BYTE (5) 0,4,7,1,3,6,1,1,6,1,0,7,1,0,9,1,1,10,1,3,10
BYTE (5) 1,4,9,1,4,8,1,0,8,0,8,6
T1146: BYTE (5) 0,2,6,1,2,12,1,3,13,1,4,13,1,5,12,0,0,11,1,4,11
BYTE (5) 0,8,6
T1147: BYTE (5) 0,4,9,1,3,10,1,1,10,1,0,9,1,0,7,1,1,6,1,3,6
BYTE (5) 1,4,7,0,4,10,1,4,5,1,3,4,1,1,4,1,0,5,0,8,6
T1150: BYTE (5) 1,0,13,0,0,9,1,1,10,1,3,10,1,4,9,1,4,6,0,8,6
T1151: BYTE (5) 0,3,12,1,3,11,0,3,10,1,3,7,1,4,6,1,5,6,0,8,6
T1152: BYTE (5) 0,3,12,1,3,11,0,3,10,1,3,5,1,2,4,1,1,4,0,8,6
T1153: BYTE (5) 1,0,13,0,0,8,1,2,10,0,0,8,1,2,6,0,8,6
T1154: BYTE (5) 0,2,6,1,2,13,0,8,6
T1155: BYTE (5) 1,0,10,0,0,9,1,1,10,1,2,10,1,3,9,1,3,6,0,3,9
BYTE (5) 1,4,10,1,5,10,1,6,9,1,6,6,0,8,6
T1156: BYTE (5) 1,0,10,0,0,9,1,1,10,1,2,10,1,3,9,1,3,6,0,8,6
T1157: BYTE (5) 0,0,7,1,0,9,1,1,10,1,3,10,1,4,9,1,4,7,1,3,6
BYTE (5) 1,1,6,1,0,7,0,8,6
T1160: BYTE (5) 0,0,4,1,0,10,0,0,9,1,1,10,1,3,10,1,4,9,1,4,7
BYTE (5) 1,3,6,1,1,6,1,0,7,0,8,6
T1161: BYTE (5) 0,4,9,1,3,10,1,1,10,1,0,9,1,0,7,1,1,6,1,3,6
BYTE (5) 1,4,7,0,4,10,1,4,4,0,8,6
T1162: BYTE (5) 1,0,10,0,0,9,1,1,10,1,3,10,1,4,9,0,8,6
T1163: BYTE (5) 0,0,7,1,1,6,1,3,6,1,4,7,1,3,8,1,1,8,1,0,9
BYTE (5) 1,1,10,1,3,10,1,4,9,0,8,6
T1164: BYTE (5) 0,2,13,1,2,7,1,3,6,1,4,6,1,5,7,0,1,11,1,3,11
BYTE (5) 0,8,6
T1165: BYTE (5) 0,0,10,1,0,7,1,1,6,1,3,6,1,4,7,1,4,10,1,4,6
BYTE (5) 0,8,6
T1166: BYTE (5) 0,0,10,1,2,6,1,4,10,0,8,6
T1167: BYTE (5) 0,0,10,1,0,6,1,2,8,1,4,6,1,4,10,0,8,6
T1170: BYTE (5) 1,4,10,0,0,10,1,4,6,0,8,6
T1171: BYTE (5) 0,0,10,1,2,6,0,4,10,1,1,4,1,0,4,0,8,6
T1172: BYTE (5) 0,0,10,1,4,10,1,0,6,1,4,6,0,8,6
T1173: BYTE (5) 0,3,14,1,2,13,1,2,11,1,0,9,1,2,7,1,2,5,1,3,4
BYTE (5) 0,8,6
T1174: BYTE (5) 0,2,4,1,2,14,0,8,6
T1175: BYTE (5) 0,0,14,1,1,13,1,1,11,1,3,9,1,1,7,1,1,5,1,0,4
BYTE (5) 0,8,6
T1176: BYTE (5) 0,2,16,1,3,17,1,4,16,1,5,17,0,0,6
T1177: BYTE (5) 0,1,16,1,4,16,1,4,15,0,0,6
RADIX 8
LIST
;END OF BYTE TABLES
;ROUTINE TO GIVE BACK CURRENT X,Y POSITION
ENTRY WHERE
HELLO (WHERE)
MOVE R0,X
MOVEM R0,@0(Q)
MOVE R0,Y
MOVEM R0,@1(Q)
GOODBY (2)
EXTERN IFIX,FLOAT,EXP2.0,IFIX.
ENTRY NUMBER
; REGISTERS
SVXN=15
SVYN=14
SVSZN=13
SVFN=12
SVORN=11
SVNN=10
T0=7
DIGITS=6
BFCHAR=5
HELLO (NUMBER)
SAVALL
MOVE SVXN,@0(Q) ;SVXN
MOVE SVYN,@1(Q) ;SVYN
MOVE SVSZN,@2(Q) ;SVSZN
MOVE SVFN,@3(Q) ;SVFN
MOVE SVORN,@4(Q) ;SVORN
MOVE SVNN,@5(Q) ;SVNN
FUNCT2 PLOT,<SVXN,SVYN,$2,[3]>
IFE LPSYM,<
SKIPN LPBUF
JRST NUM1 ;NO SIMUL
LOCSUB XY2CHR ;ARGS IN GLOBALS
MOVEM 0,BFCHAR ;BYTE PTR
NUM1:
>
MOVSI R1,264000
SKIPGE SVFN
PUSHJ P,DECP2
MOVMS SVFN
SKIPGE R1,SVNN
MOVEI R1,0
MOVNS 1
MOVSI 0,(10.0)
PUSHJ P,EXP2.0##
MOVEM 0,T0
FSC 0,-1
FADRB 0,SVFN ;ROUND IN FIRST INSIGNIFICANT DIGIT
FDVR 0,T0 ;SCALE TO AN INTEGER
FUNCT2 IFIX.,<R0>
MOVM R1,0
PUSHJ P,DECPLT
MOVSI R1,270000
SKIPN SVNN ;NEED A DEC. PT. IN ONE CASE
PUSHJ P,DECP2
ENDNUM:
POPALL
GOODBY (6)
DECPLT: SETZ DIGITS
DECP3: IDIVI R1,12
HRLM 2,0(P)
AOS DIGITS
SKIPE 1
PUSHJ P,DECP3
CAMLE DIGITS,SVNN
JRST DECP4
MOVSI R1,270000
PUSHJ P,DECP2 ;PLOT A "."
CAML DIGITS,SVNN
JRST DECP4A
DECP5: MOVSI R1,300000 ;A ZERO
PUSHJ P,DECP2
AOS DIGITS
CAMGE DIGITS,SVNN
JRST DECP5
DECP4A: SETOM SVNN ;FAKE OUT TEST NEXT TIME AROUND
DECP4: SOS DIGITS
HLRZ R1,0(P)
TRO R1,60
ROT R1,-7
DECP2:
IFE LPSYM,<
SKIPN LPBUF
JRST DECP21
; SINCE CHAR IS ALREADY SET UP IN R1, JUST RIGHT JUSTIF
ROT R1,7
IDPB R1,BFCHAR ;BFCHAR SETUP IN CALL TO SYMBOL AT TOP OF ROUTINE
POPJ P,0
DECP21:
>
FUNCT2 SYMBOL,<$2,X ,$2,Y ,$1,2(Q), R1, SVORN ,$2,[1]>
POPJ P,0
IFE LPSYM,<
ENTRY LPTOUT
TABQ=4
PT=5 ;PLOTTER TEMP
LINES=6
SPQ=7
LSS8=10
REM=11
DATUM=12
LPTOUT:
PUSH P,PT ;NEED 4 AC'S
PUSH P,LSS8
PUSH P,TABQ
PUSH P,SPQ
PUSH P,DATUM
PUSH P,LINES
PUSH P,REM
MOVEI LINES,ILINES
MOVSI REM,440700
HRR REM,LPBUF ;SETS UP BP
PLT.NL: MOVEI PT,LPWIDTH ;CHARS PER LINE
MOVEI LSS8,LPWIDTH-10 ;FOR TAB STOPS
MOVEI TABQ,1 ;IF LINE NOT NULL--ALWAYS PUT OUT INIT TAB
SETZ SPQ, ;ZERO THE SPACE QUEUE HOWEVER
PLT.NC: ILDB DATUM,REM
SKIPE DATUM ;BLANKS "TO BE" ARE NOW NULLS
JRST PLTUNQ ;UNQUEUE THE QUEUES
ADDI SPQ,1 ;INTO SPACE Q
PLT.0Q: SUBI PT,1 ;LINE POS
CAME PT,LSS8 ;TAB STOP?
JRST PLT.NC ;NO -- GET NX CHAR
P0MOD8:
SKIPE SPQ ;DON'T BUMP TABQ IF LAST NON-BLK CHAR IN 8TH POS
ADDI TABQ,1 ;DO THE BUMP
SETZ SPQ, ;READY FOR NEW TAB
SUBI LSS8,10 ;PUT CHAR.CNT DOWN BY TAB
JUMPG PT,PLT.NC ;JUMP IF NOT EOL
PLTEOL:
MOVEI DATUM,15 ;CAR-RET
SOSG POB+2 ;ALSO DECR TO 0
OUTPUT PCHN,0
IDPB DATUM,POB+1
MOVEI DATUM,12 ;LF
SOSG POB+2 ;ALSO DECR TO 0
OUTPUT PCHN,0
IDPB DATUM,POB+1
CAIE TABQ,LPWIDTH/8+1 ;SKIP MEANS ALL TABS (BLK LINE)
SOJG LINES,PLT.NL ;BUFFER IS N-CHAR/LINE M-LINES
PLTEOP:
MOVEI DATUM,14 ;FORM FEED
DPB DATUM,POB+1 ;OVERWRITE THE LAST LF
SOS POB+2 ;GET BYTE CNT. PAST LAST BYTE
OUTPUT PCHN,0
POP P,REM
POP P,LINES
POP P,DATUM
POP P,SPQ
POP P,TABQ
POP P,LSS8
POP P,PT
POPJ P,0 ;DONE
PLTUNQ:
JUMPE TABQ,CHKNOQ ;QUICKIE PATH TO CATCH BOTH QS 0.
PUSH P,DATUM ;FIRST THE PRELIMS
MOVEI DATUM,11 ;ASCII TAB
OUTTAB:
SOSG POB+2 ;ALSO DECR TO 0
OUTPUT PCHN,0
IDPB DATUM,POB+1
SOJG TABQ,OUTTAB ;NO JUMP MEANS START SPA. Q
JUMPE SPQ,OUTDAT
MOVEI DATUM,40 ;ASCII SPACE
OUTSPA:
SOSG POB+2 ;ALSO DECR TO 0
OUTPUT PCHN,0
IDPB DATUM,POB+1
SOJG SPQ,OUTSPA ;NO JUMP MEANS ALL Q'S FIN.
OUTDAT:
POP P,DATUM
OUTD1:
SOSG POB+2 ;ALSO DECR TO 0
OUTPUT PCHN,0
IDPB DATUM,POB+1
SETZ TABQ,
SETZ SPQ,
JRST PLT.0Q ;RE-ENTER MAIN LINE
CHKNOQ: JUMPE SPQ,OUTD1 ;NO QUEUES NO PUSH DATUM
PUSH P,DATUM
JRST OUTSPA-1 ;SET UP THE OCT. 40
>
IFE LPSYM,<
ENTRY PLOTI
PLOTI:
FUNCT2 PLOT,<$1,0(AP),$1,1(AP),$2,[3]>
SETZM CURX
SETZM CURY
; ZERO THE LPT BUFFER
PUSH P,PT
PUSH P,REM
HRRZ PT,LPBUF
MOVE REM,PT
SETZM (PT) ;THE BASIS OF THE ZERO CHAIN
ADDI PT,1
HRL PT,LPBUF
BLT PT,LPBUFSZ-1(REM)
POP P,REM
POP P,PT
POPJ P,0
>
IFE LPSYM,<
ENTRY XY2CHR
XX=11
XREM=12
YY=13
YREM=14
XY2CHR:
PUSH 17,XX
PUSH 17,XREM
PUSH 17,YY
PUSH 17,YREM
HRLZ XX,CURX ;BEGIN TASK OF SETTING CHAR IN LPT BUFF%
;TRICK TO INCREASE PRECISION -- ALR. DONE TO SPC.?
IDIV XX,SPC.X ;STEPS/CHAR
IMULI XX,LPWIDTH ;GET RIGHT "ROW"
HRLZ YY,CURY ;SAME TRICK
IDIV YY,SPC.Y
ADD XX,YY
IDIVI XX,5 ;CHANGE FROM CHAR TO WORDS
HRRZ YREM,SETPOS(XREM) ;THE DESIRED BYTE PTR
ADD YREM,XX ;THE BASE OF THE BUFFER & OFFSET
ADD YREM,LPBUF ;BASE OF BUFFER
HLL YREM,SETPOS(XREM) ;THE SIZE/POS PART
MOVEM YREM,0
POP 17,YREM
POP 17,YY
POP 17,XREM
POP 17,XX
POPJ P,0
>
;ALL SORTS TEMPS AND STUFF
SETPOS: XWD 440700,0 ;5 BYTE PTRS REG IS REFFED AS YY--USED BY MAP2CH
XWD 350700,0
XWD 260700,0
XWD 170700,0
XWD 100700,0
IFE ALONE,<
RELOC 0
PFNAM: SIXBIT /LNKOVT/ ;FILE NAME FOR PLOT FILE
SIXBIT /DAT/
0
0
IFE LPSYM,<
OBLOCK: XWD 0,10
XWD 0,0
XWD POB,0
>>
END