/OS-8 PLOTTER DRIVER FOR DIABOLO HYTYPE PRINTER /F. WESSELY /AUGUST 7, 1975 /DEFINITIONS OF IOTS DBCO1=6505 DBSO1=6506 DBCO2=6515 DBSO2=6516 DBRI2=6514 *5600 /PLOTTER DRIVER ENTRY DPL, 0 /CALLER RETURN ADDRESS CLA CLL RDF /GET CALLING FIELD N TAD CDF0 /MAKE A"CDF N" COMMAND TAD C2 /CHANGE TO "CDF CIF N" COMMAND DCA RETRN /SAVE IT FOR RETURN /LOOK AT ARGUMENTS OF CALLER TAD I DPL /GET FUNCTION WORD AND C70 /MASK BUFFER FIELD TAD CDF0 /MAKE A "CDF BUFFER FIELD" DCA BFCDF /SAVE IT TAD I DPL /GET FUNCTIN AGAIN SMA /IS IT "WRITE"? JMP FERR /NO- FATAL CLL RAR /GET BIT 11 & STORE MONX, CLA /USED AS MONITOR EXIT TAD I DPL /GET FUNCTION AGAIN AND C3700 /MASK RECORD COUNT SZL /RECORD COUNT SPECIFIED? BSW /NO, CHANGE TO WORD COUNT SNA /ZERO COUNT ? JMP FINIT /YES, NORMAL EXIT CIA /NEGATE AND SAVE WC DCA WC ISZ DPL /POINTER TO BUFFER ADDRESS TAD I DPL /FETCH ADDRESS DCA BUFP /AND SAVE ISZ DPL /IGNORE BLOCKNUMBER /FETCH DATA FROM BUFFER NEXT, CLA CLL BFCDF, HLT /CONTAINS "CDF BUFFER FIELD" TAD I BUFP /GET TWO DATA-WORDS DCA FX /FROM BUFFER SAVE ISZ BUFP TAD I BUFP DCA FY ISZ BUFP /PLOTTER FUNCTION COMMAND CDF0, CDF 0 /DRIVER ALWAYS IN FIELD 0 TAD FX /GET X-DATA SMA /IS IT A COMMAND? JMP PLOT /NO- GO PLOT & PRINT AND C177 /MASK CHARACTER SZA /CHARACTER COMMAND? DCA CHAR /YES- STORE IT TAD FX /GET COMMAND AGAIN CLL RTL /IF EOF-CMD, THEN LINK SET CLA CMA /AC TO 7777 DBCO2 /CLEAR PLOTTER CMD-REGISTER CLA CLL TAD FY /GET COMMAND WORD AND C7770 /DON'T TOUCH STROBE LINES DBSO2 /SET LINES AS SPECIFIED AND C10 /MASK RESTORE BIT DBCO2 /REMOVE RESTORE LINE IF SET SZL /WAS EOF SPECIFIED? JMP FINIT /YES- EXIT JMP NEXT /ELSE FETCH NEW DATA /PLOT & PRINT SEQUENCE PLOT, CLA CLL DBRI2 /READ PLOTTER STATUS REGISTER AND C1 /CHARACTER READY LINE SNA CLA /READY? JMP CHECK /NOT YET-DO SOME CHECKS JMS OUT /PUT OUT CARRIAGE MOVEMENT FX, 0 /CONTAINS CR-INCREMENTS C2, 2 /CARRIAGE STROBE JMS OUT /THEN PAPER FEED MOVEMENT FY, 0 /CONTAINS PF-INCREMENTS C4, 4 /PF-STROBE JMS OUT /NOW PRINT A CHARACTER CHAR, 56 /DEFAULT IS "." C1, 1 /CHARACTER STROBE ISZ WC /ALL DONE? JMP NEXT /NO- PROCEED /RETURN SEQUENCE FINIT, ISZ DPL /ADJUST RETURN ADDRESS FERR, CIA /SET -AC IF FATAL RETURN ISZ DPL RETRN, HLT /BECOMES A "CDF CIF N" JMP I DPL /RETURN TO CALLING PROGRAM /CHECK FOR CTRL/C AND ERRORS CHECK, KSF /KEYBOARD FLAG UP? JMP CHK /NO KRS /YES- READ STATIC AND C177 /IGNORE PARITY TAD M3 /CTRL/C? SNA CLA JMP I MONX /YES- UP TO MONITOR CHK, DBRI2 /READ PLOTTER STATUS SPA /CHECK CONDITION SET? JMP FERR+1 /YES- FATAL EXIT RAL /GET "PRINTER READY" SMA CLA /READY? I.E. POWER ON? JMP CHECK /NO- WAIT JMP PLOT /YES- TRY AGAIN /OUTPUT SUBROUTINE OUT, HLT CLA CMA /FIRST RESET DATA-LINES DBCO1 CLA CLL TAD I OUT /GET DATA-WORD DBSO1 /SET LINES CLA CLL ISZ OUT TAD I OUT /GET STROBE BIT DBSO2 DBCO2 ISZ OUT JMP I OUT /AND RETURN /CONSTANTS AND VARIABLES C10, 10 /RESET MASK (CURR. "RESTORE" ONLY) C70, 70 C177, 177 C3700, 3700 C7770, 7770 M3, -3 WC, 0 /WORD COUNT BUFP, 0 /POINTER TO DATA-BUFFER $