📄 t6963lcd.p96
字号:
END CURSOR;
CURSOR$AD: PROCEDURE(LOW,HIGH) PUBLIC;
DECLARE (LOW,HIGH) BYTE SLOW;
COAD1: IF((P8279$CTRL AND 03H) <> 3)THEN GOTO COAD1;
P8279$DATA=LOW;
COAD2: IF((P8279$CTRL AND 03H) <> 3)THEN GOTO COAD2;
P8279$DATA=HIGH;
COA: IF((P8279$CTRL AND 03H) <> 3)THEN GOTO COA;
P8279$CTRL=021H;
END CURSOR$AD;
CLOSE$LCD: PROCEDURE PUBLIC;
CLC: IF((P8279$CTRL AND 03H) <> 3)THEN GOTO CLC;
P8279$CTRL=90H;
END CLOSE$LCD;
OPEN$LCD: PROCEDURE(DAT) PUBLIC;
DECLARE DAT BYTE SLOW;
OPC: IF((P8279$CTRL AND 03H) <> 3)THEN GOTO OPC;
P8279$CTRL=DAT;
/*DAT=1001abcdB;
a=0/1: GRAPHIC off/on
b=0/1: TEXT off/on
c=0/1: CURSOR off/on
d=0/1: BLINK off/on
*/
END OPEN$LCD;
CURSOR$LINE: PROCEDURE(DAT) PUBLIC;
DECLARE DAT BYTE SLOW;
IF( DAT > 8 ) THEN DAT=8;
COUC: IF((P8279$CTRL AND 03H) <> 3)THEN GOTO COUC;
P8279$CTRL=DAT-1+0A0H;
/*DAT=1--8;LINE OF COUSOR */
END CURSOR$LINE;
OUT$PLIN: PROCEDURE(X1,Y1,X2,Y2,C) PUBLIC;
DECLARE (X1,Y1,X2,Y2,C) BYTE SLOW;
CALL OUT$LINE(X1,Y1,X1,Y2,C);
CALL OUT$LINE(X1,Y1,X2,Y1,C);
CALL OUT$LINE(X2,Y1,X2,Y2,C);
CALL OUT$LINE(X1,Y2,X2,Y2,C);
END OUT$PLIN;
OUT$LINE: PROCEDURE(X1,Y1,X2,Y2,C) PUBLIC;
DECLARE (X1,Y1,X2,Y2,C) BYTE SLOW;
DECLARE (I,K,DX,DY) BYTE SLOW;
IF(X1>239) THEN X1=239;
IF(Y1>127) THEN Y1 = 127;
IF(X2>239) THEN X2=239 ;
IF(Y2>127) THEN Y2 = 127;
IF(X1>X2) THEN
DO;
I=X2;X2=X1;X1=I;
I=Y2;Y2=Y1;Y1=I;
END;
IF(Y2>Y1) THEN DY=Y2-Y1;ELSE DY=Y1-Y2;
DX=X2-X1;
IF(DX=0) THEN
DO;
IF(Y1>Y2) THEN
DO;
I=Y2;Y2=Y1;Y1=I;
END;
DO I= Y1 TO Y2;
CALL OUT$POINT(X1,I,C);
END;
RETURN;
END;
IF(DY=0) THEN
DO;
DO I= X1 TO X2;
CALL OUT$POINT(I,Y1,C);
END;
RETURN;
END;
IF(DX<DY)THEN
DO;
DO I=0 TO DY;
IF(Y1<Y2)THEN K=Y1+I;ELSE K=Y1-I;
CALL OUT$POINT((DOUBLE(I)*DOUBLE(DX))/DOUBLE(DY)+X1,K,C);
END;
RETURN;
END;
DO I=0 TO DX;
K=(DOUBLE(I)*DOUBLE(DY))/DOUBLE(DX);
IF(Y1<Y2)THEN K=Y1+K;ELSE K=Y1-K;
CALL OUT$POINT(X1+I,K,C);
END;
END OUT$LINE;
OUT$POINT: PROCEDURE(X,Y,C) PUBLIC;
DECLARE (X,Y,C) BYTE SLOW;
DECLARE (D) WORD FAST;
IF(X>239) THEN X=239;
IF(Y>127) THEN Y = 127;
D=Y*FS+X/8;
CALL SET$ADLH((D MOD 256),(D/256+GRH));
IF(C>0) THEN C=0F8H;ELSE C=0F0H;
POINTC: IF((P8279$CTRL AND 03H) <> 3)THEN GOTO POINTC;
P8279$CTRL=(7-(X MOD 8))+C;
END OUT$POINT;
CLR$CHINA$CHUAN: PROCEDURE(X,Y,Z) PUBLIC;
DECLARE (X,Y,Z,I) BYTE SLOW;
DO I=0 TO Z ;
CALL OUT$CHINA(16,X+I*2,Y,.SPACE16);
END;
END CLR$CHINA$CHUAN;
OUT$CHINA$CHUAN2: PROCEDURE(X,Y,H1,H2) PUBLIC;
DECLARE (X,Y) BYTE SLOW;
DECLARE (H1,H2) WORD SLOW;
CALL OUT$CHINA(16,X,Y,H1);
CALL OUT$CHINA(16,X+2,Y,H2);
END OUT$CHINA$CHUAN2;
OUT$CHINA$CHUAN3: PROCEDURE(X,Y,H1,H2,H3) PUBLIC;
DECLARE (X,Y) BYTE SLOW;
DECLARE (H1,H2,H3) WORD SLOW;
CALL OUT$CHINA(16,X,Y,H1);
CALL OUT$CHINA(16,X+2,Y,H2);
CALL OUT$CHINA(16,X+4,Y,H3);
END OUT$CHINA$CHUAN3;
OUT$CHINA$CHUAN4: PROCEDURE(X,Y,H1,H2,H3,H4) PUBLIC;
DECLARE (X,Y) BYTE SLOW;
DECLARE (H1,H2,H3,H4) WORD SLOW;
CALL OUT$CHINA(16,X,Y,H1);
CALL OUT$CHINA(16,X+2,Y,H2);
CALL OUT$CHINA(16,X+4,Y,H3);
CALL OUT$CHINA(16,X+6,Y,H4);
END OUT$CHINA$CHUAN4;
OUT$CHINA$CHUAN5: PROCEDURE(X,Y,H1,H2,H3,H4,H5) PUBLIC;
DECLARE (X,Y) BYTE SLOW;
DECLARE (H1,H2,H3,H4,H5) WORD SLOW;
CALL OUT$CHINA(16,X,Y,H1);
CALL OUT$CHINA(16,X+2,Y,H2);
CALL OUT$CHINA(16,X+4,Y,H3);
CALL OUT$CHINA(16,X+6,Y,H4);
CALL OUT$CHINA(16,X+8,Y,H5);
END OUT$CHINA$CHUAN5;
OUT$CHINA$CHUAN6: PROCEDURE(X,Y,H1,H2,H3,H4,H5,H6) PUBLIC;
DECLARE (X,Y) BYTE SLOW;
DECLARE (H1,H2,H3,H4,H5,H6) WORD SLOW;
CALL OUT$CHINA(16,X,Y,H1);
CALL OUT$CHINA(16,X+2,Y,H2);
CALL OUT$CHINA(16,X+4,Y,H3);
CALL OUT$CHINA(16,X+6,Y,H4);
CALL OUT$CHINA(16,X+8,Y,H5);
CALL OUT$CHINA(16,X+10,Y,H6);
END OUT$CHINA$CHUAN6;
OUT$CHINA$CHUAN7: PROCEDURE(X,Y,H1,H2,H3,H4,H5,H6,H7) PUBLIC;
DECLARE (X,Y) BYTE SLOW;
DECLARE (H1,H2,H3,H4,H5,H6,H7) WORD SLOW;
CALL OUT$CHINA(16,X,Y,H1);
CALL OUT$CHINA(16,X+2,Y,H2);
CALL OUT$CHINA(16,X+4,Y,H3);
CALL OUT$CHINA(16,X+6,Y,H4);
CALL OUT$CHINA(16,X+8,Y,H5);
CALL OUT$CHINA(16,X+10,Y,H6);
CALL OUT$CHINA(16,X+12,Y,H7);
END OUT$CHINA$CHUAN7;
OUT$CHINA$CHUAN8: PROCEDURE(X,Y,H1,H2,H3,H4,H5,H6,H7,h8) PUBLIC;
DECLARE (X,Y) BYTE SLOW;
DECLARE (H1,H2,H3,H4,H5,H6,H7,h8) WORD SLOW;
CALL OUT$CHINA(16,X,Y,H1);
CALL OUT$CHINA(16,X+2,Y,H2);
CALL OUT$CHINA(16,X+4,Y,H3);
CALL OUT$CHINA(16,X+6,Y,H4);
CALL OUT$CHINA(16,X+8,Y,H5);
CALL OUT$CHINA(16,X+10,Y,H6);
CALL OUT$CHINA(16,X+12,Y,H7);
CALL OUT$CHINA(16,X+14,Y,H8);
END OUT$CHINA$CHUAN8;
OUT$CHINA: PROCEDURE(dot,X,Y,PRT$TEXT) PUBLIC;
DECLARE (dot,X,Y) BYTE SLOW;
DECLARE (I,J) BYTE SLOW;
DECLARE LC WORD SLOW;
DECLARE PRT$TEXT ADDRESS SLOW;
DECLARE TEMP ADDRESS SLOW;
DECLARE T BASED TEMP BYTE;
IF(X<0) THEN X = 0;
IF(X>(FS-dot/8)) THEN
DO;
Y= Y + X/(FS-dot/8+1);
X= X MOD (FS-dot/8+1);
END;
IF(Y<0) THEN Y = 0;
IF(Y>(16-dot/8)) THEN Y = Y MOD (17-dot/8);
DO J=0 TO dot-1;
DO I=0 TO dot/8-1;
LC=(Y*8+J)*FS+X+I;
CALL SET$ADLH((LC MOD 256),(LC/256+GRH));
TEMP=PRT$TEXT+I*16+J;
CHIND1: IF((P8279$CTRL AND 03H) <> 3)THEN GOTO CHIND1;
P8279$DATA=T;
CHINC: IF((P8279$CTRL AND 03H) <> 3)THEN GOTO CHINC;
P8279$CTRL=0C0H;
END;
END;
END OUT$CHINA;
OUT$PIC: PROCEDURE(dot,X,Y,PRT$TEXT) PUBLIC;
DECLARE (dot,X,Y) BYTE SLOW;
DECLARE (I,J) BYTE SLOW;
DECLARE LC WORD SLOW;
DECLARE PRT$TEXT ADDRESS SLOW;
DECLARE TEMP ADDRESS SLOW;
DECLARE T BASED TEMP BYTE;
/* IF(X<0) THEN X = 0;
IF(X>(FS-dot/8)) THEN
DO;
Y= Y + X/(FS-dot/8+1);
X= X MOD (FS-dot/8+1);
END;
IF(Y<0) THEN Y = 0;
IF(Y>(16-dot/8)) THEN Y = Y MOD (17-dot/8);
*/
DO J=0 TO dot-1;
DO I=0 TO 29;
LC=(Y*8+J)*FS+X+I;
CALL SET$ADLH((LC MOD 256),(LC/256+GRH));
TEMP=PRT$TEXT+J*30+I;
CHIND1: IF((P8279$CTRL AND 03H) <> 3)THEN GOTO CHIND1;
P8279$DATA=T;
CHINC: IF((P8279$CTRL AND 03H) <> 3)THEN GOTO CHINC;
P8279$CTRL=0C0H;
END;
END;
END OUT$PIC;
OUT$BMP: PROCEDURE(X,Y,DX,DY,ADDR) PUBLIC;
/*
NOTE: X: CURSOR ADDRESS,COLUMN (BYTE)
Y: CURSOR ADDRESS,ROW (DOT LINE)
DX: BMP COLUMNS (BYTE)
DY: BMP ROWS (DOT LINE)
ADDR:THE FIRST ADDRESS OF BMP
LCD USE THE FIRST GRAPH SCREEN
*/
DECLARE (X,Y,DX,DY) BYTE SLOW;
DECLARE (I,J) BYTE SLOW;
DECLARE LC WORD SLOW;
DECLARE ADDR ADDRESS SLOW;
DECLARE TEMP ADDRESS SLOW;
DECLARE T BASED TEMP BYTE;
DO J=0 TO DY-1;
DO I=0 TO DX-1;
LC=(Y+J)*FS+X+I;
CALL SET$ADLH((LC MOD 256),(LC/256+GRH));
TEMP=ADDR+J*DX+I;
CHIND1: IF((P8279$CTRL AND 03H) <> 3)THEN GOTO CHIND1;
P8279$DATA=T;
CHINC: IF((P8279$CTRL AND 03H) <> 3)THEN GOTO CHINC;
P8279$CTRL=0C0H;
END;
END;
END OUT$BMP;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -