/ LAB8/E OVERLAY FOR LAB-FOCAL (V5E) -JVZ- /THIS OVERLAY ADDS A 'SCOPE HANDLER, THE 'OUTPUT SCOPE', /'VIEW' AND 'KONTROL' COMMANDS TO LAB-FOCAL, AND 4 MORE /FUNCTIONS ('FADC', 'FDIN', 'FVB' AND 'FLGS') FOR USERS /WITH A 16K-32K LAB8/E SYSTEM. /'FADC' READS ANALOG INPUTS AND 'FLGS' RETURNS BITS SET /BY THE SCHMITT TRIGGERS. ('FQ' WOULD BE USED TO SETUP /EXTERNAL 'DO' CALLS FOR EACH INPUT.) THE 'FDIN' FUNC- /TION PROVIDES A WAY TO READ BITS SET IN INPUT REGISTER. /LASTLY, 'FVB' PROVIDES ACCESS TO THE 'VIEW BUFFER'. /'FDIN(1,2)' WILL READ BITS '1,2' AND IGNORE ALL OTHERS /'FDIN(-1,-2)' WILL READ EVERYTHING BUT BITS '1,2' ETC. /'FADC(N)' READS CHANNEL N (VALUE RETURNED -512 TO 511) /'FLGS()' RETURNS A WEIGHTED SUM OF ALL THE EVENT FLAGS /'FLGS(2049)' CHECKS -AND CLEARS- BITS '0' & '11', ETC. /'FQ(P,T,S)' SETS PRIORITY & TASK# FOR SCHMITT TRIGGERS /'FVB(I)' GETS THE VALUE AT LOC. 'I' IN THE VIEW BUFFER /'FVB(I,EXPR)' PUTS VALUE OF THE EXPRESSION AT LOC. 'I' /THE 'KONTROL N' COMMAND SETS THE OUTPUT REGISTER. THE /ARGUMENT LIST ALLOWS INDIVIDUAL BITS OR GROUPS OF BITS /TO BE SET OR CLEARED. SEE DISCUSSION ON PAGE 9. /THE 'HESITATE' COMMAND HAS BEEN PATCHED TO REFRESH THE /SCREEN DURING THE DELAY PERIOD AS WELL AS TO HONOR 'EX- /TERNAL DO' CALLS. /THE 'O S' COMMAND SWITCHES OUTPUT TO THE SCOPE. 'O S' /MAY BE ASSUMED WHEN LDF IS LOADED - USE THE 'O T' COM- /MAND TO RETURN TO THE TERMINAL - OR 'O S,T' OR 'O S,L' /TO GET 'HARDCOPY' OF DATA BEING DISPLAYED. THE 'VIEW' /COMMAND CONTROLS THE REFRESH: 'V 1' TURNS IT ON, 'V 0' /(OR JUST 'V') TURNS IT OFF. THE DISPLAY IS REFRESHED /WHENEVER THE PROGRAM IS WAITING FOR KEYBOARD INPUT OR /IN A 'HESITATE'. IT IS ALSO REFRESHED EVERY TIME THE /PROGRAM BRANCHES OR COMES TO THE END OF A LINE. THIS /CREATES A 'LIVE' DISPLAY, AT THE EXPENSE OF EXECUTION /TIME; BE SURE TO DISABLE THE REFRESH (BY STARTING THE /PROGRAM WITH 'V;G' RATHER THAN 'G') WHENEVER SPEED IS /IMPORTANT. INTERMEDIATE RESULTS CAN BE VIEWED WITH A /'ASK :-1' OR 'HESITATE' COMMAND. /UP TO 64 CHARACTERS CAN BE DISPLAYED ON A SINGLE LINE, /WITH AUTOMATIC 'WRAP-AROUND' IF NECESSARY; THE DISPLAY /'SCROLLS' (LINES AT THE TOP OF THE SCREEN ARE REMOVED) /IF MORE CHARACTERS OR MORE LINES THAN CAN BE ACCOMODA- /TED ARE OUTPUT. TYPING 'CTRL/S' WILL TEMPORARILY STOP /OUTPUT (RESTART WITH 'CTRL/Q'), SO THE CONTENTS OF THE /DISPLAY CAN BE READ. TYPING CTRL/L (FORMFEED) CLEARS /THE SCREEN. THIS MAY DONE AT ANY TIME WHILE ENTERING /TEXT OR REPLYING TO 'ASK' WITHOUT AFFECTING THE RESULT. /THE '#' OPERATOR IN 'ASK' AND 'TYPE' COMMANDS CAN ALSO /BE USED TO CLEAR THE SCREEN, OR ONE CAN USE 'FOUT(12)' /IF THAT IS MORE CONVENIENT. THE MOST SIGNIFICANT FEA- /TURE, OF COURSE, IS THAT CHARACTERS CAN ACTUALLY BE RE- /MOVED FROM THE DISPLAY BY TYPING 'RUBOUT' OR 'DELETE'! /TO ACCOMODATE THE TWO DIFFERENT 'DELETE' METHODS USED /BY THE OPERATING SYSTEM, USE 'TYPE #FPAL(,1000)' WHEN- /EVER YOU WISH TO PROGRAM A CHARACTER DELETION. /THE 'VIEW X,Y' COMMAND (WITH TWO ARGUMENTS) DISPLAYS A /SINGLE DATA POINT ON THE SCREEN. THE COORDINATES USED /ARE 0 /30=16K, 40=20K.. 70=32K B=B&70 IFNZRO B-30&4000 *LORD /LOWER FIELD CHANGES 1401;0270;5705 /LAB8/E *100 IFNZRO B-30 /HIGHEST FIELD FOR S.T. *ER45 ER45, 3417;ER50-1 /ADD ERROR MESSAGES TEXT "VIEW BUFFER FULL" ER50, 177;0 *.!177-3 SCPOUT, JMS I 167 /'GTNAME' JMS I 170 /'SETODV' SECHO SCOPE *INITLZ+20 /INITIALIZE DK8EP CLOCK CLA CMA CLCE /STOP IT AND .+3 CLAB /SET PRESCALE TO -1000. SKP CLA -1750 TAD .+3 /ENABLE ALL INTERRUPTS CLLR SKP CLA 5517 /RATE=100KHZ, MODE=1 / CLOCK INSTRUCTIONS CLCE=6130 CLLR=6132 CLAB=6133 CLSA=6135 CDI= 6203 *MV0+2 SKP /LEAVE LINENO PRINTOUT *OSCOPE SCOPE /IS NOW 'O E' DEFAULT *6665 SCPOUT /PATCH COMMAND TABLE *EKODEV / SCOPE /MAKE THIS THE DEFAULT *COLCNT 4^200 /FOUR DIRECTORY COLUMNS FIELD 1 /UPPER FIELD STUFF *FIRSTV IFZERO B-30 <4002> /START OF S.T. (16K) *OUTDEV / SCOPE /START UP THE DISPLAY! *COMGO-2 BDISPL /DISPLAY ON A BRANCH REFRSH /REFRESH AT END OF LINE *TATE+1 HDISPL /REFRESH DURING HESITATE *COMGO+"K-"@ KONTRL *COMGO+"V-"@ VIEW *FNTABF+34 FVB FADC FLGS FDIN *KEYCK KDISPL /PATCH THE INPUT LOOP *XI33+4 JMS I KEYCK /TURNS ON THE DISPLAY *CINT+1 JMP I .+1 /ADD CHECK FOR SCHMITTS DK8EP *4104 QUEP, JMP I .+1 /PATCH THE FQ FUNCTION QUEX / A/D INSTRUCTIONS ADLM=6531 ADST=6532 ADRB=6533 ADSK=6534 /THE 'VIEW X,Y' POINT-PLOT COMMAND FOR THE LAB8E: / 'VIEW X,Y' WILL BRIGHTEN THE POINT (X,Y) DURING EACH /REFRESH CYCLE, 0 /-4000 FOR 16K IFNZRO B-30 /-7776 FOR 20K+ TAD PNTR /WATCH OUT FOR OVERFLOW CDF B SZL CLA ERROR2 /VIEW BUFFER FULL! ISZ PNTR TAD LORD DCA I PNTR CDF P JMP I STORE ONLY1, TAD LORD /SPECIAL CASE ISZ HORD /TEST FOR -ANYTHING DCA KDISPL /SET THE DISPLAY SWITCH SNA /TEST FOR -N CONTINUE /SOMETHING ELSE CMA CLL RAL /(N-1)*2 TAD DISB /ADJUST THE DISPLAY POINTER DCA PNTR /CLEAR THE SCREEN BUT DON'T CONTINUE /MESS UP THE DISPLAY SWITCH ///// / DISPLAY INSTRUCTIONS DISD=6052 DILX=6053 DILY=6054 DIXY=6055 / PUT CHARACTERS IN THE DISPLAY BUFFER SCOPE, 0 CIF B /CODE IS UPSTAIRS JMS I (XVAL JMS I SECHO TAD I (PAUSW /STOP FOR A WHILE? SNA CLA JMP I SCOPE /NO TAD (.-3 JMP REFRSH-1 /LOOP HERE HDISPL, PUSHJ /REFRESH DURING 'HESITATE' SCHED+2 JMP REFRSH KDISPL, 0 /SET BY A 'JMS' FROM 'XI33' TAD (XI33-GOTO /REFRESH SCREEN ON A BRANCH BDISPL, TAD (GOTO+1 /OR WHILE WAITING FOR INPUT PUSHA /SAVE THE RETURN ADDRESS REFRSH, TAD KDISPL /CHECK THE 'DISPLAY SWITCH' SNA CLA POPJ /NOTHING DOING CDI B JMP I (RFSTRT /EXECUTE ONE REFRESH CYCLE TAD DISB /SETUP THE ADDRESS REGISTER DCA XRT VLOOP, TAD XRT /CHECK PROGRESS STL CMA TAD PNTR SZL SNA CLA /LAST POINT? POPJ /YES TAD M1000 TAD I XRT /DF=B DILX CLA TAD I XRT DILY DISD JMP .-1 M1000, NOP /LET BEAM SETTLE DOWN DCA STORE DIXY /INTENSIFY THIS POINT JMP VLOOP ///// FADC, FIXIT /READ THE A/D CONVERTER ADLM /SELECT CHANNEL ADST /START A CONVERSION ADSK /WAIT JMP .-1 ADRB /READ ANSWER FLOATR /CONVERT TO FLOATING-POINT ///// / PROVIDE THE PROGRAM WITH ACCESS TO THE VIEW BUFFER FVB, FIXIT /SIGNED INTEGER STORAGE TAD DISB PUSHA /SAVE THE INDEX VALUE TSTCMA /READ OR WRITE? JMP RBUF /READ GETNXT /WRITE CLA TAD PNTR /SAVE THE 'VIEW' POINTER DCA XRT POPA DCA PNTR JMS STORE TAD XRT DCA PNTR RETURN RBUF, POPA /READ FROM THE BUFFER DCA XRT CDF B TAD I XRT /NO LIMIT CHECKING FRTN, FLOATR ///// /THE 'FLGS' FUNCTION READS EVENT FLAGS WHICH HAVE NOT /CAUSED A PROGRAM INTERRUPT. A NON-ZERO ARGUMENT MAY /BE SPECIFIED AS A MASK: ('-1'='ALL', '1'='EVENT 12') /WHEN A MASK IS USED, THE FLAGS READ ARE RESET; OTHER- /WISE THEY ARE LEFT ALONE. FLGS, FIXIT /GET THE MASK SNA STL CMA /'0' = 'ALL' AND EVFLGS DCA HORD /SAVE SNL TAD HORD /CLEAR IF NZ MASK CMA CIF P /INHIBIT INTERRUPTS AND EVFLGS DCA EVFLGS TAD HORD FL0ATR /RETURN WHAT WE FOUND PAGE /DIGITAL I/O ROUTINES: /THIS CODE IMPLEMENTS THE 'K' COMMAND AND THE 'FDIN' FUNC- /TION FOR SETTING AND READING THE DR8E 12-BIT DIGITAL I/O /BOARD. THE 'KONTROL' COMMAND ALLOWS INDIVIDUAL BITS TO BE /SET, EITHER AS A GROUP, OR SEQUENTIALLY, THE LATTER OPTION /PERMITTING A TIME SEQUENCE OF PULSES TO BE GENERATED WITH /THE PULSE SPACING DETERMINED BY LAB-FOCAL'S EXECUTION TIME /THE 'FDIN' FUNCTION ALLOWS THE INPUT BUFFER TO BE READ SE- /LECTIVELY ACCORDING TO A BIT MASK SET UP BY THE FUNCTION /ARGUMENTS. BOTH THE 'K' COMMAND AND THE 'FDIN' FUNCTION /USE A SIMILAR BIT CODING SCHEME: THE I/O BITS ARE NUMBERED /FROM 1-12 WITH 1 BEING THE -HIGH ORDER- BIT, (THE BIT USU- /ALLY LABELED '0'), AND 12 BEING THE -LOW- ORDER BIT AS DE- /TERMINED BY A TRANSFER INTO OR OUT OF THE ACCUMULATOR. /THE REASON FOR THIS CONVENTION IS THAT '0' THEN REFERS TO /-ALL- BITS, I.E. 'K 0' CLEARS -ALL- OUTPUTS AND 'FDIN(0)' /READS -ALL- INPUTS. (THE '0' MAY BE OMITTED, I.E. 'K' OR /'FDIN()' IS ENOUGH.) INDIVIDUAL BITS ARE 'ENABLED' BY A /POSITIVE NUMBER. THUS 'K 1,2' WILL SET THOSE TWO BITS ON, /WHILE 'K-1,-2' WILL TURN THEM OFF AGAIN. NONE OF THE RE- /MAINING 12 BITS WILL BE AFFECTED BY THIS COMMAND. THESE /CHANGES OCCUR SEQUENTIALLY AS THE COMMAND IS DECODED, THUS /BIT 1 WILL BE TURNED OFF -BEFORE- BIT 2. IN ORDER TO SET /(AND/OR CLEAR) SEVERAL BITS 'SIMULTANEOUSLY', THEY MUST BE /GROUPED BY ENCLOSING THEM IN PARENTHESES. FOR EXAMPLE: /'K,1,(2,-1),<3,4,5>,-5,-2' WILL FIRST CLEAR ALL BITS ('0' /IS IMPLIED BY THE MISSING FIRST ARGUMENT), THEN SET BIT 1, /THEN SIMULTANEOUSLY CLEAR IT & SET BIT 2 AFTER A DELAY OF /SEVERAL MILLISECONDS, THEN TURN ON BITS 3,4,5 ALL AT ONCE, /THEN TURN OFF BIT 5, AND FINALLY, CLEAR BIT 2, LEAVING BITS /3-4 STILL ON. 'OFF' TAKES PRECEDENCE OVER 'ON' SHOULD YOU /TRY TO BE SNEAKY AND PROGRAM SOMETHING LIKE 'K(-1,1)' (= /'K-1'), AND NESTED PARENTHESES ARE BOTH ILLEGAL AND MEAN- /INGLESS! TO ADD EXTRA DELAYS, JUST SET AND CLEAR BIT 13. /ANOTHER OPTION LETS A COMMAND OF THE FORM 'K=N' LOAD THE 4 /LOW-ORDER BITS AS A SINGLE NUMBER, I.E. 'K=5' WOULD SET /BITS 9 & 11, CLEAR 8 & 10. BITS 0-7 WILL NOT BE DISTURBED. /THIS FEATURE ALLOWS A SINGLE ARITHMETIC EXPRESSION TO PRO- /GRAM THE LAST FOUR BITS ALL AT ONCE. SUCH EXPRESSIONS CAN /BE MIXED WITH OTHER BIT OPERATIONS IN A SINGLE COMMAND, EX- /CEPT THAT THEY CANNOT APPEAR INSIDE PARENTHESES. /DURING INPUT, 'FDIN(3)' WILL ONLY LOOK AT BIT 3 OF THE BUF- /FER WHILE 'FDIN(-3)' WILL LOOK AT ALL -BUT- BIT 3. (NEGA- /TIVE ARGUMENTS HAVE A DIFFERENT MEANING IN THE COMMAND AND /THE FUNCTION.) THIS SCHEME ALLOWS A VERY FLEXIBLE BIT MASK /TO BE CONSTRUCTED: 'FDIN(-1,-3)' WILL READ ALL BUT BITS 1 /AND 3. ONLY EVENTS WHICH HAVE BEEN SENSED WILL BE CLEARED. FDIN, JMS COF /CLEAR ALL THE BITS DIN1, JMS SUB /READ THE ARGUMENTS DCA AWN /ZERO OR NONE = ALL ON TSTCMA /MORE? JMP DIN2 /NO PUSHJ /YES EVAL JMP DIN1 DIN2, TAD AWF /REVERSE THE 'OFF' BITS ISZ AWF /UNLESS THERE AREN'T ANY CMA AND AWN /(-OFF).OR.(ON).AND.(INPUT) CMA DCA OAR DBRI /SEE WHAT'S AVAILABLE AND OAR DBCI /CLEAR THE ONE'S WE WANT FL0ATR /UNSIGNED SUB, 0 /THIS READS ALL THE ARGUMENTS FIXIT /GET ONE IN THE AC SNA JMP I SUB /ZERO IS SPECIAL SMA CIA DCA OAR /BIT COUNTER CLL CMA RAR ISZ OAR JMP .-2 /POSITION THE BIT JMS OAR /MERGE IT AWF, 0 AWN, 0 OAR, 0 /DOES WHAT IT SAYS (IN REVERSE!) ISZ HORD /ON OR OFF? ISZ OAR /ON AND I OAR DCA I OAR ISZ SUB JMP I SUB /RETURN / INSTRUCTIONS FOR THE DR8E DIGITAL I/O BOARD: DBDI= 6500 /DISABLE INPUT INTERRUPT CAPABILITY DBEI= 6501 /ENABLE INPUT INTERRUPTS DBSK= 6502 /SKIP ON ANY INPUT EVENT DBCI= 6503 /CLEAR INPUT FROM 1'S IN THE AC; AC#0 DBRI= 6504 /CLEAR AC, READ THE INPUT REGISTER DBCO= 6505 /CLEAR OUTPUT FROM 1'S IN THE AC; AC#0 DBSO= 6506 /SET OUTPUT FROM 1'S IN THE AC; AC#0 DBRO= 6507 /CLEAR AC, READ THE OUTPUT REGISTER K1, GETC /REMOVE THE RIGHT ')' SPNOR K2, TAD AWF /REMOVE THE 'OFF' BITS CMA DBCO CLA TAD AWN /SET THE 'ON' BITS CMA K6, DBSO TSTCMA /MORE? CONTINUE /NO KONTRL, JMS COF /'K' ENTRY POINT SPNOR TESTX JMP K5 JMS I (LPRTST /ALL AT ONCE? JMP K5 GETC /YES, REMOVE THE '(' K3, CMA K4, DCA COF PUSHJ /GET THE BIT NUMBER EVAL JMS SUB DCA AWF /ZERO=ALL OFF ISZ COF /INSIDE A ()? JMP K2 /NO TSTCMA /MORE? JMP K1 /NO JMP K3 /YES K5, TAD SORTCN /CHECK FOR THE SPECIAL MODE SZA CLA /WAS IT AN '='? JMP K4 /SOME OTHER TERMINATOR GETC /PASS THE '=' GETNXT /GET THE NUMBER CLA TAD P17 /CLEAR LOW-ORDER BITS DBCO AND LORD /NOW SET THEM JMP K6 /AND CONTINUE THE COMMAND COF, 0 /CLEAR 'AWN' AND 'AWF' CMA DCA AWN CMA DCA AWF JMP I COF /A PATCH TO THE 'FQUE' FUNCTION USES CALLS WITH THREE /ARGUMENTS TO SET THE PRIORITY LEVEL OF THE 3 SCHMITT /TRIGGERS: SET FQUE(PRIORITY,SUBROUTINE,TRIGGER#). QUEX, TSTCMA /REPLACE PATCHED INSTRUCTIONS SKP JMP I (QUEP+2 /FOUR ARGUMENTS = TIMER SP3 AND LORD /GET TRIGGER NUMBER SNA FLOATR /'0' = 'NOP' CLL RAL TAD (ST1-2 DCA LORD TAD FQSW /GET TASK ID DCA I LORD FLOATR / DK8EP CLOCK INTERRUPT SERVICE ROUTINE DK8EP, SNA /ANY CLOCK/EVENT FLAGS? JMP I (XINT /NO JMS STCHK ST1, 0 /PRIORITY ASSIGNMENT JMS STCHK ST2, 0 JMS STCHK ST3, 0 SNA CLA /CLOCK FLAG? JMP I (XINT /NO JMP I (CINT+3 /YES STEMP, 0 STCHK, 0 CLL RAR /PUT BIT IN LINK SNL JMP .+5 /NOT THIS ONE DCA STEMP TAD I STCHK JMS I (IESET /SET EVENT FLAG TAD STEMP ISZ STCHK JMP I STCHK PAGE FIELD B%10 *2000 /AFTER THE 'SCOPE BUFFER YVAL, 0 /THE VERTICAL COORDINATE XVAL, (6400 /THE HORIZONTAL COORDINATE / OUTPUT TO THE DISPLAY BUFFER DCA YVAL /SAVE CHARACTER CODE TAD (PDEL-1 DCA XR6 TAD JMPINS /INITIALZE JUMP INSTRUCTION DCA ZVAL SCOPLP, TAD I XR6 /CHECK FOR SPECIAL CHARS SPA JMP P377 /NOT LF,FF,CR,^U,BELL,DEL CIA TAD YVAL ISZ ZVAL /BUMP JUMP SZA CLA JMP SCOPLP /TRY AGAIN ZVAL, SCROLL, 0 /REMOVE A LINE FROM THE TOP TAD P377 DCA XR6 SCROLP, TAD CHRCNT /REDUCE THE CHAR COUNT SNA JMPINS, JMP SCROLX /NO CR'S IN THE BUFFER! TAD (-1 DCA CHRCNT TAD I XR6 /LOOK FOR A CR SZA CLA JMP SCROLP TAD P377 /SET THE SECOND POINTER DCA XR6+1 TAD CHRCNT /NEW VALUE CIA DCA YVAL /HANDY REGISTER TAD I XR6 /SHUFFLE THINGS DOWN DCA I XR6+1 P2200, ISZ YVAL /COUNT JMP .-3 SCROLX, JMP I SCROLL /MUST BE AT SCOPGO-1 SCOPGO, JMP SRO /CHARACTER JUMP LIST JMP SLF JMP SLF JMP SFF JMP SLF JMP SCR JMP STR ///// RFSTRT, TAD CHRCNT /DISPLAY THE CHAR BUFFER CMA DCA I (7777 /SAVE CHARACTER COUNT TAD P377 DCA XR6 /INITIALIZE INDEX REGISTER TAD P700 /START NEAR THE TOP NULINE, DILY /INITIALIZE FOR A NEW LINE DCA YVAL NUCHAR, TAD (7000 /OR THE NEXT CHARACTER DILX DCA XVAL /64 CHARACTERS PER LINE RFEND, ISZ I (7777 /DONE? JMP RFLUP /NOT YET SM40, SMA SZA CLA /SKIP ON DONE JMS SCROLL /SCREEN FULL, REMOVE A LINE CIF P JMP I (VLOOP-2 /END REFRESH (DF=B) RFLUP, TAD I XR6 /GET THE NEXT CHARACTER SNA /CR? JMP RFEOL /YES DCA XR6+1 /PUT ADDRESS IN INDEX REG. JMS I P2200 JMS I P2200 TAD P7004 /SPACE AND CHECK FOR EOL TAD XVAL AND (1777 /REDUCE TO 10 BITS SZA JMP NUCHAR /INCREMENT X VALUE RFEOL, TAD P700 /START A NEW LINE TAD YVAL SPA CLA /FILLED THE SCREEN? JMP SM40+1 /YES TAD SM100 TAD YVAL JMP NULINE /NO P377, AND (6400 /CLEAR AC(4:11) STR, TAD YVAL /SEARCH CHARACTER CLL RAL /MULTIPLY BY TWO AND P377 /MODULO TABLE SIZE TAD (-1 /ADD OFFSET SCR, DCA ZVAL /SAVE PATTERN ADDRESS TAD CHRCNT /NOW BUILD POINTER TAD P377 /TO NEXT LOCATION DCA XR6 /IN AUTO INDEX REG. TAD ZVAL /GET THE PATTERN ADDRESS CDF B /SET BUFFER FIELD DCA I XR6 /SAVE IT SP2 /ADD ONE TO THE COUNT SRO, TAD CHRCNT /RUBOUT = ERASE ONE CHARACTER SZA /WATCH OUT FOR MISTAKES HERE TAD (-1 SFF, DCA CHRCNT /FF = ERASE THE ENTIRE SCREEN TAD CHRCNT /DO A LITTLE CHECKING TAD (SBUFR-YVAL /YE OLDE BUFFER SIZE! SM100, SMA CLA JMS SCROLL /TIME TO REMOVE A LINE SLF, TAD YVAL /'BELL', 'CTRL/U' AND 'LF' CDI P /ARE NOT DISPLAYED... JMP I XVAL /RETURN CHAR FOR POSSIBLE ECHO CHRCNT, 0 /CURRENT BUFFER SIZE PLTC, 0 /MOVE THE BEAM AROUND SP3 TAD XVAL DILX DCA XVAL SM3 CLL RAL DCA ZVAL TAD YVAL DOTS, DILY IAC RTR IAC RTL /+5 SWP P7004, RAL SWP SZL DIXY ISZ ZVAL JMP DOTS JMP I PLTC *2200 /KLUDGE 0 TAD I XR6+1 /GET PATTERN WORD MQL JMS I PLTCP JMS I PLTCP CLA CLL JMP I 2200 PLTCP, PLTC PAGE 0 /LOCATION OF PATTERN TABLE / PATTERN TABLE FOR THE DSC INSTRUCTION SBUFR= 400 /AFTER THE PATTERN TABLE VBUFR= 2400 /AFTER THE DISPLAY ROUTINES STABL, 0101;0101 3145;4575 7745;4531 3145;4545 3145;4577 3155;5515 1177;1103 XR6, 3145;6561 /BELL 7705;0571 /BS 6040;4060 /HT 2141;7501 /LF 7721;3145 /VT 0651;6070 /FF 7060;5106 /CR 7515;0575 3145;4531 7525;2511 7545;6575 7511;0505 5555;5525 0577;0501 3541;2175 1521;4135 7521;2175 6511;1165 1561;6115 4565;5545 0175;4501 /ESC 0511;2141 0145;7501 0111;7511 2171;2121 0000;0000 0057;0000 P700, 0700;0700 1477;7714 4275;4731 4333;6661 3245;3250 0000;0700 0036;4100 0041;3600 1204;1200 1010;7610 0050;3000 1010;1010 0060;6000 4030;0601 3651;4536 4042;7740 6251;4542 2241;4532 1412;7710 2745;4530 3054;5221 6111;0503 3245;4532 2245;4536 0033;3300 0053;3300 0412;2100 2424;2424 0021;1204 0201;5502 3641;5556 7711;1177 7745;4532 3641;4122 7741;4136 7751;5141 7711;1101 3641;5132 7704;0477 4177;4100 2141;3701 7704;1261 7740;4060 7706;0677 7706;3077 7741;4177 7711;1106 3651;6176 7711;3146 4245;4531 0101;7701 7740;4077 3740;2017 7730;4077 6314;1463 0770;7007 6151;4543 7741;0000 0106;3040 0000;4177 0004;7604 0416;0404 0102;0400 3044;4474 7744;4430 3044;4444 3044;4477 3054;5414 1077;1102 3044;6460 7704;0470 0000;7500 2040;7500 7720;3044 0040;7740 7410;1074 7410;0474 3044;4430 7424;2410 7444;6474 7410;0404 5054;5424 0477;0400 3440;2074 1420;4034 7420;2074 6410;1064 1460;6014 4464;5444 0433;2100 0077;0000 0021;3304 1004;1004 7777;7777 $$$$;$$$$ /END OF THE PATTERN TABLE