File: GE.TK of Disk: Disks/MyPDP/m8-blue-rka1-rkb1
(Source file text)
/GE.TK 9-JUN-80 /**UASEM VERSION** /THIS TASK SERVES AS A PLOTTEREMULATOR. /IT PACKS THE DATA IN A BUFFER AND CALLS PL, THE PLOTTER /DRIVER TASK. / / *0 CDF 10 IFDEF XY8E < XY8E%10+EMTAB / > IFDEF KLPLOT < KLPLOT%10+EMTAB / > "G^100+"E&3777 *200 PLTEMP, "G^100+"E&3777 600 /A THREE-PAGE TASK XINIT, INIT /POINTER TO INITIALIZATION CODE XRTV, RTV /POINTER TO READER TRANSFER VECTOR PLCAI, NXTLOC /READER CURRENT ADDRESS POINTER PLBASE, 0 /BASE OF CURRENT BG GE, JMP I XINIT //GO INITIALIZE THIS TASK. OVERLAYED WITH: / SZL //EXIT CALL ? JMP PLEND //MAKE END OF FILE DCA PLBASE //ADDRESS OF USERS DATA AC0006 //= UINST TAD PLBASE // JMS DEFER //GET THE INSTRUCTION AND C7 //IOP'S TAD (JMP PLTAB //BRANCH THROUGH TABLE DCA .+1 // HLT // PLTAB, JMP PLNOP //IOT 0 JMP PLSKP //IOT 1 JMP PLNOP //IOT 2 IFDEF XY8E <JMP PLUP //IOT 3 > IFDEF KLPLOT <JMP PLNOP //IOT 3 > JMP PLGO //IOT 4 IFDEF XY8E <JMP PLDWN //IOT 5 > IFDEF KLPLOT <JMP PLNOP //IOT 5 > JMP PLGO //IOT 6 JMP PLNOP //IOT 7 IFDEF XY8E < PLUP, CLA IAC //UP=1 PLDWN, IAC //DOWN=1 DCA PLTEMP //REMEMBER UP OR DOWN PLNEW, TAD PLSTEP JMS PLOUT //OUTPUT PREVIOUS STEP TO FILE TAD PLTEMP DCA PLSTEP JMP PLRET // > ERROR, TAD (1-SKP PLSKP, TAD (SKP-NOP PLNOP, TAD C7000 PLRET, JMS MONITOR //RETURN TO CENTRAL EMULATOR RETURN // PLGO, TAD PLBASE TAD (UAC JMS DEFER //GET HIS AC IFDEF XY8E < AND C77 //THESE ARE THE BITS DCA PLTEMP TAD PLSTEP AND C77 CIA TAD PLTEMP SZA CLA //SAME STEP AGAIN ? JMP PLNEW PLADD, CLL IAC BSW //ADD ONE TO COUNT TAD PLSTEP DCA PLSTEP SNL //OVERFLOW ? JMP PLRET //NO, RETURN TAD PLSTEP TAD M100 JMS PLOUT //WRITE THIS TO THE FILE JMP PLRET //THE NEW ONE IS IN ALREADY > IFDEF KLPLOT < SNA /CLOSE ? JMP PLEND /YES, CLOSE THIS PLOT FILE JMS PLOUT /SEND THE WORD TO THE FILE JMP PLRET /AND BACK AGAIN > PLOUT, 0 //PUT A PLOTTER WORD IN THE BUFFER CDTOIF /BUFFERS ARE IN THIS FIELD DCA I PLCAI ISZ PLCAI NOP ISZ PLWCI /END OF BUFFER ? JMP I PLOUT /NO CDF 10 X1, AC2000 //SET BG INACTIVE TAD I PLBASE DCA I PLBASE GETRY, CDTOIF TAD XRTV /POINTER TO TRANSFER VECTOR JMS MONITOR CALL "P^100+"L&3777 JMP GEWAIT //PLOTTER BUSY, WAIT A WHILE DCA GESLOT JMS MONITOR WAIT GESLOT, 0 CDF 10 SZA CLA JMP ERROR /ERROR: SPOOL.PL NOT FOUND ? X2, AC6000 //-INACTIVE+EMULATE TAD I PLBASE // DCA I PLBASE // TAD M400 /REST WC DCA PLWCI TAD RTV+1 DCA PLCAI /RESET BUFFER POINTER JMP I PLOUT / GEWAIT, JMS MONITOR STALL DGNTICK CLA CLL JMP GETRY /TRY AGAIN PLEND, CLA TAD PLOUT SNA CLA /ANYTHING TO SEND ? JMP END /NO, QUIT DCA X1 DCA X2 /DON'T TOUCH BG STATUS NOW JMS PLOUT ISZ (-400 /CRUMMY! JMP .-2 END, JMS MONITOR /CLOSE CALL CALL "P^100+"L&3777 JMP .-3 CDF 10 CLA CLL JMS MONITOR EXIT SWPOUT RTV, ZBLOCK 2 PLSTEP, 2 /INITIAL PEN-UP !!!!NOT ZERO!!!! PLWCI, NXTLOC-BUFFER-400 PAGE IFDEF XY8E < NXTLOC, > BUFFER, 0 /END OF PAGE HEADER IFDEF KLPLOT < 12 /LINEFEED "[ /[ DA, ZBLOCK 2 "-&177 /- MON, ZBLOCK 3 "-&177 /- ZBLOCK 2 " /SPACE TIM, ZBLOCK 2 ": /: ZBLOCK 2 "] /] 15 12 12 40 NXTLOC, 0 CDF 10 TAD I (7666 CLL RTR RAR /EXTRACT DAY AND C37 JMS DIGITS TAD I (7666 CLL RTL RTL RAL AND C17 DCA ZTEM1 TAD ZTEM1 TAD ZTEM1 TAD ZTEM1 TAD TADI DCA TADI ISZ STPNT /BUMP POINTER PAST - TADI, TAD MONTH JMS STORE ISZ TADI ISZ (-3 JMP TADI TAD I (7666 AND C7 DCA ZTEM1 CDF 0 TAD I C7777 RTR RTR AND (30 TAD (106 /70 DECIMAL TAD ZTEM1 ISZ STPNT /BUMP POINTER PAST - JMS DIGITS JMP I NXTLOC DIGITS, 0 DIG0, TAD (-12 SPA JMP DIG1 ISZ TENS JMP DIG0 DIG1, TAD (12 DCA ZTEM1 TAD TENS TAD ("0&177 JMS STORE TAD ZTEM1 TAD ("0&177 JMS STORE DCA TENS JMP I DIGITS STORE, 0 STPNT, DCA DA ISZ STPNT JMP I STORE TENS, 0 MONTH, "B&177 "A&177 "D&177 "J&177 "A&177 "N&177 "F&177 "E&177 "B&177 "M&177 "A&177 "R&177 "A&177 "P&177 "R&177 "M&177 "A&177 "Y&177 "J&177 "U&177 "N&177 "J&177 "U&177 "L&177 "A&177 "U&177 "G&177 "S&177 "E&177 "P&177 "O&177 "C&177 "T&177 "N&177 "O&177 "V&177 "D&177 "E&177 "C&177 / > PAGE XGE, GE YRTV, RTV YBUF, BUFFER REF2, RTV+1 IFDEF KLPLOT < XDATE, NXTLOC XSTORE, STORE XDIGITS,DIGITS / > XBASE, 0 INIT, DCA XBASE /SAVE POINTER TO DATA AREA SZL /JUST A CLOSE ? JMP GCLOSE /YES, DO NOTHING ! TAD XBASE /GET BG-USTAT AGAIN TAD (UASEM-1 /SETUP POINTER TO UASEM DCA ZTEM7 /IN OUR BG TABLE GEASLP, ISZ ZTEM7 TAD I ZTEM7 /LOOK AT ENTRY SNA /IS IT FREE ? JMP GEASFR /YES, GO PUT IN MY NAME CIA TAD GENAME /WAS IT ALREADY USED BY ME ? SZA CLA JMP GEASLP /NO, SOME OTHER TASK, LOOK FOR MORE GEASFR, TAD GENAME DCA I ZTEM7 /OK, PUT MY NAME IN UASEM TABLE CDTOIF TAD (4200 /WRITE 2 PAGES RIF /FROM THIS FIELD DCA I YRTV /PUT THIS IN THE OUTPUT TV TAD YBUF DCA I REF2 / TAD (SZL DCA I XGE /PATCH FIRST INSTRUCTION OF TASK IFDEF KLPLOT < TAD (15 DCA I YBUF /FIRST LOC OF HEADER JMS I XDATE /SETUP DATE IN HEADER TAD (" &177 JMS I XSTORE TAD I (TIME+3 /HOURS TAD (30 JMS I XDIGITS TAD (":&177 JMS I XSTORE TAD I (TIME+2 /MINUTES TAD (74 JMS I XDIGITS / > TAD XBASE CLL /! CDF 10 JMP I XGE //START THE TASK GENAME, "G^100+"E&3777 GCLOSE, JMS MONITOR EXIT SWPOUT PAGE $-$-$