/ 7 OS/8 PLOTTER/DISPLAY SOFTWARE / / SYMBOL.SB [ DRAFTING LETTER SET ] / / AUFBAU DER KOORDINATENTABELLE / / I-----------------------------------------------I / I I I I I I I I I I I 1 I 1 I / I 0 I 1 I 2 I 3 I 4 I 5 I 6 I 7 I 8 I 9 I 0 I 1 I / I-----------------------------------------------I / I I I I I / I Y1 I X1 I Y2 I X2 I / I I I I I / I-----------------------------------------------I / / Y1,X1,Y2,X2 : / / 0 ... 6 KOORDINATEN / / 07 PEN-CHANGE / / 77 [ Y1,X1 ] CHAR-ENDE / / SUBROUTINE SYMBOL(XPAGE,YPAGE,HEIGH,IBCD,ANGLE,NC) LAP \XPAGE, BLOCK 2 \YPAGE, BLOCK 2 \HEIGH, BLOCK 2 \IBCD, BLOCK 2 \ANGLE, BLOCK 2 \NC, BLOCK 2 \X1, BLOCK 3 \Y1, BLOCK 3 \H, BLOCK 3 \X, BLOCK 3 \Y, BLOCK 3 \OLDH, BLOCK 3 \OLDA, BLOCK 3 \S, BLOCK 3 \C, BLOCK 3 \IP, BLOCK 1 \I, BLOCK 1 \J, BLOCK 1 \K, BLOCK 1 \L, BLOCK 1 \IX, BLOCK 1 \IY, BLOCK 1 \X2, BLOCK 3 \Y2, BLOCK 3 \TAL, 1756;3146;3146 / 0.1 \ASPS, BLOCK 3 \ASPC, BLOCK 3 \ASP, 2014;0;0 / 1.0 \SPAS, BLOCK 3 \SPAC, BLOCK 3 \SPA, 2036;0;0 / 6.0 ]A, BLOCK 3 ]11, 1765;2525;2525 / 0.1666667 ]6, 2036;0;0 / 6.0 ]3, 2127;6340;0 / 999.0 EAP ENTRY SYMBO DUMMY \XPAGE DUMMY \YPAGE DUMMY \HEIGH DUMMY \IBCD DUMMY \ANGLE DUMMY \NC OPDEF BSW 7002 OPDEF SNC 7650 OPDEF TADI 1400 OPDEF JMPI 5400 XPNT, \XPAGE PNTR, 0 CNTR, 0 SYMBO, BLOCK 2 CLA CLL TAD XPNT DCA PNTR TAD (-14 DCA CNTR A1, TAD I SYMBO INC SYMBO# DCA I PNTR INC PNTR ISZ CNTR JMP A1 /------------------------------------------------------- TAD \IBCD DCA STR TAD \IBCD# DCA STR# CALL 1,IFAD ARG \XPAGE CALL 1,STO ARG \X1 CALL 1,IFAD ARG \YPAGE CALL 1,STO ARG \Y1 CALL 1,IFAD ARG \HEIGH CALL 1,STO ARG \H CALL 1,IFAD ARG \ANGLE CALL 1,STO ARG \X2 TAD I \NC DCA \NC /------------------------------------------------------ TAD \H / SET MODE CALL ? SPC JMP \1000 / YES : \80, CALL 1,FAD / XPAGE = 999. ? ARG \X1 JMS IF999 SNC JMP \100 / YES : \90, CALL 2,FMOV / X = XPAGE ARG \X1 ARG \X \100, CALL 1,FAD / YPAGE = 999. ? ARG \Y1 JMS IF999 SNC JMP \200 / YES : \150, CALL 2,FMOV / Y = YPAGE ARG \Y1 ARG \Y / / SIN UND COS WERDEN NUR AUFGERUFEN, WENN SICH DIE / ZEICHENHOEHE ODER DER ZEICHENWINKEL AENDERN. / \200, CALL 1,FAD / OLDH = HEIGH ? ARG \H CALL 1,FSB ARG \OLDH TAD ACH CALL 0,CLEAR SNC JMP \300 / YES : \250, CALL 1,FAD / H = HEIGH * 0.166666 ARG \H CALL 1,FMP ARG ]11 CALL 1,STO ARG \H CALL 2,FMOV / OLDH = HEIGH ARG \H ARG \OLDH JMP \400 / GOTO 400 \300, CALL 1,FAD / OLDA = ANGLE ? ARG \X2 CALL 1,FSB ARG \OLDA TAD ACH CALL 0,CLEAR SNC JMP \500 / YES : \400, CALL 2,FMOV / OLDA = ANGLE ARG \X2 ARG \OLDA CALL 1,TSIN / S = TSIN(OLDA)*H ARG \OLDA CALL 1,FMP ARG \H CALL 1,STO ARG \S CALL 1,TCOS / C = TCOS(OLDA)*H ARG \OLDA CALL 1,FMP ARG \H CALL 1,STO ARG \C /------------------------------------------------------ CALL 1,FAD ARG \ASP CALL 1,FMP ARG \S CALL 1,STO ARG \ASPS / ASP*S CALL 1,FAD ARG \ASP CALL 1,FMP ARG \C CALL 1,STO ARG \ASPC / ASP*C CALL 1,FAD ARG \SPA CALL 1,FMP ARG \S CALL 1,STO ARG \SPAS / SPA*S CALL 1,FAD ARG \SPA CALL 1,FMP ARG \C CALL 1,STO ARG \SPAC / SPA*C /------------------------------------------------------ \500, CLA CLL CML IAC RAL / IP = 3 DCA \IP / / BEI ZENTRIERTEN ZEICHEN SICHTBAR VERBINDEN ? / CLA CLL CML IAC RAL/ NC <= -2 ? TAD \NC SMA CLA JMP \540 / NO : \520, CLA CLL IAC RAL / IP = 2 DCA \IP \540, CALL 3,PLOT ARG \X ARG \Y ARG \IP TAD \NC / IF NC = 0 SNA CLA IAC / THEN I = 2 IAC / ELSE I = 1 DCA \I / / STRINGANFANG / \600, CALL 2,LGET / J = LGET(IBCD,I) STR, ARG 0 / STRINGADRESSE ARG \I DCA \J TAD \NC / NC < 0 ? SPC JMP \630 / YES : TAD (20 TAD \J DCA \J / / ZEICHENANFANG / \630, TAD \J / J = IVER(J) TAD \IVER DCA 7 TADI 7 DCA \J1# / 1. KOORDINATENPAAR IAC / L = 1 DCA \L CLA CLL IAC RAL / IP = 2 DCA \IP \700, CALL 2,LGET / K = LGET(IZEI(J),L) \J1, ARG \IZEI ARG \L DCA \K TAD \K / K = 7 ? PEN CHANGE ? TAD (-7 SZA CLA JMP \730 / NO : TAD \IP / IP = 5 - IP CIA TAD (5 DCA \IP JMP \810 / GOTO 810 \730, TAD \K / K = 63 ? CHAR ENDE ? TAD (-77 SNC JMP \900 / YES : \740, TAD \K AND (7 DCA \IX TAD \K RAR RTR AND (7 DCA \IY TAD \NC / NC >= 0 ? SMA CLA JMP \800 / YES : / / ZENTRIERTE ZEICHEN SIND MIT OFFSET VERSEHEN ! / \710, CLA CMA CLL RTL / IX = IX - 3 TAD \IX DCA \IX CLA CMA CLL RTL / IY = IY - 3 TAD \IY DCA \IY \800, TAD \IX / X2 = IX CALL 0,FLOT CALL 1,STO ARG \X2 TAD \IY / Y2 = IY CALL 0,FLOT CALL 1,STO ARG \Y2 CALL 1,FAD ARG \Y2 CALL 1,FMP ARG \TAL CALL 1,FAD ARG \X2 CALL 1,STO ARG ]A / = (IX+IY*TAL) CALL 1,FAD ARG ]A CALL 1,FMP ARG \ASPC CALL 1,FAD ARG \X CALL 1,STO ARG \X1 / = X+(IX+IY*TAL)*ASP*C CALL 1,FAD ARG \Y2 CALL 1,FMP ARG \S / = IY*S CALL 0,CHS CALL 1,FAD ARG \X1 CALL 1,STO ARG \X1 / = X+(IX+IY*TAL)*ASP*C-Y2*S CALL 1,FAD ARG ]A CALL 1,FMP ARG \ASPS CALL 1,FAD ARG \Y CALL 1,STO ARG \Y1 / = Y+(IX+IY*TAL)*ASP*S CALL 1,FAD ARG \Y2 CALL 1,FMP ARG \C CALL 1,FAD ARG \Y1 CALL 1,STO ARG \Y1 / = Y+(IX+IY*TAL)*ASP*S+IY*C CALL 3,PLOT ARG \X1 ARG \Y1 ARG \IP \810, INC \L / L = L + 1 JMP \700 / GOTO 700 \900, TAD \NC / IF NC <= 0 ? SPA SNA CLA JMP \1100 / YES : \910, INC \I / I = I + 1 CALL 1,FAD / X = X + SPAC ARG \SPAC CALL 1,FAD ARG \X CALL 1,STO ARG \X CALL 1,FAD / Y = Y + SPAS ARG \SPAS CALL 1,FAD ARG \Y CALL 1,STO ARG \Y CALL 3,PLOT ARG \X ARG \Y ARG (3 TAD \NC / IF I > NC ? CIA TAD \I SPA SNA CLA JMP \600 / NO : JMP \1100 / YES : / / SET MODE CALL PARAMETER UEBERNEHMEN ! / \1000, CALL 1,FAD / IF XPAGE = 999. ? ARG \X1 JMS IF999 SNC JMP \1020 / YES : \1010, CALL 2,FMOV / ASP = XPAGE ARG \X1 ARG \ASP CALL 1,STO ARG \OLDH \1020, CALL 1,FAD / IF YPAGE = 999. ? ARG \Y1 JMS IF999 SNC JMP \1040 / YES : \1030, CALL 2,FMOV / TAL = YPAGE ARG \Y1 ARG \TAL \1040, CALL 1,FAD / IF ANGLE = 999. ? ARG \X2 JMS IF999 SNC JMP \1100 / YES : \1050, CALL 1,FAD / SPA = ANGLE * 6 * ASP ARG \X2 CALL 1,FMP ARG ]6 CALL 1,FMP ARG \ASP CALL 1,STO ARG \SPA CALL 1,STO ARG \OLDH \1100, RETRN SYMBO / RETURN IF999, 0 / FAC = FAC - 999. CALL 1,FSB ARG ]3 TAD ACH CALL 0,CLEAR JMP I IF999 ENTRY FMOV DUMMY FMOV1 DUMMY FMOV2 FMOV1, BLOCK 2 FMOV2, BLOCK 2 FMOV3, FMOV1 FMOV4, 0 FMOV5, 0 FMOV, BLOCK 2 TAD FMOV3 DCA FMOV4 TAD (-4 DCA FMOV5 FMOV6, TAD I FMOV INC FMOV# DCA I FMOV4 INC FMOV4 ISZ FMOV5 JMP FMOV6 CALL 1,IFAD ARG FMOV1 CALL 1,ISTO ARG FMOV2 RETRN FMOV