INTEGER*2 lesfil LOGICAL*1 gfil(12) INTEGER*2 count INTEGER*2 col INTEGER*2 lincnt INTEGER*2 second LOGICAL*1 input(2) LOGICAL*1 line(4) LOGICAL*1 char(7) LOGICAL*1 xlb(7) LOGICAL*1 cr LOGICAL*1 lf LOGICAL*1 cr1 LOGICAL*1 lf1 EQUIVALENCE (XLB,CHAR),(CR,LINE),(LF,LINE(2)),(CR1,LINE(3)) EQUIVALENCE (LF1,LINE(4)) C C THIS DEFINES THE INTERFACE TO THE SCREEN HANDLING ROUTINES AND C SHOULD BE INCLUDED IN THE SOURCE OF ANY PROGRAM USING THEM. C C THE COMMON AREA 'SCREEN' CONTAINS THE FOLLOWING VARIABLES: C C ADDBUF - ADDRESS OF BUFFER TO HOLD FORMATTING STRINGS C TOTBYT - LENGTH OF BUFFER C BYTCNT - NUMBER OF BYTES IN BUFFER ALREADY USED C COLNO - COLUMN NUMBER FOR CURSOR POSITIONING (1-N) C ROWNO - ROW NUMBER FOR CURSOR POSITIONING (1-N) C TABCNT - TAB STOP COUNT FOR TABBING C LINENO - LINE NUMBER FOR SCROLL AREA SETTING C OUT - FLAG TO CONTROL OUTPUT (1=OUTPUT THE STRING) C LUN - LUN FOR OUTPUT IF OUT=1 C INTEGER*2 ADDBUF,TOTBYT,BYTCNT INTEGER*2 COLNO,ROWNO,TABCNT,LINENO,OUT,LUN LOGICAL*1 BUFF(400) C COMMON /SCREEN/ ADDBUF,TOTBYT,BYTCNT,COLNO,ROWNO,TABCNT, 1 LINENO,OUT,LUN DATA XLB/'S','Y','S','T','I','M','E'/ OUT = 1 LUN = 5 TOTBYT = 400 CALL GETADR(ADDBUF,BUFF) !Set Up Address of Buffer cr = 27 lf = 73 cr1 = 27 lf1 = 73 call attach C C I N I T I A L D I S P L A Y C 10 call head call disp0 CALL BOX (8,8,9,50) call page2 rowno = 8 colno = 20 call curpos type 1001 1001 format ('+ ',$) count = 20 lincnt = 1 20 call reset call invon call dubwid rowno = 6 colno = count call curpos type 1000 1000 format ('+ ',$) rowno = 8 call curpos call dubhgt type 1010,char(lincnt) 1010 format ('+',$,A1) call invoff count = count + 2 lincnt = lincnt + 1 if (count .eq. 40) goto 30 call page2 rowno = 8 colno = count type 1000 call page1 count = count + 1 goto 20 30 call reset call font2 rowno = 10 colno = 20 call curpos type 1020 1020 format ('+aaa a a aaa aaa aaa aaa aaa',$) rowno = 11 call curpos type 1030 1030 format ('+a a a a a a a a a a ',$) rowno = 12 call curpos type 1040 1040 format ('+aaa aaa aaa a a a aaa aaa',$) rowno = 13 call curpos type 1050 1050 format ('+ a a a a a a a a ',$) rowno = 14 call curpos type 1060 1060 format ('+aaa a aaa aaa aaa a aaa',$) call disp12 call waitor (10) call reset C C M E N U D I S P L A Y C call head rowno = 4 colno = 5 call curpos type 1070 1070 format ('+A MARK 3 TERMINAL HAS TEN INDEPENDENT',$) rowno = 6 call curpos type 1080 1080 format ('+PROGRAMMABLE FUNCTION KEYS',$) rowno = 8 colno = 10 call curpos type 1090 1090 format ('+These may be used to cause your program to',$) rowno = 9 call curpos type 1100 1100 format ('+take special action such as to Skip Back a Field,',$) rowno = 10 call curpos type 1110 1110 format ('+Terminate the Current Record, etc.',$) C "Function key 1 is to restart this display" C output at line 9 column 10 using & C "from the beginning" C output at line 11 column 10 using & C "Function key 2 is to display an introduction" C output at line 12 column 10 using & C "to SYSTEL" C output at line 14 column 10 using & C "Function key 3 is to display a typical" C output at line 15 column 10 using & C "SYSTEL application" call waitor (10) C C P A G E O N E C call head call heada rowno = 4 colno = 5 call curpos type 1120 1120 format('+A MARK 3 TERMINAL MAY DISPLAY THE FOLLOWING', 1 ' CHARACTERISTICS',$) call waitor (1) rowno = 8 call curpos type 1130 1130 format ('+Attribute to',$) call invon colno = 25 call curpos type 1140 1140 format('+inverse video',$) call waitor (1) call reset rowno = 10 colno = 5 call curpos type 1150 1150 format ('+Attribute to',$) call blnkon colno = 25 call curpos type 1160 1160 format ('+blink',$) call waitor (1) call reset rowno = 12 colno = 5 call curpos type 1170 1170 format ('+Attribute to',$) call undron colno = 25 call curpos type 1180 1180 format ('+underscore',$) call waitor (1) call reset rowno = 14 colno = 5 call curpos type 1190 1190 format ('+Attribute to',$) call undron call blnkon colno = 25 call curpos type 1200 1200 format ('+blink and underscore',$) call waitor (1) call reset rowno = 16 colno = 5 call curpos type 1210 1210 format ('+Attribute to',$) call hlfint colno = 25 call curpos type 1220 1220 format ('+half intensity',$) call waitor (1) call reset rowno = 18 colno = 5 call curpos type 1230 1230 format ('+Attribute to',$) call undron call blnkon call hlfint colno = 25 call curpos type 1240 1240 format ('+blink,underscore and half intensity',$) call waitor (10) call reset C C P A G E T W O C call head call heada rowno = 6 colno = 5 call curpos type 1250 1250 format ('+Attribute to',$) call dubwid colno = 25 call curpos type 1260 1260 format ('+double width',$) call waitor (1) call reset rowno = 10 colno = 5 call curpos type 1270 1270 format ('+Attribute to',$) call dubhgt rowno = 10 colno = 25 call curpos type 1280 1280 format ('+double height',$) call waitor (1) call reset rowno = 14 colno = 5 call curpos type 1290 1290 format ('+Attribute to',$) call dubwid call dubhgt colno = 25 call curpos type 1300 1300 format ('+double height and width',$) call waitor (10) call reset C C P A G E T H R E E C call head call heada rowno = 4 colno = 5 type 1310 1310 format ('+THE CURSOR CAN BE DISPLAYED IN DIFFERENT FORMATS',$) call waitor (1) call cursr1 rowno = 10 call curpos type 1320 1320 format ('+Block cursor ',$) call font2 colno = 31 call curpos type 1330 1330 format ('+a',$) call waitor (1) call reset call cursr2 rowno = 12 colno = 5 call curpos type 1340 1340 format ('+Flashing block cursor ',$) call blnkon call font2 colno = 31 call curpos type 1350 1350 format ('+a',$) call waitor (1) call reset call cursr3 rowno = 14 colno = 5 call curpos type 1360 1360 format ('+Underscore ',$) colno = 31 call curpos type 1370 1370 format ('+_',$) call waitor (1) call cursr4 rowno = 16 colno = 5 call curpos type 1380 1380 format ('+Flashing underscore ',$) call blnkon colno = 31 call curpos type 1390 1390 format ('+_',$) call waitor (10) call reset C C P A G E F O U R C call head call heada rowno = 4 colno = 5 call curpos type 1400 1400 format ('+DIFFERENT FONT OPTIONS MAY BE SPECIFIED',$) call waitor (1) call font1 rowno = 7 call curpos type 1410 1410 format ('+ABCDEFGHIJKLMNOPQRSTUVWXYZ',$) rowno = 8 call curpos type 1420 1420 format ('+abcdefghijklmnopqrstuvwxyz',$) rowno = 7 colno = 45 call curpos type 1430 1430 format ('+THIS IS FONT 1',$) rowno = 8 call curpos type 1433 1433 format ('+FOR ORDINARY TEXT:-',$) colno = 5 rowno = 10 call curpos type 1440 1440 format ('+!#$%&''()0*-<>\/+[],.@^:=|?',$) rowno = 11 call curpos type 1450 1450 format ('+;{}~',$) colno = 45 rowno = 10 call curpos type 1436 1436 format ('+The Cat sat on the Mat.',$) rowno = 11 call curpos type 1438 1438 format ('+This deal is worth $2000.',$) call waitor (1) call font2 rowno = 14 colno = 5 call curpos type 1410 rowno = 15 call curpos type 1420 rowno = 14 colno = 45 call curpos type 1460 1460 format ('+THIS IS FONT 2',$) rowno = 15 call curpos type 1463 1463 format ('+FOR SPECIAL FORMULAE:-',$) colno = 5 rowno = 17 call curpos type 1440 rowno = 18 call curpos type 1450 colno = 45 rowno = 17 call curpos type 1465 1465 format ('+15dz j 2bv = 6bw',$) rowno = 18 call curpos type 1468 1468 format ('+HvO + SOw h HvSOx',$) call waitor(1) rowno = 20 colno = 45 call curpos type 1452 1452 format ('+OR COMBINE BOTH',$) rowno = 21 call curpos type 1454 1454 format ('+FOR PARTICULAR EFFECTS:-',$) rowno = 22 call curpos type 1456 1456 format ('+ v v v',$) call font1 rowno = 23 call curpos type 1458 1458 format ('+x + y = z',$) call waitor (10) call reset C C P A G E F I V E C call head CALL VLINE (2,30,23) CALL HLINE (9,1,29) CALL HLINE (17,1,29) call page2 rowno = 6 colno = 40 call curpos type 1470 1470 format ('+THE MARK 3 HAS THE FACILITY TO',$) rowno = 7 call curpos type 1480 1480 format ('+DEFINE MULTIPLE SCROLL AREAS.',$) call page1 call disp12 call waitor (3) lincnt = 1 lineno = 9 call scrbas lineno = 17 call scrbas 50 if (lincnt.eq.15) goto 60 rowno = 8 colno = 1 call curpos type 1490,lincnt 1490 format ('+first scroll area line ',I2,$) call newlin call newlin C C 2nd scroll loop C rowno = 16 call curpos type 1500,lincnt 1500 format ('+second scroll area line ',I2,$) call newlin call newlin C C 3rd scroll loop C rowno = 18 call curpos type 1510,lincnt,line(1),line(2) 1510 format ('+third scroll area line ',I2,2A1,$) call waitor(1) lincnt = lincnt + 1 goto 50 60 call waitor (10) call reset C C P A G E S E V E N C call head call heada rowno = 4 colno = 5 call curpos TYPE 1520 1520 format ('+A MARK 3 TERMINAL CAN BUILD A SCREEN',$) rowno = 6 call curpos type 1530 1530 format ('+DISPLAY IN TWO SEPARATE AREAS AND',$) rowno = 8 call curpos type 1540 1540 format ('+DISPLAY EITHER ONE OR BOTH SIMULTANEOUSLY',$) call waitor (4) call head call heada call page2 C output at line 24 column 10 using & C "FUNCTION KEY 1 WILL RESTART THE MARK 3 DISPLAY" call page1 call disp0 call dubwid call dubhgt rowno = 8 colno = 15 call curpos type 1550 1550 format ('+SYSTIME',$) rowno = 12 colno = 23 call curpos call dubwid call dubhgt type 1560 1560 format ('+MARK 3',$) rowno = 16 colno = 31 call curpos call dubwid call dubhgt type 1570 1570 format ('+V.D.U.',$) rowno = 17 colno = 1 call curpos call sngwid call snghgt CALL BOX (5,13,6,19) CALL BOX (9,20,6,19) CALL BOX (13,27,6,19) call page2 rowno = 9 colno = 31 call curpos type 1575 1575 format ('+n',$) rowno = 10 colno = 20 call curpos type 1575 rowno = 13 colno = 38 call curpos type 1575 rowno = 14 colno = 27 call curpos type 1575 count = 0 70 if (count.eq.2) goto 80 call disp0 call waitor (1) rowno = 3 colno = 1 call curpos call cllina rowno = 3 colno = 35 call curpos type 1580 1580 format ('+P A G E 1',$) call disp1 call waitor (3) call page2 rowno = 3 colno = 35 call curpos type 1590 1590 format ('+P A G E 2',$) call disp2 call waitor (3) rowno = 3 colno = 1 call curpos call cllina call page1 call curpos call cllina rowno = 3 colno = 35 call curpos type 1600 1600 format ('+B O T H P A G E S',$) call disp12 call waitor (3) count = count + 1 goto 70 80 call waitor (3) C C P A G E E I G H T C call head call heada rowno = 6 colno = 5 call curpos type 1610 1610 format ('+A MARK 3 SCREEN CAN BE CLEARED FROM',$) rowno = 8 call curpos type 1620 1620 format ('+ANY POINT ON THE SCREEN.',$) call waitor (3) 90 count = 10 lincnt = 10 100 rowno = lincnt colno = 20 call curpos type 1630 1630 format ('+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',$) lincnt = lincnt + 1 count = count - 1 if (count.ne.0) goto 100 110 call waitor (3) count = 0 lincnt = 18 col = 44 120 rowno = lincnt colno = col call curpos call clscnr call waitor (3) lincnt = lincnt - 2 col = col - 6 count = count + 1 if (count.ne.5) goto 120 C C P A G E N I N E C call head call heada call disp1 rowno = 6 colno = 5 call curpos type 1640 1640 format ('+A MARK 3 TERMINAL CAN ALLOW THE',$) rowno = 8 call curpos type 1650 1650 format ('+CONTENTS OF THE CURRENTLY DISPLAYED',$) rowno = 10 call curpos type 1660 1660 format ('+VDU PAGE TO BE PRINTED ON THE VDU ',$) rowno = 12 call curpos type 1670 1670 format ('+PRINTER.',$) call waitor (10) C call dmpscr rowno = 16 call curpos type 1680 1680 format ('+A MARK 3 TERMINAL HAS THE FACILITY',$) rowno = 18 call curpos type 1690 1690 format ('+TO SOUND A WARNING ALARM',$) call waitor (2) count = 5 130 call bell call waitor (1) count = count - 1 if (count.ne.0) goto 130 C C N I N E P A R T 2 C call head call heada rowno = 6 colno = 5 call curpos type 1700 1700 format ('+A MARK 3 TERMINAL HAS THE CAPABILITY',$) rowno = 7 call curpos type 1710 1710 format ('+TO DISPLAY GRAPHICAL INFORMATION',$) call waitor (1) CALL BOX (13,10,9,3) CALL BOX (18,13,4,3) CALL BOX (11,16,11,3) CALL BOX (20,19,2,3) CALL BOX (16,22,6,3) CALL BOX (14,25,8,3) CALL BOX (18,28,4,3) CALL BOX (12,31,10,3) CALL BOX (19,34,3,3) CALL BOX (16,37,6,3) CALL BOX (12,40,10,3) CALL BOX (15,43,7,3) CALL AXIS (22,9,-12,37) call disp12 call waitor (10) C C P A G E T E N C call head call heada rowno = 6 colno = 5 call curpos type 1720 1720 format ('+A MARK 3 TERMINAL HAS THE FACILITY',$) rowno = 8 call curpos type 1730 1730 format ('+TO SWITCH THE LIGHTS AT THE SIDE',$) rowno = 10 call curpos type 1740 1740 format ('+OF THE DISPLAY SCREEN ON OR OFF',$) count = 3 140 call led1on rowno = 6 colno = 75 call curpos type 1750 1750 format ('+---->',$) call waitor (1) call curpos call cllinr call led2on rowno = 9 call curpos type 1750 call waitor (1) call curpos call cllinr call led3on rowno = 12 call curpos type 1750 call waitor (1) call curpos call cllinr call led4on rowno = 15 call curpos type 1750 call waitor (1) call curpos call cllinr count = count - 1 if (count.ne.0) goto 140 call ledoff call waitor (2) goto 10 C call exit end Csysd: C invoke "SYSDI" Cpic: C invoke "MK3PIC" Cfu5: C goto next C exit C C C WAIT SUBROUTINE C ==== ========== C C C THIS SUBROUTINE IS USED TO WAIT FOR THE SPECIFIED NUMBER OF C SECONDS USING THE INPUT STATEMENT HENCE GIVING THE OPPOR- C TUNITY FOR THE 1ST FUNCTION KEY TO BE PRESSED PASSING CONTROL C TO THE FIRST INSTRUCTION OF THE PROGRAM. C C SUBROUTINE WAITOR(ISEC) C ============================ C INTEGER*2 IPRM(6),ISEC C LOGICAL*1 ZBUF C C C CALL GETADR(IPRM,ZBUF) C IPRM(2) = 1 C CALL MARK(1,2,ISEC) C CALL QIO("1000,5,1,,,IPRM) C CALL WAITFR(1) C CALL CANMT C CALL QIO("12,5) C RETURN C END C C C RESTARTING WHEN FUNCTION KEY PRESSED C CSTART: RESTART C END SUBROUTINE C C display f2 message subroutine C SUBROUTINE HEADA RETURN END C output at line 24 column 10 using & C "FUNCTION KEY 1 WILL RESTART THE MARK 3 DISPLAY" C return C end subroutine C C clear screen subroutine C subroutine head call page2 call clscna call page1 call clscna return end