.TITLE GRAPHICS DEMONSTRATION ; DISPLAYS SIMPLE EXAMPLES OF THE FIVE PLOTTING MODES ; OF AN ID-2212/C IMAGE DISPLAY SYSTEM. ; ALL NEW CODE: 8 MAR 77 ; MODIFICATIONS TO: 28 JULY 77 ; PROGRAMMER: KEN DINWIDDIE .MCALL .REGDEF,.EXIT .REGDEF .SBTTL EQUATES XREG =166000 ; X REGISTER ADDRESS YREG =166002 ; Y REGISTER ADDRESS BPMREG =166004 ; BIT PLANE MASK REGISTER ADDRESS CSR =166006 ; CONTROL/STATUS REGISTER ADDRESS DATREG =166010 ; DATA REGISTER ADDRESS ASCMEM =5400 ; ANNOTATION MEMORY ADDRESS FILL =2041 ; PLOT AND FILL ABSOLUTE ( NO OVERLAP ) ABS =43 ; PLOT ABSOLUTE FFY =45 ; PLOT & FILL FROM Y OUTL =47 ; PLOT OUTLINE MAP =51 ; BIT MAP WRITE FULL =55 ; WRITE FULL SCREEN ; MACRO TO BUILD BAR CHART DATA .MACRO BARCHT LINE,BARD .BYTE LINE,LINE,BARD,BARD,BARD,BARD,BARD,BARD .ENDM .PAGE .SBTTL DIVIDE SCREEN IN QUARTERS ; ; GD: MOV #7777,@#BPMREG ; ENABLE ALL BITS CLR @#XREG ; START OF BUFFER MEMORY GD1: CLR @#DATREG ; ZERO BUFFER CMP @#XREG,#1000 BNE GD1 MOV #400,@#XREG ; SET CENTRAL COLUMN MOV #7777,@#DATREG MOV #FULL,@#CSR ; DISPLAY THE VERTICAL BAR JSR PC,READY ; WAIT FOR COMPLETION CLR @#XREG MOV #200,R0 MOV #1000,R1 JSR PC,HORIZ ; DISPLAY THE HORIZONTAL BAR .PAGE .SBTTL CONSTRUCT WINDOWS, GRIDS, ETC. ; ; MOV #300,@#YREG MOV #440,@#XREG MOV #300,R0 MOV #740,R1 JSR PC,HORIZ ; TREND PLOT X-AXIS MOV #40,@#XREG MOV #230,@#YREG MOV #350,@#DATREG MOV #440,@#XREG MOV #350,@#DATREG MOV #FFY,@#CSR ; SHOW UPPER PLOT VERTICALS JSR PC,READY ; WAIT FOR COMPLETION MOV #30,@#YREG MOV #40,@#XREG MOV #150,R0 MOV #340,R1 JSR PC,BOXWRT ; DISPLAY LEFT WINDOW MOV #440,@#XREG MOV #740,R1 JSR PC,BOXWRT ; DISPLAY RIGHT WINDOW MOV #77,@#BPMREG ; SET 1/4 INTENSITY MOV #100,@#XREG GD2: MOV #147,@#DATREG ; BUILD VERTICAL GRID ADD #36,@#XREG CMP @#XREG,#340 BNE GD2 MOV #FFY,@#CSR ; DISPLAY VERTICAL GRID JSR PC,READY ; WAIT FOR COMPLETION MOV #40,@#XREG MOV #50,R0 MOV #340,R1 JSR PC,HORIZ ; DISPLAY HORIZONTAL GRID LINES MOV #40,@#XREG MOV #70,R0 JSR PC,HORIZ MOV #40,@#XREG MOV #110,R0 JSR PC,HORIZ MOV #40,@#XREG MOV #130,R0 JSR PC,HORIZ .PAGE .SBTTL MAKE BAR CHART & TREND PLOT ; ; MOV #360,@#BPMREG ; SET FULL INTENSITY GREEN MOV #300,@#YREG MOV #40,@#XREG MOV #BARDAT,R0 JSR PC,FILBUF ; FILL BUFFER WITH BAR CHART MOV #FFY,@#CSR ; AND DISPLAY IT JSR PC,READY ; WAIT FOR COMPLETION ; CLR R5 ; NOW THE TREND PLOT MOV #7417,@#BPMREG ; MAKE IT MAGENTA GD3: MOV TRDATA(R5),R4 BEQ GD4 ; DONE: CONTINUE MOV R4,@#XREG INC R5 INC R5 MOVB TRDATA(R5),@#YREG INC R5 MOVB TRDATA(R5),R0 MOV R4,R1 ADD #14,R1 JSR PC,BOXWRT ; DISPLAY BOX INC R5 MOV R4,@#XREG MOV R4,R1 ADD #14,R1 MOVB TRDATA(R5),R3 MOV R3,R0 JSR PC,HORIZ ; DISPLAY LOWER LINE INC R5 MOV R4,@#XREG MOV R4,R1 ADD #14,R1 MOVB TRDATA(R5),R2 MOV R2,R0 JSR PC,HORIZ ; DISPLAY UPPER LINE ADD #4,R4 MOV R4,@#XREG MOV R3,@#YREG MOV R2,@#DATREG MOV #FFY,@#CSR ; DISPLAY VERTICAL LINE JSR PC,READY ; WAIT FOR COMPLETION INC R5 BR GD3 ; DO NEXT TREND PLOT ELEMENT .PAGE .SBTTL SOLID & DOTTED GRAPHS ; ; GD4: MOV #40,@#XREG MOV #377,@#BPMREG ; MAKE THEM YELLOW MOV #GRAPH1,R0 JSR PC,FILBUF ; GET DATA FOR FIRST GRAPH MOV #FILL,@#CSR ; DISPLAY GRAPH 1 JSR PC,READY ; WIAT FOR COMPLETION MOV #40,@#XREG MOV #GRAPH2,R0 JSR PC,FILBUF ; GET DATA FOR SECOND GRAPH MOV #FILL,@#CSR ; DISPLAY GRAPH 2 JSR PC,READY ; WAIT FOR COMPLETION MOV #40,@#XREG MOV #GRAPH3,R0 ; GET DATA FOR THIRD GRAPH JSR PC,FILBUF MOV #277,@#BPMREG ; REDUCE INTENSITY TO 3/4 MOV #FILL,@#CSR ; DISPLAY GRAPH 3 JSR PC,READY ; WAIT FOR COMPLETION .PAGE .SBTTL CONTOUR MAP ; ; MOV #7760,@#BPMREG ; SET FULL INTENSITY CYAN CLR R5 GD5: MOV CONTRS(R5),@#XREG ; GET START FOR THIS CONTOUR INC R5 INC R5 MOV CONTRS(R5),R0 ; PICK UP DATA POINTER JSR PC,FILBUF ; FILL BUFFER WITH DATA MOV #FILL,@#CSR ; DISPLAY CONTOUR JSR PC,READY ; WAIT FOR COMPLETION INC R5 INC R5 CMP R5,#104 BNE GD5 ; DO 17 CONTOURS .PAGE .SBTTL DISPLAY GRAPHICS LABELS ; ; MOV #7777,@#BPMREG ; SET FULL INTENSITY WHITE MOV #210,@#YREG MOV #104,@#XREG MOV #BARLBL,R0 JSR PC,CSYNTH ; SHOW "BAR CHARTS" MOV #476,@#XREG MOV #TRPLBL,R0 JSR PC,CSYNTH ; SHOW "TREND PLOTS" MOV #10,@#YREG MOV #134,@#XREG MOV #GRALBL,R0 JSR PC,CSYNTH ; SHOW "GRAPHS" MOV #470,@#XREG MOV #CNTLBL,R0 JSR PC,CSYNTH ; SHOW "CONTOUR MAPS" ; .EXIT ; ALL DONE .PAGE .SBTTL SUBROUTINES ; ; HORIZ: MOV R0,@#DATREG ; FILL THE BUFFER CMP R1,@#XREG BNE HORIZ MOV #ABS,@#CSR ; DISPLAY THE LINE JSR PC,READY ; WAIT FOR COMPLETION RTS PC ; ; FILBUF: MOVB (R0)+,R1 CMPB #-2,R1 BEQ FILB1 CMPB #-1,R1 BEQ FILB2 MOV R1,@#DATREG BR FILBUF FILB1: ADD #2,@#XREG ; SKIP A WORD IN BUFFER BR FILBUF FILB2: RTS PC ; ; READY: TSTB @#CSR BPL READY RTS PC ; ; BOXWRT: MOV R0,@#DATREG ; BUILD BUFFER CMP @#XREG,R1 BNE BOXWRT MOV #OUTL,@#CSR ; DISPLAY BOX JSR PC,READY ; WAIT FOR COMPLETION RTS PC ; ; CSYNTH: TST (R0) BEQ CSYN2 CLR R2 MOV (R0)+,R1 CSYN1: MOVB (R1)+,@#DATREG ; BUILD CHARACTER DATA INC R2 CMP R2,#6 BNE CSYN1 BR CSYNTH ; GET NEXT CHARACTER CSYN2: MOV #MAP,@#CSR ; DISPLAY CHARACTERS JSR PC,READY ; WAIT FOR COMPLETION RTS PC .PAGE .SBTTL BAR CHART DATA ; ; BARDAT: BARCHT 300,320 BARCHT 300,270 BARCHT 300,305 BARCHT 300,334 BARCHT 300,250 BARCHT 300,265 BARCHT 300,313 BARCHT 300,310 BARCHT 300,323 BARCHT 300,274 BARCHT 300,330 BARCHT 300,307 .BYTE 300,300,-1 .PAGE .SBTTL TREND PLOT DATA .NLIST BIN ; DON'T BOTHER WITH BYTE EXPANSIONS .EVEN TRDATA: .WORD 444 .BYTE 250,260,243,265 .WORD 464 .BYTE 257,266,253,273 .WORD 504 .BYTE 256,264,254,267 .WORD 524 .BYTE 265,274,262,303 .WORD 544 .BYTE 275,305,272,314 .WORD 564 .BYTE 304,311,276,315 .WORD 604 .BYTE 303,310,301,312 .WORD 624 .BYTE 310,315,305,323 .WORD 644 .BYTE 305,314,302,316 .WORD 664 .BYTE 314,323,311,332 .WORD 704 .BYTE 324,333,321,337 .WORD 724 .BYTE 330,335,324,340 .WORD 0 .PAGE .SBTTL GRAPH DATA ; ; GRAPH1: .BYTE 41,42,42,43,43,44,44,45,45,46,46,47,47 .BYTE 50,50,51,50,50,50,47,47,47,46,46,46 .BYTE 45,45,45,44,44,44,43,43,44,45,45 .BYTE 46,47,47,50,51,51,52,53,53,54,55 .BYTE 56,57,60,61,62,63,64,65,66,67,70 .BYTE 71,72,73,74,75,75,76,76,77,77,100 .BYTE 100,101,101,102,102,103,103,104,104,105 .BYTE 107,111,114,116,121,123,126,130,133,135 .BYTE 140,142,145,147,-1 .PAGE GRAPH2: .BYTE 107,106,106,106,106,105,105,105,105,104,104 .BYTE 104,104,103,103,103,102,102,101,101,101 .BYTE 100,100,77,77,77,76,76,75,75,75,74 .BYTE 74,74,74,75,75,75,75,76,76,76,77 .BYTE 77,77,77,100,100,100,77,77,76,75 .BYTE 75,74,73,73,72,71,71,70,67,67,66 .BYTE 65,65,65,65,65,65,65,65,65,65 .BYTE 65,65,65,65,65,65,64,63,63,62 .BYTE 61,61,60,57,57,56,55,55,54,53,53,-1 .PAGE GRAPH3: .BYTE -2,140,137,-2,134,133,-2,130,127,-2,124,123 .BYTE -2,120,117,-2,114,114,-2,115,115,-2,116 .BYTE 116,-2,117,117,-2,120,120,-2,121,121,-2 .BYTE 121,121,-2,121,121,-2,121,121,-2,121,121,-2 .BYTE 121,121,-2,120,120,-2,117,117,-2,116 .BYTE 116,-2,115,115,-2,114,114,-2,113,111 .BYTE -2,104,102,-2,75,73,-2,66,64,-2,57 .BYTE 55,-2,50,51,-2,53,54,-2,56,57,-2,61 .BYTE 62,-2,64,65,-2,67,-1 .PAGE .SBTTL CONTOUR MAP DATA ; ; ; TABLE OF X-REGISTER STARTING VALUES AND ; POINTERS TO DATA STRINGS ; .EVEN CONTRS: .WORD 504,CONT1,504,CONT2 .WORD 462,CONT3,462,CONT4 .WORD 440,CONT5 .WORD 466,CONT6 .WORD 604,CONT7,604,CONT8 .WORD 662,CONT9,662,CONT10 .WORD 572,CONT11,572,CONT12 .WORD 554,CONT13,554,CONT14 .WORD 606,CONT15 .WORD 640,CONT16 .WORD 714,CONT17 .PAGE ; ; ; TABLE OF CONTOUR DATA STRINGS ; CONT1: .BYTE 131,133,134,134,135,135,136,136,137,137 .BYTE 140,140,137,135,-1 CONT2: .BYTE 132,130,130,130,131,131,132,132,133,133 .BYTE 134,134,135,136,-1 CONT3: .BYTE 127,132,134,135,136,136,137,137,140,140 .BYTE 141,141,141,142,142,142,142,143,143,143 .BYTE 143,144,144,145,145,146,146,146,145,145 .BYTE 145,144,144,143,140,-1 CONT4: .BYTE 130,124,122,121,120,120,121,121,122,122 .BYTE 123,123,124,124,125,126,127,127,130 .BYTE 130,131,131,131,132,132,133,133,133 .BYTE 134,134,134,135,135,136,141,-1 CONT5: .BYTE 100,101,102,103,104,104,105,106,106 .BYTE 107,107,110,110,110,111,111,111,112,112 .BYTE 112,113,113,113,114,114,114,115,115,115 .BYTE 116,116,117,117,117,120,120,121,121,121 .BYTE 122,122,123,123,124,124,125,126,126,127 .BYTE 130,131,132,133,134,135,136,137,141 .BYTE 143,145,147,-1 CONT6: .BYTE 30,40,45,50,53,56,60,63,65,67,71 .BYTE 72,73,74,75,75,76,77,100,100,101 .BYTE 102,103,103,104,105,105,106,106 .BYTE 107,107,110,110,111,111,112,112,113 .BYTE 113,113,114,114,114,115,115,116,116,117 .BYTE 117,117,120,120,121,121,121,122,123,124 .BYTE 126,127,130,131,133,135,137,140,141 .BYTE 142,143,144,145,146,146,147,-1 CONT7: .BYTE 71,66,66,67,67,70,70,70,71,71,72,-1 CONT8: .BYTE 70,72,72,73,73,73,74,74,74,73,71,-1 CONT9: .BYTE 101,76,76,77,102,105,107,111,-1 CONT10: .BYTE 100,103,105,106,107,111,112,110,-1 CONT11: .BYTE 66,62,61,60,60,60,61,61,62,62,63,64 .BYTE 64,64,65,65,65,66,66,66,66,67,67,67 .BYTE 67,67,70,70,70,70,71,71,71,72,72 .BYTE 73,74,100,105,112,-1 CONT12: .BYTE 65,72,75,76,76,77,77,77,100,100,101 .BYTE 101,102,102,103,103,104,104,105,105 .BYTE 105,106,106,107,107,107,110,110,111 .BYTE 111,112,113,114,114,115,116,116,115,114 .BYTE 111,-1 CONT13: .BYTE 63,54,51,50,47,47,47,46,46,46,46 .BYTE 47,47,50,51,52,53,54,54,55,55 .BYTE 56,56,57,57,60,60,61,61,62,62,62 .BYTE 63,63,63,64,64,64,64,65,65,65,65 .BYTE 66,66,66,67,67,70,72,75,100,106 .BYTE 114,120,126,-1 CONT14: .BYTE 62,71,74,76,77,100,100,101,101,101 .BYTE 102,102,102,103,103,103,104,104,105 .BYTE 105,106,106,107,107,110,110,111,111,112 .BYTE 112,113,113,114,115,115,116,116,117,120 .BYTE 121,123,125,127,131,132,133,134,134,135 .BYTE 135,136,136,135,133,125,-1 CONT15: .BYTE 30,36,41,43,44,45,46,47,47,50,51,51,52 .BYTE 52,53,53,53,54,54,54,55,55,55,56,56 .BYTE 56,57,57,57,60,60,60,61,61,62,62 .BYTE 63,64,65,67,71,74,100,107,-1 CONT16: .BYTE 30,34,35,36,36,37,37,40,40,41,41,42 .BYTE 42,43,43,44,44,44,45,45,45,46,46,46 .BYTE 47,47,50,50,51,52,53,-1 CONT17: .BYTE 30,32,33,34,35,35,36,36,37,-1 .PAGE .SBTTL LABEL DATA POINTERS ; ; .EVEN BARLBL: .WORD CHARB,CHARA,CHARR,CHARSP,CHARC .WORD CHARH,CHARA,CHARR,CHART,CHARS,0 TRPLBL: .WORD CHART,CHARR,CHARE,CHARN,CHARD,CHARSP .WORD CHARP,CHARL,CHARO,CHART,CHARS,0 GRALBL: .WORD CHARG,CHARR,CHARA,CHARP,CHARH,CHARS,0 CNTLBL: .WORD CHARC,CHARO,CHARN,CHART,CHARO,CHARU,CHARR .WORD CHARSP,CHARM,CHARA,CHARP,CHARS,0 .PAGE .SBTTL CHARACTER GENERATION DATA ; ; CHARA: .BYTE 17,64,104,64,17,0 ; "A" CHARB: .BYTE 177,111,111,111,66,0 ; "B" CHARC: .BYTE 76,101,101,101,42,0 ; "C" CHARD: .BYTE 177,101,101,101,76,0 ; "D" CHARE: .BYTE 177,111,111,111,101,0 ; "E" CHARF: .BYTE 177,110,110,110,100,0 ; "F" CHARG: .BYTE 76,101,101,105,46,0 ; "G" CHARH: .BYTE 177,10,10,10,177,0 ; "H" CHARI: .BYTE 0,101,177,101,0,0 ; "I" CHARJ: .BYTE 2,1,1,1,176,0 ; "J" CHARK: .BYTE 177,10,24,42,101,0 ; "K" CHARL: .BYTE 177,1,1,1,1,0 ; "L" CHARM: .BYTE 177,40,30,40,177,0 ; "M" CHARN: .BYTE 177,60,10,6,177,0 ; "N" CHARO: .BYTE 76,101,101,101,76,0 ; "O" CHARP: .BYTE 177,110,110,110,60,0 ; "P" CHARQ: .BYTE 76,101,105,103,76,0 ; "Q" CHARR: .BYTE 177,110,114,112,61,0 ; "R" CHARS: .BYTE 62,111,111,111,46,0 ; "S" CHART: .BYTE 100,100,177,100,100,0 ; "T" CHARU: .BYTE 176,1,1,1,176,0 ; "U" CHARV: .BYTE 160,16,1,16,160,0 ; "V" CHARW: .BYTE 174,3,14,3,174,0 ; "W" CHARX: .BYTE 143,24,20,24,143,0 ; "X" CHARY: .BYTE 140,30,7,30,140,0 ; "Y" CHARZ: .BYTE 103,105,111,121,141,0 ; "Z" CHAR0: .BYTE 76,105,111,121,76,0 ; "0" CHAR1: .BYTE 0,0,177,0,0,0 ; "1" CHAR2: .BYTE 41,103,105,111,61,0 ; "2" CHAR3: .BYTE 42,101,111,111,66,0 ; "3" CHAR4: .BYTE 14,24,44,177,4,0 ; "4" CHAR5: .BYTE 171,111,111,111,106,0 ; "5" CHAR6: .BYTE 76,111,111,111,46,0 ; "6" CHAR7: .BYTE 100,107,110,120,140,0 ; "7" CHAR8: .BYTE 66,111,111,111,66,0 ; "8" CHAR9: .BYTE 62,111,111,111,76,0 ; "9" CHARSP: .BYTE 0,0,0,0,0,0 ; " " .LIST BIN .END GD