ASMB,R,L,C * * * ************************************************************** * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1978. ALL RIGHTS * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, RE- * * PRODUCED, OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITH- * * OUT THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. * ************************************************************** * * * * NAME: DCT07 -- 9874A DEVICE COMMAND TABLE * SOURCE: 92840-18089 * RELOC: 92840-16007 * * * ************************************************************* * NAM DCT07,7 92840-16007 REV. 1913 790123 ENT DCT07 * EXT EXEC,FLOAT EXT INDCK,INTX,GCBIM,BYTE EXT CONVT,FLTAS EXT LNGTH,GIC,DCTAD EXT REIO * * THIS IS THE DEVICE COMMAND AND EMULATOR MODULE FOR THE * 9874A DIGITIZER. * DCT07 NOP DEF EML07 DEF RESET RESET DEVICE DEF DEFLT DEFAULT NOP FORM FEED NOP NOP HOME PEN DEC -1 GET DEVICE ID NOP GET CAPABILITIES DEF PLTUN GET PLOT UNITS P1 AND P2 NOP GET CHARACTER SPACE SIZE INFORMATION DEF CRLOC GET PEN LOCATION DEF CRLOC GET CURSOR LOCATION OCT -2 DIGITIZE NOP SET LABEL ORIGIN NOP SET LABEL DIRECTION NOP SLANT ON NOP SLANT OFF NOP SET CHARACTER SIZE NOP SET RELATIVEW ORIGIN (PORG) NOP SET PLOT DIRECTION NOP SET SCALE SKP NOP SET ORIGIN = CURSOR NOP SET ORIGIN = PEN NOP DRAW TO CURSOR NOP SELECT CHARACTER SIZE NOP SELECT PEN 0 NOP SELECT PEN -1 (ERASE) NOP SELECT PEN -2 (COMPLEMENT) NOP LINE TYPE NOP GET NUMBER OF PENS NOP DEFINE LINE TYPE NOP SELECT DEFAULT LINE TYPE NOP DEFAULT LINE TYPE WITH LENGTH NOP PEN UP NOP PEN DOWN NOP PLOT ABSOLUTE NOP PLOT RELATIVE NOP PLOT INCREMENTAL NOP SHORT LABEL NOP START LONG LABEL NOP STOP LONG LABEL MODE DEC -3 FLOAT TO ASCII DEC -4 SURFACE SIZE IN MM NOP POSITION CURSOR NOP POSITION CURSOR RELATIVE DEC -5 SET P1,P2 DEF GTMUM GET MU/MM DEC -6 GET DEVICE CLEARING CHARACTERISTICS NOP NUMBER OF PHYSICALLY DIFFERENT PENS NOP NUMBER OFC CURSORS NOP LORGABILITY NOP MAXIMUM CHARACTER SLANT DEC -7 DEVICE HARD CLIPPING CAPABILITY DEC -8 INQUIRE CHARACTER PLACEMENT NOP NOP NOP SKP * * ASCII COMMAND STRINGS FIRST WORD = NUMBER OF BYTES * SECOND WORD = TERMINATOR * RESET DEC -5 5 BYTES, WRITE DEF SEMCL ASC 3,DF;SG COMMAND STRING * DEFLT DEC -20 DEF SEMCL ASC 10,IP0,0,17500,12600;IW * PLTUN DEC 2 DEF SEMCL OP ASC 1,OP * CRLOC DEC 2 DEF SEMCL ASC 1,OC * GTMUM DEC 2 DEF SEMCL ASC 1,OF SKP * * SETUP * SETUP NOP JSB GCBIM RETRIEVE IOBUF ADDRESS AND IOBL FROM THE GCB DEF CONT1 DEF .2 CODE IN IGTBL, FOR IOBUF,IOBL,AND LUN DEF .3 TWO CODES DEF LUN DEF .0 THREE WORDS DEF .1 READ CONT1 LDA IOBUF JSB INDCK STA IOBUF STA IOB STA ADCNT INITIALIZE ADDRESS COUNTER STA INTIO LDA SEMCL TERMINATOR STA TERM CLA STA NBYTE BYTE COUNTER STA IBYTE RTSET JMP SETUP,I * * INTEG -- CONVERT INCOMING DATA FROM ASCII TO INTEGER * INTEG NOP LDA LNGTH SET TO CONVERT FROM ASCII TO INTEGER CMA,INA STA LNTH CLA STA IBYTE LDA INX STA INTAD INTLP JSB INTX BEGIN TO CONVERT DATA DEF RTINT INTIO NOP INTAD NOP DEF IBYTE RTINT LDA FIRST SEE IF WE ARE RETRIEVING PLOT UNITS CPA OP JMP FIXIT YES CONIN ISZ INTAD ISZ LNTH JMP INTLP CONTINUE RTING JMP INTEG,I SKP * * FIXIT * FIXIT LDA INTAD,I CONVERT INTEGER TO FLOATING POINT JSB FLOAT DST INTAD,I ISZ INTAD ISZ LNTH JMP CONIN CONTINUE * * GB2 -- TAKE VALUES PLACED IN INTX1(1) TO INTX1(LNGTH) AND * TRANSFER THIS DATA TO GICB. * GB2 NOP STA GCBCD JSB GCBIM TRANSFER DATA TO AGL DEF RTGB2 DEF GCBCD DEF .1 DEF INTX1 DEF LNGTH DEF .2 RTGB2 JMP GB2,I * * GB1 -- RETRIEVE DATA FROM GICB AND PLACE IT IN INTX1(1) TO * INTX1(LNTH) * GB1 NOP STA GCBCD GCB POINTER JSB GCBIM RETRIEVE INTEGER VALUES FROM DEF RTGB1 GCB DEF GCBCD DEF .1 DEF INTX1 DEF LNTH DEF .1 RTGB1 JMP GB1,I * * FIN -- 1) CONVERTS INTEGERS TO ASCII * 2) TRANSFERS THIS ASCII TO THE DEVICE (VIA OUTPT). * 3) RETURNS TO CALLER * FIN NOP JSB CONVT DEF RTCON DEF INTX2 FWA FOR INTEGERS TO BE CONVERTED DEF IOBUF,I I O BUFFER DEF NBYTE DEF LNGTH RTCON JSB TRBYT INSERT TERMINATOR LDA NBYTE LDB .2 JSB OUTPT RTFIN JMP FIN,I SKP * * TRBYT * TRBYT NOP INSERT TERMINATOR INTO OUTPUT BUFFER LDA TERM SEMI-COLON JSB PTBYT RTTBT JMP TRBYT,I * * PTBYT * PTBYT NOP STA BITE JSB UPDTE UPDATE ADDRESS COUNTER (ADCNT) JSB BYTE DEF RTBYT DEF NBYTE DEF BITE DEF ADCNT,I RTBYT ISZ NBYTE JSB UPDTE RTPBT JMP PTBYT,I * BITE NOP * * UPDTE * UPDTE NOP LDA NBYTE CLE,ERA ADA IOBUF STA ADCNT RTUDT JMP UPDTE,I * * OUTPT * OUTPT NOP I/O TRANSFER ROUTINE STB RW LDB TERM CPB .137 CHECK IF SUPRESS CRLF ALREADY HERE JMP *+2 YES, DONT INCREMENT CONUT INA GOING TO ADD SUPRESS CMA,INA STA IOCNT COUNT OF TRANSFER IN CHARACTERS LDA .137 NEED SUPRESS JSB PTBYT STORE IT JSB REIO DEF RTOUT DEF RW DEF LUN IOB NOP DEF IOCNT RTOUT JMP OUTPT,I SKP * * EMULATORS * EML07 NOP JSB SETUP GO GET IOBUF,IOBL,LUN AND FXD N LDA GIC CPA .177 JMP ERRCK LDA DCTAD EMULATOR NUMBER (NEGATIVE) CMA,INA STA B LDA EM0 TOP OF LIST OF EMULATORS AND OTHER THINGS. JSB INDCK GET RID OF INDIRECT BIT ADA B COMPUTE POINTER LDB LNGTH INB STB LNTH LDA A,I JMP A,I * * EM0 DEF * DEF EMUL1 DEF EMUL2 DEF EMUL3 DEF EMUL4 DEF EMUL5 DEF EMUL6 DEF EMUL7 DEF EMUL8 * * EMULATOR #1 -- GET DEVICE ID * EMUL1 LDA IDCD LDB DF3 JSB GB JMP EML07,I * IDCD DEF .984A .984A ASC 3,9874A SKP * * EMULATOR #2 -- DIGITIZE * EMUL2 NOP EM4LP LDA OS OUTPUT STATUS JSB PROUT LDA .40 NOW CHECK STATUS WORD BIT 2 TO SEE IF POINT LDB .1 JSB OUTPT HAS BEEN ENTERRED LDA .1 STA LNGTH STA LNTH JSB INTEG CONVERT ASCII TO INTEGER LDA INTX1 AND .4 SZA JMP GETPT BIT 2 IS SET GO GET POINT JMP EM4LP CONTINUE LOOPING UNTIL WHATS -ITS ENTERS POINT GETPT LDA OD OUTPUT DIGITIZED POINT JSB PROUT LDA .40 LDB .1 JSB OUTPT LDA .4 STA LNGTH JSB INTEG LDA .3 RESET LENGTH TO EXPECTED 3 PARAMETERS STA LNGTH LDA .16 JSB GB2 JMP EML07,I * * PROUT * PROUT NOP JSB WRDST JSB TRBYT LDA .3 LDB .2 JSB OUTPT CLA STA NBYTE LDA IOBUF STA ADCNT RTPRO JMP PROUT,I * OD ASC 1,OD OS ASC 1,OS SKP * * EMULATOR #3 -- FLOAT TO ASCII * EMUL3 LDA .3 ETX STA TERM LDA LB JSB WRDST LDA .16 JSB GB1 JSB GLIDE JSB TRBYT JSB NBYTE LDB .2 JSB OUTPT JMP EML07,I LB ASC 1,LB * * GLIDE -- FLOAT TO ASCII CONVERSION * GLIDE NOP JSB FLTAS DEF RTGLD DEF INTX2 DEF IOBUF,I DEF NBYTE DEF FXDN F7.N DEF SKPBK RTGLD JMP GLIDE,I * * EMULATOR #4 -- GET DISPLAY SIZE IN MM * EMUL4 LDA SIZMM LENGTH LDB DF8 JSB GB JMP EML07,I * SIZMM DEF SZMM * * EMULATOR #5 -- SET P1,P2 * EMUL5 LDA .16 JSB GB1 GET G1,G2 LDA IP JSB WRDST JSB FIN JMP EML07,I * IP ASC 1,IP SKP * * EMULATOR #6 -- DEVICE CLEARING CAPABILITY * EMUL6 LDA DVCLR NO CLEAR LDB DF1 JSB GB JMP EML07,I * * EMULATOR #7 -- DEVICE HARD CLIPPING CAPABILITY * EMUL7 LDA DF1 LDB DF1 JSB GB JMP EML07,I * * EMULTOR #8 -- CHARACTER PLACEMENT * EMUL8 LDA ACINF LDB DF8 JSB GB JMP EML07,I * ACINF DEF CINFO * CINFO DEC 0.00000 DEC 0.00000 DEC 0.00000 DEC 0.00000 SKP * * ERROR CHECKING * ERRCK JSB EXEC SELECT DEVICE CLEAR DEF *+3 DEF .3 DEF LUN * LDA OE CLEAR OUT PENDING ERROR JSB WRDST JSB TRBYT LDA NBYTE LDB .2 JSB OUTPT LDA .40 LDB .1 JSB OUTPT CLA STA NBYTE LDA IOBUF STA ADCNT * LDA OI SEND OUT ID AND SEE IF IT FLIES JSB WRDST JSB TRBYT LDA NBYTE LDB .2 JSB OUTPT CLA STA NBYTE LDA IOBUF STA ADCNT * LDA OE JSB WRDST JSB TRBYT LDA NBYTE LDB .2 JSB OUTPT LDA .40 NOW EXAMINE STATUS WORD LDB .1 JSB OUTPT LDA .1 STA LNGTH JSB INTEG CONVERT TO INTEGER LDA INTX1 CHECK BIT 1 AND .1 SZA JMP ERRPT GOT PROBLEMS CLA STA NBYTE REINITIALIZE BYTE COUNT LDA IOBUF STA ADCNT REINITIALIZE ADDR CTR TO TOP OF BUFFER SKP * LDA OI JSB WRDST JSB TRBYT LDA NBYTE LDB .2 JSB OUTPT LDA .40 LDB .1 JSB OUTPT LDA .1 STA LNGTH JSB INTEG LDA INTX1 JMP EML07,I ERRPT LDA .3 JMP EML07,I * OE ASC 1,OE OI ASC 1,OI * * GB * GB NOP STA ADDR ADDRESS OF DATA STB NUM NUMBER OF DATA ITEMS JSB GCBIM DEF *+6 GB16 DEF .16 DEF .1 ADDR NOP NUM NOP DEF .2 RTGB JMP GB,I * * WRDST -- STORE A WORD INTO THE IOBUF * WRDST NOP STA ADCNT,I ISZ ADCNT ISZ NBYTE ISZ NBYTE RTWRD JMP WRDST,I SKP * * CONSTANTS AND TEMPORARY STORAGE * A EQU 0 B EQU 1 NBYTE NOP LUN NOP IOBUF NOP IOBL NOP FXDN NOP FIRST NOP INTX1 NOP INTX2 NOP INTX3 NOP INTX4 NOP PORGX BSS 2 PORGY BSS 2 INTXX BSS 4 RW NOP IOCNT NOP TEMP BSS 2 * * DO NOT CHANGE POSITION OF THESE CONSTANTS * .0 OCT 0 .1 OCT 1 .2 OCT 2 .4 OCT 4 .26 DEC 26 .16 DEC 16 .32 DEC 32 .3 OCT 3 SEMCL OCT 73 .137 OCT 137 .20 DEC 20 .40 DEC 40 .5 OCT 5 INX1 DEF INTX4 INX DEF INTX1 .7 DEC 7 TERM NOP DF3 DEF .3 .600 OCT 6000 SZMM DEC 0. ORIGIN 0.,0. DEC 0. DEC 435. UPPER RIGHT 435.,315. .315 DEC 315. DVCLR DEF .2 DF8 DEF .8 .8 DEC 8 CHSLT DEF .155 .155 DEC 1.56 89 DEGREES DEC -1.56 .03 OCT 1400 COMA OCT 54 M7 OCT -7 .177 OCT 177 GCBCD NOP DF4 DEF .4 DF2 DEF .2 DF1 DEF .1 DF0 DEF .0 ADCNT NOP IBYTE NOP LNTH NOP SKPBK NOP M1 OCT -1 .6 DEC 6 .13 DEC 13 END