File: DISPV3.PA of Tape: Various/System-Tapes/s5
(Source file text)
/SCOPE DISPLAY HANDLER V3 (2-PAGE) /W.V.D.M. /DEFINITIONS OF CHARACTER DISPLAY DSC=6067 /DISPLAYS 6-BIT CHARACTER /RECOGNIZES 4TAB,CR,FF DCHS=6074 /SELECT SCOPE CHANNEL DCSI=6077 /CLEAR REGISTERS DSCD=6052 /SKIP ON CHAR.,CLEAR FLAG /EAE DEFINITIONS SWAB=7431 DLD=7663 SWP=7521 BSW=7002 SHL=7413 SWBA=7447 MQL=7421 MQA=7501 CAM=7621 DVI=7407 FIXTAB FIELD 0 *0 /HEADER BLOCK -1 /ONE HANDLER IN THIS FILE DEVICE DISP DEVICE TV 1300 4000 ZBLOCK 2 *200 DIS, 03 /SYSTEM DEVICE NAME = 6711 DS7600, 7600 /CLA CLEARS AC DIS214, RDF TAD DISCIF /FORM CIF CDF N DCA DISXIT /SAVE CALLING FIELD TAD I DIS /GET FUNCTION WORD AND DIS070 /GET BUFFER FIELD BITS TAD DISCDF /MAKE A CDF N DCA DISLP /SAVE IT TAD DISLP DCA DSCDN /AND AGAIN CLL CML RAR /TEST WRITE BIT TAD I DIS /FUNCTION WORD AGAIN AND DS7700 /GET COUNT BITS ISZ DIS SPA SNA /-:FATAL,L=0;0:IGNORE,L=1 DSJMP1, JMP DSEXIT CLL RAL /TIMES TWO,SET L=0 TAD I DIS /BUFFER ADRESS+WORD COUNT CIA /-END ADRESS DCA DSEADR TAD I DIS /BUFFER ADRESS DCA DSCAIN /SAVE STARTING ADRESS ISZ DIS /AT BLOCK NUMBER TAD I DIS /GET BLOCK NUMBER SNA CLA /TEST FOR BLOCK 0 DSNEWS, CLL CML /LNK WAS CLEARED - DIS160, 160 /ALSO RESTART DISCDF, CDF 0 /WE ARE IN FIELD 0 DSJINI, JMP DISSET /BECOMES 0 AFTER INIT DCSI /CLEAR DCHS /SCOPE CHANNEL DSC /SET FLAG TAD DSCAIN /GET BUFFER START DCA DISCA DCA DSJMPE /CLEAR EXIT DSNWPG, JMS I DSXTRN /FIX TRUNCATION AND LINE START TAD DISCA /GET LAST ADRESS DCA DISCAA /DEFINE NEW START DSJMPE, 0 /GETS MODIFIED FOR EXIT JMP DSTTCH-2 /FOR INTIALIZING;COMES BACK+1 DSOLPG, SWAB /CLEARS AC ALSO TAD DISCAA /GET OLD START DCA DISCA /DEFINE SAME START DCA DSJMPE /NO EXIT IF RESTART DISLP, HLT /BUFFER DATA FIELD TAD I DISCA /GET FIRST WORD CDF 0 JMS I DISXCH DSCDN, HLT /BUFFER DATA FIELD DLD /HERE COMES THE EAE DISCA, 0 /CURRENT ADD REGISTER CDF 0 SWP /WORD 1 IN AC BSW /DONT CARE ABOUT WORD 1 RTR /WORD3A IN AC8-11 SHL 4 /WORD 3 IN AC4-11 DCA DSLPTP SWP /WORD 2 IN AC0-7 RTR RTR /WORD 2 IN AC8-11 JMS I DISXCH /PUT OUT WORD 2 CLA CLL CML RTL /AS 3 HAVE GONE TAD DISCA DCA DISCA /INC 'DISCA' BY 2 TAD DSLPTP JMS I DISXCH /PUT OUT WORD 3 TAD DISCA TAD DSEADR /END OF BUFFER SNL CLA JMP DISLP /GET NEXT 3 TAD DSJMP1 /OVERFLOW OVERFLOWS DCA DSJMPE /SETS EXIT CLA CLL IAC RTL /4 FOR FF. JMP I DSXFFE /TO GET LINES CORRECT DSTTCH, KSF JMP DSOLPG /NO FLAG LOOP KRB /JAM TRANSFER DCA DSKRBT TAD DSKRBT AND DIS160 /CHECK FOR NON CONTROL SZA CLA JMP DSOLPG TAD DSKRBT AND DIS017 /GET OUT PARITY AND SO ON CLL IAC RTR SPA SZL /PICKS UP 8 ^CHARS JMP DSOLPG /NONE OF THEM TAD DSJMP2 /BUILD JUMP DCA DISXXX DISXXX, HLT DSJMP2, JMP . /LINK IS CLEARED HERE JMP DISCIF /^C:EXIT KEYMON JMP DSNEWS /^G/BELL:START ALL OVER JMP DSNWPG /^K/VT:GET NEW INFO DSEXIT, SZL /^O:NON FATAL EXIT ISZ DIS /INC ONCE FOR ZERO WC ISZ DIS /INC TWICE;ERROR AT BUFFER ADRESS ISZ DIS /NORMAL AT BLOCK NUMBER DISXIT, HLT /HERE CDI N JMP I DIS DISCIF, CIF CDF 0 JMP I DS7600 /EXIT KEYMON DISSET, JMS . /FIND OUT LOC DSBS1, TAD DSXIN2 DSKRBT, SNA /ZERO ENDS LIST DISCAA, JMP DSNXIN TAD DISSET DCA DSXIN2 /DOUBLY USED LOCS ISZ .-1 ISZ DSBS1 JMP DSBS1 DSNXIN, JMS I DSXIN2 /TO NEXT PAGE INIT DSBS2, DCA DSJINI /CLOSE INIT JMP DSNEWS DSXIN2, DISIN2-DSBS1 DISXCH, DISCH-DSBS1 DSXTRN, DSTRNC-DSBS1 DSXFFE, DSFFE-DSBS1 DSLPTP, 0 DSCAIN, 0 DSEADR, 0 DS7700, 7700 DIS070, 70 DIS017, 17 PAGE DIS177, 177 DSWAIT, 0 DSCD /AT LEAST ONE CHAR WAS GIVEN JMP .-1 DSC /DISPLAY NEW ISZ DSLPTR /COUNT CHARS PER LINE JMP I DSWAIT TABEX, CAM /LINE OVERFLOWED JMP DISVT /GO TO NEXT LINE DSM40, -40 DISN20, -20 DIS10, 10 DS7770, 7770 /DON'T MOVE DISCH, 0 ISZ DSCCNT /COUNT CHARS JMP DISEXT /ONLY FIRST TIME PER PAGE(NOPPED) JMS DSWAIT /DISPLAY ANYTHING DIS200, AND DIS177 /PARITY OFF TAD DSM40 SNA /SPACE? JMP DISEX /YES GET OUT BEFORE IT'S TOO LATE SPA /CONTROL CHAR? JMP DISCTL /YES;TREAT IT TAD DSM100 SMA CLA JMP DISLOW /LOWER CASE JMP DISEX /FORGET ABOUT NORMAL CHARS DSUPAR, CLA CMA /MAKE '^' DISLOW, TAD DIS37 /MAKE '_' JMS DSWAIT DISEX, CLA CLL JMP I DISCH DIS6, 6 /DON'T MOVE DISCTL, TAD DIS22 /CHAR-16 NOPI, CLL CML DIS40, TAD DIS6 /OVERFLOW FROM 10-15 SZL SNA /'AND' MICRO;DISREGARD 10 JMP DSUPAR /FLAG UNKNOWN CNTRL CODE DSFF1, RAL /BUILD JMP TAD DSJCTL DCA .+6 CLA CMA /FORMATTING DOES'NT COUNT TAD DSLPTR /INTERMEDIATE STORAGE MQL /SO WE CAN RESET IT BEFORE MQA DCA DSLPTR /RESTORE HLT DSJCTL, JMP . DIS37, 37 JMP DISTAB /TAB ENTRY;LNK IS SET? DSCCNT, 0 JMP DISLF DIS22, 22 DISVT, ISZ DSLNBR /VERT. TAB ENTRY;GIVE ONE LINE SKP /IF IT SKIPS THEN FF TAD .-1 /FF. SET PAGE EXIT DCA DISMOD TAD DSN200 /CR. ENTRY DCA DSLPTR /RESET TO BEGINNING DISMOD, 0 /'SKP' IF PAGE EXIT JMP DISEX DCA .-2 /MAKE SURE TAD DISFFN DSC MQA CLA DCA DSSPTP /NOW STORE DEFINITIVELY TAD DISN20 DCA DSLNBR /RESET LINE COUNTER SWBA /RELOCATABLE HANDLER! TAD DSCCNT /CHAR COUNT MQL DVI /MODULO 3 3 CMA DCA DSREST /KEEP FOR AFTER DCA DSCCNT TAD (JMP DISEXT DCA DISCH+2 /NEXT CHAR REROUTED JMP I DSXTCH /GO FOR TTY: CHECKS DISEXT, DCA DSCHTP /KEEP CHAR TAD DSLVOT /GET TRUNCATION VALUE TAD DSCCNT SPA CLA JMP DISEX /IGNORE DISCON, TAD DSLPTR /FIRST TIME -200 TAD DSSTLN /CHECK FOR EXTRA SPACES ON FIRST LINE DSM100, SMA CLA JMP DISOUT /NO MORE TAD DIS40 /SHIFT LINE JMS DSWAIT /WITH SPACES DSN200, 7600 /GROUP 2 CLA JMP DISCON /CONTINUE DISOUT, TAD NOPI /IT'S A 'CLL CML' DCA DISCH+2 /SO WE DON'T COME BACK TO 'DISEXT' TAD DSCHTP /GET BACK VALUE OF CHAR JMP DISCH+3 /BACK TO MAIN LOOP DSCHTP, DSTRNC, 0 /SUBROUTINE FOR SETTING VALUES TAD DIS200 /FOR TRUNCATION AND START OF LINE SZL JMP .+4 /NZL IS NEW START CLA TAD DSSPTP CIA DCA DSSTLN SNL TAD DSREST DCA DSLVOT CLL JMP I DSTRNC DSFFE, ISZ DSLPTR JMP DSFF1 DISTAB, TAD DSLPTR DISFFN, AND DS7770 /HACK OFF LAST 8 TAD DIS10 /PLUS 8 DCA DSLPTR SZL JMP DISEX JMP TABEX DISLF, ISZ DSLNBR JMP DISEX JMP DISMOD+2 DSSPTP, DISIN2, 0 DSREST, TAD DSXTCH DSLVOT, TAD DISIN2 /DOUBLY USED LOCS DSLNBR, DCA DSXTCH DSLPTR, JMP I DISIN2 DSXTCH, DSTTCH-DSBS2 DSSTLN, 0 PAGE $$$$$$$$$$