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: DCT03 -- 7245A DEVICE COMMAND TABLE * SOURCE: 92840-18087 * RELOC: 92840-16006 * * * ************************************************************* * NAM DCT03,7 92840-16006 REV.1913 790123 ENT DCT03 * EXT EXEC,TAN,COS,SIN,FLOAT EXT INDCK,INTX,GCBIM,BYTE EXT CONVT,FLTAS EXT LNGTH,GIC,DCTAD EXT .IENT EXT REIO * THIS IS THE DEVICE COMMAND AND EMULATOR MODULE FOR THE * 7245 PLOTTER/PRINTER. * DCT03 NOP DEF EML03 DEF RESET RESET DEVICE DEF DEFLT DEF PAGE FORM FEED NOP DEF HOME HOME PEN DEC -23 GET DEVICE ID NOP GET CAPABILITIES (NOT USED) DEF PLTUN GET PLOT UNITS P1 AND P2 OCT -1 GET CHARACTER SPACE SIZE INFORMATION DEF PNLOC GET PEN LOCATION DEF CRLOC GET CURSOR LOCATION OCT -2 DIGITIZE DEF LORG SET LABEL ORIGIN OCT -3 LABEL DIRECTION OCT -4 SLANT ON DEF SLOFF SLANT OFF OCT -5 SET CHARACTER SIZE OCT -6 SET RELATIVE ORIGIN(PORG) NOP SET PLOT DIRECTION NOP SET SCALE NOP SET ORIGIN = CURSOR NOP SET ORIGIN = PEN NOP DRAW TO CURSOR NOP SELECT CHARACTER SET NOP SELECT PEN 0 NOP SELECT PEN -1 (ERASE) NOP SELECT PEN -2(COMPLEMENT) DEC -9 DEC -8 GET NUMBER OF PENS NOP DEFINE LINE TYPE(NOT USED) DEC -9 SELECT DEFAULT LINE TYPE DEC -9 DEFAULE LINE TYPE WITH LENGTH DEF PENUP PEN UP DEF PENDN PEN DOWN DEF PLTAB PLOT ABSOLUTE DEC -10 PLOT RELATIVE DEF PLTIN PLOT INCREMENTAL DEF SHTLB SHORT LABEL DEF STLAB START LONG LABEL DEF STPLB STOP LONG LABEL MODE DEC -11 FLOAT TO ASCII DEC -12 SURFACE SIZE IN MM DEF POSCR POSITION CURSOR NOP POSITION CURSOR RELATIVE DEC -22 SET P1,P2 DEF GTMUM GET MU/MM DEC -13 GET DEVICE CLEARING CHARACTERISTICS DEC -14 NUMBER OF PHYSICALLY DIFFERENT PENS DEC -18 NUMBER OF CURSORS DEC -15 LORG-ABILITY DEC -16 MAXIMUM CHARACTER SLANT DEC -17 DEVICE HARD CLIPPING CAPABILITY DEC -24 INQUIRE CHARACTER PLACEMENT DEC -19 DEC -20 DEC -21 * * ASCII COMMAND STRINGS FIRST WORD = NUMBER OF BYTES * SECOND WORD = TERMINATOR RESET DEC -2 2 BYTES, WRITE DEF SEMCL ASC 1,DF COMMAND STRING * DEFLT DEC -5 DEF SEMCL ASC 3,IP;IW * PAGE DEC -2 DEF SEMCL PG ASC 1,PG * HOME DEC -14 DEF SEMCL ASC 7,PU;PA200,11000 * ID DEC 2 DEF SEMCL OI ASC 1,OI * PLTUN DEC 2 DEF SEMCL OP ASC 1,OP PNLOC DEC 2 DEF SEMCL ASC 1,OA * CRLOC DEC 2 DEF SEMCL ASC 1,RC * LORG DEC -2 DEF SEMCL ASC 1,LO * LNTYP DEC -2 DEF SEMCL ASC 1,LT * PENDN DEC -2 DEF SEMCL ASC 1,PD * PENUP DEC -2 DEF SEMCL ASC 1,PU * PLTAB DEC -2 DEF SEMCL PA ASC 1,PA * PLTIN DEC -2 PLOT INCREMENTAL DEF SEMCL ASC 1,PR * SELPN DEC -2 DEF SEMCL ASC 1,LT STLAB DEC -2 DEF HT ASC 1,LB STPLB DEC -1 DEF HT OCT 1400 DECIMAL 3 * SLOFF DEC -2 DEF SEMCL ASC 1,SL STP12 DEC -2 DEF SEMCL IW ASC 1,IW * SHTLB DEC -2 DEF HT LB ASC 1,LB * GTMUM DEC 2 DEF SEMCL ASC 1,OF * POSCR DEC -2 DEF SEMCL ASC 1,PC * HT OCT 137 SKP * * 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 * JMP SETUP,I * * 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 JMP INTEG,I FIXIT LDA INTAD,I CONVERT INTEGER TO FLOATING POINT JSB FLOAT DST INTAD,I ISZ INTAD ISZ LNTH JMP CONIN CONTINUE * * 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 RTX DEF GCBCD DEF .1 DEF INTX1 DEF LNGTH DEF .2 RTX JMP GB2,I * * 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 * * FINI DOES THE FOLLOWING: * 1. CONVERTS INTEGERS TO ASCII * 2. TRANSFERS THIS ASCII TO THE DEVICE (VIA OUTPT). * 3. RETURNS TO CALLER * FIN NOP FINI 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 JMP FIN,I * * SPC 3 SPC 3 * * TRBYT NOP INSERT TERMINATOR INTO OUTPUT BUFFER LDA TERM SEMI-COLON JSB PTBYT JMP TRBYT,I * 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 JMP PTBYT,I * * UPDTE NOP LDA NBYTE CLE,ERA ADA IOBUF STA ADCNT JMP UPDTE,I * * BITE NOP * OUTPT NOP I/O TRANSFER ROUTINE CMA,INA STA IOCNT BYTE COUNTER FOR OUTPUT STB RW JSB REIO DEF RTOUT DEF RW DEF LUN IOB NOP DEF IOCNT RTOUT JMP OUTPT,I * * SKP SPC 3 * * EMULATORS * EML03 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 DEF EMUL9 DEF EML10 DEF EML11 DEF EML12 DEF EML13 DEF EML14 DEF EML15 DEF EML16 DEF EML17 DEF EML18 DEF EML19 DEF EML20 DEF EML21 DEF EML22 DEF EML23 DEF EML24 * SKP SPC 2 * * CHARACTER SPACING INFORMATION * EMUL1 LDA .7 JSB GB1 GET CURRENT CHARACTER SIZE LDA .16 JSB GB2 JMP EML03,I * * DEFAULT VALUES = WIDTH * 1.5 * 400 MU MM * HEIGHT * 2. * 400MU/MM * * CHRW DEC 81. CHRH DEC 324. CHW DEC -7400. DEC -11000. DEC 7400. DEC 11000. OCT 1 D1.5 DEC 1.5 D2.0 DEC 2.0 SPC 3 * RELATIVE PLOTTING (RPLOT(X,Y) * EML10 LDA .32 GET PORGX,PORGY * JSB GB1 * LDA INTX1 * STA PORGX * LDA INTX2 * STA PORGY * LDA .16 NOW GET NEW POINTS * JSB GB1 * LDA PORGX COMPUTE PORG(X,Y) + NEWPOINTS * ADA INTX2 * STA INTX2 * LDA PORGY * ADA INTX3 * STA INTX3 * LDA PA * JSB WRDST INSERT PLOT ABSOLUTE COMMAND INTO IOBUF * JSB FIN CONVERT VALUES TO ASCII AND OUTPUT * JMP EML03,I * SPC 3 * * FLOAT TO ASCII * EML11 LDA .3 ETX STA TERM LDA LB JSB WRDST LDA .16 JSB GB1 JSB GLIDE JSB TRBYT LDA NBYTE LDB .2 JSB OUTPT JMP EML03,I * * * 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 * * * * SPC 3 * * DIGITIZE * EMUL2 LDA DP DIGITIZE POINT -TURN ON ENTER LIGHT JSB PROUT 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 .3 STA LNGTH JSB INTEG LDA .16 JSB GB2 JMP EML03,I * PROUT NOP OUTPUT ASCII COMMAND IN THE A REGISTER JSB WRDST STORE WORD IN IOBUF JSB TRBYT LDA .3 LDB .2 JSB OUTPT CLA STA NBYTE LDA IOBUF STA ADCNT JMP PROUT,I * * ASCII COMMANDS * OD ASC 1,OD OS ASC 1,OS DP ASC 1,DP * * NUMBER OF PENS SIMULATED OR OTHERWISE * EMUL8 LDA .6 SIMULATED PENS (LINE TYPES) STA INTX1 LDA .16 JSB GB2 JMP EML03,I ** * LABEL DIRECTION * GICB = DEGREES- 9872 WANTS RUN,RISE * * EMUL3 LDA .3 STA FXDN SET UP FOR FLOAT TO ASCII CONVERSION LDA DI ABSOLUTE DIRECTION JSB WRDST LDA .16 JSB GB1 GO GET THETA DLD INTX2 DST INTX4 SAVE FOR RISE COMPUTATION JSB COS COMPUTE RUN NOP DST INTX2 EML71 JSB GLIDE CONVERT TO FLOATING POINT LDA COMA JSB PTBYT DLD INTX4 JSB SIN NOP COMPUTE RISE DST INTX2 EML72 JSB GLIDE JSB TRBYT INSERT TERMINATOR LDA NBYTE LDB .2 JSB OUTPT JMP EML03,I SPC 3 * * CHARACTER SLANT * EMUL4 LDA .3 STA FXDN SET UP FOR 3 CHARACTER TO RIGHT OF . LDA SL SLANT MNEMONIC JSB WRDST LDA .16 JSB GB1 GET ANGLE DLD INTX2 JSB TAN COMPUTE TAN(THETA) NOP DST INTX2 JSB GLIDE FLOAT TO ASCII JSB TRBYT LDA NBYTE LDB .2 JSB OUTPT JMP EML03,I * SL ASC 1,SL * * CHARACTER SIZE * GICB = WIDTH/HEIGHT * EMUL5 LDA .3 STA FXDN LDA .16 JSB GB1 DLD INTX4 GET HEIGHT AND SAVE DST TEMP LDA SI JSB WRDST DLD INTX2 WIDTH FDV CSIZW MU/CM/MU DST INTX2 JSB GLIDE LDA COMA JSB PTBYT DLD TEMP FDV CSIZH DST INTX2 JSB GLIDE JSB TRBYT LDB .2 LDA NBYTE JSB OUTPT JMP EML03,I * CSIZW DEC 600. MU/CM CSIZH DEC 800. SI ASC 1,SI * * LINE TYPES - GICB = LT#, * EMUL9 LDA .3 STA FXDN LDA .16 JSB GB1 GET DATA FROM GCB LDA LT LINE TYPE COMMAND JSB WRDST LDA INTX2 LT = 0 FOR SOLID SZA,RSS JMP FIN11 ADA LT0 GET LINE TYPE EQUIVALENCE FOR 9872 LDA A,I JSB PTBYT LDA LNGTH IS THERE A LENGTH SPECIFICATION CPA .1 JMP FIN12 FIN10 LDA INTX2 CPA .5 JMP FIN11 LDA INTX2 IOR .1 ADA PCLT0 STA TEMP ADDRESS OF PERCENT DIVIDER DLD INTX3 FDV TEMP,I DST INTX2 LDA COMA JSB PTBYT JSB GLIDE FLOAT TO ASCII FIN11 JSB TRBYT LDA NBYTE LDB .2 JSB OUTPT JMP EML03,I FIN12 LDA INTX2 IS LT = 1(DIM) CPA .1 JMP *+2 YES JMP FIN14 DLD D22 DST INTX3 JMP FIN10 CONTINUE * FIN14 LDA COMA JSB PTBYT SET DEFAULT LINE TYPE LENGTH BACK TO 4% LDA ASC4 JSB PTBYT JMP FIN11 * * LINE TYPES AND PERCENT VALUES * LT ASC 1,LT DI ASC 1,DI LT0 DEF * LT1 OCT 61 LT2 OCT 62 LT3 OCT 63 LT4 OCT 65 LT5 OCT 60 LT6 OCT 66 * * 1% VALUES OF LINE TYPE LENGTHS * PCLT0 DEF * PCLT1 DEC 45. DEC 60. DEC 135. DEC 180. BSS 2 DEC 180. * ASC4 OCT 64 D22 DEC 22.5 SPC 3 * GET DISPLAY SIZE IN MM * EML12 LDA SIZMM LENGTH LDB DF8 JSB GB JMP EML03,I * SIZMM DEF SZMM * SPC 3 * * * SET RELATIVE ORIGIN * EMUL6 LDA .16 * JSB GB1 * LDA .32 IOSAV * JSB GB2 * JMP EML03,I SPC 2 * * ERASE PAGE ADVANCE * EMUL7 LDA PG JSB WRDST LDA ONE JSB WRDST LDB .2 LDA .4 JSB OUTPT JMP EML03,I * ONE OCT 30473 * DEVICE CLEARING CAPABILITY * EML13 LDA DVCLR NO CLEAR LDB DF1 JSB GB JMP EML03,I * SPC 2 * PHYSICAL PENS * EML14 LDA DF1 LDB DF1 JSB GB JMP EML03,I * SPC 2 * * LORGABILITY * EML15 JMP EML14 SPC 2 * * MAX. CHAR SLANT * EML16 LDA CHSLT LDB DF4 JSB GB JMP EML03,I * SPC 2 * * DEVICE HARD CLIPPING CAPABILITY * EML17 JMP EML14 * EML18 LDA DF0 LDB DF1 JSB GB JMP EML03,I * * MIN/MAX CHARACTER SIZES * EML19 LDA DFCHR LDB DF9 JSB GB JMP EML03,I * .9 DEC 9 DF9 DEF .9 DFCHR DEF CHW * * LABEL DIRECTION INFORMATION * EML20 LDA LBLDR LDB DF3 JSB GB JMP EML03,I * LBLDR DEF *+1 OCT 2 DEC 0. SPC 2 * * LORG RANGE * EML21 LDA DFL1 LDB DF2 JSB GB JMP EML03,I * DFL1 DEF *+1 OCT 1 DEC 9 * * EML22 LDA .16 JSB GB1 GET G1,G2 LDA IP JSB WRDST JSB FIN CLA STA NBYTE LDA IOBUF STA ADCNT LDA IW JSB WRDST JSB FIN JMP EML03,I * IP ASC 1,IP * EML23 LDA IDCD LDB DF3 JSB GB JMP EML03,I * IDCD DEF .724A .724A ASC 3,7245A * * CHARACTER PLACEMENT * EML24 LDA ACINF LDB DF8 JSB GB JMP EML03,I * ACINF DEF CINFO * CINFO DEC 0.00000 DEC 0.66667 DEC 0.00000 DEC 0.50000 SKP * * * ERROR CHECKING * ERRCK JSB EXEC SELECT DEVICE CLEAR DEF *+3 DEF .3 DEF LUN * LDA OE 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 SEN 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,RSS JMP LAST1 LAST CHECK FOR DEVICE ERRPT LDA .3 JMP EML03,I * LAST1 CLA STA NBYTE LDA IOBUF STA ADCNT * LDA OI JSB WRDST JSB TRBYT LDA NBYTE LDB .2 JSB OUTPT LDA .40 LDB .1 JSB OUTPT * LDA IOB STA BUFAD DLD BUFAD,I CPA PART1 JMP CHEK2 JMP ERR3 CHEK2 CPB PART2 JMP OKAY ERR3 LDA .3 JMP EML03,I OKAY LDA .7245 JMP EML03,I * PART1 ASC 1,72 PART2 ASC 1,45 BUFAD NOP * OE ASC 1,OE .7245 DEC 7245 SKP 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 JMP GB,I * * STORE A WORD INTO THE IOBUF * WRDST NOP STA ADCNT,I ISZ ADCNT ISZ NBYTE ISZ NBYTE JMP WRDST,I SKP SPC 3 * * 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 NO 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 .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 5. 200 * .025 DEC 5. -32,727* .025 DEC 180. .819 DEC 270. MACHINE HEIGHT IN MM (32767 * .025) 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