📄 t6963lcd.p96
字号:
DECLARE FS LITERALLY '30'; /*columns=40/30(FS-->H/L)*/
DECLARE GRH LITERALLY '08'; /*GRAPHIC START ADDRESS HIGH BYTE*/
OUT$TEXT$8x16: PROCEDURE(X,Y,PRT$TEXT,C) PUBLIC;
DECLARE (X,Y,C,XX) BYTE ;
DECLARE (J,L) BYTE ;
DECLARE LC WORD ;
DECLARE PRT$TEXT ADDRESS SLOW;
DECLARE TEMP ADDRESS SLOW;
DECLARE T BASED TEMP BYTE;
IF(X<0) THEN X = 0;
IF(X>(FS-1)) THEN
DO;
Y= Y + X/FS;
X= X MOD FS;
END;
IF(Y<0) THEN Y = 0;
IF(Y>14) THEN Y = Y MOD 15;
DO J=0 TO 15;
LC=(Y*8+J)*FS+X;
CALL SET$ADLH((LC MOD 256),(LC/256+GRH));
TEMP=PRT$TEXT+J;
CHIND1: IF((P8279$CTRL AND 03H) <> 3)THEN GOTO CHIND1;
DO CASE C;
P8279$DATA=T;
DO;
XX=T;
TEMP=NOT XX;
P8279$DATA=TEMP;
END;
END;
CHINC: IF((P8279$CTRL AND 03H) <> 3)THEN GOTO CHINC;
P8279$CTRL=0C0H;
END;
END OUT$TEXT$8x16;
OUT$BIN$BYTE: PROCEDURE(X,Y,NUM) PUBLIC;
DECLARE (X,Y,NUM,I) BYTE SLOW;
DO I= 0 TO 7;
CALL OUT$TEXT$8x16(X+(7-I),Y,(.NUM0$8 + (NUM MOD 2) * 16),0);
NUM=NUM/2;
END;
END OUT$BIN$BYTE;
OUT$BYTE:PROCEDURE(X,Y,ZZ) PUBLIC;
DECLARE (X,Y,ZZ) BYTE;
DECLARE YY BYTE;
YY = (ZZ/100) MOD 10;
CALL OUT$TEXT8X16(X,Y,.NUM0$8 + YY * 16,0);
YY = (ZZ/10) MOD 10;
CALL OUT$TEXT8X16(X+1,Y,.NUM0$8 + YY * 16,0);
YY = ZZ MOD 10;
CALL OUT$TEXT8X16(X+2,Y,.NUM0$8 + YY * 16,0);
END OUT$BYTE;
OUT$WORD:PROCEDURE(X,Y,ZZ) PUBLIC;
DECLARE (X,Y,YY) BYTE;
DECLARE ZZ WORD;
YY = (ZZ/10000) MOD 10;
CALL OUT$TEXT8X16(X,Y,.NUM0$8 + YY * 16,0);
YY = (ZZ/1000) MOD 10;
CALL OUT$TEXT8X16(X+1,Y,.NUM0$8 + YY * 16,0);
YY = (ZZ/100) MOD 10;
CALL OUT$TEXT8X16(X+2,Y,.NUM0$8 + YY * 16,0);
YY = (ZZ/10) MOD 10;
CALL OUT$TEXT8X16(X+3,Y,.NUM0$8 + YY * 16,0);
YY = ZZ MOD 10;
CALL OUT$TEXT8X16(X+4,Y,.NUM0$8 + YY * 16,0);
END OUT$WORD;
OUT$NUM$BIN$BYTE: PROCEDURE(X,Y,NUM) PUBLIC;
DECLARE (X,Y,NUM,I) BYTE SLOW;
DO I= 0 TO 7;
CALL OUT$TEXT$8x16(X+(7-I),Y,(.NUM0$8 + (NUM MOD 2) * 16),0);
NUM=NUM/2;
END;
END OUT$NUM$BIN$BYTE;
OUT$NUM$BIN$WORD: PROCEDURE(X,Y,NUM,J) PUBLIC;
DECLARE (X,Y,I,J) BYTE SLOW;
DECLARE NUM WORD SLOW;
DO I= 0 TO J-1;
CALL OUT$TEXT$8x16((X+J-1-I),Y,.NUM0$8 + (NUM MOD 2) * 16,0);
NUM=NUM/2;
END;
END OUT$NUM$BIN$WORD;
OUT$NUM$DWORD: PROCEDURE(X,Y,NUM) PUBLIC;
DECLARE (X,Y,I,J) BYTE ;
DECLARE NUM DWORD ;
DECLARE LL WORD ;
IF(NUM<=65535) THEN
DO;
IF(NUM<=255) THEN J=2;ELSE J=4;
END;
ELSE J=9;
DO I= 0 TO J;
IF((NUM=0) AND (I<>0))THEN
LL=.SPACE$16;
ELSE
LL= .NUM0$8 + (NUM MOD 10) * 16;
CALL OUT$TEXT$8x16(X+(J-I),Y,LL,0);
NUM=NUM/10;
END;
END OUT$NUM$DWORD;
OUT$NUM$LONGINT: PROCEDURE(X,Y,NUM) PUBLIC;
DECLARE (J,X,Y,I,FLAG) BYTE SLOW;
DECLARE NUM LONGINT SLOW;
DECLARE TEMP DWORD SLOW;
DECLARE LL WORD SLOW;
IF(NUM>=-32768 AND NUM<=32767) THEN
DO;
IF(NUM>=-128 AND NUM<=127) THEN J=3;ELSE J=5;
END;
ELSE J=10;
TEMP=UNSIGN(IABS(NUM));
FLAG=0;
DO I= 0 TO J;
IF((TEMP=0) AND (I<>0))THEN
IF((FLAG=0) AND (NUM<0)) THEN
DO;
LL=.NUM0$8;
FLAG=1;
END;
ELSE
LL=.SPACE$16;
ELSE
LL= .NUM0$8 + (TEMP MOD 10) * 16;
CALL OUT$TEXT$8x16(X+(J-I),Y,LL,0);
TEMP=TEMP/10;
END;
END OUT$NUM$LONGINT;
OUT$TEXT$8x8: PROCEDURE(X,Y,PRT$TEXT,C) PUBLIC;
DECLARE (X,Y,C,XX) BYTE SLOW;
DECLARE (J,L) 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-1)) THEN
DO;
Y= Y + X/FS;
X= X MOD FS;
END;
IF(Y<0) THEN Y = 0;
IF(Y>14) THEN Y = Y MOD 15;
*/
DO J=0 TO 7;
LC=(Y*8+J)*FS+X;
CALL SET$ADLH((LC MOD 256),(LC/256+GRH));
TEMP=PRT$TEXT+J;
CHIND1: IF((P8279$CTRL AND 03H) <> 3)THEN GOTO CHIND1;
DO CASE C;
P8279$DATA=T;
DO;
XX=T;
TEMP=NOT XX;
P8279$DATA=TEMP;
END;
END;
CHINC: IF((P8279$CTRL AND 03H) <> 3)THEN GOTO CHINC;
P8279$CTRL=0C0H;
END;
END OUT$TEXT$8x8;
INITWSLCD: PROCEDURE PUBLIC;
C1: IF((P8279$CTRL AND 03H) <> 3)THEN GOTO C1;
P8279$CTRL=80H;/*字符 OR 图形*/
C2D1: IF((P8279$CTRL AND 03H) <> 3)THEN GOTO C2D1;
P8279$DATA=0;
C2D2: IF((P8279$CTRL AND 03H) <> 3)THEN GOTO C2D2;
P8279$DATA=0;
C2: IF((P8279$CTRL AND 03H) <> 3)THEN GOTO C2;
P8279$CTRL=40H;/*字符 START SETUP*/
C3D1: IF((P8279$CTRL AND 03H) <> 3)THEN GOTO C3D1;
P8279$DATA=FS;
C3D2: IF((P8279$CTRL AND 03H) <> 3)THEN GOTO C3D2;
P8279$DATA=0;
C3: IF((P8279$CTRL AND 03H) <> 3)THEN GOTO C3;
P8279$CTRL=41H;/*COLUMNS SETUP*/
C4D1: IF((P8279$CTRL AND 03H) <> 3)THEN GOTO C4D1;
P8279$DATA=0;
C4D2: IF((P8279$CTRL AND 03H) <> 3)THEN GOTO C4D2;
P8279$DATA=GRH;
C4: IF((P8279$CTRL AND 03H) <> 3)THEN GOTO C4;
P8279$CTRL=42H;/*图形 START SETUP*/
C5D1: IF((P8279$CTRL AND 03H) <> 3)THEN GOTO C5D1;
P8279$DATA=FS;
C5D2: IF((P8279$CTRL AND 03H) <> 3)THEN GOTO C5D2;
P8279$DATA=0H;
C5: IF((P8279$CTRL AND 03H) <> 3)THEN GOTO C5;
P8279$CTRL=43H;/*图形区域 SETUP*/
C6: IF((P8279$CTRL AND 03H) <> 3)THEN GOTO C6;
P8279$CTRL=9FH;/*图形 START SETUP*/
CALL CLS$LCD$TEXT;
CALL CLS$LCD$GRAPHIC;
END INITWSLCD;
CLS$LCD$TEXT: PROCEDURE PUBLIC;
DECLARE I WORD SLOW;
CALL SET$ADLH(0,0);
CALL AUTO$WR$START;
DO I=1 TO FS*16;
CLSD: IF((P8279$CTRL AND 08H) <> 8)THEN GOTO CLSD;
P8279$DATA=0;
END;
CALL AUTO$EXIT;
END CLS$LCD$TEXT;
SET$ADLH: PROCEDURE(LOW,HIGH) PUBLIC;
DECLARE (LOW,HIGH) BYTE SLOW;
SC1D1: IF((P8279$CTRL AND 03H) <> 3)THEN GOTO SC1D1;
P8279$DATA=LOW;
SC1D2: IF((P8279$CTRL AND 03H) <> 3)THEN GOTO SC1D2;
P8279$DATA=HIGH;
SC1: IF((P8279$CTRL AND 03H) <> 3)THEN GOTO SC1;
P8279$CTRL=024H;
END SET$ADLH;
AUTO$WR$START: PROCEDURE PUBLIC;
AWST: IF((P8279$CTRL AND 03H) <> 3)THEN GOTO AWST;
P8279$CTRL=0B0H;
END AUTO$WR$START;
AUTO$READ$START: PROCEDURE PUBLIC;
ARST: IF((P8279$CTRL AND 03H) <> 3)THEN GOTO ARST;
P8279$CTRL=0B1H;
END AUTO$READ$START;
AUTO$EXIT: PROCEDURE PUBLIC;
AEX: IF((P8279$CTRL AND 03H) <> 3)THEN GOTO AEX;
P8279$CTRL=0B2H;
END AUTO$EXIT;
CLS$LCD$GRAPHIC: PROCEDURE PUBLIC;
DECLARE (I,J) WORD SLOW;
CALL SET$ADLH(0,GRH);
CALL AUTO$WR$START;
DO J=1 TO 8;
DO I=1 TO FS*16;
CLSG: IF((P8279$CTRL AND 08H) <> 8)THEN GOTO CLSG;
P8279$DATA=0H;
END;
END;
CALL AUTO$EXIT;
END CLS$LCD$GRAPHIC;
CLRCURSOR: PROCEDURE PUBLIC;
CALL CURSOR(40);
CALL OPEN$LCD(9CH);
END CLRCURSOR;
CURSOR: PROCEDURE (X) PUBLIC;
DECLARE (X) BYTE SLOW;
CALL CURSOR$AD(1+(X MOD 5)*6,4+(X/5)*2+1);
CALL OPEN$LCD(9FH);
CALL CURSOR$LINE(08H);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -