\ ******************************************** \ * TEST PROGRAM FOR PC DOS SCREEN CONTROL * \ ******************************************** \ * This program was written and tested by * \ * Digital Research Technical Support * \ ******************************************** integer ROW, COL, RET, I, J string PAD, SP, TL %include PCSCRN.DEF TL = string$(8,"0123456789") PAD = string$(76,chr$(1)) SP = string$(60," ") def PRTCTR (S$,ROW) integer PRTCTR, ROW, COL COL = int%((79-len(S$))/2) call setcur(ROW,COL) : print S$; fend def TST.OK (TEST) integer TST.OK, TEST string YN, ERR.TST YN = ucase$(chr$(inkey)) if YN <> "N" then return on TEST goto 1,2,3,4,5,6,7,8,9,10,11,12,13 1: ERR.TST = "CLEAR SCREEN" : goto EXIT 2: ERR.TST = "HOME CURSOR" : goto EXIT 3: ERR.TST = "ERASE TO END OF LINE" : goto EXIT 4: ERR.TST = "ERASE TO END OF SCREEN" : goto EXIT 5: ERR.TST = "SET CURSOR POSITION" : goto EXIT 6: ERR.TST = "GET CURRENT CURSOR POSITION" : goto EXIT 7: ERR.TST = "MOVE CURSOR UP ONE LINE" : goto EXIT 8: ERR.TST = "MOVE CURSOR DOWN ONE LINE" : goto EXIT 9: ERR.TST = "MOVE CURSOR RIGHT ONE COLUMN" : goto EXIT 10: ERR.TST = "MOVE CURSOR LEFT ONE COLUMN" : goto EXIT 11: ERR.TST = "ADD NEW LINE AND SCROLL SCREEN DOWN" : goto EXIT 12: ERR.TST = "PRINT STRING IN REVERSE VIDEO MODE" : goto EXIT 13: ERR.TST = "PRINT STRING IN BLINKING VIDEO MODE" : goto EXIT EXIT: call cls call prtctr("====> ABNORMAL TERMINATION <=====",10) call setcur(12,10) print using "TEST: [&] failed";ERR.TST call setcur(23,0) : stop fend def PRT.ROW.NUM(I) integer I string L L = str$(I) call setcur(I,0) : print using "//: ";L; fend def BLK.FILL integer BLK.FILL, I string L call cls : print TL; for I = 1 to 23 call prt.row.num(I) print PAD; next I fend \ ************************************ \ * (1) TEST CLEAR SCREEN FUNCTION * \ ************************************ call BLK.FILL : TMP1$ = " Test CLEAR SCREEN Function " TMP2$ = " press any key " COL = int%((79-len(TMP1$))/2) call setcur(11,COL) : call prtblnk(TMP1$) call setcur(13,COL) : call prtrev(TMP2$) I = inkey call cls call prtctr(" Well, did it clear the screen? ",11) call TST.OK(1) \ ************************************ \ * (2) TEST HOME CURSOR FUNCTION * \ ************************************ TMP1$ = " HOME CURSOR TEST " call setcur(11,10) : print SP; COL = int%((79-len(TMP1$))/2) call setcur(11,COL) : call prtrev(TMP1$) call HOME print " <=== Is the cursor at Row 0, Column 0 ?"; call HOME call TST.OK(2) \ *********************************** \ * (3) TEST ERASE TO END OF LINE * \ *********************************** TMP1$ = " ERASE TO END OF LINE " call BLK.FILL COL = int%((79-len(TMP1$))/2) call setcur(2,COL) : call prtblnk(TMP1$) call setcur(10,4) : call eraeol call setcur(11,4) : print \ "Is the above line erased except for column # ? "; call TST.OK(3) \ ************************************* \ * (4) TEST ERASE TO END OF SCREEN * \ ************************************* TMP1$ = " ERASE NEXT LINE TO END OF SCREEN " COL = int%((79-len(TMP1$))/2) call BLK.FILL call setcur(2,COL) : call prtblnk(TMP1$) call setcur(10,5) : print \ " ===> hit any key to erase <=== "; I = inkey : call eraeos print "....OK ? "; : call TST.OK(4) \ ********************************** \ * (5) TEST SET CURSOR POSITION * \ ********************************** TMP1$ = " SET CURSOR POSITION " COL = int%((79-len(TMP1$))/2) call BLK.FILL call setcur(2,COL) : call prtblnk(TMP1$) call setcur(9,0) : call prtrev(TL) call setcur(10,6) : print \ " This message should begin with a space at Row 10, Col 6 "; call TST.OK(5) \ ****************************************** \ * (6) TEST GET CURRENT CURSOR POSITION * \ ****************************************** TMP1$ = " GET CURRENT CURSOR POSITION " COL = int%((79-len(TMP1$))/2) call BLK.FILL : COLS% = COL call setcur(2,COL) : call prtblnk(TMP1$) call setcur(11,0) : call prtrev(TL) call setcur(12,15) print " Hit any key to get current cursor position "; I = inkey : RET = getpos ROW = ret/256 : COL = ret-row*256 call cls print TL; for I = 1 to 23 call prt.row.num(I) next I call setcur(2,COLS%) : call prtrev(TMP1$) call setcur(5,10) : print "ROW =";ROW call setcur(7,10) : print "COLUMN =";COL call setcur(9,10) print "Is the above = ROW 12 COLUMN 60 ? "; call TST.OK(6) \ ********************************* \ * (7) TEST CURSOR UP FUNCTION * \ ********************************* TMP1$ = " UP CURSOR COMMAND " COL = int%((79-len(TMP1$))/2) call BLK.FILL call setcur(2,COL) : call prtblnk(TMP1$) call setcur(5,10) : print \ " This test will print a space on Row 10, Column 10 "; call setcur(6,10) : print \ " It will then issue the UP CURSOR command "; I = inkey call setcur(11,0) : call prtrev(TL) call setcur(10,10) : print " "; : call UPCUR : print \ " This line should start with a space on Row 9, Column 11 "; call TST.OK(7) \ *********************************** \ * (8) TEST CURSOR DOWN FUNCTION * \ *********************************** TMP1$ = " DOWN CURSOR COMMAND " COL = int%((79-len(TMP1$))/2) call BLK.FILL call setcur(2,COL) : call prtblnk(TMP1$) call setcur(5,10) : print \ " This test will print a space on Row 10, Column 10 "; call setcur(6,10) : print \ " It will then issue the DOWN CURSOR command "; I = inkey call setcur(9,0) : call prtrev(TL) call setcur(10,10) : print " "; : call DWNCUR : print \ " This line should start with a space on Row 11, Column 11 "; call TST.OK(8) \ ********************************************* \ * (9) TEST MOVING CURSOR RIGHT ONE COLUMN * \ ********************************************* TMP1$ = " MOVE CURSOR RIGHT ONE COLUMN " COL = int%((79-len(TMP1$))/2) call BLK.FILL call setcur(2,COL) : call prtblnk(TMP1$) call setcur(5,10) : print \ " This test will print a space on Row 10, Column 10 "; call setcur(6,10) : print \ " It will then issue the CURSOR RIGHT command "; I = inkey call setcur(9,0) : call prtrev(TL) call setcur(10,10) : print " "; : call CUR.RT : print \ "This line will start on Row 10, Column 12 if OK "; call TST.OK(9) \ ******************************************** \ * (10) TEST MOVING CURSOR LEFT ONE COLUMN * \ ******************************************** TMP1$ = " MOVE CURSOR LEFT ONE COLUMN " COL = int%((79-len(TMP1$))/2) call BLK.FILL call setcur(2,COL) : call prtblnk(TMP1$) call setcur(5,10) : print \ " This test will print a space on Row 10, Column 10 "; call setcur(6,10) : print \ " It will then issue the CURSOR LEFT command "; I = inkey : call setcur(9,0) : call prtrev(TL) call setcur(10,10) : print " "; : call CUR.LT : print \ "This line will start on Row 10, Column 10 if OK "; call TST.OK(10) \ ************************************************* \ * (11) TEST ADDING ONE LINE AND SCROLLING DOWN * \ ************************************************* TMP1$ = " ADD LINE " COL = int%((79-len(TMP1$))/2) call BLK.FILL call setcur(2,COL) : call prtblnk(TMP1$) call setcur(5,10) : print \ " This test will go to Row 10 and Insert a New Line "; call setcur(6,10) : print \ " The 10th line and below will be scrolled down "; I = inkey call setcur(10,0) : call ADDLINE call prtctr("Is this message on new line",getpos/256) call TST.OK(11) \ **************************************************** \ * (12) TEST PRINTING STRING IN REVERSE VIDEO MODE * \ **************************************************** call BLK.FILL : call setcur(10,4) : call ADDLINE TMP1$ = " IS THIS IN REVERSE VIDEO " COL = int%((79-len(TMP1$))/2) call setcur(10,COL) : call prtrev(TMP1$) call TST.OK(12) \ ***************************************************** \ * (13) TEST PRINTING STRING IN BLINKING VIDEO MODE * \ ***************************************************** call BLK.FILL : call setcur(10,5) : call ADDLINE call setcur(10,30) : call PRTBLNK("IS THIS BLINKING") call TST.OK(13) DS$ = " ***************************************" MSG$ = "====> T E S T C O M P L E T E <====" call cls H$ = chr$(6) HL$ = string$(78,H$) call setcur(1,1) : call prtblnk(HL$) for I = 2 to 21 call setcur(I,1) : call prtblnk(H$) call setcur(I,78) : call prtblnk(H$) next I call setcur(22,1) : call prtblnk(HL$) call setcur(2,2) : print left$(HL$,76); for I = 3 to 20 call setcur(I,2) : print H$; call setcur(I,77) : print H$; next I call setcur(21,2) : print left$(HL$,76); call prtctr(DS$,9) COL = int%((79-len(MSG$))/2) call setcur(10,COL) : call prtrev(MSG$) call prtctr(DS$,11) call setcur(23,0) stop end