/GDEMO V01 /DEMO OF VT-52 AND VT-78 GRAPHICS MODE /8-JUN-77 DS /THIS PROGRAM IS COMPLETELY TABLE DRIVEN. /THE TABLE CONSISTS OF "TEXT" STATEMENTS SPECIFYING /THE CHARS TO BE DISPLAYED. EXTRA FEATURES HAVE BEEN ADDED /BY RESERVING "_" (UNDERLINE) TO BE A SPECIAL, NON- /PRINTING CHAR WHOSE MEANING IS TO INTERPRET THE VERY NEXT /CHAR AS AN OPERATION CODE, AS FOLLOWS: / A ENTER LOWER CASE MODE / B RESUME UPPER CASE MODE / C PRINT CR AND LF TO END THE LINE / D SEND ONE ESCAPE CHAR / E END OF PROGRAM (RETURN TO MONITOR) / F SHORT PAUSE (DELAY) / G MEDIUM PAUSE / H LONG PAUSE / I START OF ITERATIVE LOOP - THE VERY NEXT CHAR / IS THE REPEAT COUNT, WITH "A"=1. LOOPS MAY NOT / BE NESTED. / J END OF ITERATIVE LOOP TEMP= 20 START, CLA /PROCESS NEXT CHAR PROCES, JMS NEXT /GET NEXT CHAR SNA /IGNORE 00 CHAR (DUE TO "TEXT") JMP PROCES DCA TEMP TAD TEMP TAD (-37) /UNDERLINE? SNA CLA JMP LOOK /YES: LOOK AT NEXT CHAR TAD TEMP /NO: CONVERT TO 7-BIT ASCII AND PRINT TAD (-40) /ISOLATE 0-37 RANGE BY MAKING NEGATIVE SPA TAD CASE /100=UPPER CASE, 140=LOWER CASE TAD (40) OUTPUT, JMS PRINT /ORDINARY CHAR JMP PROCES /PRINTING SUBR PRINT, 0 TLS CLA TSF JMP .-1 KSF /READ KEYBOARD FOR CTRL,C JMP I PRINT KRB AND (177) TAD (-3) SZA CLA JMP I PRINT /IGNORE ANY KEYS TYPED! JMP I (7605) /RETURN TO MONITOR ON CTRL,C /END OF LINE ROUTINE CRLF, TAD (215) JMS PRINT TAD (212) JMS PRINT JMP PROCES /COROUTINE TO GET NEXT CHAR NEXT, 0 JMP I RET RET, NEXT1 AND (77) /6 BITS ONLY JMP I NEXT NEXT1, TAD I P /LEFT CHAR BSW JMS RET TAD I P /RIGHT CHAR JMS RET ISZ P JMP NEXT1 P, TABLE CASE, 100 /140 FOR LOWER CASE MODE /UNDERLINE CHAR CAME LOOK, JMS NEXT TAD (JTAB-1) /CONVERT TO ADDR IN JTAB DCA TEMP TAD I TEMP /GET ADDR OF ROUTINE DCA TEMP JMP I TEMP /GO TO PROPER ROUTINE /LIST OF ROUTINES JTAB, LCMODE /A UCMODE /B CRLF /C ESC /D 7605 /E SHORT /F MED /G LONG /H ITER /I LOOP /J /ROUTINES LCMODE, TAD (40) /LC=140 UCMODE, TAD (100) /UC=100 DCA CASE JMP PROCES ESC, TAD (33) JMP OUTPUT LONG, TAD (-200) MED, TAD (-40) SHORT, TAD (-2) DCA TEMP WT, ISZ WAIT JMP WT ISZ TEMP JMP WT JMP PROCES WAIT, 0 ITER, JMS NEXT /GET COUNT CIA DCA COUNT TAD RET /SAVE CHAR POSITION DCA POS TAD P DCA POS+1 JMP PROCES LOOP, ISZ COUNT SKP JMP PROCES TAD POS /RESTORE CHAR POSITION DCA RET TAD POS+1 DCA P JMP PROCES COUNT, 0 POS, 0;0 /LITERALS PAGE /CONTROL TABLE TABLE, TEXT " _C_G" / PAUSE TEXT "_DH_DJ" /ERASE SCREEN TEXT "GRAPHICS MODE DEMONSTRATION PROGRAM_C_C" TEXT "T_AHIS PROGRAM DEMONSTRATES THE SPECIAL GRAPHICS CHARACTERS_CAVAILABLE" TEXT " TO THE PROGRAMMER._C_C_B" TEXT "T_AHE KEYBOARD WILL BE IGNORED DURING THIS DEMONSTRATION,_CSO" TEXT " JUST SIT BACK AND ENJOY._C_H_B" TEXT "_DH_DJH_AERE ARE SOME EXAMPLES OF THE USE OF SPECIAL_C" TEXT "GRAPHICS CHARACTERS._B_C_C" TEXT "_GD_AEGREES_B: 360_DF_AF_B_DG_C_C" TEXT "_GF_ARACTIONS_B: _DF_AB\, CX, E\_B_DG_C_C" TEXT "_GL_AEGAL TEXT_B: _DF_A^_B12.006 _DGI_ANDEMNITY _BP_AROVISIONS._B_C_C" TEXT "_GA_ARITHMETIC:_B 5 + ( 7 _DF_AJ_B_DG 3 ) = ?_C_C" TEXT "_H_DH_DJ" TEXT "H_AERE'S AN EXAMPLE OF REVERSE SCROLLING._B_C" TEXT "_GE_AACH NEW LINE PUSHES THE REMAINING TEXT DOWN._B_C_H" TEXT "_DI_DH" TEXT "_IU_DI_DH_FH_AERE'S ANOTHER LINE._B_J" TEXT "_H_DH_DJ" /WAIT THEN ERASE TEXT "A_AMONG THE MOST USEFUL OF THE GRAPHICS CHARACTERS ARE THOSE_C" TEXT "THAT ENABLE THE DRAWING OF GRAPHS._B_C_C" TEXT "_GH_AERE ARE BARS AT VARIOUS HEIGHTS:_B_C_C" TEXT "_DF_ALMNOPQRS_B_DG_C_C" TEXT "_H_DH_DJA_AND HERE IS THE ALL-PURPOSE RECTANGLE CHARACTER:_B_C_C" TEXT "_DF_A_IUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA_C_J" TEXT "_B_DG" TEXT "_E" /END OF GDEMO