Demo8.lst - generated by MiniIDE's ASM12 V1.08 Build 53 [5/25/2000, 18:03:36] 1: *filename: demo8.asm 2: ******************************************************************************* 3: *REVISION HISTORY: 4: * 5: *DATE REV. NO. DESCRIPTION 6: * 7: * 4/18/94 0 Initial release 8: * 4/07/99 1 Modified for 32K EEPROM at $8000 9: * 10: * 11: ******************************************************************************* 12: *TECHNOLOGICAL ARTS 13: *ADAPT-11 DEMO SOFTWARE 14: *18 APRIL 1994 15: *by CARL BARNES 16: 17: * System Addresses 18: 19: 0000 RAM equ $0000 20: 1000 rbase equ $1000 ;power up register base address 21: 00ff STACK equ $00FF ;put stack at top of ram 22: 8000 EEPROM equ $8000 ;for 32K EEPROM 23: 24: 25: * Operational Parameters 26: 27: 0019 _100MS equ 25 28: 003d _250MS equ 61 29: 007d _500MS equ 125 30: 00fa _1SECOND equ 250 31: 01f4 _2SECONDS equ 500 32: 02ee _3SECONDS equ 750 33: 04e2 _5SECONDS equ 1250 34: 09c4 _10SECONDS equ 2500 35: 186a _25SECONDS equ 6250 36: 3a98 _60SECONDS equ 15000 37: 7530 _2MIN equ 30000 38: 39: * Operational Constants 40: 41: 00ff TRUE equ $FF 42: 0000 FALSE equ $00 43: 000d CR equ $D 44: 000a LF equ $A 45: 0020 SP equ $20 46: 47: org RAM 48: 49: * System Variables 50: 51: COMMAND rmb 1 ;used by ProcessCommand 52: 53: H rmb 1 ;used in binary to decimal conversion 54: TO rmb 1 55: 56: DURATION rmb 2 ;used for tone generation 57: HALF_PERIOD rmb 2 58: 59: TIMER rmb 2 ;software timers using RTI 60: TIMER1 rmb 2 61: 62: * Boolean Variables 63: 64: COMMAND_PENDING rmb 1 ;used by ProcessCommand 65: 66: CONTINUOUS rmb 1 ;flag for real-time a/d screen update 67: 68: 01f4 TONE_2K equ 500 ;frequencies in Hertz for tone generation 69: 03e8 TONE_1K equ 1000 70: 08e0 TONE_440 equ 2272 71: 11c1 TONE_220 equ 4545 72: 0bb8 TONE_180 equ 3000 73: 2382 TONE_110 equ 9090 74: 411a TONE_60 equ 16666 75: 76: * registers 77: 78: ********************************************************************** 79: * PORT ASSIGNMENTS for this program 80: 81: 1000 porta equ rbase+0 ;input/output port 82: 83: * PA0 spare ;input only 84: * PA1 spare ;input only 85: * PA2 spare ;input only 86: * PA3 spare ;input or output 87: * PA4 spare ;output only 88: * PA5 spare ;output only 89: * PA6 SPEAKER ;output only 90: * PA7 spare ;input or output 91: ********************************************************************** 92: 93: 1002 pioc equ rbase+$02 ;parallel i/o control register 94: 95: 1003 portc equ rbase+$03 ;input/output port (default => inputs) 96: 97: 1004 portb equ rbase+$04 ;all lines of port b are output only 98: 99: 1007 ddrc equ rbase+$07 ;data direction register for port C 100: 1008 portd equ rbase+$08 ;portd, serial communications 101: 1009 ddrd equ rbase+$09 ;data direction register, portd 102: 100c oc1m equ rbase+$0c ;output compare 1 mask register, porta 103: 100e tcnt equ rbase+$0e ;timer count 104: 1016 toc1 equ rbase+$16 ;output compare register 1 105: 1018 toc2 equ rbase+$18 ;output compare register 2 106: 101a toc3 equ rbase+$1A ;output compare register 3 107: 101c toc4 equ rbase+$1C ;output compare register 4 108: 1020 tctl1 equ rbase+$20 ;timer control register 109: 1022 tmsk1 equ rbase+$22 ;OC/IC interrupt mask register 110: 1023 tflg1 equ rbase+$23 ;main timer interrupt flags 111: 1024 tmsk2 equ rbase+$24 ;timer interrupt mask register, prescaler 112: 1025 tflg2 equ rbase+$25 ;timer interrupt flag register 2 113: 1026 pactl equ rbase+$26 ;real time interrupt prescaler, pulse accum. 114: 102b baud equ rbase+$2b ;sci baud rate control 115: 102c sccr1 equ rbase+$2c ;sci control register 1 116: 102d sccr2 equ rbase+$2d ;sci control register 2 117: 102e scsr equ rbase+$2e ;sci status register 118: 102f scdr equ rbase+$2f ;sci data, read (rdr) and write (tdr) 119: 120: *Analog-to-Digital Converter 121: 122: 1030 adctl equ rbase+$30 ;a/d control register 123: 1031 adr1 equ rbase+$31 ;a/d channel 1 register 124: 1032 adr2 equ rbase+$32 ;a/d channel 2 register 125: 1033 adr3 equ rbase+$33 ;a/d channel 3 register 126: 1034 adr4 equ rbase+$34 ;a/d channel 4 register 127: 128: 1039 option equ rbase+$39 ;system options 129: 103b pprog equ rbase+$3b ;EEPROM program control register 130: 103c hprio equ rbase+$3c ;highest priority interrupt 131: 132: * Masks 133: 0090 opts equ %10010000 ;a/d on 134: 0030 admask1 equ %00110000 ;(adctl)continuous conversion, AD0 thru AD3 135: 0034 admask2 equ %00110100 ;(adctl)continuous conversion, AD4 thru AD7 136: 0040 tmask equ %01000000 ;(tmsk2)no timer prescale, RTI enabled 137: 0008 rtimsk equ %00001000 ;(pactl) 4.1 msec interrupt with 8 MHz xtal 138: 0040 tc1msk equ %01000000 ;OC2 in toggle mode 139: 140: 00c0 clrmsk equ %11000000 ;mask for clearing timer flags 141: 0030 bdmsk96 equ %00110000 ;(baud) 9600 baud with 8 MHz crystal 142: 0032 bdmsk24 equ %00110010 ;(baud) 2400 baud with 8 MHz crystal 143: 0033 bdmsk12 equ %00110011 ;(baud) 1200 baud with 8 MHz crystal 144: 0002 ptdmsk equ %00000010 ;(ddrd)portd data direction: input, except txd 145: 002c sc2msk2 equ %00101100 ;(sccr2)enable tx & rx and Rx Interrupt 146: 147: ********************************** Program ******************************* 148: 149: org EEPROM 150: 151: init: 152: 8000 14 10 sei ;this is where the RESET vector points 153: 154: *NOTE- These instructions must be executed within 64 E-cycles of reset. 155: 156: 8002 86 90 ldaa #opts ;define system options 157: 8004 7a 10 39 staa option 158: 159: 160: 161: 8007 cf 00 ff lds #STACK ;initialize stack pointer 162: 163: 800a 86 30 ldaa #admask1 ;set A/D to scan AD0 thru AD3 continuously 164: 800c 7a 10 30 staa adctl 165: 800f 86 40 ldaa #tmask ;enable real-time interrupt (RTI) 166: 8011 7a 10 24 staa tmsk2 167: 168: 8014 86 08 ldaa #rtimsk ;initialize RTI rate 169: 8016 7a 10 26 staa pactl 170: 171: 8019 86 02 ldaa #ptdmsk ;initialize PORTD 172: 801b 7a 10 09 staa ddrd 173: 801e 86 32 ldaa #bdmsk24 ;baud=2400 174: 8020 7a 10 2b staa baud 175: 8023 86 2c ldaa #sc2msk2 176: 8025 7a 10 2d staa sccr2 ;enable SCI rcvr. & xmtr. & rx int. 177: 8028 b6 10 2f ldaa scdr ;dummy read to flush receive buffer 178: 179: 802b 79 00 0b clr COMMAND_PENDING 180: 802e 79 00 0c clr CONTINUOUS 181: 182: 8031 10 ef cli ;enable interrupts 183: 184: 8033 ce 08 e0 ldx #TONE_440 ;generate two 100 millisecond beeps @ 440 Hz 185: 8036 c6 02 ldab #2 186: 8038 cd 00 19 ldy #_100MS 187: 803b 16 80 52 jsr PulseXToneB 188: 189: begin: 190: 191: 803e 16 80 71 jsr ProcessCommand ;this is the program loop 192: 8041 96 0c ldaa CONTINUOUS 193: 8043 27 03 beq NotCont 194: 8045 16 81 a8 jsr ShowAnalog 195: 196: NotCont 197: 8048 06 80 3e jmp begin 198: 199: 200: *********************************************************************** 201: *Procedure Definitions: 202: *********************************************************************** 203: 204: WaitX: 205: 804b 5e 09 stx TIMER1 ;delays a length of time defined by x 206: 804d de 09 W1 ldx TIMER1 207: 804f 26 fc bne W1 208: 8051 3d rts 209: 210: PulseXToneB: 211: 212: * b contains number of beeps desired 213: * x contains tone frequency 214: * y contains tone duration (eg. if y=1 => duration=4.1 ms; y=255 => 1 sec) 215: 216: 8052 5d 03 sty DURATION 217: rpt 218: 8054 16 82 ce jsr EnableToneX ;tone generated via OutputCompare feature 219: 8057 dd 03 ldy DURATION 220: 8059 5d 07 sty TIMER 221: 805b dd 07 d2_1 ldy TIMER 222: 805d 26 fc bne d2_1 223: 805f 79 10 22 clr tmsk1 ;turn off tone 224: 8062 79 10 20 clr tctl1 225: 8065 dd 03 ldy DURATION 226: 8067 5d 07 sty TIMER 227: 8069 dd 07 d2_2 ldy TIMER 228: 806b 26 fc bne d2_2 229: 806d 53 decb 230: 806e 26 e4 bne rpt 231: 8070 3d rts 232: 233: 234: ProcessCommand: 235: 236: 8071 96 0b ldaa COMMAND_PENDING ;commands received via SCI interrupt 237: 8073 81 ff cmpa #TRUE 238: 8075 27 03 beq Process 239: 8077 06 81 23 jmp PCX 240: Process 241: 807a 79 00 0b clr COMMAND_PENDING 242: 807d 79 00 0c clr CONTINUOUS 243: 8080 16 82 a6 jsr PutNewLine 244: 8083 96 00 ldaa COMMAND 245: 246: 8085 81 41 cmpa #'A 247: 8087 27 3e beq PCA 248: 8089 81 61 cmpa #'a 249: 808b 27 3a beq PCA 250: 251: 808d 81 42 cmpa #'B 252: 808f 27 48 beq PCB 253: 8091 81 62 cmpa #'b 254: 8093 27 44 beq PCB 255: 256: 8095 81 43 cmpa #'C 257: 8097 27 4e beq PCC 258: 8099 81 63 cmpa #'c 259: 809b 27 4a beq PCC 260: 261: 809d 81 44 cmpa #'D 262: 809f 27 58 beq PCD 263: 80a1 81 64 cmpa #'d 264: 80a3 27 54 beq PCD 265: 266: 80a5 81 52 cmpa #'R 267: 80a7 27 62 beq PCR 268: 80a9 81 72 cmpa #'r 269: 80ab 27 5e beq PCR 270: 271: 80ad 81 53 cmpa #'S 272: 80af 27 5e beq PCS 273: 80b1 81 73 cmpa #'s 274: 80b3 27 5a beq PCS 275: 276: 80b5 81 30 cmpa #'0 277: 80b7 25 09 blo PCM 278: 80b9 81 37 cmpa #'7 279: 80bb 22 05 bhi PCM 280: 80bd 16 81 24 jsr ToggleBLine 281: 80c0 20 61 bra PCX 282: 283: PCM 284: 80c2 16 81 44 jsr ShowMenu 285: 80c5 20 5c bra PCX 286: 287: PCA 288: 80c7 ce 84 62 ldx #M_PORTA 289: 80ca 16 82 c1 jsr SendString 290: 80cd f6 10 00 ldab porta 291: 80d0 87 clra 292: 80d1 16 82 61 jsr SendDecByte 293: 80d4 16 82 a6 jsr PutNewLine 294: 80d7 20 4a bra PCX 295: 296: PCB 297: 80d9 79 10 04 clr portb 298: 80dc ce 84 77 ldx #M_BOFF 299: 80df 16 82 c1 jsr SendString 300: 80e2 16 82 a6 jsr PutNewLine 301: 80e5 20 3c bra PCX 302: 303: PCC 304: 80e7 ce 84 69 ldx #M_PORTC 305: 80ea 16 82 c1 jsr SendString 306: 80ed f6 10 03 ldab portc 307: 80f0 87 clra 308: 80f1 16 82 61 jsr SendDecByte 309: 80f4 16 82 a6 jsr PutNewLine 310: 80f7 20 2a bra PCX 311: 312: PCD 313: 80f9 ce 84 70 ldx #M_PORTD 314: 80fc 16 82 c1 jsr SendString 315: 80ff f6 10 08 ldab portd 316: 8102 87 clra 317: 8103 16 82 61 jsr SendDecByte 318: 8106 16 82 a6 jsr PutNewLine 319: 8109 20 18 bra PCX 320: 321: PCR 322: 810b 5a 0c staa CONTINUOUS ;set continuous a/d display flag 323: 810d 20 14 bra PCX 324: 325: PCS 326: 810f ce 84 86 ldx #M_BEEP ;beep speaker (if connected to PA6) 327: 8112 16 82 c1 jsr SendString 328: 8115 16 82 a6 jsr PutNewLine 329: 8118 ce 08 e0 ldx #TONE_440 ;generate two 100 millisecond beeps @ 440 Hz 330: 811b c6 02 ldab #2 331: 811d cd 00 19 ldy #_100MS 332: 8120 16 80 52 jsr PulseXToneB 333: * bra PCX 334: 335: PCX 336: 8123 3d rts 337: 338: 339: ToggleBLine: 340: 341: 8124 c6 01 ldab #1 ;number is between 0 and 7 342: 8126 80 30 suba #'0 ;convert ASCII digit to binary number 343: 8128 27 04 beq TBL1 344: TBL0 345: 812a 58 aslb ;set the appropriate mask bit 346: 812b 43 deca 347: 812c 26 fc bne TBL0 348: TBL1 349: 812e f5 10 04 bitb portb ;if designated port bit is 1 350: 8131 27 03 beq TBM1 ; then make it 0 351: 8133 51 comb 352: 8134 20 07 bra TBM0 353: TBM1 354: 8136 fa 10 04 orab portb 355: 8139 7b 10 04 stab portb 356: 813c 3d rts 357: TBM0 358: 813d f4 10 04 andb portb 359: 8140 7b 10 04 stab portb 360: 8143 3d rts 361: 362: 363: ShowMenu: 364: 8144 16 82 b1 jsr PutDblLine 365: 8147 ce 84 10 ldx #M_UNDLN 366: 814a 16 82 c1 jsr SendString 367: 814d 16 82 a6 jsr PutNewLine 368: 8150 ce 83 ea ldx #M_HEADER1 369: 8153 16 82 c1 jsr SendString 370: 8156 16 82 a6 jsr PutNewLine 371: 8159 ce 84 10 ldx #M_UNDLN 372: 815c 16 82 c1 jsr SendString 373: 815f 16 82 a6 jsr PutNewLine 374: 8162 ce 83 11 ldx #M_LINE1 375: 8165 16 82 c1 jsr SendString 376: 8168 16 82 a6 jsr PutNewLine 377: 816b ce 83 2a ldx #M_LINE2 378: 816e 16 82 c1 jsr SendString 379: 8171 16 82 a6 jsr PutNewLine 380: 8174 ce 83 45 ldx #M_LINE3 381: 8177 16 82 c1 jsr SendString 382: 817a 16 82 a6 jsr PutNewLine 383: 817d ce 83 5e ldx #M_LINE4 384: 8180 16 82 c1 jsr SendString 385: 8183 16 82 a6 jsr PutNewLine 386: 8186 ce 83 77 ldx #M_LINE5 387: 8189 16 82 c1 jsr SendString 388: 818c 16 82 a6 jsr PutNewLine 389: 818f ce 83 9a ldx #M_LINE6 390: 8192 16 82 c1 jsr SendString 391: 8195 16 82 a6 jsr PutNewLine 392: 8198 ce 83 be ldx #M_LINE7 393: 819b 16 82 c1 jsr SendString 394: 819e 16 82 b1 jsr PutDblLine 395: 81a1 ce 83 e8 ldx #M_PROMPT 396: 81a4 16 82 c1 jsr SendString 397: 81a7 3d rts 398: 399: ShowAnalog: 400: 401: 81a8 86 30 ldaa #admask1 402: 81aa 7a 10 30 staa adctl 403: 404: 81ad ce 84 3a ldx #M_AD0 405: 81b0 16 82 c1 jsr SendString 406: 81b3 f6 10 31 ldab adr1 407: 81b6 87 clra 408: 81b7 16 82 61 jsr SendDecByte 409: 81ba 86 20 ldaa #SP 410: 81bc 16 82 9d jsr SendByte 411: 412: 81bf ce 84 3f ldx #M_AD1 413: 81c2 16 82 c1 jsr SendString 414: 81c5 f6 10 32 ldab adr2 415: 81c8 87 clra 416: 81c9 16 82 61 jsr SendDecByte 417: 81cc 86 20 ldaa #SP 418: 81ce 16 82 9d jsr SendByte 419: 420: 81d1 ce 84 44 ldx #M_AD2 421: 81d4 16 82 c1 jsr SendString 422: 81d7 f6 10 33 ldab adr3 423: 81da 87 clra 424: 81db 16 82 61 jsr SendDecByte 425: 81de 86 20 ldaa #SP 426: 81e0 16 82 9d jsr SendByte 427: 428: 81e3 ce 84 49 ldx #M_AD3 429: 81e6 16 82 c1 jsr SendString 430: 81e9 f6 10 34 ldab adr4 431: 81ec 87 clra 432: 81ed 16 82 61 jsr SendDecByte 433: 81f0 86 20 ldaa #SP 434: 81f2 16 82 9d jsr SendByte 435: 436: 81f5 86 34 ldaa #admask2 437: 81f7 7a 10 30 staa adctl 438: 439: 81fa ce 84 4e ldx #M_AD4 440: 81fd 16 82 c1 jsr SendString 441: 8200 f6 10 31 ldab adr1 442: 8203 87 clra 443: 8204 16 82 61 jsr SendDecByte 444: 8207 86 20 ldaa #SP 445: 8209 16 82 9d jsr SendByte 446: 447: 820c ce 84 53 ldx #M_AD5 448: 820f 16 82 c1 jsr SendString 449: 8212 f6 10 32 ldab adr2 450: 8215 87 clra 451: 8216 16 82 61 jsr SendDecByte 452: 8219 86 20 ldaa #SP 453: 821b 16 82 9d jsr SendByte 454: 455: 821e ce 84 58 ldx #M_AD6 456: 8221 16 82 c1 jsr SendString 457: 8224 f6 10 33 ldab adr3 458: 8227 87 clra 459: 8228 16 82 61 jsr SendDecByte 460: 822b 86 20 ldaa #SP 461: 822d 16 82 9d jsr SendByte 462: 463: 8230 ce 84 5d ldx #M_AD7 464: 8233 16 82 c1 jsr SendString 465: 8236 f6 10 34 ldab adr4 466: 8239 87 clra 467: 823a 16 82 61 jsr SendDecByte 468: 469: 823d 86 0d ldaa #CR 470: 823f 16 82 9d jsr SendByte 471: 8242 3d rts 472: 473: 474: HexByte2Dec: 475: 476: * Supply hex value to be converted in B register 477: 8243 87 clra 478: 8244 ce 00 64 ldx #100 ;numerator in D, denominator in X 479: 8247 18 10 idiv 480: * remainder in D, quotient in X 481: * B is lo-order byte 482: 8249 b7 c5 xgdx 483: 824b 5b 01 stab H ;8 bit quotient in B 484: 824d b7 c5 xgdx 485: 824f ce 00 0a ldx #10 ;H=0X TO=packed BCD 486: 8252 18 10 idiv 487: 8254 5b 02 stab TO 488: 8256 b7 c5 xgdx 489: 8258 58 aslb 490: 8259 58 aslb 491: 825a 58 aslb 492: 825b 58 aslb 493: 825c da 02 orab TO 494: 825e 5b 02 stab TO 495: 8260 3d rts 496: 497: SendDecByte: 498: 499: * value is in B 500: 501: 8261 87 clra 502: 8262 16 82 43 jsr HexByte2Dec 503: 8265 96 01 ldaa H 504: 8267 8b 30 adda #'0 505: 8269 16 82 9d jsr SendByte 506: 826c 96 02 ldaa TO 507: 826e 16 82 72 jsr SendASCIIHex 508: 8271 3d rts 509: 510: SendASCIIHex: 511: * value in A 512: 513: 8272 36 psha 514: 8273 84 f0 anda #$F0 515: 8275 44 lsra 516: 8276 44 lsra 517: 8277 44 lsra 518: 8278 44 lsra 519: 8279 81 0a cmpa #$A 520: 827b 2d 06 blt SAH1 521: 827d 80 0a suba #$A 522: 827f 8b 41 adda #'A 523: 8281 20 02 bra SAH2 524: SAH1: 525: 8283 8b 30 adda #'0 526: SAH2: 527: 8285 16 82 9d jsr SendByte 528: 8288 32 pula 529: 8289 36 psha 530: 828a 84 0f anda #$0F 531: 828c 81 0a cmpa #$A 532: 828e 2d 06 blt SAH3 533: 8290 80 0a suba #$A 534: 8292 8b 41 adda #'A 535: 8294 20 02 bra SAH4 536: SAH3: 537: 8296 8b 30 adda #'0 538: SAH4: 539: 8298 16 82 9d jsr SendByte 540: 829b 32 pula 541: 829c 3d rts 542: 543: 544: SendByte: 545: 546: * Transmits a byte, contained in register A, to the serial device via the SCI. 547: 548: SB1 549: 829d f6 10 2e ldab scsr ;wait for transmit data register empty (TDRE) 550: 82a0 2a fb bpl SB1 551: 82a2 7a 10 2f staa scdr ;send byte 552: 82a5 3d rts 553: 554: PutNewLine: 555: 556: 82a6 86 0d ldaa #CR 557: 82a8 16 82 9d jsr SendByte 558: 82ab 86 0a ldaa #LF 559: 82ad 16 82 9d jsr SendByte 560: 82b0 3d rts 561: 562: PutDblLine: 563: 564: 82b1 86 0d ldaa #CR 565: 82b3 16 82 9d jsr SendByte 566: 82b6 86 0a ldaa #LF 567: 82b8 16 82 9d jsr SendByte 568: 82bb 86 0a ldaa #LF 569: 82bd 16 82 9d jsr SendByte 570: 82c0 3d rts 571: 572: 573: SendString: 574: 575: * x contains starting address of string 576: RV1: 577: 82c1 a6 00 ldaa 0,X ;$FF denotes end of string 578: 82c3 81 ff cmpa #$FF 579: 82c5 27 06 beq RVX 580: 82c7 16 82 9d jsr SendByte 581: 82ca 08 inx 582: 82cb 20 f4 bra RV1 583: RVX: 584: 82cd 3d rts 585: 586: 587: EnableToneX: 588: 589: 82ce 14 10 sei ;tone generation done via OutputCompare 590: 82d0 5e 05 stx HALF_PERIOD 591: 82d2 86 40 ldaa #tc1msk 592: 82d4 7a 10 20 staa tctl1 593: 82d7 7a 10 23 staa tflg1 594: 82da 7a 10 22 staa tmsk1 595: 82dd 10 ef cli 596: 82df 3d rts 597: 598: 599: ******************************************************************************* 600: * Interrupt Routines 601: ******************************************************************************* 602: 603: * Real-time Interrupt Routine 604: 605: RealTimeInt: 606: 607: RTI_1 608: 82e0 de 07 ldx TIMER 609: 82e2 27 03 beq RTI_2 610: 82e4 09 dex 611: 82e5 5e 07 stx TIMER 612: RTI_2 613: 82e7 de 09 ldx TIMER1 614: 82e9 27 03 beq RTI_3 615: 82eb 09 dex 616: 82ec 5e 09 stx TIMER1 617: RTI_3 618: 82ee 86 40 ldaa #%01000000 ;clear real-time interrupt flag 619: 82f0 7a 10 25 staa tflg2 620: 82f3 0b rti 621: 622: * SCI Input Interrupt Handler 623: 624: * Gets bytes from SCI. Sets COMMAND_PENDING flag. 625: 626: SerInputInt: 627: 628: 82f4 b6 10 2e ldaa scsr ;clear RDRF 629: 82f7 b6 10 2f ldaa scdr 630: 82fa 5a 00 staa COMMAND 631: 82fc 86 ff ldaa #TRUE 632: 82fe 5a 0b staa COMMAND_PENDING 633: SIIX: 634: 8300 0b rti 635: 636: 637: * Output Compare Interrupt Handler 638: 639: OC2Int 640: 8301 dc 05 ldd HALF_PERIOD 641: 8303 f3 10 18 addd toc2 642: 8306 7c 10 18 std toc2 643: 8309 ce 10 00 ldx #rbase 644: 830c 0d e0 23 bf bclr $23,x $bf 645: 8310 0b rti 646: 647: ******************************************************************************* 648: * Messages 649: 650: 8311 41 20 20 3d 3e 20 M_LINE1 fcc 'A => SHOW PORT A STATUS' 650: 53 48 4f 57 20 50 650: 4f 52 54 20 41 20 650: 53 54 41 54 55 53 651: 8329 ff fcb $ff 652: 832a 42 20 20 3d 3e 20 M_LINE2 fcc 'B => CLEAR PORT B OUTPUTS' 652: 43 4c 45 41 52 20 652: 50 4f 52 54 20 42 652: 20 4f 55 54 50 55 652: 54 53 653: 8344 ff fcb $ff 654: 8345 43 20 20 3d 3e 20 M_LINE3 fcc 'C => SHOW PORT C STATUS' 654: 53 48 4f 57 20 50 654: 4f 52 54 20 43 20 654: 53 54 41 54 55 53 655: 835d ff fcb $ff 656: 835e 44 20 20 3d 3e 20 M_LINE4 fcc 'D => SHOW PORT D STATUS' 656: 53 48 4f 57 20 50 656: 4f 52 54 20 44 20 656: 53 54 41 54 55 53 657: 8376 ff fcb $ff 658: 8377 52 20 20 3d 3e 20 M_LINE5 fcc 'R => SHOW REAL-TIME ANALOG VALUES' 658: 53 48 4f 57 20 52 658: 45 41 4c 2d 54 49 658: 4d 45 20 41 4e 41 658: 4c 4f 47 20 56 41 658: 4c 55 45 53 659: 8399 ff fcb $ff 660: 839a 53 20 20 3d 3e 20 M_LINE6 fcc 'S => BEEP SPEAKER (CONNECT TO PA6)' 660: 42 45 45 50 20 53 660: 50 45 41 4b 45 52 660: 20 28 43 4f 4e 4e 660: 45 43 54 20 54 4f 660: 20 50 41 36 29 661: 83bd ff fcb $ff 662: 83be 30 20 54 4f 20 37 M_LINE7 fcc '0 TO 7 => TOGGLE THE SELECTED B PORT LINE' 662: 20 3d 3e 20 54 4f 662: 47 47 4c 45 20 54 662: 48 45 20 53 45 4c 662: 45 43 54 45 44 20 662: 42 20 50 4f 52 54 662: 20 4c 49 4e 45 663: 83e7 ff fcb $ff 664: 83e8 3f M_PROMPT fcc '?' 665: 83e9 ff fcb $ff 666: 83ea 20 20 20 41 44 41 M_HEADER1 FCC ' ADAPT-11 DEMO PROGRAM COMMAND MENU' 666: 50 54 2d 31 31 20 666: 44 45 4d 4f 20 50 666: 52 4f 47 52 41 4d 666: 20 43 4f 4d 4d 41 666: 4e 44 20 4d 45 4e 666: 55 667: 840f ff FCB $FF 668: 8410 5f 5f 5f 5f 5f 5f M_UNDLN FCC '_________________________________________' 668: 5f 5f 5f 5f 5f 5f 668: 5f 5f 5f 5f 5f 5f 668: 5f 5f 5f 5f 5f 5f 668: 5f 5f 5f 5f 5f 5f 668: 5f 5f 5f 5f 5f 5f 668: 5f 5f 5f 5f 5f 669: 8439 ff FCB $FF 670: 843a 41 44 30 3d M_AD0 fcc 'AD0=' 671: 843e ff fcb $ff 672: 843f 41 44 31 3d M_AD1 fcc 'AD1=' 673: 8443 ff fcb $ff 674: 8444 41 44 32 3d M_AD2 fcc 'AD2=' 675: 8448 ff fcb $ff 676: 8449 41 44 33 3d M_AD3 fcc 'AD3=' 677: 844d ff fcb $ff 678: 844e 41 44 34 3d M_AD4 fcc 'AD4=' 679: 8452 ff fcb $ff 680: 8453 41 44 35 3d M_AD5 fcc 'AD5=' 681: 8457 ff fcb $ff 682: 8458 41 44 36 3d M_AD6 fcc 'AD6=' 683: 845c ff fcb $ff 684: 845d 41 44 37 3d M_AD7 fcc 'AD7=' 685: 8461 ff fcb $ff 686: 8462 50 4f 52 54 41 3d M_PORTA fcc 'PORTA=' 687: 8468 ff fcb $ff 688: 8469 50 4f 52 54 43 3d M_PORTC fcc 'PORTC=' 689: 846f ff fcb $ff 690: 8470 50 4f 52 54 44 3d M_PORTD fcc 'PORTD=' 691: 8476 ff fcb $ff 692: 8477 50 4f 52 54 20 42 M_BOFF FCC 'PORT B CLEARED' 692: 20 43 4c 45 41 52 692: 45 44 693: 8485 ff FCB $FF 694: 8486 3e 3e 3e 20 42 45 M_BEEP FCC '>>> BEEP! <<<' 694: 45 50 21 20 3c 3c 694: 3c 695: 8493 ff FCB $FF 696: 697: 698: ******************************************************************************* 699: 700: org $FFD6 701: 702: * Interrupt and reset vectors. 703: 704: ffd6 82 f4 SCI_VECT FDB SerInputInt 705: ffd8 80 00 SPI_VECT FDB init 706: ffda 80 00 PAI_VECT FDB init 707: ffdc 80 00 PAO_VECT FDB init 708: ffde 80 00 TOF_VECT FDB init 709: 710: ffe0 80 00 TOC5_VECT FDB init 711: ffe2 80 00 TOC4_VECT FDB init 712: ffe4 80 00 TOC3_VECT FDB init 713: ffe6 83 01 TOC2_VECT FDB OC2Int 714: ffe8 80 00 TOC1_VECT FDB init 715: ffea 80 00 TIC3_VECT FDB init 716: ffec 80 00 TIC2_VECT FDB init 717: ffee 80 00 TIC1_VECT FDB init 718: 719: fff0 82 e0 RTI_VECT FDB RealTimeInt 720: fff2 80 00 IRQ_VECT FDB init 721: fff4 80 00 XIRQ_VECT FDB init 722: fff6 80 00 SWI_VECT FDB init 723: fff8 80 00 TRAP_VECT FDB init 724: fffa 80 00 COP_FAIL_VECT FDB init 725: fffc 80 00 COP_CMF_VECT FDB init 726: fffe 80 00 RESET_VECT FDB init Symbols: _100ms *0019 adctl *1030 admask1 *0030 admask2 *0034 adr1 *1031 adr2 *1032 adr3 *1033 adr4 *1034 baud *102b bdmsk24 *0032 begin *803e command *0000 command_pending *000b continuous *000c cr *000d d2_1 *805b d2_2 *8069 ddrd *1009 duration *0003 eeprom *8000 enabletonex *82ce h *0001 half_period *0005 hexbyte2dec *8243 init *8000 lf *000a m_ad0 *843a m_ad1 *843f m_ad2 *8444 m_ad3 *8449 m_ad4 *844e m_ad5 *8453 m_ad6 *8458 m_ad7 *845d m_beep *8486 m_boff *8477 m_header1 *83ea m_line1 *8311 m_line2 *832a m_line3 *8345 m_line4 *835e m_line5 *8377 m_line6 *839a m_line7 *83be m_porta *8462 m_portc *8469 m_portd *8470 m_prompt *83e8 m_undln *8410 notcont *8048 oc2int *8301 option *1039 opts *0090 pactl *1026 pca *80c7 pcb *80d9 pcc *80e7 pcd *80f9 pcm *80c2 pcr *810b pcs *810f pcx *8123 porta *1000 portb *1004 portc *1003 portd *1008 process *807a processcommand *8071 ptdmsk *0002 pulsextoneb *8052 putdblline *82b1 putnewline *82a6 ram *0000 rbase *1000 realtimeint *82e0 rpt *8054 rti_2 *82e7 rti_3 *82ee rtimsk *0008 rv1 *82c1 rvx *82cd sah1 *8283 sah2 *8285 sah3 *8296 sah4 *8298 sb1 *829d sc2msk2 *002c sccr2 *102d scdr *102f scsr *102e sendasciihex *8272 sendbyte *829d senddecbyte *8261 sendstring *82c1 serinputint *82f4 showanalog *81a8 showmenu *8144 sp *0020 stack *00ff tbl0 *812a tbl1 *812e tbm0 *813d tbm1 *8136 tc1msk *0040 tctl1 *1020 tflg1 *1023 tflg2 *1025 timer *0007 timer1 *0009 tmask *0040 tmsk1 *1022 tmsk2 *1024 to *0002 toc2 *1018 togglebline *8124 tone_440 *08e0 true *00ff w1 *804d