dos_compilers/Digital Research CB-86 v2/DEMOSCRN.BAS
2024-06-30 11:56:20 -07:00

290 lines
8.9 KiB
QBasic
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

\ ********************************************
\ * 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