home *** CD-ROM | disk | FTP | other *** search
- 1 ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 2 ' ADM-31 ONSCREEN EDITING AND CURSOR CONTROL UTILITY PROGRAM.
- 3 '
- 4 ' Version : 1.0
- 5 ' Composed: R. Berthet. C/O Channel 0/28 SYDNEY. Ph. 02-923-4801.
- 6 ' Date : 14/03/82
- 7 ' Language: BASIC
- 8 '
- 9 ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 10 '
- 11 ' This program is designed to be added to the top of a BASIC
- 12 ' program. Its aim is to save the agony of writing tedious
- 13 ' ESCAPE sequences for the terminals video attributes.
- 14 '
- 15 ' Following is a list of abbreviations of common words associated
- 16 ' with these attributes. The abbreviations are then used to form
- 17 ' STRING variable names for the ESCAPE sequences.
- 18 '
- 19 ' It is advisable to read the appropriate section of the ADM
- 20 ' Terminal Operators Manual to familiarise yourself with the
- 21 ' operation of the video attributes.
- 22 '
- 23 ' ABBREVIATIONS
- 24 '
- 25 ' ALL ALL LIN LINE
- 26 ' ALT ALTERNATE LD LOAD
- 27 ' B BOTTOM MOD MODE
- 28 ' BS BACKSPACE NL NEWLINE
- 29 ' BEL BELL NUL NULL
- 30 ' BLA BLANK OFF OFF
- 31 ' BLI BLINK ON ON
- 32 ' BOT BOTTOM PGM PROGRAM
- 33 ' CHR CHARACTER PRT PROTECT(ED)
- 34 ' CLR CLEAR RD READ
- 35 ' CSR CURSOR RES RESET
- 36 ' DEL DELETE RET RETURN
- 37 ' ERA ERASE REV REVERSE
- 38 ' ESC ESCAPE R RIGHT
- 39 ' FF FORMFEED SCR SCREEN
- 40 ' GRF GRAPH SPC SPACE(S)
- 41 ' HT HORIZONTAL TAB STD STANDARD
- 42 ' HOME HOME TP TOP
- 43 ' INS INSERT VT VERTICAL TAB
- 44 ' L LEFT VID VIDEO
- 45 ' LF LINEFEED WRT WRITE
- 46 '
- 47 '
- 48 ' ------ ADM-31 ASCII CONTROL CODES ------
- 49 '
- 50 ' ***************************************************************
- 51 ' FUNCTION NAME STRING NAME ASCII CODE
- 52 ' ***************************************************************
- 53 '
- 54 ' Bell
- 55 BEL$ = CHR$(7)
- 56 '
- 57 ' Back Space
- 58 BS$ = CHR$(8)
- 59 '
- 60 ' Horizontal Tab
- 61 HT$ = CHR$(9)
- 62 '
- 63 ' Line Feed
- 64 LF$ = CHR$(10)
- 65 '
- 66 ' Vertical Tab
- 67 VT$ = CHR$(11)
- 68 '
- 69 ' Form Feed
- 70 FF$ = CHR$(12)
- 71 '
- 72 ' Return
- 73 RET$ = CHR$(13)
- 74 '
- 75 ' Escape
- 76 ESC$ = CHR$(27)
- 77 '
- 78 ' Home
- 79 HOME$ = CHR$(30)
- 80 '
- 81 ' New Line
- 82 NL$ = CHR$(31)
- 83 ' Space
- 84 SP$ = CHR$(32)
- 85 '
- 86 '
- 87 ' ------ DYNAMIC VIDEO ATTRIBUTE CONTROL STRINGS ------
- 88 '
- 89 ' ***************************************************************
- 90 ' FUNCTION NAME STANDARD CHAR. GEN. ALT. CHAR. GEN.
- 91 ' ***************************************************************
- 92 '
- 93 ' Reset to Normal Video
- 94 RESSTDVID$ = ESC$+"G"+"0"
- 95 RESALTVID$ = ESC$+"G"+"0"
- 96 '
- 97 ' Limited Grahics Mode Enable
- 98 ALTGRF$ = ESC$+"G"+"8"
- 99 '
- 100 ' Blanking or Underlining of Area
- 101 BLASTD$ = ESC$+"G"+"1"
- 102 BLAALT$ = ESC$+"G"+"9"
- 103 '
- 104 ' Blinking of Area
- 105 BLISTD$ = ESC$+"G"+"2"
- 106 BLIALT$ = ESC$+"G"+"A"
- 107 '
- 108 ' Blanking or Underlining and Blinking of Area
- 109 BLABISTD$ = ESC$+"G"+"3"
- 110 BLABIALT$ = ESC$+"G"+"B"
- 111 '
- 112 ' Reversing of Area
- 113 REVSTD$ = ESC$+"G"+"4"
- 114 REVALT$ = ESC$+"G"+"C"
- 115 '
- 116 ' Blanking or Underlining and Reversing of Area
- 117 BLAREVSTD$ = ESC$+"G"+"5"
- 118 BLAREVALT$ = ESC$+"G"+"D"
- 119 '
- 120 ' Blinking and Reversing of Area
- 121 BLIREVSTD$ = ESC$+"G"+"6"
- 122 BLIREVALT$ = ESC$+"G"+"E"
- 123 '
- 124 ' Blanking or Underlining and Reversing of Area
- 125 BLAREVSTD$ = ESC$+"G"+"7"
- 126 BLAREVALT$ = ESC$+"G"+"F"
- 127 '
- 128 ' ------ DYNAMIC EDITING CONTROL STRINGS ------
- 129 '
- 130 ' ***************************************************************
- 131 ' OPERATION HOW TO EXECUTE DESCRIPTION
- 132 ' ***************************************************************
- 133 '
- 134 ' Clear Screen Clears to SPACES
- 135 CLRSCRN$ = ESC$+"+"
- 136 '
- 137 ' Clear all to NULL
- 138 CLRNUL$ = ESC$+"*"
- 139 '
- 140 ' Clear all to PROTECTED SPACES
- 141 CLRPRT$ = ESC$+","
- 142 '
- 143 ' Set Insert Mode(ON/OFF) See page 4-18
- 144 INSMODON$ = ESC$+"q"
- 145 INSMODOFF$ = ESC$+"r"
- 146 '
- 147 ' Character Insert(SPACE)
- 148 CHRINS$ = ESC$+"Q"
- 149 '
- 150 ' Character Delete
- 151 CHRDEL$ = ESC$+"W"
- 152 '
- 153 ' Line Insert
- 154 LININS$ = ESC$+"E"
- 155 '
- 156 ' Line Delete
- 157 LINDEL$ = ESC$+"R"
- 158 '
- 159 ' Line Erase
- 160 LINERA$ = ESC$+"T"
- 161 '
- 162 ' Line Erase to NULLS
- 163 LINERANUL$ = ESC$+"t"
- 164 '
- 165 ' Page Erase
- 166 PAGERA$ = ESC$+"Y"
- 167 '
- 168 ' Page Erase to NULLS
- 169 PAGERANUL$ = ESC$+"y"
- 170 '
- 171 ' Set Auto Page
- 172 SETAUTPAG$ = ESC$+"v"
- 173 '
- 174 ' Clear Auto Page
- 175 CLRAUTPAG$ = ESC$+"w"
- 176 '
- 177 ' Page Back
- 178 PAGBAK$ = ESC$+"J"
- 179 '
- 180 ' Page Forward
- 181 PAGFOR$ = ESC$+"K"
- 182 '
- 183 '**********************************************************************
- 184 '
- 185 ' ------------- SCREEN ADDRESSES -------------
- 186 '
- 187 LHS% = 1
- 188 RHS% = 80
- 189 TOP% = 1
- 190 BOTTOM% = 24
- 191 '
- 192 '**********************************************************************
- 193 '
- 194 ' Definition of CURSOR LOAD Function. i.e. Pushing the Cursor
- Around Onscreen.
- 195 DEF FNCSRLD$(ROW%,COLUMN%) = ESC$+"="+CHR$(ROW%+31)
- +CHR$(COLUMN%+31)
- 196 '
- 197 ' Definition of CURSOR READ Function. i.e. Finding Where the
- Cursor is On the Screen.
- 198 DEF FNCSRRD$(ROW%,COLUMN%) = ESC$+"?"+CHR$(ROW%+31)
- +CHR$(COLUMN%+31)
- 199 '
- 200 '
- 201 ' ------ FORMAT CONTROL OPERATION STRINGS ------
- 202 '
- 203 ' ***************************************************************
- 204 '
- 205 ' ***************************************************************
- 206 '
- 207 ' Program Mode On
- 208 PGMON$ = ESC$+"U"
- 209 '
- 210 ' Program Mode Off
- 211 PGMOFF$ = ESC$+"X"
- 212 '
- 213 ' Write Protect Mode On
- 214 WRTPRTON$ = ESC$+")"
- 215 '
- 216 ' Write Protect Mode Off
- 217 WRTPRTOFF$ = ESC$+"("
- 218 '
- 219 ' Protect Mode On
- 220 PRTON$ = ESC$+"&"
- 221 '
- 222 ' Protect Mode Off
- 223 PRTOFF$ = ESC$+"'"
- 224 '
- 225 ' Terminal Reset
- 226 TERMRESET$ = ESC$+"o"+"!"
- 1000 '**********************************************************************
- 1001 '
- 1002 ' THE CLOCK PROGRAM
- 1003 ' -----------------
- 1004 ' BY: Richard Berthet
- 1005 ' 15/5 Cottonwood Cr.
- 1006 ' North Ryde. 2113.
- 1007 ' W:(02)-923-4801 H:(02)-88-1640.
- 1008 ' Thanks to Bill Bolton for the SYSTEM SUPPORT 1 CLOCK ROUTINES.
- 1009 '
- 1010 DIM DIGIT$(10,6),TOD(5),DOY(5),LASTIME%(5),COLOFFSET%(6)
- 1020 '
- 1030 FOR DIGIT% = 0 TO 9
- 1040 FOR SEG% = 1 TO 6
- 1050 READ DIGIT$(DIGIT%,SEG%)
- 1060 NEXT SEG%
- 1070 NEXT DIGIT%
- 1080 '
- 1090 '----------------------------------------------------------------------
- 1100 PRINT CLRSCRN$
- 1110 PRINTLINE$ = "------- THE CLOCK PROGRAM -------"
- 1120 GOSUB 2450 '[2] CENTRE LINE
- 1130 PRINT FNCSRLD$(TOP%,LINECOL%);
- PRINTLINE$
- 1150 PRINT FNCSRLD$(TOP%+9,LHS%);
- 1160 INPUT "Do you want the BELL on(Y/N)?. Just remember it'll probably drive you mad.";BEEP$
- 1170 '----------------------------------------------------------------------
- 1180 '
- 1190 ' Column Offsets for the Digits.
- 1200 '
- 1210 COLOFFSET%(0) = RHS%-21 'SECONDS UNITS
- 1220 COLOFFSET%(1) = COLOFFSET%(0)-7 'SECONDS TENS
- 1230 COLOFFSET%(2) = COLOFFSET%(0)-18 'MINUTES UNITS
- 1240 COLOFFSET%(3) = COLOFFSET%(0)-25 'MINUTES TENS
- 1250 COLOFFSET%(4) = COLOFFSET%(0)-36 'HOURS UNITS
- 1260 COLOFFSET%(5) = COLOFFSET%(0)-43 'HOURS TENS
- 1270 '
- 1280 STARTROW% = TOP%+8 '1st of DIGIT ROWS
- 1290 '
- 1300 '----------------------------------------------------------------------
- 1310 IF BEEP$ <> "Y" THEN BEL$ = CHR$(0)
- 1320 PRINT CLRSCRN$
- 1330 PRINT FNCSRLD$(TOP%,10);"THE 0/28 ENGINEERING TIME IS............."
- 1340 PRINTLINE$ = "CONTROL C to ESCAPE"
- 1350 GOSUB 2450 '[2] CENTRE LINE
- 1360 PRINT FNCSRLD$(BOTTOM%-1,LINECOL%)
- PRINTLINE$
- 1370 GOSUB 1890
- 1380 '----------------------------------------------------------------------
- 1390 ' DRAW THE SURROUND BOX
- 1400 PRINT WRTPRTON$;
- 1410 START% = COLOFFSET%(5)-1
- 1420 FINISH% = COLOFFSET%(0)+6
- 1430 FOR LOOP% = START% TO FINISH%
- 1440 PRINT FNCSRLD$(STARTROW%-1,LOOP%);
- "-";
- 1450 PRINT FNCSRLD$(STARTROW%+8,LOOP%);
- "-";
- 1460 NEXT LOOP%
- 1470 FOR LOOP% = (STARTROW%+1) TO (STARTROW%+6)
- 1480 COUNTER% = COLOFFSET%(5)-3
- 1490 FOR LOOP2% = 1 TO 4
- 1500 PRINT FNCSRLD$(LOOP%,COUNTER%);
- "|";
- 1510 COUNTER% = COUNTER%+18
- 1520 NEXT LOOP2%
- 1530 NEXT LOOP%
- 1540 PRINT WRTPRTOFF$
- 1550 '----------------------------------------------------------------------
- 1560 CHANGE% = 0
- 1570 FOR DISPLAY% = 1 TO 6
- 1580 GOSUB 2530 '[3] PRINT DIGIT
- 1590 CHANGE% = CHANGE%+1
- 1600 '
- 1610 NEXT DISPLAY%
- 1620 FOREVER = 1
- 1630 WHILE FOREVER
- 1640 K$ = INKEY$
- 1650 IF K$ = CHR$(3)
- THEN
- FOREVER = 0
- 1660 GOSUB 1890
- 1670 '
- 1680 CHANGE% = 0
- 1690 GOSUB 2530 '[3] PRINT DIGIT
- 1700 FOR LOOP% = 1 TO 5
- 1710 '
- 1720 IF TOD(LOOP%) = LASTIME%(LOOP%)
- THEN
- 1750
- 1730 CHANGE% = LOOP%
- 1740 GOSUB 2530 '[3] PRINT DIGIT
- 1750 NEXT LOOP%
- 1760 PRINT BEL$+HOME$
- 1770 OUT CMDPORT,(&H10) 'SET UP FOR CLOCK READ OF SECONDS
- 1780 WHILE TOD(0) = INP(DATAPORT)
- 1790 WEND 'LOOP UNTIL SECONDS CHANGE
- 1800 FOR LOOP% = 1 TO 5
- 1810 LASTIME%(LOOP%) = TOD(LOOP%)
- 1820 NEXT LOOP%
- 1830 WEND
- 1840 PRINTLINE$ = "Exiting to CP/M"
- 1850 GOSUB 2450 '[2] CENTRE LINE
- 1860 PRINT FNCSRLD$(BOTTOM%-1,LHS%);
- LINERA$
- 1870 PRINT FNCSRLD$(BOTTOM%-1,LINECOL%);
- PRINTLINE$
- 1880 END
- 1890 '******************************************************************
- 1900 '* *
- 1910 '* SYSTEM SUPPORT 1 BOARD CLOCK SUBROUTINES *
- 1920 '* BY BILL BOLTON *
- 1930 '* VERSION 1.0 JAN 17,1982 INITIAL RELEASE *
- 1940 '* *
- 1950 '* VARIABLES USED IN THESE ROUTINES *
- 1960 '* IN APPROXIMATE ORDER OF APPEARANCE *
- 1970 '* *
- 1980 '*TOD STORAGE ARRAY FOR TIME OF DAY (TOD) DIGITS *
- 1990 '*DOY STORAGE ARRAY FOR DAY OF YEAR (DOY) DIGITS *
- 2000 '*BASEPORT SYSTEM SUPPORT 1 BOARD BASE PORT ADDRESS *
- 2010 '*CMDPORT SS1 CLOCK COMMAND PORT ADDRESS *
- 2020 '*DATAPORT SS1 CLOCK DATA PORT ADDRESS *
- 2030 '*HOURS10 TENS OF HOURS DIGIT *
- 2040 '*HOURS1 UNIT HOURS DIGIT *
- 2050 '*MINUTES10 TENS OF MINUTES DIGIT *
- 2060 '*MINUTES1 UNIT MINUTES DIGIT *
- 2070 '*SECONDS10 TENS OF SECONDS DIGIT *
- 2080 '*SECONDS1 UNIT SECONDS DIGIT *
- 2090 '*TIME$ TIME OF DAY STRING IN HH:MM:SS FORMAT *
- 2100 '*WEEKDAY DAY OF WEEK DIGIT *
- 2110 '*WDAY$ DAY OF WEEK NAME STRING *
- 2120 '*YEAR YEAR INTEGER *
- 2130 '*MONTH10 TENS OF MONTHS DIGIT *
- 2140 '*MONTH1 UNIT MONTHS DIGIT *
- 2150 '*DAY10 TENS OF DAYS DIGIT *
- 2160 '*DAY1 UNIT DAYS DIGIT *
- 2170 '*DATE1$ DATE STRING IN DD/MM/YY FORMAT *
- 2180 '*MONTH MONTH INTEGER *
- 2190 '*DATE2$ DATE STRING IN MONTH DD,19YY FORMAT *
- 2200 '*TDAY$ TEMPORARY DAY STRING *
- 2210 '* *
- 2220 '* ###### NOTE ###### *
- 2230 '* *
- 2240 '* THE FOLLOWING ARRAYS MUST BE DIMENSIONED IN THE MAIN BODY *
- 2250 '* THE PROGRAM CALLING THESE SUBROUTINES *
- 2260 '* *
- 2270 '* DIM TOD(5) *
- 2280 '* DIM DOY(5) *
- 2290 '* *
- 2300 '******************************************************************
- 2310 BASEPORT = &H50
- 2320 CMDPORT = BASEPORT + 10
- 2330 DATAPORT = CMDPORT + 1
- 2340 '**********************************************************
- 2350 '* READ THE TIME DIGITS *
- 2360 '**********************************************************
- 2370 FOR DIGIT = 5 TO 0 STEP -1
- 2380 OUT CMDPORT,(&H10 + DIGIT)
- 2390 TOD(DIGIT) = INP(DATAPORT)
- 2400 IF DIGIT = 5 THEN TOD(DIGIT) = TOD(DIGIT) AND 3
- 2410 NEXT DIGIT
- 2420 RETURN
- 2430 '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 2440 '
- 2450 ' Subroutine [2]: LINE CENTERING
- 2460 '
- 2470 NUMOFCHAR% = LEN(PRINTLINE$)
- 2480 LINECOL% = (RHS%-NUMOFCHAR%)/2
- 2490 RETURN
- 2500 '
- 2510 '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 2520 '
- 2530 ' Subroutine [3]: PRINT DIGIT
- 2540 '
- 2550 '
- 2560 FOR SEG% = 1 TO 6
- 2570 PRINT FNCSRLD$(STARTROW%+SEG%,COLOFFSET%(CHANGE%));
- DIGIT$(TOD(CHANGE%),SEG%);
- 2580 NEXT SEG%
- 2590 PRINT HOME$
- 2600 RETURN
- 2610 '
- 2620 '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 2630 DATA " *** "
- 2640 DATA "* * "
- 2650 DATA "* * "
- 2660 DATA "* * "
- 2670 DATA "* * "
- 2680 DATA " *** "
- 2690 '
- 2700 DATA " * "
- 2710 DATA " ** "
- 2720 DATA " * "
- 2730 DATA " * "
- 2740 DATA " * "
- 2750 DATA " *** "
- 2760 '
- 2770 DATA " *** "
- 2780 DATA "* * "
- 2790 DATA " * "
- 2800 DATA " * "
- 2810 DATA " * "
- 2820 DATA "***** "
- 2830 '
- 2840 DATA "**** "
- 2850 DATA " * "
- 2860 DATA " ** "
- 2870 DATA " * "
- 2880 DATA "* * "
- 2890 DATA " *** "
- 2900 '
- 2910 DATA " * "
- 2920 DATA " ** "
- 2930 DATA " * * "
- 2940 DATA "* * "
- 2950 DATA "***** "
- 2960 DATA " * "
- 2970 '
- 2980 DATA "***** "
- 2990 DATA "* "
- 3000 DATA "**** "
- 3010 DATA " * "
- 3020 DATA " * "
- 3030 DATA "**** "
- 3040 '
- 3050 DATA " *** "
- 3060 DATA "* "
- 3070 DATA "**** "
- 3080 DATA "* * "
- 3090 DATA "* * "
- 3100 DATA " *** "
- 3110 '
- 3120 DATA "***** "
- 3130 DATA " * "
- 3140 DATA " * "
- 3150 DATA " * "
- 3160 DATA " * "
- 3170 DATA " * "
- 3180 '
- 3190 DATA " *** "
- 3200 DATA "* * "
- 3210 DATA " *** "
- 3220 DATA "* * "
- 3230 DATA "* * "
- 3240 DATA " *** "
- 3250 '
- 3260 DATA " *** "
- 3270 DATA "* * "
- 3280 DATA " **** "
- 3290 DATA " * "
- 3300 DATA "* * "
- 3310 DATA " *** "
- 3320 '
- 3330 '**********************************************************************
- 3340 END
-