File AAVG4C.PA (PAL assembler source file)

Directory of image this file is from
This file as a plain text file

/LAB8E ADVANCED AVERAGER MS (HP7475A) - DISPLAY AND PLOT OUTPUT.
/
/DEC-8E-AAA4A-A-LA
/
/VERSION FOR HP7475A PLOTTER
/
/COPYRIGHT 1972
/DIGITAL EQUIPMENT CORPORATION
/MAYNARD, MASSACHUSETTS 01754
/
/UPDATE 7-AUG-1984 HA UNIVERSITY GOETTINGEN
/FIXES BUG IN OVRLAY ROUTINE
/COPYRIGHT 1984 BY HA
/
/UPDATE 29-JAN-1985 KJS UNIVERSITY GOETTINGEN
/PLOTTER CONTROL CHANGED
/COPYRIGHT 1985 BY KJS

/FILE AD4.1 /SECTION IV OF THE LAB8/E ADVANCED AVERAGER . /THIS IS PART 4 OF ADVANCED AVERAGER FOR OS-8. /OVERLAY FOR PS8. *7557 OVRLAY, IOF CLA CLL CMA CLZE /DISABLE CLOCK CLA ADCL /AD DILC /DISPLAY DBDI /I/O CDF 0 /CHAIN IN WRITE DATA TO DISK DCA I KC7746 /0 PS8 JOB STATUS WORD. TAD I XXOV4A /OVERLAY. DCA XXOV4 CIF 10 JMS I CHAIN 6 XXOV4, 0 CHAIN, 7700 XXOV4A, PG0OV+2 PG0OV=5 MONITR=7600 CLZE=6130 ADCL=6530 DILC=6050 DBEI=6501
/LAB-8 ADVANCED AVERAGER - SECTION 4 - [U63A.4] /COPYRIGHT 1971, DIGITAL EQUIPMENT CORP., MAYNARD, MASS. 01754 / PWAITD=60 /CONTROLS PEN UP/DOWN DELAY TIME / /BASIC SUBROUTINES [SU63A] BRAN=JMS I 132 /BRANCH ACCORDING TO AC MATCH WITH LIST SHFT=JMS I 133 /DOUBLE PRECISION ARITHMETIC SHIFT DADD=JMS I 134 /DOUBLE PRECISION ADD /PAGE ZERO CONSTANTS K0004=112 K0003=113 K0002=114 KM0001=115 K0007=116 KM0027=117 K0377=120 KM0004=121
/TEMPORARY STORAGE REGISTERS 146=177 TEMP01=146 TEMP02=147 TEMP03=150 TEMP04=151 TEMP05=152 TEMP06=153 TEMP07=154 TEMP10=155 TEMP11=156 TEMP12=157 TEMP13=160 TEMP14=161 TEMP15=162 TEMP16=163 TEMP17=164 TEMP20=165 TEMP21=166 /TEMPORARY STORAGE AND MULTIPLE ACCUMULATORS ARITH0=167 TEMP22=167 ARITH1=170 TEMP23=170 ARITH2=171 TEMP24=171 ARITH3=172 TEMP25=172 ARITH4=173 TEMP26=173 ARITH5=174 TEMP27=174 /TEMPORARY STORAGE AND TTY-KBD BUFFERS KBDBUF=175 TEMP30=175 TTYBUF=176 TEMP31=176 TTYFLG=177 TEMP32=177
/IOT REFERENCES FOR THE LAB/8E / / /AD8-EA 10 BIT A/D CONVERTER / ADCL=6530 /CLEAR ALL ADLM=6531 /LOAD MPLXR ADST=6532 /START CONVERSION ADRB=6533 /READ AD BUFFER ADSK=6534 /SKIP ON AD DONE ADSE=6535 /SKIP ON TIMING ERROR ADLE=6536 /LOAD ENABLE REGISTER ADRS=6537 /READ STATUS REGISTER / /VC8-E POINT PLOT DISPLAY / DILC=6050 /CLEAR ALL DICD=6051 /CLEAR DONE FLAG DISD=6052 /SKIP ON DONE FLAG DILX=6053 /CLEAR DONE FLAG LOAD X DILY=6054 /CLEAR DONE FLAG LOAD Y DIXY=6055 /CLEAR DONE, INTENSIFY, SET DONE DILE=6056 /LOAD ENABLE CLEAR AC DIRE=6057 /ENABLE TO AC / /DK8-EP REAL TIME CLOCK / CLZE=6130 /ZERO TO ENABLE CLSK=6131 /SKP ON CLOCK FG CLOE=6132 /ONES TO ENABLE CLAB=6133 /AC TO CLK BUF AND COUNTER REGISTER CLEN=6134 /ENABLE TO AC CLSA=6135 /STATUS TO AC AND AC ONE'S CLEAR STATUS REG. CLBA=6136 /CLK BUF TO AC CLCA=6137 /CLK CNTR TO AC AND TO AC / /DB8-EA 12 CHANNEL DIGITAL I/O / DBDI=6500 /DISABLE INTERRUPT DBEI=6501 /ENABLE INTERRUPT DBSK=6502 /SKIP ON INPUT DBCI=6503 /CLEAR INPUT BITS WITH SET AC BIT DBRI=6504 /READ INPUT DBCO=6505 /CLEAR OUTPUT BITS WITH AC BITS DBSO=6506 /SET OUTPUT BITS WITH AC BITS DBRO=6507 /READ OUTPUT REGISTER /COMBINED OPERATES MTH=CLA CMA CLL RTL; MTW=CLA CMA CLL RAL TWO=CLA CLL CML RTL; TWOK=CLA CLL CML RTR BSW=7002 /EXTENDED MEMORY CDF=6201; RDF=6214; RMF=6244
/PAGE ZERO /CONSTANTS *112 K0004, 0004 K0003, 0003 K0002, 0002 KM0001, -1 K0007, 7 KM0027, -27 K0377, 377 KM0004, -4 K0005A, 0005 K0200, 200 KM1000, -1000 KM1777, -1777 K6777, 6777 KC7600, 7600 /LINKAGES *132 6341 /BRAN 6302 /SHFT 6362 /DADD KSTART, START /SUBROUTINE TO READ VALUE OF A KNOB *20 START0, CDF 10 TAD I KC7600 /RESTORE BLOCK ADD. FOR CHAIN IN LOC 7. /SAVED BY SEC 3. CDF 0 DCA 7 JMP I KSTART KNOBS, 0 ADLM /LOAD MUX ADST /START CONVERSION ADSK /WAIT JMP .-1 ADRB /READ RANGE: 777,-1000 TAD K6777 /RANGE -3777, -1 JMP I KNOBS /SUBROUTINE TO LOAD Y DAC AND DISPLAY DOY, 0 DILY /LOAD Y DISD /WAIT FOR SETTLE JMP .-1 DIXY /DISPLAY JMP I DOY / LINKS TO PLOTTER SUBROUTINE IN FIELD 3 HPLON, H3PLON HPLOF, H3PLOF HPENU, H3PENU HPEND, H3PEND HPLOT, H3PLOT HPLGR, H3PLGR
*6400 /THIS SECTION DISPLAYS, SCALES, AND OUTPUTS M, C, 1000T /MAIN DISPLAY AND INITIATION FOR SECTION 5 START, TAD I K0200 /SET JOBLIST POINTER TO FIRST JOB IAC DCA JPNTR /JOB LIST POINTER JPNTR=10 DCA SFACTR /PRESET SCALE FACTOR SFACTR=TEMP32 TAD KPLOT /AUTO RESET AT 1 MS A TICK CLOE CMA CLZE DISJOB, CLA CMA DCA PMODE /PMODE .NE. 0 FOR NO PLOT PMODE=TEMP31 JMS I JSETX /SETUP DATA POINTERS, COUNTERS, DISPLAY TAD TJTYPE /GET #LOC TO SKIP OVER WHEN DISPLAYING MEAN BRAN K0003 IAC /SD. AND TREND, SKIP 3 TAD K0002 /S.D., SKIP 2 DCA TSKIP TSKIP=TEMP15 KSF /KBD STRUCK? JMP DISAVG /NO, GO DISPLAY KRB /YES, GET CHARACTER BRAN /CHECK AGAINST RESPONSE LIST KBDLST MTW /X - EXPAND, SCALE UP JMP NEWSF /C - CONTRACT, SCALE DOWN JMP I PGRDAX /P - FIRST GRID, THAN DATA JMP I PDAX /D - DATA ONLY JMP I TDATAX /T - TYPE DATA JMP I PGRX /G - GRID JMP NXTJOB /CR - DISPLAY NEXT JOB JMP I IDATAX /I - INTEGRATE JMP I OVRLAX /^W - WRITE DATA. JMP I OS8 /^C - RETURN TO OS8. JMP START /^Z - FIRST JOB KECHO, TAD TEMP02 /ECHO JMS I TYPEX DISAVG, JMS GDATAS /GET M (2 WDS) AND SCALE JMS I DISPX /DISPLAY M/2^K JMS I BLKCNX /MOVE TO NEXT, CHECK FOR END JMP DISAVG /NOT ENDED, DISPLAY NEXT POINT CLA CMA /ENDED, IS JOB TYPE=1? TAD TJTYPE /(1 FOR MEAN ONLY) SNA CLA JMP DISEND /YES, DISPLAY OF JOBS IS DONE JMS I JSETX /NO, SETUP TO DISPLAY MEAN + CF'S
DISPSD, JMS GDATAS /GET M AND SCALE DCA TMEAN /SAVE M/(2^K) TMEAN=TEMP02 JMS GDATAS /GET 2S/SQRT(N) AND SCALE TAD TMEAN /[M+2S/SQRT(N)]/2^K JMS I DISPX /DISPLAY IT MTW /SKIP OVER TREND IF PRESENT JMS I BLKCNX /MOVE TO NEXT DATA POINT, CHECK FOR END JMP DISPSD /NOT ENDED, DISPLAY NEXT POINT JMS I JSETX /ENDED, SETUP FOR DISPLAY OF MEAN - CF DISMSD, JMS GDATAS /GET NM AND SCALE DCA TMEAN /SAVE M/2^K JMS GDATAS /GET 2S/SQRT(N) AND SCALE CMA IAC TAD TMEAN /[M-2S/SQRT(N)]/2^K JMS I DISPX /DISPLAY IT MTW /SKIP OVER TREND IF PRESENT JMS I BLKCNX /ANY MORE POINTS? JMP DISMSD /MORE POINTS TO DISPLAY, CONTINUE MTW /IS JOB TYPE=3? TAD TJTYPE /(3 FOR AVG, CF, AND TREND) SNA CLA JMP DISEND /NO, DISPLAY OF THIS JOB IS DONE JMS I JSETX /YES, SETUP TO DISPLAY 1000T DCA TSKIP /SKIP NO POINTS AFTER TREND DISTRN, TAD K0004 /SKIP MEAN AND CF TAD GETPNT DCA GETPNT JMS I GCDFSX /GET 1000T CDF 0 /(*) CLL RTR RTR AND K0377 TAD KM0775 JMS I DISPX /DISPLAY RANGES FROM -377+0 TO -377+177 JMS I BLKCNX /MOVE TO NEXT DATA PNT, CHECK FOR DONE JMP DISTRN /NOT DONE. DO NEXT POINT DISEND, TAD PMODE /NO MORE POINTS IN THIS JOB SZA CLA /ARE WE PLOTTING? JMP DISJOB /NO, RESTART JOB CIF 30 / PLOT DONE JMS I HPLOF JMP DISJOB /RESUME DISPLAY MODE
/SUBROUTINE TO GET DBL DATA WORD AND SCALE /RESULT IN ARITH2 AND AC GDATAS, 0 JMS I GCDFSX /GET CDF AND 1ST WORD DCA ARITH1 /SAVE IN HI FAC (*) TAD I GETPNT /GET LO ORDER PART (*) DCA ARITH2 /(*) CDF 0 /BACK TO FIELD 0 (*) TAD SFACTR /SCALE SHFT TAD ARITH1 JMP I GDATAS /NEW SCALE FACTOR NEWSF, CMA /AC=-1 FOR C, +1 FOR X TAD SFACTR DCA SFACTR JMP KECHO /LOCAL CONSTANTS K4077, 4077 KM0775, -775 KPLOT, 5400 /LOCAL CROSSPAGE JSETX, JSETS TYPEX, TYPES GCDFSX, GCDFS BLKCNX, BLKCNS PGRDAX, PGRDA PDAX, PDA PGRX, PGR TDATAX, TDATA DISPX, DISPS TMESSX, TMESS IDATAX, IDATA OVRLAX, OVRLAY OS8, 7600
*6600 /SAVE SCALE AND GO TO NEXT JOB NXTJOB, TAD JPNTR /MASK SCALE FACTOR INTO J1 BITS 8-11 DCA PJPNT /ADDRESS OF J1 FOR CURRENT JOB PJPNT=TEMP01 TAD I PJPNT /J1: A/B(1), SF(5), 1(1), CHORD(5) AND K4077 /MASK OUT OLD SF DCA I PJPNT /J1: A/B(1), 0(5), 1(1), CHORD(5) TAD SFACTR SPA /SCALE FACTOR LESS THAN 0 ILLEGAL CLA BSW AND K3700 TAD I PJPNT /J1: A/B(1),0(5), 1(1), CHORD(5) DCA I PJPNT /J1: A/B(1), SF#(5), 1(1), CHORD(5) TAD K0006 /MOVE TO NEXT JOB TAD JPNTR DCA JPNTR JMS CRLFS /TYPE <CRLF> TAD I JPNTR SZA CLA JMP I DISJOX /DISPLAY NEXT JOB JMP I .+1 /NO MORE JOBS, DISPLAY FIRST AGAIN START /LOCAL CONSTANT K0006, 6 K0212, 0212 K3700, 3700 /LOCAL CROSSPAGE DISJOX, DISJOB TMESSY, TMESS GCDFY, GCDF DISPY, DISPS
/SUBROUTINE TO SET UP DATA POINTERS, COUNTERS, AND DISPLAY JSETS, 0 TAD I JPNTR /GET J2 TYPE (4), SORT CODE (8) RTL /PUT TYPE IN AC8-11 RTL RAL AND K0017 /MASK OUT REST OF J2 DCA TJTYPE /TYPE CODE TJTYPE=TEMP30 TAD I JPNTR /J3: LINK 1 (- COUNT OF FIRST BLOCK) DCA BLCNTR BLCNTR=TEMP25 TAD I JPNTR /J4: LINK 2 (DATA FIELD FOR FIRST BLOCK) DCA I GCDFY TAD I JPNTR /J5: LINK 3 (START OF FIRST BLOCK-1) IAC DCA GETPNT GETPNT=12 TAD I JPNTR /J6: DELTAX (8), YSCALE (4) DCA ARITH2 /PREPARE TO SHIFT TO SETUP BINARY POINT OF DX DCA ARITH1 TAD K0005A /DELTAX (8): INTEGER PART (5), FRACTION (3) SHFT TAD ARITH1 DCA DELTAX DELTAX=TEMP21 TAD ARITH2 DCA DELTAX+1 TAD KM0005 /MOVE JOB POINTER BACK TO TOP OF JOB TAD JPNTR DCA JPNTR TAD PMODE /PLOT MODE? SZA CLA JMP CHAS CIF 30 JMS I HPENU / P E N U P CHAS, TAD KM1000 DILX /SET DISPLAY X TO LEFT EDGE DCA ARITH4
JMS KNOBS /GET CURRENT CURSOR SETTING FROM KNOBS 0 AND 1 DCA CURSE1 CURSE1=TEMP20 CLA IAC JMS KNOBS DCA CURSE2 CURSE2=TEMP17 JMP I JSETS /LOCAL CONSTANTS K0017, +17 GDATAX, GDATAS K0034, +34 K0062, 62 K0215, 215 KM0005, -05 KM0012, -12 PGR, CLA / PLOT GRID CIF 30 JMS I HPLON CIF 30 JMS I HPLGR CLA JMP DISJOB PGRDA, CLA / PLOT GRID AND DATA CIF 30 JMS I HPLON CIF 30 JMS I HPLGR CLA JMP DISJOB+1 PDA, CLA / PLOT DATA CIF 30 JMS I HPLON CLA JMP DISJOB+1
/SUBROUTINE TO TYPE ASCII IN AC TYPES, 0 TLS TSF JMP .-1 TCF CLA JMP I TYPES /SUBROUTINE TO TYPE <CRLF> CRLFS, 0 TAD K0215 JMS TYPES TAD K0212 JMS TYPES JMP I CRLFS
*7000 /SUBROUTINE TO DISPLAY POINT: SCALE, BIAS, INCREMENT X DISPS, 0 DCA YSAVE YSAVE=TEMP14 TAD ARITH4 /X FOR NEXT POINT DILX CLA TAD YSAVE /GET POINT JMS DOY /DISPLAY IT CLA TAD PMODE /RUNNING PLOTTER? SZA CLA JMP DXINC /NO, INCREMENT X AND CONTINUE CIF 30 JMS I HPLOT / PLOT DATA (ARITH4,YSAVE) DXINC, TAD DELTAX /SETUP X FOR NEXT POINT DCA ARITH1 TAD DELTAX+1 DCA ARITH2 DADD /INCREMENT BY DISTANCE BETWEEN POINTS JMS CURSES /CURSOR REACHED? SKP /YES JMP I DISPS /NO TAD KM0027 DCA CRCNTR CRCNTR=TEMP01 /INTENSIFY CURSOR DIXY ISZ CRCNTR /POSITION JMP .-2 JMP I DISPS
/LOCAL CROSSPAGE TMESSZ, TMESS /LOCAL CONSTANTS K0777, 777 K1000, 1000 K0022, +022 /SUBROUTINE TO MOVE TOWARD CURSOR CURSES, 0 ISZ CURSE1 SKP /NOT AT CURSOR1 JMP I CURSES /EXIT, AT CURSOR1 ISZ CURSE2 ISZ CURSES /NOT AT CURSOR, EXIT TO CALL+2 JMP I CURSES /IF AT CURSOR2, EXIT TO CALL+1 /SUBROUTINE TO CHECK BLOCK AND LINK TO NEXT IF REQUIRED /EXIT TO CALL +2 IF END OF FILE REACHED BLKCNS, 0 TAD TSKIP /MOVE GETPNT TO NEXT DATA POINT TAD GETPNT DCA GETPNT ISZ BLCNTR /BLOCK COMPLETE? JMP I BLKCNS /NO, CONTINUE JMS GCDFS /YES, END OF FILE? SNA /L1: -COUNT FOR NEXT BLOCK (*) ISZ BLKCNS /END OF FILE EXIT TO CALL+2(*) DCA BLCNTR /RESET COUNTER(*) TAD I GETPNT /L2: CDF N (*) DCA GCDF /RESET DATA FIELD (*) TAD I GETPNT /L3: START OF NEW BLOCK-1(*) DCA GETPNT /RESET DATA POINTER(*) CDF 0 /(*) JMP I BLKCNS /SUBROUTINE TO SET DATA FIELD AND GET 1 WORD GCDFS, 0 GCDF, CDF /CURRENT DATA FELD TAD I GETPNT /GET DATA (*) JMP I GCDFS /(*)
/KEYBOARD LIST KBDCHK, +221 /CTRL/Q -215 /CR *7200 /TYPE DATA IN JOB TDATA, JMS PRETYP DCA TSKIP /SKIP NOTHING TYPLUP, TAD TJTYPE /JOB TYPE: 1, 2, OR 3 CMA IAC DCA TYPCNT TYPCNT=TEMP02 JMS I CRLFX /NEW LINE TAD CHANNL /TYPE DATA POINT # JMS NUMTYP JMS SHFTYP /TYPE SCALED MEAN IN MV ISZ TYPCNT /CF COMPUTED? SKP /YES JMP TYPEND /NO JMS SHFTYP /TYPE SCALED CF IN MV ISZ TYPCNT /TREND COMPUTED? JMS ABSTYP /TYPE 1000T TYPEND, JMS I CURSEY /REACHED SECOND CURSOR? JMP TYPDUN /YES ISZ CHANNL /NO JMS I BLKCNY /CHECK FOR END OF JOB JMP TYPLUP /NOT ENDED, CONTINUE TYPDUN, CLA CLL CMA TAD SFACTR DCA SFACTR JMS I CRLFX /NEW LINE JMP I DISJOY /DONE. RETURN TO DISPLAY /LOCAL CONSTANTS K0254, 254 /ASCII COMMA K0257, 257 KMD1K, -1750 /-1000(10) KMCTRL, -221 KMD100, -144 /-100(10) KMD010, -12 /-10(10) /LOCAL CROSSPAGE CRLFX, CRLFS TYPEY, TYPES BLKCNY, BLKCNS DISJOY, DISJOB GDATAY, GDATAS GCDFSY, GCDFS CURSEY, CURSES SGNTYX, SGNTYP
/GET DOUBLEWORD DATA POINT, SCALE BY 4, SIGN EXTEND, TYPE SIGNED SHFTYP, 0 JMS I GDATAY /GET DOUBLEWORD AND SCALE BY SF JMS I SGNTYX /TYPE SIGNED VALUE IN AC JMP I SHFTYP /TYPE ABSOLUTE VALUE SINGLE WORD IN DATA BLOCK ABSTYP, 0 JMS I GCDFSY /GET DATA WORD (*) CDF 0 /(*) JMS NUMTYP /TYPE DECIMAL VALUE IN AC JMP I ABSTYP /TYPE DECIMAL VALUE IN AC NUMTYP, 0 DCA ARITH4 /# TO RADIX DEFLATE TAD KMD1K /REDUCE BY FACTORS OF 1000(10) JMS GDIGIT /TYPE DIGIT FOR 1000'S TAD KMD100 /REDUCE BY FACTORS OF 100(10) JMS GDIGIT /TYPE DIGIT FOR 100'S TAD KMD010 /REDUCE BY FACTORS OF 10'S JMS GDIGIT /TYPE DIGIT FOR 10'S CLA CMA /REDUCE BY FACTORS OF 1 JMS GDIGIT /TYPE DIGIT FOR 1'S TAD K0254 JMS I TYPEY /TYPE 1 COMMA JMP I NUMTYP /SUBROUTINE SETS UP FOR TYPING PRETYP, 0 JMS I CRLFX /<CRLF> CLA CMA /MOVE POINTER BACK TO SWEEP COUNT TAD GETPNT DCA GETPNT JMS ABSTYP /# OF SWEEPS IN AVERAGE TAD SFACTR /SCALE FACTOR JMS I SGNTYX CLA CLL IAC /TYPEOUT IS IN MV (2MV/COUNT) TAD SFACTR DCA SFACTR DCA CHANNL /DATA POINT # INIT TO 0 CHANNL=TEMP16 PRESKP, JMS I CURSEY /LOOK FOR FIRST CURSOR JMP I PRETYP /FOUND IT, EXIT ISZ CHANNL /NO CURSOR YET, INDEX POINT # TWO JMS I BLKCNY /STEP THRU DATA POINT JMP PRESKP /MORE DATA POINTS, CONTINUE JMP TYPDUN /END OF DATA POINTS AND NO CURSOR, GO BACK TO DISPLAY.
/SUBROUTINE TO PRINT MESSAGE AND WAIT FOR CR TMESS, 0 TAD I TMESS /ADDR OF MESS-1 AT CALL+1 DCA TYPNTR TYPNTR=13 ISZ TMESS /EXIT TO CALL+2 TAD I TYPNTR /GET NEXT CHARACTER SNA /0 INDICATES END OF MESS. JMP TWAIT /END JMS I TYPEY /TYPE CHARACTER JMP .-4 /CONTINUE TWAIT, KSF /END, WAIT FOR CR JMP .-1 KRB BRAN KBDCHK JMP I DISJOY /^Q TYPED, RESTART DISPLAY JMS I CRLFX /C.R. TYPED, ECHO IT JMP I TMESS /OTHER OR CR, RESUME /FINDS DIGIT AND TYPES IT GDIGIT, 0 DCA ARITH1 /FACTOR TO DEFLATE BY DCA NDIGIT /DIGIT=0 NDIGIT=TEMP01 TAD ARITH4 GLOOP, DCA ARITH4 /SAVE NEW REDUCED ARGUMENT TAD ARITH4 /AND PREPARE TO REDUCE AGAIN CLL TAD ARITH1 /TRIAL SUBTRACTION ISZ NDIGIT /INDEX DIGIT SZL JMP GLOOP /SUBTRACT SOME MORE CLA /THAT'S ALL FOR THIS DIGIT TAD K0257 /DIGIT IS NDIGIT-1 TAD NDIGIT /TYPE ASCII JMS I TYPEY KSF /CHECK FOR CTRL Q JMP I GDIGIT /NO KEY, EXIT KRB /KEY, BUT IS IT CTRL Q? TAD KMCTRL SZA CLA JMP I GDIGIT /NO, EXIT JMP TYPDUN /YES RESUME DISPLAY ZBLOCK 5
/INTEGRATE DATA BETWEEN CURSORS IDATA, JMS PRETYP /INITIALIZE TYPEOUT TAD CHANNL /LO LIMIT OF INTEGRATION JMS NUMTYP DCA AVGSUM /CLEAR PARTIAL SUMS AVGSUM=TEMP21 DCA CFLSUM CFLSUM=TEMP22 DCA AVGFLG /CLEAR OFLO FLAGS AVGFLG=TEMP14 DCA CFLFLG CFLFLG=TEMP13 ILOOP, TAD AVGSUM /PREPARE TO UPDATE SUMS JMS UPSUM ISZ AVGFLG /OVERFLOW RETURN, SET FLAG DCA AVGSUM CLA CMA /CF'S COMPUTED? TAD TJTYPE SNA CLA JMP IDONE /NO, CONTINUE TAD CFLSUM /YES UPDATE THAT SUM JMS UPSUM ISZ CFLFLG /OVERFLOW RETURN, SET FLAG DCA CFLSUM MTW /ALREADY PAST CF'S. IDONE, ISZ CHANNL /UPDATE DATA POINT # JMS I BLKCNZ /MOVE TO NEXT DATA POINT JMS I CURSEZ /REACHED SECOND CURSOR? SKP /AT SECOND CURSOR OR OUT OF DATA JMP ILOOP /CONTINUE CLA CMA /GET # OF LAST DATA POINT TAD CHANNL JMS I NUMTYX TAD AVGSUM /TYPE SUM JMS SGNTYP TAD AVGFLG /TYPE OVERFLOW MARK JMS OMARK CLA CMA /CFLSUM CALCULATED? TAD TJTYPE SNA CLA JMP .+5 /NO, EXIT TAD CFLSUM /YES, OUTPUT INTEGRAL OF CFL'S. JMS I NUMTYX TAD CFLFLG /OVERFLOW MARK IF REQ. JMS OMARK JMP I .+1 /TYPE SOME CRLF, RESTORE SCALE FACTOR TYPDUN /AND RESUME DISPLAY
/SUBROUTINE TO TYPE SIGNED # IN AC SGNTYP, 0 DCA ARITH4 TAD ARITH4 SPA CLA /TYPE CORRECT SIGN: " " OR "-" TAD K0015 /MAKE A "-" TAD K240 JMS I TYPEZ TAD ARITH4 SPA CMA IAC /GET ABS VALUE JMS I NUMTYX /AND TYPE IT JMP I SGNTYP /LOCAL CROSSPAGE NUMTYX, NUMTYP BLKCNZ, BLKCNS CURSEZ, CURSES TYPEZ, TYPES GDATAZ, GDATAS /SUBROUTINE TO GET SUM OF AC AND NEXT DATA POINT UPSUM, 0 DCA INADD /SAVE ADDEND INADD=TEMP02 JMS I GDATAZ /GET AUGEND SPA /SET LINK BIT EQUAL TO SIGN BIT CML TAD INADD /ADD ADDEND DCA INSUM INSUM=TEMP03 TAD INADD /MODIFY LINK BIT IN ACCORD WITH SIGN SPA CLA CML TAD INSUM /WE HAVE FAKED A 13 BIT ADD SPA SZL /ARE THE LINK AND SIGN BITS EQUAL? CML CMA /1,1 TO 0,0; 0,1 TO 1,0; 1,0 TO 0,1 SMA SNL CLA /0,1 AND 1,0 ARE OVERFLOW ISZ UPSUM /L,S WERE 0,0 OR 1,1; NO OVERFLOW TAD INSUM /GET THE RESULT AND EXIT JMP I UPSUM /TO CALL+1 (OVRFLO) OR CALL+2 (NORMAL) /SUBROUTINE TO TYPE "^" IF OVERFLOW (AC#0) OMARK, 0 SNA CLA /AC=0? JMP I OMARK /YES, EXIT TAD K0336 /NO, TYPE "^" JMS I TYPEZ JMP I OMARK /LOCAL CONSTANTS K0336, 336 /^ K0015, 015 K240, 240
/KBD RESPONSE LIST KBDLST, +330 /X +303 /C +320 /P +304 /D +324 /T +307 /G +215 /CR +311 /I 227 /^W 203 /^C -232 /^Z KC7746, 7746
/ AAVG4 PLOTTER SUBROUTINES / / REV0.0 25-JAN-85 KJ.S. / FIELD 3 *200 H3PLOT, 0 / MOVE PEN; 'PA' COMMAND IS INITIATED CLA / BY H3PENX CDF 0 TAD I (ARITH4 / GET X POSITION DCA XPOS TAD I (YSAVE / GET Y POSITION DCA YPOS CDF 30 TAD PLPAFL SNA CLA / FIRST 'PA'-COMMAND ? JMP H3PLT1 / NO: TAD (HTPLPA / YES: OUTPUT 'PA' JMS TTO H3PLT1, TAD XPOS TAD (1000 / MAKE STRAIGHT BINARY AND (1777 JMS TDO 0 TAD (", JMS TCO TAD YPOS TAD (1000 AND (1777 JMS TDO 0 TAD (", JMS TCO TAD PLPAFL SNA CLA / FIRST PA COMMAND ? JMP .+3 / NO: EXIT TAD (HTPLRD JMS TTO DCA PLPAFL CIF CDF 0 JMP I H3PLOT XPOS, 0 YPOS, 0 PLPAFL, 1 HTPLPA, TEXT /SP1;PA/;0 HTPLRD, TEXT /;PD;PA/;0 H3PENU, 0 / PEN UP CDF 30 CLA TAD (HTPENU JMS TTO ISZ PLPAFL / SET FLAG TAD H3PENU JMP EXIT+1 /1. TERMINATES A PROCEEDING 'PA'-COMMAND /2. SETS PEN UP /3. ERROR STATUS HTPENU, TEXT /;PU;OE;/;0 H3PEND, 0 CDF 30 TAD (HTPEND JMS TTO ISZ PLPAFL TAD H3PEND JMP EXIT+1 /1. TERMINATES A PROCEEDING 'PA'-COMMAND /2. SETS PEN UP /3. ERROR STATUS HTPEND, TEXT /;PD;OE;/;0 H3PLOF, 0 CDF 30 CLA TAD (HTPLOF JMS TTO TAD H3PLOF JMP EXIT+1 /1. TERMINATES A PROCEEDING 'PA'-COMMAND /2. SETS PEN UP /3. POSITIONS PEN TO UPPER LEFT CORNER /4. REMOVES PEN /5. ERROR STATUS HTPLOF, TEXT /;PU;PA0,1150;SP0;OE;/;0 EXIT, 0 DCA EXIT JMS TRI / READ ERROR STATUS TAD (-260 SNA / ERROR NUMBER = 0 ? JMP EXITA / YES: TAD (260 / NO: TLS / TYPE NUMBER CLA CIF CDF 0 JMP I (DISJOB / CONTINUE DISPLAY EXITA, CIF CDF 0 JMP I EXIT PAGE
H3PLON, 0 / INIT PLOTTER CDF 30 CLA CLL TAD (330 / SET INPUT DEV FOR ERROR CODE JMS TIDC TAD (340 / AND OUTPUT DEV TO 33/34 JMS TODC CLA TAD (HTPLON JMS TTO / OUTPUT ASCII STRING TAD H3PLON JMP EXIT+1 /1. INITIALIZATION FOR DIN A4 SIZE /2. PLOT HEADER HTPLON, TEXT /$[$.N;19:$[$.H32;;17:IN;PS4;RO90;IP975,3800,7300,9800;/ TEXT /IW;SC0,1023,0,1023;SP0;OE;/;0 H3PLGR, 0 / PLOT GRID CDF 30 CLA TAD (HTPLGR JMS TTO TAD H3PLGR JMP EXIT+1 PAGE
/1. PLOT GRID WITH DIFFERENT PEN SIZES HTPLGR, TEXT /$$SP1;PA0,0;PD;PA0,256,-15,256,0,256,/ TEXT /0,512,-15,512,0,512,0,768,-15,768,0,768,0,1023,/ TEXT /1023,1023,1023,-15,1023,0,819,0,819,-15,819,0,/ TEXT /614,0,614,-15,614,0,410,0,410,-15,410,0,/ TEXT /205,0,205,-15,205,0,0,0,0,-15,0,0;PU;/ TEXT /SR1.5,2.2;PA-8,-55;LB0$C$PA176,-55;LB100$C$/ TEXT /PA381,-55;LB200$C$PA585,-55;LB300$C$/ TEXT /PA790,-55;LB400$C$PA994,-55;LB500$C$/ TEXT /SR1.8,2.6;PA650,-120;LBZEIT [%MS%]$C$/ TEXT /SR1.5,2.2;PA-68,245;LB-1$C$PA-68,501;LB 0$C$/ TEXT /PA-68,757;LB 1$C$/ TEXT /SP2;PA0,96;PD;PA1023,96;/ TEXT /PU;PA1023,128;PD;PA0,128;PU;PA0,160;PD;PA1023,160;/ TEXT /PU;PA1023,512;PD;PA0,512;PU;SP0;OE;/ 0 PAGE XLIST
/ TRI.PA / / TTY READ INPUT / / READS CHARACTER FROM TTY / / ENTRY: AC = NO CARE / EXIT: AC = CHARACTER / / SUBRS: NONE / / 02-MAY-84 REV 0.0 KJ.S. / 18-OCT-84 REV 0.1 KJ.S. HARDWARE INDEPENDENT / TRI, 0 CLA TIKSF, KSF JMP .-1 TIKRB, KRB AND (177 TAD (200 JMP I TRI
/ TIDC.PA / / CHANGE SERIAL INPUT DEVICE CODE / / ENTRY: AC = XNNX NN = DEV.CODE / EXIT: AC = 0 / / SUBR: LOCATINONS IN TRI ARE CHANGED / / 18-OCT-84 REV 0.0 KJ.S. / TIDC, 0 AND (770 DCA TIDCSV TAD (6001 TAD TIDCSV DCA TIKSF TAD (6006 TAD TIDCSV DCA TIKRB JMP I TIDC TIDCSV, 0 PAGE
/ TTI.PA / / TELETYPE TEXT INPUT / / READS INPUT FROM TTY AND STORES 2 CHARACTERS/WORD / INTO TEXT BUFFER. ACCEPTS ONLY PRINTABLE CHARACTERS. / ALL OTHER INPUT AND CHARACTERS AFTER BUFFER-OVERFLOW / IS ECHED AS 'BELL'. THE INPUT TERMINATOR IS NOT / ECHOED. / / ENTRY: AC = TERMINATOR, 0 = CR / ARG1 POINTER TO TEXT BUFFER / ARG2 LENGTH OF TEXT BUFFER (WORDS) / EXIT: AC = 0 / / SUBR TRI,TCO / / 16-JUL-84 REV 0.0 KJ.S. / 22-JUL-84 REV 0.1 KJ.S. SOME BUGS REMOVED / 23-JUL-84 REV 0.2 KJ.S. BUG AFTER 'DEL' REM. / TTI, 0 SNA / AC = TERMINATOR TAD (215 / AC = 0 TERMINATOR = CR AND (377 CIA DCA TTITM / SAVE TAD I TTI / GET ARG1 = BUFFER POINTER DCA TTIBPT ISZ TTI CLA CLL TAD I TTI / GET ARG2 = BUFFER LENGTH RAL CIA IAC DCA TTIBLN / = - BUFFER LENGTH * 2 + 1 ISZ TTI DCA TTICNT / CLEAR CHARACTER COUNTER DCA TTIXF / CLEAR EXIT FLAG TTI1, JMS TRI / READ INPUT DCA TTICH TAD TTICH TAD TTITM SZA CLA / TERMINATOR ? JMP TTI2 / NO: ISZ TTIXF / YES: SET EXIT FLAG DCA TTICH / PUT 'ZERO' INTO BUFFER JMP TTI3 TTI2, TAD TTICH / CHECK INPUT TAD (-240 SPA / CHAR.GE.240 ? JMP TTI10 / NO: CONTROL CHAR TAD (-100 SMA CLA / CHAR.LT.340 ? JMP TTI10 / N0: CONTROL CHAR TAD TTICNT / CHECK FOR BUFFER OVERFLOW TAD TTIBLN SMA CLA / COUNTER.LT.BUFFER*2 ? JMP TTI10 / NO: BUFFER OVERFLOW TAD TTICH / ECHO JMS TCO TAD TTICH / MAKE 6-BIT-ASCII AND (77 DCA TTICH TTI3, CLA CLL TAD TTICNT / CALCULATE BUFFER POINTER RAR TAD TTIBPT DCA TTIPNT SZL / LINK=MSB OF TTICNT.EQ.0 ? JMP TTI4 / N0: 2. BYTE OF WORD TAD TTICH / YES: 1. BYTE BSW JMP TTI5 TTI4, TAD I TTIPNT / ADD 1.BYTE AND (7700 TAD TTICH TTI5, DCA I TTIPNT / STORE IN BUFFER ISZ TTICNT / INCREMENT COUNTER TAD TTIXF SNA CLA / EXIT ? JMP TTI1 / NO: GET NEXT CHARACTER JMP I TTI / YES: TTI10, CLA CLL / INPUT IS A CONTROL CHARACTER TAD TTICH TAD (-377 SNA CLA / CHAR.EQ.DEL ? JMP TTI12 / YES: TTI11, TAD (207 / NO: ILLEGAL INPUT JMS TCO / ECHO BELL JMP TTI1 / CONTINUE TTI12, TAD TTICNT SNA / BUFFER EMPTY ? JMP TTI11 / YES: TAD (-1 / NO: DECREMENT DCA TTICNT TAD (210 / BACKSPACE JMS TCO TAD (240 JMS TCO TAD (210 JMS TCO JMP TTI1 TTITM, 0 / MINUS INPUT TERMINATOR TTIBPT, 0 / BUFFER START POINTER TTIBLN, 0 / MINUS LENGTH OF BUFFER TTIPNT, 0 / CURRENT BUFFER POINTER TTICNT, 0 / CURRENT LENGTH COUNTER TTISWD, 0 / INPUT CONTROL FLAG TTICH, 0 / LAST INPUT CHAR TTIXF, 0 / EXIT FLAG PAGE
/ TDO.PA / / TYPES DECIMAL INTEGERS WITH DIFFERENT FORMATS / / ENTRY: AC = NUMBER TO BE TYPED / ARG1 BIT 0 IF SET, TYPE SIGNED OUTPUT / BIT 1 IF SET, FILL FORMAT WITH ZEROS / UNSIGNED OUTPUT ONLY, BIT 0 IGNORED / BIT 6-11 OUTPUT FIELD WIDTH. IF ZERO, / NO LEADING ZEROS OR SPACES / EXIT: AC = 0 / / SUBR: TIO,TCO / / / 19-OCT-84 REV 0.0 KJ.S. / TDO, 0 DCA TION0 / SAVE NUMBER TAD I TDO ISZ TDO DCA TIOFL / SAVE FLAG TAD TDOTST / POINTER TO HEXADECIMAL TABLE JMS TDOHO / PROCEED JMP I TDO TDOTST, .+1 / TABLE OF DECIMAL VALUES 140 / -4000 4060 / -2000 6030 / -1000 6340 / -800 7160 / -400 7470 / -200 7634 / -100 7660 / -80 7730 / -40 7754 / -20 7766 / -10
/ TOO.PA / / TYPES OCTAL INTEGERS WITH DIFFERENT FORMATS / / ENTRY: AC = NUMBER TO BE TYPED / ARG1 BIT 0 IF SET, TYPE SIGNED OUTPUT / BIT 1 IF SET, FILL FORMAT WITH ZEROS / UNSIGNED OUTPUT ONLY, BIT 0 IGNORED / BIT 6-11 OUTPUT FIELD WIDTH. IF ZERO, / NO LEADING ZEROS OR SPACES / EXIT: AC = 0 / / SUBR: TIO,TCO / / / 18-OCT-84 REV 0.0 KJ.S. / 18-OCT-84 REV 0.1 KJ.S. SOME BUGS REMOVED / 19-OCT-84 REV 1.0 KJ.S. USING SUBR. TIO / TOO, 0 DCA TION0 / SAVE NUMBER TAD I TOO ISZ TOO DCA TIOFL / SAVE FLAG TAD TOOTST / POINTER TO OCTAL TABLE JMS TDOHO / PROCEED JMP I TOO TOOTST, .+1 / TABLE OF OCTAL VALUES 4000 6000 7000 0000 7400 7600 7700 0000 7740 7760 7770
/ THO.PA / / TYPES HEXADECIMAL INTEGERS WITH DIFFERENT FORMATS / / ENTRY: AC = NUMBER TO BE TYPED / ARG1 BIT 0 IF SET, TYPE SIGNED OUTPUT / BIT 1 IF SET, FILL FORMAT WITH ZEROS / UNSIGNED OUTPUT ONLY, BIT 0 IGNORED / BIT 6-11 OUTPUT FIELD WIDTH. IF ZERO, / NO LEADING ZEROS OR SPACES / EXIT: AC = 0 / / SUBR: TIO,TCO / / / 19-OCT-84 REV 0.0 KJ.S. / THO, 0 DCA TION0 / SAVE NUMBER TAD I THO ISZ THO DCA TIOFL / SAVE FLAG TAD THOTST / POINTER TO DECIMAL TABLE JMS TDOHO / PROCEED JMP I THO THOTST, .+1 / TABLE OF HEXADECIMAL VALUES 0000 0000 0000 4000 6000 7000 7400 7600 7700 7740 7760
/ TCR CARRIAGE RETURN / / MOVES CURSOR TO THE BEGINNING OF THE / PRESENT LINE / / ENTRY: AC = NO CARE / EXIT: AC = 0 / / 10-APR-84 REV 0.0 KJ.S. / TCR, 0 CLA TAD (215 JMS TCO / OUTPUT CLA JMP I TCR
/ TNL NEW LINE / / POSITIONS CURSOR TO BEGINNING / OF NEXT LINE / / ENTRY: AC = NO CARE / EXIT: AC = 0 / / 10-APR-84 REV 0.0 KJ.S. / TNL, 0 JMS TCR TAD (212 JMS TCO / LF JMP I TNL
TIOF, 0 / SUBROUTINE TO CHECK OUTPUT AND (17 / FORMAT AND TYPE DCA TIOPT / STORE ISZ TIOCT / INCREMENT DIGIT COUNTER TAD TIOZF SZA CLA / ZERO FLAG = 0 ? JMP TIOF2 / NO: TYPE DIGIT TAD TIOPT / YES: SZA CLA / DIGIT = 0 ? JMP TIOF1 / NO: TAD TIOFL / YES: SNA CLA / FIELD WIDTH = 0 ? JMP I TIOF / YES: EXIT TAD TIOFL TAD TIOCT SPA CLA / FILL CHAR WITHIN FIELD ? JMP I TIOF / NO: EXIT TAD TIOFC / YES: TYPE FILL CHARACTER JMP TIOF4 TIOF1, TAD TIOFL SNA / FIELD WIDTH = 0 ? JMP TIOF2 / YES: NO FIXED FIELD WIDTH TAD TIOCT / NO: SPA CLA / DIGIT WITHIN FIELD ? JMP TIOER / NO: FIELD WIDTH TOO SMALL TIOF2, ISZ TIOZF / SET ZERO FLAG TAD TIOSG SNA CLA / SIGN NEEDED ? JMP TIOF3 / NO: DCA TIOSG / CLEAR SIGN FLAG TAD ("- / YES: TYPE IT JMS TCO TIOF3, TAD TIOPT / TYPE DIGIT TAD (-12 SMA / HEX - CHAR. ? TAD (7 / YES: MAKE A LETTER TAD (272 / NO: MAKE NUMBER TIOF4, JMS TCO JMP I TIOF / EXIT PAGE
/ SUBROUTINE FOR TDO,TOO,THO / TION0 AND TIOFL MUST BE SET TDOHO, 0 DCA TIOPT / AC = TABLE POINTER DCA TIOSG / CLEAR SIGN FLAG TAD (240 DCA TIOFC / FILL CHAR = SPACE TAD TIOFL AND (2000 SNA CLA / FILL CHAR = ZERO ? JMP TIOA / NO: TAD (260 / YES: DCA TIOFC JMP TIOB / NO SIGN OPTION TIOA, TAD TIOFL SMA CLA / SIGNED OUTPUT ? JMP TIOB / NO: TAD TION0 / YES: COMPLEMENT NEGATIV NUMBER SMA / NEGATIV NUMBER ? JMP TIOB / NO: CIA / YES: COMPLEMENT DCA TION0 ISZ TIOSG / SET SIGN FLAG TIOB, CLA TAD TIOFL AND (77 / GET FIELD WIDTH DCA TIOFL / CLEAR UNUSED BITS TAD TIOFL SNA / FIELD WIDTH ZERO ? JMP TIOD / YES: CIA / NO: COMPLEMENT TAD TIOSG / TAKE SIGN INTO ACCOUNT TAD (4 / MAX 4 DIGIT SMA / FILL CHARACTER NEEDED ? JMP TIOD / NO: DCA TIOCT / YES: -# OF SPACE TO FILL FORMAT TIOC, TAD TIOFC / TYPE JMS TCO ISZ TIOCT JMP TIOC TIOD, CLA TAD (-13 / # OF SUBTRACTIONS DCA TIOCT / TO COUNTER DCA TION1 TIOE, CLA CLL / SUCCESSIV SUBTRACTIONS OF TAD TION0 / DECIMAL VALUES FROM TABLE TAD I TIOPT / SUBTRACTION SZL / CARRY ? DCA TION0 / YES, NEW VALUE CLA TAD TION1 / RESULT IN LINK RAL DCA TION1 / SHIFTED INTO TION1 ISZ TIOPT / INCREMENT POINTER ISZ TIOCT / DONE ? JMP TIOE / NO, CONTINUE DCA TIOZF / CLEAR LEADING ZERO FLAG TAD TIOSG CIA TAD (-5 DCA TIOCT / SET DIGIT COUNTER, 4 DIGITS + SIGN TAD TION1 / 1. DIGIT BSW RTR JMS TIOF TAD TION1 / 2. DIGIT RTR RTR JMS TIOF TAD TION1 / 3. DIGIT JMS TIOF ISZ TIOZF / 4. DIGIT ALWAYS TYPED TAD TION0 JMS TIOF JMP I TDOHO TIOER, TAD TIOFL / ERROR, FILL FORMAT WITH **** CIA DCA TIOCT TAD ("* JMS TCO / TYPE CHARACTER ISZ TIOCT JMP .-4 CLA JMP I TDOHO / EXIT MAIN SUBROUTINE TION0, 0 / GETS LSD TION1, 0 / GETS 3 MSD TIOPT, 0 / POINTER TIOCT, 0 / COUNTER TIOFL, 0 / FLAGS TIOSG, 0 / SIGN FLAG TIOZF, 0 / ZERO SUPPRESS FLAG TIOFC, 0 / FILL CHARACTER
/ TSO STRING OUTPUT / / TYPES A STRING OF ASCII - CHARACTERS / BUFFER CONTAINS ONE CHARACTER PER / WORD AND MUST BE TERMINATED BY 0 / / ENTRY: AC = POINTER TO BUFFER / EXIT: AC = 0 / / 10-APR-84 REV 0.0 KJ.S. / TSO, 0 DCA TSOPT / BUFFER POINTER TSOA, TAD I TSOPT / GET CHARACTER SNA / CHARACTER.EQ.0 ? JMP I TSO / YES: EXIT JMS TCO / NO: PRINT ISZ TSOPT JMP TSOA JMP TSOA TSOPT, 0 PAGE
/ TCO CHARACTER OUTPUT / / TYPES ONE ASCII-CHARACTER CALLING / CP-ROUTINE, RESPONS TO CTRL/S - CTRL/Q / / ENTRY: AC = CHARACTER / EXIT: AC = 0 LINK UNCHANGED / / 10-APR-84 REV 0.0 KJ.S. / 18-OCT-84 REV 0.1 KJ.S. HARDWARE INDEPENDENT / 18-OCT-84 REV 0.2 KJ.S. LINK PRESERVED / TCO, 0 DCA TCOSV / SAVE CHAR JMS TOKSF / CHECK XON/XOFF JMP TCO2 JMS TOKRB AND (177 TAD (7755 SZA CLA / CTRL/S ? JMP TCO2 / NO: TCO1, CLA / YES: WAITING FOR CTRL/Q JMS TOKSF JMP .-1 JMS TOKRB AND (177 TAD (7757 SZA CLA / CTRL/Q ? JMP TCO1 / NO: WAIT TCO2, TAD TCOSV / YES: TYPE CHARACTER JMS TOTLS JMS TOTSF JMP .-1 CLA JMP I TCO TCOSV, 0 / SUBROUTINES WITH I/O INSTRUCTIONS / DEVICE-CODE CAN BE SET BY TODC TOKSF, 0 KSF SKP ISZ TOKSF JMP I TOKSF TOKRB, 0 KRB JMP I TOKRB TOTSF, 0 TSF SKP ISZ TOTSF JMP I TOTSF TOTLS, 0 TLS JMP I TOTLS
/ TODC.PA / / CHANGE SERIAL OUTPUT DEVICE AND THE CORRESPONDING / INPUT DEVICE FOR XON/XOFF PROTOCOL / / ENTRY: AC = XNNX NN = OUTPUT, NN-1 = INPUT DEVICE / EXIT: AC = 0 / / 18-OCT-84 REV 0.0 KJ.S. / TODC, 0 AND (770 DCA TODCSV TAD (6001 TAD TODCSV DCA TOTSF+1 TAD (6006 TAD TODCSV DCA TOTLS+1 TAD (-10 / CHANGE INPUT TAD TODCSV DCA TODCSV TAD (6001 TAD TODCSV DCA TOKSF+1 TAD (6006 TAD TODCSV DCA TOKRB+1 JMP I TODC TODCSV, 0
PAGE / TTO TEXT OUTPUT / / TYPE TEXT FROM 6-BIT ASCII BUFFER CREATED WITH / PAL8 TEXT PSEUDO-OP. / / $ - OPTION: / CHARACTERS BETWEEN TWO $-CHARACTERS ARE CONVERTED / TO CONTROL CHARACTERS. / / # - OPTION: / MULTIPLE OUTPUT OF SAME CHARACTER. THE FIRST CHARACTER / AFTER # IS TREATED AS NUMBER ( LOWER 6 BITS ) AND / THE SECOND CHARACTER IS PRINTED. / / NOTE: / IF THE $- AND %-OPTIONS ARE USED, THE TEXT BUFFER MUST / TERMINATED WITH A ZERO WORD. THIS FEATURE COMBINES / SEVERAL TEXT BUFFERS TO ONE BUFFER WITH THE /F OPTION. / / % - OPTION / CHARACTERS BETWEEN TWO "-CHARACTERS ARE CONVERTED / TO LOWER CASE CHARACTER. MAY BE COMBINED WITH / OTHER OPTIONS / / ENTRY: AC = POINTER TO TEXT-BUFFER / EXIT: AC = 0 / / 06-APR-84 REV 0.0 KJ.S. / 09-APR-84 REV 0.1 KJ.S. LOCATIONS RENAMED / 11-APR-84 REV 0.2 KJ.S. OUTPUT CODE CHANGED / 09-FEB-85 REV 0.3 KJ.S. #-OPTION ADDED / 13-FEB-85 REV 0.4 KJ.S. %-OPTION ADDED / TTO, 0 DCA TTOPNT / SAVE POINTER TO TEXT DCA TTOCFL / CLEAR CONTROL-FLAG DCA TTOEFL / AND END-FLAG TTOA, CLA TAD I TTOPNT SNA / ZERO WORD ? JMP TTOR / YES: END OF BUFFER BSW JMS TTOB TAD I TTOPNT JMS TTOB ISZ TTOPNT JMP TTOA TTOB, 0 AND (77 / MAKE 6-BIT ASCII SNA / CHAR = 0 ? JMP TTOB2 / YES: CHECK IF END OF BUFFER TAD (-43 SNA / CHAR = 43 = # ? JMP TTOB3 / YES: REP. OPTION TAD (-1 SNA / CHAR = 44 = $ ? JMP TTOB1 / YES: TOGGLE CONTROL FLAG TAD (-1 SNA / CHAR = 45 = % ? JMP TTOB5 / YES: TOGGLE CONTROL FLAG TAD (5 / NO, PRINT CHARACTER SPA / MAKE 8-BIT ASCII: TAD (100 / 01-37 TO 301-337 TAD (240 / 40-77 TO 240-277 TAD TTOCFL / ADD CTRL SET BY $ TAD TTOLFL / AND LOWER FLAG SET BY % DCA TTOSV ISZ TTONFL SKP JMP TTOB4 / LAST CHAR WAS #, MAKE NUMBER TTOB0, TAD TTOSV JMS TCO ISZ TTONFL JMP TTOB0 / LOOP FOR #-OPTION CLA CLL CMA RAL / DONE, FLAG = -2 JMP TTOBX TTOB5, CLA / TOGGLE LOWER CASE FLAG TAD TTOLFL SNA CLA / LOWER CASE FLAG ZERO ? TAD (40 / YES: SET TO 40 DCA TTOLFL / NO: CLEAR FLAG JMP TTOB6 TTOB1, CLA / TOGGLE CONTROL CHAR FLAG TAD TTOCFL SNA CLA / CONTROL FLAG ZERO ? TAD (-100 / YES: SET TO -100 DCA TTOCFL / NO: CLEAR FLAG TTOB6, CLA IAC / SET END FLAG DCA TTOEFL JMP I TTOB TTOB2, CLA TAD TTOEFL SNA CLA / TTOEFL.GT.0 ? JMP TTOR / NO: END OF BUFFER, EXIT JMP I TTOB / YES: IGNORE ZERO CHAR AFTER USE OF $ TTOB3, CLA CMA / CHAR = # JMP TTOBX / NEXT CHAR IS CONVERT TO NUMBER TTOB4, CLA IAC / MAKE NUMBER TAD TTOSV AND (77 CIA TTOBX, DCA TTONFL / SET FLAG JMP I TTOB TTOR, CLA / CLEAR ALL FLAGS DCA TTOCFL DCA TTOEFL JMP I TTO / AND EXIT TTOPNT, 0 TTOCFL, 0 TTOLFL, 0 TTOEFL, 0 TTONFL, -2 TTOSV, 0 PAGE



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search